From 0c046c8e96829c103cf3af995f6da0c42c655cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Lo=CC=81pez=20de=20Pablo?= Date: Sat, 26 Dec 2020 16:43:01 +0100 Subject: [PATCH 1/4] fixes escaped characters in css selectors --- src/parse-engines/common/css-class-extractor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parse-engines/common/css-class-extractor.ts b/src/parse-engines/common/css-class-extractor.ts index 4b56a63..d5ef863 100644 --- a/src/parse-engines/common/css-class-extractor.ts +++ b/src/parse-engines/common/css-class-extractor.ts @@ -6,7 +6,7 @@ export default class CssClassExtractor { * @description Extracts class names from CSS AST */ public static extract(ast: css.Stylesheet): CssClassDefinition[] { - const classNameRegex = /[.]([\w-]+)/g; + const classNameRegex = /[.]([\w-\\@\\:\\/]+)/g; const definitions: CssClassDefinition[] = []; @@ -15,7 +15,7 @@ export default class CssClassExtractor { rule.selectors?.forEach((selector: string) => { let item: RegExpExecArray | null = classNameRegex.exec(selector); while (item) { - definitions.push(new CssClassDefinition(item[1])); + definitions.push(new CssClassDefinition(item[1].replace("\\", ""))); item = classNameRegex.exec(selector); } }); From ed0e8ea167ca5e193d5d847b3795cde48932030e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Lo=CC=81pez=20de=20Pablo?= Date: Sun, 27 Dec 2020 13:45:13 +0100 Subject: [PATCH 2/4] Add @, :, and / for completion providers regexs --- src/extension.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 5028ee5..296a2c3 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -141,25 +141,25 @@ const registerHTMLProviders = (disposables: Disposable[]) => workspace.getConfiguration() ?.get(Configuration.HTMLLanguages) ?.forEach((extension) => { - disposables.push(registerCompletionProvider(extension, /class=["|']([\w- ]*$)/)); + disposables.push(registerCompletionProvider(extension, /class=["|']([\w-@:\/ ]*$)/)); }); -const registerCSSProviders = (disposables: Disposable[]) => +const registerCSSProviders = (disposables: Disposable[]) => workspace.getConfiguration() .get(Configuration.CSSLanguages) ?.forEach((extension) => { // The @apply rule was a CSS proposal which has since been abandoned, // check the proposal for more info: http://tabatkins.github.io/specs/css-apply-rule/ // Its support should probably be removed - disposables.push(registerCompletionProvider(extension, /@apply ([.\w- ]*$)/, ".")); + disposables.push(registerCompletionProvider(extension, /@apply ([.\w-@:\/ ]*$)/, ".")); }); const registerJavaScriptProviders = (disposables: Disposable[]) => workspace.getConfiguration() .get(Configuration.JavaScriptLanguages) ?.forEach((extension) => { - disposables.push(registerCompletionProvider(extension, /className=["|']([\w- ]*$)/)); - disposables.push(registerCompletionProvider(extension, /class=["|']([\w- ]*$)/)); + disposables.push(registerCompletionProvider(extension, /className=["|']([\w-@:\/ ]*$)/)); + disposables.push(registerCompletionProvider(extension, /class=["|']([\w-@:\/ ]*$)/)); }); function registerEmmetProviders(disposables: Disposable[]) { From 66db0b00d66d923b324b6c9e7a4e7c36da39506a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Lo=CC=81pez=20de=20Pablo?= Date: Sun, 27 Dec 2020 13:50:24 +0100 Subject: [PATCH 3/4] Add escaped characters support for emmet provider --- src/extension.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension.ts b/src/extension.ts index 296a2c3..91cd723 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -163,7 +163,7 @@ const registerJavaScriptProviders = (disposables: Disposable[]) => }); function registerEmmetProviders(disposables: Disposable[]) { - const emmetRegex = /(?=\.)([\w-. ]*$)/; + const emmetRegex = /(?=\.)([\w-@:\/. ]*$)/; const registerProviders = (modes: string[]) => { modes.forEach((language) => { From 247b72f331b37bd0f5d9395a39b2d864855c6783 Mon Sep 17 00:00:00 2001 From: canvasplay Date: Tue, 17 Aug 2021 12:07:56 +0200 Subject: [PATCH 4/4] Fix capturing unwanted pseudo selectors like `:hover`, `:focus`, etc --- src/parse-engines/common/css-class-extractor.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/parse-engines/common/css-class-extractor.ts b/src/parse-engines/common/css-class-extractor.ts index d5ef863..85cdd8c 100644 --- a/src/parse-engines/common/css-class-extractor.ts +++ b/src/parse-engines/common/css-class-extractor.ts @@ -6,7 +6,7 @@ export default class CssClassExtractor { * @description Extracts class names from CSS AST */ public static extract(ast: css.Stylesheet): CssClassDefinition[] { - const classNameRegex = /[.]([\w-\\@\\:\\/]+)/g; + const classNameRegex = /[.](([\w-]|\\[@:/])+)/g; const definitions: CssClassDefinition[] = []; @@ -35,4 +35,4 @@ export default class CssClassExtractor { }); return definitions; } -} \ No newline at end of file +}