import { ASTItem } from './ast'; import * as regexps from './regexps'; export class Parser { private inputlines: string[]; public items: ASTItem[] = []; constructor(inputstring: string) { this.inputlines = inputstring.split('\n') .filter(line => !regexps.REGEXP_SANITIZER_INPUT.test(line)) .filter(line => line.length > 0); } public get blocks() { return this.items.filter(item => item.isBlock); } public get elements() { return this.items.filter(item => item.isElement); } public get modifiers() { return this.items.filter(item => item.isModifier); } public get files(): string[] { return this.blocks.map(block => block.name); } public getByBlock(block: ASTItem) { return this.items.filter(item => { return !item.isBlock && item.parentBlock === block.name; }); } public parse(): void { this.items = this.inputlines.map(line => new ASTItem(line)); } }