shellfie 2.0.19 → 2.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -46
- package/dist/highlight/index.d.ts +41 -0
- package/dist/highlight/index.d.ts.map +1 -0
- package/dist/highlight/index.js +314 -0
- package/dist/highlight/index.js.map +1 -0
- package/dist/highlight/languages/bash.d.ts +3 -0
- package/dist/highlight/languages/bash.d.ts.map +1 -0
- package/dist/highlight/languages/bash.js +78 -0
- package/dist/highlight/languages/bash.js.map +1 -0
- package/dist/highlight/languages/c.d.ts +4 -0
- package/dist/highlight/languages/c.d.ts.map +1 -0
- package/dist/highlight/languages/c.js +101 -0
- package/dist/highlight/languages/c.js.map +1 -0
- package/dist/highlight/languages/csharp.d.ts +3 -0
- package/dist/highlight/languages/csharp.d.ts.map +1 -0
- package/dist/highlight/languages/csharp.js +78 -0
- package/dist/highlight/languages/csharp.js.map +1 -0
- package/dist/highlight/languages/go.d.ts +3 -0
- package/dist/highlight/languages/go.d.ts.map +1 -0
- package/dist/highlight/languages/go.js +47 -0
- package/dist/highlight/languages/go.js.map +1 -0
- package/dist/highlight/languages/html.d.ts +3 -0
- package/dist/highlight/languages/html.d.ts.map +1 -0
- package/dist/highlight/languages/html.js +44 -0
- package/dist/highlight/languages/html.js.map +1 -0
- package/dist/highlight/languages/index.d.ts +26 -0
- package/dist/highlight/languages/index.d.ts.map +1 -0
- package/dist/highlight/languages/index.js +65 -0
- package/dist/highlight/languages/index.js.map +1 -0
- package/dist/highlight/languages/java.d.ts +3 -0
- package/dist/highlight/languages/java.d.ts.map +1 -0
- package/dist/highlight/languages/java.js +57 -0
- package/dist/highlight/languages/java.js.map +1 -0
- package/dist/highlight/languages/javascript.d.ts +3 -0
- package/dist/highlight/languages/javascript.d.ts.map +1 -0
- package/dist/highlight/languages/javascript.js +53 -0
- package/dist/highlight/languages/javascript.js.map +1 -0
- package/dist/highlight/languages/json.d.ts +3 -0
- package/dist/highlight/languages/json.d.ts.map +1 -0
- package/dist/highlight/languages/json.js +25 -0
- package/dist/highlight/languages/json.js.map +1 -0
- package/dist/highlight/languages/python.d.ts +3 -0
- package/dist/highlight/languages/python.d.ts.map +1 -0
- package/dist/highlight/languages/python.js +80 -0
- package/dist/highlight/languages/python.js.map +1 -0
- package/dist/highlight/languages/rust.d.ts +3 -0
- package/dist/highlight/languages/rust.d.ts.map +1 -0
- package/dist/highlight/languages/rust.js +68 -0
- package/dist/highlight/languages/rust.js.map +1 -0
- package/dist/highlight/languages/typescript.d.ts +3 -0
- package/dist/highlight/languages/typescript.d.ts.map +1 -0
- package/dist/highlight/languages/typescript.js +77 -0
- package/dist/highlight/languages/typescript.js.map +1 -0
- package/dist/highlight/tokenizer.d.ts +41 -0
- package/dist/highlight/tokenizer.d.ts.map +1 -0
- package/dist/highlight/tokenizer.js +147 -0
- package/dist/highlight/tokenizer.js.map +1 -0
- package/dist/highlight/types.d.ts +47 -0
- package/dist/highlight/types.d.ts.map +1 -0
- package/dist/highlight/types.js +27 -0
- package/dist/highlight/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/renderer/customGlyphs.d.ts +1 -0
- package/dist/renderer/customGlyphs.d.ts.map +1 -1
- package/dist/renderer/customGlyphs.js +115 -52
- package/dist/renderer/customGlyphs.js.map +1 -1
- package/dist/renderer/text.d.ts.map +1 -1
- package/dist/renderer/text.js +1 -0
- package/dist/renderer/text.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.javascript = void 0;
|
|
4
|
+
const tokenizer_1 = require("../tokenizer");
|
|
5
|
+
const KEYWORDS = [
|
|
6
|
+
'async', 'await', 'break', 'case', 'catch', 'class', 'const',
|
|
7
|
+
'continue', 'debugger', 'default', 'delete', 'do', 'else',
|
|
8
|
+
'export', 'extends', 'finally', 'for', 'from', 'function',
|
|
9
|
+
'if', 'import', 'in', 'instanceof', 'let', 'new', 'of',
|
|
10
|
+
'return', 'static', 'super', 'switch', 'this', 'throw',
|
|
11
|
+
'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
|
|
12
|
+
'as', 'get', 'set',
|
|
13
|
+
];
|
|
14
|
+
const CONSTANTS = [
|
|
15
|
+
'true', 'false', 'null', 'undefined', 'NaN', 'Infinity',
|
|
16
|
+
];
|
|
17
|
+
const BUILTINS = [
|
|
18
|
+
'console', 'window', 'document', 'global', 'globalThis',
|
|
19
|
+
'process', 'module', 'exports', 'require',
|
|
20
|
+
'Object', 'Array', 'String', 'Number', 'Boolean', 'Symbol', 'BigInt',
|
|
21
|
+
'Function', 'Date', 'RegExp', 'Error', 'Map', 'Set', 'WeakMap', 'WeakSet',
|
|
22
|
+
'Promise', 'Proxy', 'Reflect', 'JSON', 'Math', 'Intl',
|
|
23
|
+
'ArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array',
|
|
24
|
+
'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
|
|
25
|
+
'fetch', 'Request', 'Response', 'Headers', 'URL', 'URLSearchParams',
|
|
26
|
+
];
|
|
27
|
+
const patterns = (0, tokenizer_1.createCLikePatterns)({
|
|
28
|
+
keywords: KEYWORDS,
|
|
29
|
+
constants: CONSTANTS,
|
|
30
|
+
builtins: BUILTINS,
|
|
31
|
+
extraPatterns: [
|
|
32
|
+
// JSX tags (simplified)
|
|
33
|
+
{ type: 'tag', pattern: /<\/?[A-Z][a-zA-Z0-9]*/ },
|
|
34
|
+
{ type: 'tag', pattern: /<\/?[a-z][a-z0-9-]*/ },
|
|
35
|
+
// Regex literals (simplified - doesn't handle all edge cases)
|
|
36
|
+
{ type: 'regex', pattern: /\/(?:[^/\\]|\\.)+\/[gimsuvy]*/ },
|
|
37
|
+
// Arrow function
|
|
38
|
+
{ type: 'keyword', pattern: /=>/ },
|
|
39
|
+
// Spread operator
|
|
40
|
+
{ type: 'operator', pattern: /\.{3}/ },
|
|
41
|
+
// Optional chaining
|
|
42
|
+
{ type: 'operator', pattern: /\?\.[^0-9]/ },
|
|
43
|
+
// Nullish coalescing
|
|
44
|
+
{ type: 'operator', pattern: /\?\?/ },
|
|
45
|
+
],
|
|
46
|
+
});
|
|
47
|
+
exports.javascript = {
|
|
48
|
+
name: 'javascript',
|
|
49
|
+
aliases: ['js', 'jsx', 'mjs', 'cjs'],
|
|
50
|
+
extensions: ['.js', '.jsx', '.mjs', '.cjs'],
|
|
51
|
+
tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=javascript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/highlight/languages/javascript.ts"],"names":[],"mappings":";;;AACA,4CAA6D;AAE7D,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5D,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM;IACzD,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU;IACzD,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI;IACtD,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IACtD,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACxD,IAAI,EAAE,KAAK,EAAE,KAAK;CACnB,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU;CACxD,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY;IACvD,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACzC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;IACpE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IACzE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACrD,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY;IACpD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe;IAC5D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,iBAAiB;CACpE,CAAC;AAEF,MAAM,QAAQ,GAAG,IAAA,+BAAmB,EAAC;IACnC,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE;QACb,wBAAwB;QACxB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;QACjD,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE;QAE/C,8DAA8D;QAC9D,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE;QAE3D,iBAAiB;QACjB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;QAElC,kBAAkB;QAClB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;QAEtC,oBAAoB;QACpB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE;QAE3C,qBAAqB;QACrB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;KACtC;CACF,CAAC,CAAC;AAEU,QAAA,UAAU,GAAsB;IAC3C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3C,QAAQ,EAAE,CAAC,IAAY,EAAW,EAAE,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC;CAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AAuBvE,eAAO,MAAM,IAAI,EAAE,iBAKlB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.json = void 0;
|
|
4
|
+
const tokenizer_1 = require("../tokenizer");
|
|
5
|
+
const patterns = [
|
|
6
|
+
// Property keys (strings followed by colon)
|
|
7
|
+
{ type: 'property', pattern: /"(?:[^"\\]|\\.)*"(?=\s*:)/ },
|
|
8
|
+
// String values
|
|
9
|
+
{ type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.doubleString },
|
|
10
|
+
// Boolean and null
|
|
11
|
+
{ type: 'constant', pattern: /\b(true|false|null)\b/ },
|
|
12
|
+
// Numbers
|
|
13
|
+
{ type: 'number', pattern: /-?\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/ },
|
|
14
|
+
// Punctuation
|
|
15
|
+
{ type: 'punctuation', pattern: /[{}[\],:.]/ },
|
|
16
|
+
// Whitespace
|
|
17
|
+
{ type: 'text', pattern: tokenizer_1.COMMON_PATTERNS.whitespace },
|
|
18
|
+
];
|
|
19
|
+
exports.json = {
|
|
20
|
+
name: 'json',
|
|
21
|
+
aliases: ['jsonc', 'json5'],
|
|
22
|
+
extensions: ['.json', '.jsonc', '.json5'],
|
|
23
|
+
tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/highlight/languages/json.ts"],"names":[],"mappings":";;;AACA,4CAAyD;AAEzD,MAAM,QAAQ,GAAmB;IAC/B,4CAA4C;IAC5C,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAE1D,gBAAgB;IAChB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAAe,CAAC,YAAY,EAAE;IAEzD,mBAAmB;IACnB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,EAAE;IAEtD,UAAU;IACV,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kCAAkC,EAAE;IAE/D,cAAc;IACd,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE;IAE9C,aAAa;IACb,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAAe,CAAC,UAAU,EAAE;CACtD,CAAC;AAEW,QAAA,IAAI,GAAsB;IACrC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACzC,QAAQ,EAAE,CAAC,IAAY,EAAW,EAAE,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC;CAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/python.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,UAAU,CAAC;AA4FvE,eAAO,MAAM,MAAM,EAAE,iBAKpB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.python = void 0;
|
|
4
|
+
const tokenizer_1 = require("../tokenizer");
|
|
5
|
+
const KEYWORDS = [
|
|
6
|
+
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
|
|
7
|
+
'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
|
|
8
|
+
'except', 'finally', 'for', 'from', 'global', 'if', 'import',
|
|
9
|
+
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
|
|
10
|
+
'return', 'try', 'while', 'with', 'yield', 'match', 'case',
|
|
11
|
+
];
|
|
12
|
+
const BUILTINS = [
|
|
13
|
+
'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes',
|
|
14
|
+
'callable', 'chr', 'classmethod', 'compile', 'complex', 'delattr',
|
|
15
|
+
'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'filter',
|
|
16
|
+
'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr',
|
|
17
|
+
'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass',
|
|
18
|
+
'iter', 'len', 'list', 'locals', 'map', 'max', 'memoryview', 'min',
|
|
19
|
+
'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property',
|
|
20
|
+
'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
|
|
21
|
+
'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type',
|
|
22
|
+
'vars', 'zip', '__import__',
|
|
23
|
+
];
|
|
24
|
+
const TYPES = [
|
|
25
|
+
'int', 'float', 'str', 'bool', 'list', 'dict', 'set', 'tuple',
|
|
26
|
+
'bytes', 'bytearray', 'complex', 'frozenset', 'object', 'type',
|
|
27
|
+
'None', 'Callable', 'Optional', 'Union', 'Any', 'List', 'Dict',
|
|
28
|
+
'Set', 'Tuple', 'Type', 'Sequence', 'Mapping', 'Iterable', 'Iterator',
|
|
29
|
+
];
|
|
30
|
+
const patterns = [
|
|
31
|
+
// Comments
|
|
32
|
+
{ type: 'comment', pattern: tokenizer_1.COMMON_PATTERNS.hashComment },
|
|
33
|
+
// Docstrings (triple-quoted strings)
|
|
34
|
+
{ type: 'string', pattern: /"""[\s\S]*?"""/ },
|
|
35
|
+
{ type: 'string', pattern: /'''[\s\S]*?'''/ },
|
|
36
|
+
// F-strings (simplified)
|
|
37
|
+
{ type: 'string', pattern: /f"(?:[^"\\]|\\.)*"/ },
|
|
38
|
+
{ type: 'string', pattern: /f'(?:[^'\\]|\\.)*'/ },
|
|
39
|
+
// Raw strings
|
|
40
|
+
{ type: 'string', pattern: /r"(?:[^"\\]|\\.)*"/ },
|
|
41
|
+
{ type: 'string', pattern: /r'(?:[^'\\]|\\.)*'/ },
|
|
42
|
+
// Byte strings
|
|
43
|
+
{ type: 'string', pattern: /b"(?:[^"\\]|\\.)*"/ },
|
|
44
|
+
{ type: 'string', pattern: /b'(?:[^'\\]|\\.)*'/ },
|
|
45
|
+
// Regular strings
|
|
46
|
+
{ type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.doubleString },
|
|
47
|
+
{ type: 'string', pattern: tokenizer_1.COMMON_PATTERNS.singleString },
|
|
48
|
+
// Decorators
|
|
49
|
+
{ type: 'decorator', pattern: /@[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*/ },
|
|
50
|
+
// Numbers
|
|
51
|
+
{ type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.hexNumber },
|
|
52
|
+
{ type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.binaryNumber },
|
|
53
|
+
{ type: 'number', pattern: tokenizer_1.COMMON_PATTERNS.octalNumber },
|
|
54
|
+
{ type: 'number', pattern: /\b\d+\.?\d*(?:[eE][+-]?\d+)?j?\b/ }, // Complex numbers
|
|
55
|
+
// Keywords
|
|
56
|
+
{ type: 'keyword', pattern: (0, tokenizer_1.wordBoundary)(KEYWORDS) },
|
|
57
|
+
// Built-ins
|
|
58
|
+
{ type: 'builtin', pattern: (0, tokenizer_1.wordBoundary)(BUILTINS) },
|
|
59
|
+
// Types (for type hints)
|
|
60
|
+
{ type: 'type', pattern: (0, tokenizer_1.wordBoundary)(TYPES) },
|
|
61
|
+
// Magic methods/attributes
|
|
62
|
+
{ type: 'builtin', pattern: /__[a-zA-Z_][a-zA-Z0-9_]*__/ },
|
|
63
|
+
// Self and cls
|
|
64
|
+
{ type: 'variable', pattern: /\b(self|cls)\b/ },
|
|
65
|
+
// Operators
|
|
66
|
+
{ type: 'operator', pattern: /->|:=|[+\-*/%@=<>!&|^~]=?|\*\*|\/\/|<<|>>/ },
|
|
67
|
+
// Punctuation
|
|
68
|
+
{ type: 'punctuation', pattern: /[{}[\]();,.:@]/ },
|
|
69
|
+
// Whitespace
|
|
70
|
+
{ type: 'text', pattern: tokenizer_1.COMMON_PATTERNS.whitespace },
|
|
71
|
+
// Identifiers
|
|
72
|
+
{ type: 'text', pattern: /[a-zA-Z_][a-zA-Z0-9_]*/ },
|
|
73
|
+
];
|
|
74
|
+
exports.python = {
|
|
75
|
+
name: 'python',
|
|
76
|
+
aliases: ['py', 'python3'],
|
|
77
|
+
extensions: ['.py', '.pyw', '.pyi'],
|
|
78
|
+
tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../src/highlight/languages/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/rust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAS,MAAM,UAAU,CAAC;AA0EzD,eAAO,MAAM,IAAI,EAAE,iBAKlB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.rust = void 0;
|
|
4
|
+
const tokenizer_1 = require("../tokenizer");
|
|
5
|
+
const KEYWORDS = [
|
|
6
|
+
'as', 'async', 'await', 'break', 'const', 'continue', 'crate', 'dyn',
|
|
7
|
+
'else', 'enum', 'extern', 'false', 'fn', 'for', 'if', 'impl', 'in',
|
|
8
|
+
'let', 'loop', 'match', 'mod', 'move', 'mut', 'pub', 'ref', 'return',
|
|
9
|
+
'self', 'Self', 'static', 'struct', 'super', 'trait', 'true', 'type',
|
|
10
|
+
'unsafe', 'use', 'where', 'while', 'abstract', 'become', 'box', 'do',
|
|
11
|
+
'final', 'macro', 'override', 'priv', 'typeof', 'unsized', 'virtual',
|
|
12
|
+
'yield', 'try',
|
|
13
|
+
];
|
|
14
|
+
const TYPES = [
|
|
15
|
+
'bool', 'char', 'str',
|
|
16
|
+
'i8', 'i16', 'i32', 'i64', 'i128', 'isize',
|
|
17
|
+
'u8', 'u16', 'u32', 'u64', 'u128', 'usize',
|
|
18
|
+
'f32', 'f64',
|
|
19
|
+
'String', 'Vec', 'Option', 'Result', 'Box', 'Rc', 'Arc', 'Cell', 'RefCell',
|
|
20
|
+
'HashMap', 'HashSet', 'BTreeMap', 'BTreeSet', 'VecDeque', 'LinkedList',
|
|
21
|
+
'Cow', 'Pin', 'Mutex', 'RwLock',
|
|
22
|
+
];
|
|
23
|
+
const CONSTANTS = [
|
|
24
|
+
'true', 'false', 'None', 'Some', 'Ok', 'Err',
|
|
25
|
+
];
|
|
26
|
+
const BUILTINS = [
|
|
27
|
+
'println', 'print', 'eprintln', 'eprint', 'format', 'panic', 'assert',
|
|
28
|
+
'assert_eq', 'assert_ne', 'debug_assert', 'debug_assert_eq', 'debug_assert_ne',
|
|
29
|
+
'todo', 'unimplemented', 'unreachable', 'cfg', 'env', 'file', 'line',
|
|
30
|
+
'column', 'module_path', 'stringify', 'include', 'include_str', 'include_bytes',
|
|
31
|
+
'vec', 'format_args', 'write', 'writeln',
|
|
32
|
+
];
|
|
33
|
+
const patterns = (0, tokenizer_1.createCLikePatterns)({
|
|
34
|
+
keywords: KEYWORDS,
|
|
35
|
+
types: TYPES,
|
|
36
|
+
constants: CONSTANTS,
|
|
37
|
+
builtins: BUILTINS,
|
|
38
|
+
extraPatterns: [
|
|
39
|
+
// Attributes/Macros
|
|
40
|
+
{ type: 'decorator', pattern: /#!\[[\s\S]*?\]/ },
|
|
41
|
+
{ type: 'decorator', pattern: /#\[[\s\S]*?\]/ },
|
|
42
|
+
// Macro invocations (name!)
|
|
43
|
+
{ type: 'builtin', pattern: /[a-zA-Z_][a-zA-Z0-9_]*!/ },
|
|
44
|
+
// Lifetime annotations
|
|
45
|
+
{ type: 'variable', pattern: /'[a-zA-Z_][a-zA-Z0-9_]*/ },
|
|
46
|
+
// Raw strings
|
|
47
|
+
{ type: 'string', pattern: /r#*"[\s\S]*?"#*/ },
|
|
48
|
+
// Byte strings
|
|
49
|
+
{ type: 'string', pattern: /b"(?:[^"\\]|\\.)*"/ },
|
|
50
|
+
// Character literals
|
|
51
|
+
{ type: 'string', pattern: /'(?:[^'\\]|\\.)'/ },
|
|
52
|
+
// Byte character literals
|
|
53
|
+
{ type: 'string', pattern: /b'(?:[^'\\]|\\.)'/ },
|
|
54
|
+
// Range operators
|
|
55
|
+
{ type: 'operator', pattern: /\.{2,3}=?/ },
|
|
56
|
+
// Fat arrow
|
|
57
|
+
{ type: 'operator', pattern: /=>/ },
|
|
58
|
+
// Turbofish
|
|
59
|
+
{ type: 'operator', pattern: /::</ },
|
|
60
|
+
],
|
|
61
|
+
});
|
|
62
|
+
exports.rust = {
|
|
63
|
+
name: 'rust',
|
|
64
|
+
aliases: ['rs'],
|
|
65
|
+
extensions: ['.rs'],
|
|
66
|
+
tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=rust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../src/highlight/languages/rust.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/highlight/languages/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAS,MAAM,UAAU,CAAC;AAmFzD,eAAO,MAAM,UAAU,EAAE,iBAKxB,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.typescript = void 0;
|
|
4
|
+
const tokenizer_1 = require("../tokenizer");
|
|
5
|
+
const KEYWORDS = [
|
|
6
|
+
// JavaScript keywords
|
|
7
|
+
'async', 'await', 'break', 'case', 'catch', 'class', 'const',
|
|
8
|
+
'continue', 'debugger', 'default', 'delete', 'do', 'else',
|
|
9
|
+
'export', 'extends', 'finally', 'for', 'from', 'function',
|
|
10
|
+
'if', 'import', 'in', 'instanceof', 'let', 'new', 'of',
|
|
11
|
+
'return', 'static', 'super', 'switch', 'this', 'throw',
|
|
12
|
+
'try', 'typeof', 'var', 'void', 'while', 'with', 'yield',
|
|
13
|
+
'as', 'get', 'set',
|
|
14
|
+
// TypeScript-specific
|
|
15
|
+
'abstract', 'declare', 'enum', 'implements', 'interface',
|
|
16
|
+
'namespace', 'private', 'protected', 'public', 'readonly',
|
|
17
|
+
'type', 'module', 'is', 'keyof', 'infer', 'never', 'unknown',
|
|
18
|
+
'asserts', 'override', 'satisfies', 'using',
|
|
19
|
+
];
|
|
20
|
+
const TYPES = [
|
|
21
|
+
'any', 'boolean', 'number', 'string', 'symbol', 'bigint',
|
|
22
|
+
'void', 'never', 'unknown', 'object', 'undefined', 'null',
|
|
23
|
+
];
|
|
24
|
+
const CONSTANTS = [
|
|
25
|
+
'true', 'false', 'null', 'undefined', 'NaN', 'Infinity',
|
|
26
|
+
];
|
|
27
|
+
const BUILTINS = [
|
|
28
|
+
'console', 'window', 'document', 'global', 'globalThis',
|
|
29
|
+
'process', 'module', 'exports', 'require',
|
|
30
|
+
'Object', 'Array', 'String', 'Number', 'Boolean', 'Symbol', 'BigInt',
|
|
31
|
+
'Function', 'Date', 'RegExp', 'Error', 'Map', 'Set', 'WeakMap', 'WeakSet',
|
|
32
|
+
'Promise', 'Proxy', 'Reflect', 'JSON', 'Math', 'Intl',
|
|
33
|
+
'ArrayBuffer', 'DataView', 'Int8Array', 'Uint8Array',
|
|
34
|
+
'setTimeout', 'setInterval', 'clearTimeout', 'clearInterval',
|
|
35
|
+
'fetch', 'Request', 'Response', 'Headers', 'URL', 'URLSearchParams',
|
|
36
|
+
// TypeScript utility types
|
|
37
|
+
'Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit',
|
|
38
|
+
'Exclude', 'Extract', 'NonNullable', 'Parameters', 'ReturnType',
|
|
39
|
+
'InstanceType', 'ThisParameterType', 'OmitThisParameter',
|
|
40
|
+
'ThisType', 'Awaited', 'Uppercase', 'Lowercase', 'Capitalize',
|
|
41
|
+
];
|
|
42
|
+
const patterns = (0, tokenizer_1.createCLikePatterns)({
|
|
43
|
+
keywords: KEYWORDS,
|
|
44
|
+
types: TYPES,
|
|
45
|
+
constants: CONSTANTS,
|
|
46
|
+
builtins: BUILTINS,
|
|
47
|
+
extraPatterns: [
|
|
48
|
+
// Decorators
|
|
49
|
+
{ type: 'decorator', pattern: /@[a-zA-Z_][a-zA-Z0-9_]*/ },
|
|
50
|
+
// JSX/TSX tags
|
|
51
|
+
{ type: 'tag', pattern: /<\/?[A-Z][a-zA-Z0-9]*/ },
|
|
52
|
+
{ type: 'tag', pattern: /<\/?[a-z][a-z0-9-]*/ },
|
|
53
|
+
// Generic type parameters (simplified)
|
|
54
|
+
{ type: 'type', pattern: /<[A-Z][a-zA-Z0-9]*(?:\s*,\s*[A-Z][a-zA-Z0-9]*)*>/ },
|
|
55
|
+
// Type assertions
|
|
56
|
+
{ type: 'keyword', pattern: (0, tokenizer_1.wordBoundary)(['as', 'is']) },
|
|
57
|
+
// Regex literals
|
|
58
|
+
{ type: 'regex', pattern: /\/(?:[^/\\]|\\.)+\/[gimsuvy]*/ },
|
|
59
|
+
// Arrow function
|
|
60
|
+
{ type: 'keyword', pattern: /=>/ },
|
|
61
|
+
// Spread operator
|
|
62
|
+
{ type: 'operator', pattern: /\.{3}/ },
|
|
63
|
+
// Optional chaining
|
|
64
|
+
{ type: 'operator', pattern: /\?\.[^0-9]/ },
|
|
65
|
+
// Non-null assertion
|
|
66
|
+
{ type: 'operator', pattern: /!\./ },
|
|
67
|
+
// Nullish coalescing
|
|
68
|
+
{ type: 'operator', pattern: /\?\?/ },
|
|
69
|
+
],
|
|
70
|
+
});
|
|
71
|
+
exports.typescript = {
|
|
72
|
+
name: 'typescript',
|
|
73
|
+
aliases: ['ts', 'tsx'],
|
|
74
|
+
extensions: ['.ts', '.tsx', '.mts', '.cts'],
|
|
75
|
+
tokenize: (code) => (0, tokenizer_1.tokenize)(code, patterns),
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../src/highlight/languages/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Token, TokenPattern } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Core tokenization engine using regex patterns
|
|
4
|
+
* Languages define patterns in priority order - first match wins
|
|
5
|
+
*/
|
|
6
|
+
export declare function tokenize(code: string, patterns: TokenPattern[]): Token[];
|
|
7
|
+
/**
|
|
8
|
+
* Helper to create a pattern that matches at string boundaries
|
|
9
|
+
* Useful for keywords that shouldn't match inside identifiers
|
|
10
|
+
*/
|
|
11
|
+
export declare function wordBoundary(words: string[]): RegExp;
|
|
12
|
+
/**
|
|
13
|
+
* Common patterns reusable across languages
|
|
14
|
+
*/
|
|
15
|
+
export declare const COMMON_PATTERNS: {
|
|
16
|
+
readonly lineComment: RegExp;
|
|
17
|
+
readonly hashComment: RegExp;
|
|
18
|
+
readonly blockComment: RegExp;
|
|
19
|
+
readonly doubleString: RegExp;
|
|
20
|
+
readonly singleString: RegExp;
|
|
21
|
+
readonly templateString: RegExp;
|
|
22
|
+
readonly number: RegExp;
|
|
23
|
+
readonly hexNumber: RegExp;
|
|
24
|
+
readonly binaryNumber: RegExp;
|
|
25
|
+
readonly octalNumber: RegExp;
|
|
26
|
+
readonly operator: RegExp;
|
|
27
|
+
readonly punctuation: RegExp;
|
|
28
|
+
readonly whitespace: RegExp;
|
|
29
|
+
readonly identifier: RegExp;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Create patterns for a C-like language (JS, TS, Java, C#, Go, Rust, etc.)
|
|
33
|
+
*/
|
|
34
|
+
export declare function createCLikePatterns(options: {
|
|
35
|
+
keywords: string[];
|
|
36
|
+
types?: string[];
|
|
37
|
+
builtins?: string[];
|
|
38
|
+
constants?: string[];
|
|
39
|
+
extraPatterns?: TokenPattern[];
|
|
40
|
+
}): TokenPattern[];
|
|
41
|
+
//# sourceMappingURL=tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/highlight/tokenizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,CA2CxE;AAyBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;CA0ClB,CAAC;AAEX;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC,GAAG,YAAY,EAAE,CA4DjB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMMON_PATTERNS = void 0;
|
|
4
|
+
exports.tokenize = tokenize;
|
|
5
|
+
exports.wordBoundary = wordBoundary;
|
|
6
|
+
exports.createCLikePatterns = createCLikePatterns;
|
|
7
|
+
/**
|
|
8
|
+
* Core tokenization engine using regex patterns
|
|
9
|
+
* Languages define patterns in priority order - first match wins
|
|
10
|
+
*/
|
|
11
|
+
function tokenize(code, patterns) {
|
|
12
|
+
const tokens = [];
|
|
13
|
+
let remaining = code;
|
|
14
|
+
let position = 0;
|
|
15
|
+
while (remaining.length > 0) {
|
|
16
|
+
let matched = false;
|
|
17
|
+
for (const { type, pattern } of patterns) {
|
|
18
|
+
// Reset lastIndex for global patterns
|
|
19
|
+
pattern.lastIndex = 0;
|
|
20
|
+
// Ensure pattern matches at start of remaining string
|
|
21
|
+
const match = pattern.exec(remaining);
|
|
22
|
+
if (match && match.index === 0) {
|
|
23
|
+
const value = match[0];
|
|
24
|
+
if (value.length > 0) {
|
|
25
|
+
tokens.push({ type, value });
|
|
26
|
+
remaining = remaining.slice(value.length);
|
|
27
|
+
position += value.length;
|
|
28
|
+
matched = true;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// If no pattern matched, consume one character as text
|
|
34
|
+
if (!matched) {
|
|
35
|
+
const char = remaining[0];
|
|
36
|
+
// Merge with previous text token if possible
|
|
37
|
+
const lastToken = tokens[tokens.length - 1];
|
|
38
|
+
if (lastToken && lastToken.type === 'text') {
|
|
39
|
+
lastToken.value += char;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
tokens.push({ type: 'text', value: char });
|
|
43
|
+
}
|
|
44
|
+
remaining = remaining.slice(1);
|
|
45
|
+
position++;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return mergeAdjacentTokens(tokens);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Merge adjacent tokens of the same type for cleaner output
|
|
52
|
+
*/
|
|
53
|
+
function mergeAdjacentTokens(tokens) {
|
|
54
|
+
if (tokens.length === 0)
|
|
55
|
+
return tokens;
|
|
56
|
+
const merged = [];
|
|
57
|
+
let current = { ...tokens[0] };
|
|
58
|
+
for (let i = 1; i < tokens.length; i++) {
|
|
59
|
+
const token = tokens[i];
|
|
60
|
+
if (token.type === current.type) {
|
|
61
|
+
current.value += token.value;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
merged.push(current);
|
|
65
|
+
current = { ...token };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
merged.push(current);
|
|
69
|
+
return merged;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Helper to create a pattern that matches at string boundaries
|
|
73
|
+
* Useful for keywords that shouldn't match inside identifiers
|
|
74
|
+
*/
|
|
75
|
+
function wordBoundary(words) {
|
|
76
|
+
const escaped = words.map(w => w.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
|
77
|
+
return new RegExp(`\\b(${escaped.join('|')})\\b`);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Common patterns reusable across languages
|
|
81
|
+
*/
|
|
82
|
+
exports.COMMON_PATTERNS = {
|
|
83
|
+
// Single-line comment starting with //
|
|
84
|
+
lineComment: /\/\/[^\n]*/,
|
|
85
|
+
// Single-line comment starting with #
|
|
86
|
+
hashComment: /#[^\n]*/,
|
|
87
|
+
// Multi-line comment /* ... */
|
|
88
|
+
blockComment: /\/\*[\s\S]*?\*\//,
|
|
89
|
+
// Double-quoted string with escape support
|
|
90
|
+
doubleString: /"(?:[^"\\]|\\.)*"/,
|
|
91
|
+
// Single-quoted string with escape support
|
|
92
|
+
singleString: /'(?:[^'\\]|\\.)*'/,
|
|
93
|
+
// Template literal / backtick string
|
|
94
|
+
templateString: /`(?:[^`\\]|\\.)*`/,
|
|
95
|
+
// Integer and float numbers
|
|
96
|
+
number: /\b\d+\.?\d*(?:[eE][+-]?\d+)?\b/,
|
|
97
|
+
// Hex numbers
|
|
98
|
+
hexNumber: /\b0[xX][0-9a-fA-F]+\b/,
|
|
99
|
+
// Binary numbers
|
|
100
|
+
binaryNumber: /\b0[bB][01]+\b/,
|
|
101
|
+
// Octal numbers
|
|
102
|
+
octalNumber: /\b0[oO][0-7]+\b/,
|
|
103
|
+
// Common operators
|
|
104
|
+
operator: /[+\-*/%=<>!&|^~?:]+/,
|
|
105
|
+
// Punctuation
|
|
106
|
+
punctuation: /[{}[\]();,.:]/,
|
|
107
|
+
// Whitespace (preserve as text)
|
|
108
|
+
whitespace: /\s+/,
|
|
109
|
+
// Generic identifier
|
|
110
|
+
identifier: /[a-zA-Z_$][a-zA-Z0-9_$]*/,
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Create patterns for a C-like language (JS, TS, Java, C#, Go, Rust, etc.)
|
|
114
|
+
*/
|
|
115
|
+
function createCLikePatterns(options) {
|
|
116
|
+
const patterns = [];
|
|
117
|
+
// Extra patterns first (highest priority)
|
|
118
|
+
if (options.extraPatterns) {
|
|
119
|
+
patterns.push(...options.extraPatterns);
|
|
120
|
+
}
|
|
121
|
+
// Comments (high priority)
|
|
122
|
+
patterns.push({ type: 'comment', pattern: exports.COMMON_PATTERNS.blockComment }, { type: 'comment', pattern: exports.COMMON_PATTERNS.lineComment });
|
|
123
|
+
// Strings
|
|
124
|
+
patterns.push({ type: 'string', pattern: exports.COMMON_PATTERNS.templateString }, { type: 'string', pattern: exports.COMMON_PATTERNS.doubleString }, { type: 'string', pattern: exports.COMMON_PATTERNS.singleString });
|
|
125
|
+
// Numbers
|
|
126
|
+
patterns.push({ type: 'number', pattern: exports.COMMON_PATTERNS.hexNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.binaryNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.octalNumber }, { type: 'number', pattern: exports.COMMON_PATTERNS.number });
|
|
127
|
+
// Constants (before keywords)
|
|
128
|
+
if (options.constants?.length) {
|
|
129
|
+
patterns.push({ type: 'constant', pattern: wordBoundary(options.constants) });
|
|
130
|
+
}
|
|
131
|
+
// Keywords
|
|
132
|
+
patterns.push({ type: 'keyword', pattern: wordBoundary(options.keywords) });
|
|
133
|
+
// Types
|
|
134
|
+
if (options.types?.length) {
|
|
135
|
+
patterns.push({ type: 'type', pattern: wordBoundary(options.types) });
|
|
136
|
+
}
|
|
137
|
+
// Built-ins
|
|
138
|
+
if (options.builtins?.length) {
|
|
139
|
+
patterns.push({ type: 'builtin', pattern: wordBoundary(options.builtins) });
|
|
140
|
+
}
|
|
141
|
+
// Operators and punctuation
|
|
142
|
+
patterns.push({ type: 'operator', pattern: exports.COMMON_PATTERNS.operator }, { type: 'punctuation', pattern: exports.COMMON_PATTERNS.punctuation });
|
|
143
|
+
// Whitespace and identifiers last
|
|
144
|
+
patterns.push({ type: 'text', pattern: exports.COMMON_PATTERNS.whitespace }, { type: 'text', pattern: exports.COMMON_PATTERNS.identifier });
|
|
145
|
+
return patterns;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/highlight/tokenizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token types for syntax highlighting
|
|
3
|
+
* Maps to ANSI colors via the theme
|
|
4
|
+
*/
|
|
5
|
+
export type TokenType = 'text' | 'comment' | 'keyword' | 'string' | 'number' | 'operator' | 'punctuation' | 'function' | 'type' | 'variable' | 'property' | 'constant' | 'builtin' | 'regex' | 'decorator' | 'tag' | 'attribute';
|
|
6
|
+
/**
|
|
7
|
+
* A single token produced by the tokenizer
|
|
8
|
+
*/
|
|
9
|
+
export interface Token {
|
|
10
|
+
type: TokenType;
|
|
11
|
+
value: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Language tokenizer definition
|
|
15
|
+
* Each language implements this interface
|
|
16
|
+
*/
|
|
17
|
+
export interface LanguageTokenizer {
|
|
18
|
+
/** Language identifier (e.g., 'typescript', 'python') */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Alternative names/aliases (e.g., 'ts' for typescript) */
|
|
21
|
+
aliases: string[];
|
|
22
|
+
/** File extensions (e.g., ['.ts', '.tsx']) */
|
|
23
|
+
extensions: string[];
|
|
24
|
+
/** Tokenize the input string into tokens */
|
|
25
|
+
tokenize(code: string): Token[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Pattern definition for regex-based tokenization
|
|
29
|
+
* Order matters - first match wins
|
|
30
|
+
*/
|
|
31
|
+
export interface TokenPattern {
|
|
32
|
+
type: TokenType;
|
|
33
|
+
pattern: RegExp;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Language detection result
|
|
37
|
+
*/
|
|
38
|
+
export interface DetectionResult {
|
|
39
|
+
language: string;
|
|
40
|
+
confidence: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* ANSI color codes for each token type
|
|
44
|
+
*/
|
|
45
|
+
export declare const TOKEN_TO_ANSI: Record<TokenType, string>;
|
|
46
|
+
export declare const ANSI_RESET = "\u001B[0m";
|
|
47
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/highlight/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,aAAa,GACb,UAAU,GACV,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GACV,SAAS,GACT,OAAO,GACP,WAAW,GACX,KAAK,GACL,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IAEb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,EAAE,CAAC;IAErB,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAkBnD,CAAC;AAEF,eAAO,MAAM,UAAU,cAAY,CAAC"}
|