Skip to content

Commit 3813051

Browse files
author
Ryan Naddy
committed
example to stop lockup
1 parent dc8833c commit 3813051

File tree

4 files changed

+28
-25
lines changed

4 files changed

+28
-25
lines changed

src/notifier.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import * as vscode from 'vscode';
44

55
class Notifier {
6-
private _timeoutId: number;
6+
private _timeoutId: any;
77

88
public statusBarItem: vscode.StatusBarItem;
99

src/parse-engine-gateway.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import ParseEngineRegistry from './parse-engines/parse-engine-registry';
77

88
class ParseEngineGateway {
99
public static async callParser(uri: vscode.Uri): Promise<CssClassDefinition[]> {
10-
let textDocument = await vscode.workspace.openTextDocument(uri);
11-
let parseEngine: ParseEngine = ParseEngineRegistry.getParseEngine(textDocument.languageId);
12-
let cssClassDefinitions: CssClassDefinition[] = parseEngine.parse(textDocument);
10+
// let textDocument = await vscode.workspace.openTextDocument(uri);
11+
let parseEngine: ParseEngine = ParseEngineRegistry.getParseEngine('css');
12+
let cssClassDefinitions: CssClassDefinition[] = parseEngine.parse(uri);
1313
return cssClassDefinitions;
1414
}
1515
}

src/parse-engines/common/parse-engine.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import CssClassDefinition from './../../common/css-class-definition';
55

66
interface ParseEngine {
77
languageId: string;
8-
parse(textDocument: vscode.TextDocument): CssClassDefinition[];
8+
parse(uri: vscode.Uri): CssClassDefinition[];
99
}
1010

1111
export default ParseEngine;

src/parse-engines/types/css-parse-engine.ts

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,35 @@ import * as css from 'css';
44
import * as vscode from 'vscode';
55
import CssClassDefinition from '../../common/css-class-definition';
66
import ParseEngine from '../common/parse-engine';
7+
import fs = require('fs');
78

89
class CssParseEngine implements ParseEngine {
910
public languageId: string = 'css';
1011

11-
public parse(textDocument: vscode.TextDocument): CssClassDefinition[] {
12+
public parse(textDocument: vscode.Uri): CssClassDefinition[] {
1213
let definitions: CssClassDefinition[] = [];
1314

14-
let code: string = textDocument.getText();
15-
let codeAst: css.Stylesheet = css.parse(code);
16-
17-
// go through each of the rules...
18-
codeAst.stylesheet.rules.forEach((rule: css.Rule) => {
19-
// ...of type rule
20-
if (rule.type === 'rule') {
21-
// go through each of the selectors of the current rule
22-
rule.selectors.forEach((selector: string) => {
23-
let classNameRegex: RegExp = /[.]([\w-]+)/g;
24-
var item: RegExpExecArray = null;
25-
26-
while (item = classNameRegex.exec(selector)) {
27-
definitions.push(new CssClassDefinition(item[1]));
28-
}
29-
});
30-
}
31-
});
32-
15+
try {
16+
let code: string = fs.readFileSync(textDocument.fsPath).toString();// textDocument.getText();
17+
let codeAst: css.Stylesheet = css.parse(code);
18+
19+
// go through each of the rules...
20+
codeAst.stylesheet.rules.forEach((rule: css.Rule) => {
21+
// ...of type rule
22+
if (rule.type === 'rule') {
23+
// go through each of the selectors of the current rule
24+
rule.selectors.forEach((selector: string) => {
25+
let classNameRegex: RegExp = /[.]([\w-]+)/g;
26+
var item: RegExpExecArray = null;
27+
28+
while (item = classNameRegex.exec(selector)) {
29+
definitions.push(new CssClassDefinition(item[1]));
30+
}
31+
});
32+
}
33+
});
34+
35+
} catch (e) { }
3336
return definitions;
3437
}
3538
}

0 commit comments

Comments
 (0)