(refactor) get rid of AbstractTemplateParser
This commit is contained in:
		| @@ -1,24 +0,0 @@ | ||||
| export abstract class AbstractTemplateParser { | ||||
|  | ||||
| 	/** | ||||
| 	 * Checks if file is of type javascript or typescript and | ||||
| 	 * makes the assumption that it is an Angular Component | ||||
| 	 */ | ||||
| 	protected isAngularComponent(path: string): boolean { | ||||
| 		return (/\.ts|js$/i).test(path); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Extracts inline template from components | ||||
| 	 */ | ||||
| 	protected extractInlineTemplate(contents: string): string { | ||||
| 		const regExp: RegExp = /template\s*:\s*(["'`])([^\1]*?)\1/; | ||||
| 		const match = regExp.exec(contents); | ||||
| 		if (match !== null) { | ||||
| 			return match[2]; | ||||
| 		} | ||||
|  | ||||
| 		return ''; | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -1,16 +1,16 @@ | ||||
| import { ParserInterface } from './parser.interface'; | ||||
| import { AbstractTemplateParser } from './abstract-template.parser'; | ||||
| import { TranslationCollection } from '../utils/translation.collection'; | ||||
| import { isPathAngularComponent, extractComponentInlineTemplate } from '../../src/utils/utils'; | ||||
|  | ||||
| import * as cheerio from 'cheerio'; | ||||
|  | ||||
| const $ = cheerio.load('', {xmlMode: true}); | ||||
|  | ||||
| export class DirectiveParser extends AbstractTemplateParser implements ParserInterface { | ||||
| export class DirectiveParser implements ParserInterface { | ||||
|  | ||||
| 	public extract(contents: string, path?: string): TranslationCollection { | ||||
| 		if (path && this.isAngularComponent(path)) { | ||||
| 			contents = this.extractInlineTemplate(contents); | ||||
| 		if (path && isPathAngularComponent(path)) { | ||||
| 			contents = extractComponentInlineTemplate(contents); | ||||
| 		} | ||||
|  | ||||
| 		return this.parseTemplate(contents); | ||||
|   | ||||
| @@ -1,12 +1,12 @@ | ||||
| import { ParserInterface } from './parser.interface'; | ||||
| import { AbstractTemplateParser } from './abstract-template.parser'; | ||||
| import { TranslationCollection } from '../utils/translation.collection'; | ||||
| import { isPathAngularComponent, extractComponentInlineTemplate } from '../../src/utils/utils'; | ||||
|  | ||||
| export class PipeParser extends AbstractTemplateParser implements ParserInterface { | ||||
| export class PipeParser implements ParserInterface { | ||||
|  | ||||
| 	public extract(contents: string, path?: string): TranslationCollection { | ||||
| 		if (path && this.isAngularComponent(path)) { | ||||
| 			contents = this.extractInlineTemplate(contents); | ||||
| 		if (path && isPathAngularComponent(path)) { | ||||
| 			contents = extractComponentInlineTemplate(contents); | ||||
| 		} | ||||
|  | ||||
| 		return this.parseTemplate(contents); | ||||
|   | ||||
| @@ -1,3 +1,22 @@ | ||||
| export function _(key: string | string[]): string | string[] { | ||||
| 	return key; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Assumes file is an Angular component if type is javascript/typescript | ||||
|  */ | ||||
| export function isPathAngularComponent(path: string): boolean { | ||||
| 	return (/\.ts|js$/i).test(path); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Extract inline template from a component | ||||
|  */ | ||||
| export function extractComponentInlineTemplate(contents: string): string { | ||||
| 	const regExp: RegExp = /template\s*:\s*(["'`])([^\1]*?)\1/; | ||||
| 	const match = regExp.exec(contents); | ||||
| 	if (match !== null) { | ||||
| 		return match[2]; | ||||
| 	} | ||||
| 	return ''; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user