2 import { XmlParser } from './XmlParser';
3 import { Parser } from './Parser';
4 import { VtlParser } from './VtlParser';
5 import { FileExtension } from '../TemplateType';
6 import { JinjaXMLParser } from './JinjaXML';
7 import { VtlYMLParser } from './VtlYMLParser';
8 import { JinjaYMLParser } from './JinjaYML';
9 import { ASCIIParser } from './ASCII-Parser';
11 export class ParserFactory {
13 getParser(fileContent: string, fileExtension: string): Parser {
15 console.log('file extension =' + fileExtension);
17 if (fileExtension === FileExtension.Velocity) {
19 if (this.isXML(fileContent)) {
20 parser = new XmlParser();
21 } else if (this.isJSON(fileContent)) {
22 parser = new VtlParser();
23 } else if (this.isASCII(fileContent)) {
24 parser = new ASCIIParser();
26 parser = new VtlYMLParser();
29 } else if (fileExtension === FileExtension.Jinja) {
31 if (this.isXML(fileContent)) {
32 parser = new JinjaXMLParser();
33 } else if (this.isJSON(fileContent)) {
34 // TODO: implement JSON parser
35 } else if (this.isASCII(fileContent)) {
36 parser = new ASCIIParser();
38 parser = new JinjaYMLParser();
41 } else if (fileExtension === FileExtension.XML) {
42 parser = new XmlParser();
47 private isXML(fileContent: string): boolean {
48 return fileContent.includes('<?xml version="1.0" encoding="UTF-8"?>');
51 private isJSON(fileContent: string): boolean {
53 JSON.parse(fileContent);
60 private isASCII(fileContent: string): boolean {
62 fileContent.includes('end') &&
63 fileContent.includes('set') &&
64 fileContent.includes('$(')