From 458bd324b752e514de5fb289c6866f558557ecca Mon Sep 17 00:00:00 2001 From: pungggi Date: Thu, 16 Nov 2017 08:07:06 +0100 Subject: [PATCH 1/3] initial commit --- src/parse-engines/parse-engine-registry.ts | 4 ++- src/parse-engines/types/js-parse-engine.ts | 34 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/parse-engines/types/js-parse-engine.ts diff --git a/src/parse-engines/parse-engine-registry.ts b/src/parse-engines/parse-engine-registry.ts index 3b043d2..635baa9 100644 --- a/src/parse-engines/parse-engine-registry.ts +++ b/src/parse-engines/parse-engine-registry.ts @@ -1,12 +1,14 @@ import ParseEngine from './common/parse-engine'; import CssParseEngine from './types/css-parse-engine'; import HtmlParseEngine from './types/html-parse-engine'; +import JsParseEngine from './types/js-parse-engine'; class ParseEngineRegistry { private static _supportedLanguagesIds: string[]; private static _registry: ParseEngine[] = [ new CssParseEngine(), - new HtmlParseEngine() + new HtmlParseEngine(), + new JsParseEngine() ]; public static get supportedLanguagesIds(): string[] { diff --git a/src/parse-engines/types/js-parse-engine.ts b/src/parse-engines/types/js-parse-engine.ts new file mode 100644 index 0000000..e814830 --- /dev/null +++ b/src/parse-engines/types/js-parse-engine.ts @@ -0,0 +1,34 @@ +import * as css from 'css'; +import * as vscode from 'vscode'; +import CssClassDefinition from '../../common/css-class-definition'; +import ParseEngine from '../common/parse-engine'; +import SimpleTextDocument from '../common/simple-textdocument'; +import CssClassExtractor from '../common/css-class-extractor'; + +class JsParseEngine implements ParseEngine { + public languageId: string = 'js'; + public extension: string = 'js'; + + public async parse(textDocument: SimpleTextDocument): Promise { + let code: string = textDocument.getText(); + + const matchTemplateString: Array = code.match(/([^`]).([^`]+)/gmi); + let cssToParse: string = ''; + for (let i = 0; i < matchTemplateString.length; i++) { + if (matchTemplateString[i].endsWith('css')) { + cssToParse += matchTemplateString[i + 1] + ' '; + } + if (matchTemplateString[i].endsWith('