sourcelib 0.1.0
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/LICENSE +7 -0
- package/README.md +4 -0
- package/out/captions/caption-tag-matches.d.ts +13 -0
- package/out/captions/caption-tag-matches.js +40 -0
- package/out/captions/caption-tag-matches.js.map +1 -0
- package/out/captions/main.d.ts +2 -0
- package/out/captions/main.js +3 -0
- package/out/captions/main.js.map +1 -0
- package/out/fs/source-fs.d.ts +1 -0
- package/out/fs/source-fs.js +8 -0
- package/out/fs/source-fs.js.map +1 -0
- package/out/kv/main.d.ts +6 -0
- package/out/kv/main.js +10 -0
- package/out/kv/main.js.map +1 -0
- package/out/kv/parser-types.d.ts +123 -0
- package/out/kv/parser-types.js +296 -0
- package/out/kv/parser-types.js.map +1 -0
- package/out/kv/parser.d.ts +3 -0
- package/out/kv/parser.js +121 -0
- package/out/kv/parser.js.map +1 -0
- package/out/kv/serializer.d.ts +20 -0
- package/out/kv/serializer.js +143 -0
- package/out/kv/serializer.js.map +1 -0
- package/out/kv/string-util.d.ts +20 -0
- package/out/kv/string-util.js +44 -0
- package/out/kv/string-util.js.map +1 -0
- package/out/kv/tokenizer.d.ts +7 -0
- package/out/kv/tokenizer.js +137 -0
- package/out/kv/tokenizer.js.map +1 -0
- package/out/main.d.ts +5 -0
- package/out/main.js +6 -0
- package/out/main.js.map +1 -0
- package/out/vmt/color.d.ts +16 -0
- package/out/vmt/color.js +76 -0
- package/out/vmt/color.js.map +1 -0
- package/out/vmt/main.d.ts +5 -0
- package/out/vmt/main.js +6 -0
- package/out/vmt/main.js.map +1 -0
- package/out/vmt/matrix.d.ts +5 -0
- package/out/vmt/matrix.js +15 -0
- package/out/vmt/matrix.js.map +1 -0
- package/out/vmt/shader-param-list.d.ts +3 -0
- package/out/vmt/shader-param-list.js +964 -0
- package/out/vmt/shader-param-list.js.map +1 -0
- package/out/vmt/shader-param.d.ts +14 -0
- package/out/vmt/shader-param.js +16 -0
- package/out/vmt/shader-param.js.map +1 -0
- package/package.json +31 -0
package/out/kv/parser.js
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { tokenize } from "./tokenizer";
|
|
2
|
+
import { Document, Item, ParseError, ParseErrorType, Position, Literal, Range, TokenType } from "./parser-types";
|
|
3
|
+
export function parseText(text) {
|
|
4
|
+
const tokens = tokenize(text);
|
|
5
|
+
const document = parseTokens(tokens);
|
|
6
|
+
return document;
|
|
7
|
+
}
|
|
8
|
+
export function parseTokens(tokens) {
|
|
9
|
+
const state = {
|
|
10
|
+
conditionToken: null,
|
|
11
|
+
currentParent: null,
|
|
12
|
+
keyToken: null,
|
|
13
|
+
valueTokens: [],
|
|
14
|
+
errors: new Array(),
|
|
15
|
+
roots: new Array()
|
|
16
|
+
};
|
|
17
|
+
for (const token of tokens) {
|
|
18
|
+
// Ignore comments
|
|
19
|
+
if (token.type === TokenType.Comment)
|
|
20
|
+
continue;
|
|
21
|
+
// KV set is done
|
|
22
|
+
completeOutstandingKvSet(state, token);
|
|
23
|
+
if (token.type === TokenType.Key) {
|
|
24
|
+
state.keyToken = token;
|
|
25
|
+
state.valueTokens = [];
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
if (token.type === TokenType.Value) {
|
|
29
|
+
if (state.keyToken == null) {
|
|
30
|
+
// This should never happen, but just in case.
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
state.valueTokens.push(token);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (token.type === TokenType.ObjectStart) {
|
|
37
|
+
if (state.keyToken == null) {
|
|
38
|
+
const error = new ParseError(ParseErrorType.UnexpectedOpeningBrace, token.getPosition());
|
|
39
|
+
state.errors.push(error);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const key = state.keyToken.toLiteral();
|
|
43
|
+
const condition = state.conditionToken?.toConditional();
|
|
44
|
+
const item = Item.createContainer(state.currentParent, key, [], condition);
|
|
45
|
+
item.startPopulatingContainer(token.toLiteral());
|
|
46
|
+
if (state.currentParent == null) {
|
|
47
|
+
state.currentParent = item;
|
|
48
|
+
state.roots.push(item);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
state.currentParent.addChild(item);
|
|
52
|
+
state.currentParent = item;
|
|
53
|
+
}
|
|
54
|
+
state.keyToken = null;
|
|
55
|
+
state.conditionToken = null;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (token.type === TokenType.ObjectEnd) {
|
|
59
|
+
if (state.currentParent == null) {
|
|
60
|
+
const error = new ParseError(ParseErrorType.UnexpectedClosingBrace, token.getPosition());
|
|
61
|
+
state.errors.push(error);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
state.currentParent.endPopulatingContainer(token.toLiteral());
|
|
65
|
+
state.currentParent = state.currentParent.getParent();
|
|
66
|
+
}
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (token.type === TokenType.Conditional) {
|
|
70
|
+
state.conditionToken = token;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (state.keyToken != null) {
|
|
75
|
+
if (state.currentParent == null) {
|
|
76
|
+
const pos = getKvSetPosition(state);
|
|
77
|
+
if (pos != null) {
|
|
78
|
+
state.errors.push(new ParseError(ParseErrorType.MissingRootObject, pos));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return new Document(state.roots, state.errors);
|
|
83
|
+
}
|
|
84
|
+
function getKvSetPosition(s) {
|
|
85
|
+
if (s.keyToken == null)
|
|
86
|
+
return null;
|
|
87
|
+
let end;
|
|
88
|
+
if (s.valueTokens.length > 0) {
|
|
89
|
+
end = s.valueTokens[s.valueTokens.length - 1].range.getEnd();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
end = s.keyToken.range.getEnd();
|
|
93
|
+
}
|
|
94
|
+
const range = new Range(s.keyToken.range.getStart(), end);
|
|
95
|
+
return new Position(s.keyToken.line, range);
|
|
96
|
+
}
|
|
97
|
+
function completeOutstandingKvSet(s, token) {
|
|
98
|
+
if (s.keyToken == null || s.keyToken.line === token.line || token.type === TokenType.ObjectStart)
|
|
99
|
+
return;
|
|
100
|
+
if (s.valueTokens.length == 0) {
|
|
101
|
+
const error = new ParseError(ParseErrorType.MissingValue, s.keyToken.getPosition());
|
|
102
|
+
s.errors.push(error);
|
|
103
|
+
}
|
|
104
|
+
if (s.currentParent == null) {
|
|
105
|
+
const pos = getKvSetPosition(s);
|
|
106
|
+
if (pos != null) {
|
|
107
|
+
s.errors.push(new ParseError(ParseErrorType.MissingRootObject, pos));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const key = s.keyToken.toLiteral();
|
|
112
|
+
const values = s.valueTokens.map(t => new Literal(new Position(t.line, t.range), t.value));
|
|
113
|
+
const condition = s.conditionToken?.toConditional();
|
|
114
|
+
const item = Item.createLeaf(s.currentParent, key, values, condition);
|
|
115
|
+
s.currentParent.addChild(item);
|
|
116
|
+
}
|
|
117
|
+
s.keyToken = null;
|
|
118
|
+
s.valueTokens = [];
|
|
119
|
+
s.conditionToken = null;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/kv/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Document } from "./parser-types";
|
|
2
|
+
type KvNodeValue = string | number | boolean;
|
|
3
|
+
type KvNodeRecord = {
|
|
4
|
+
[key: string]: KvNodeValue | KvNodeValue[] | KvNode;
|
|
5
|
+
};
|
|
6
|
+
type KvNodeArray = (KvNode | KvNodeValue)[];
|
|
7
|
+
type KvNode = KvNodeRecord | KvNodeArray;
|
|
8
|
+
export interface KvSerializeOptions {
|
|
9
|
+
name?: string;
|
|
10
|
+
indentSpaces?: number;
|
|
11
|
+
indentTabs?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface KvDeserializeOptions {
|
|
14
|
+
detectArrays?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const KvSerializer: {
|
|
17
|
+
serialize(obj: Record<string, unknown>, options?: KvSerializeOptions, nestedLevel?: number): string;
|
|
18
|
+
deserialize(doc: Document, options?: KvDeserializeOptions): KvNode[];
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { isFloatValue, isIntegerValue } from "./string-util";
|
|
2
|
+
export const KvSerializer = {
|
|
3
|
+
serialize(obj, options, nestedLevel = 0) {
|
|
4
|
+
let indentObjStr = "";
|
|
5
|
+
let indentChar = "";
|
|
6
|
+
if (options?.indentTabs) {
|
|
7
|
+
indentChar = "\t";
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
for (let i = 0; i < (options?.indentSpaces ?? 2); i++) {
|
|
11
|
+
indentChar += " ";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
for (let i = 0; i < nestedLevel; i++) {
|
|
15
|
+
indentObjStr += indentChar;
|
|
16
|
+
}
|
|
17
|
+
const indentStrKv = indentObjStr + indentChar;
|
|
18
|
+
const kvObjHead = `${indentObjStr}"${options?.name ?? "Object"}" {`;
|
|
19
|
+
const kvLines = [kvObjHead];
|
|
20
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
21
|
+
const valIsObj = typeof val === "object";
|
|
22
|
+
const objHasCustomToString = typeof val?.toString === "function" && val.toString !== Object.prototype.toString;
|
|
23
|
+
const doSerializeObj = valIsObj && !objHasCustomToString;
|
|
24
|
+
if (doSerializeObj) {
|
|
25
|
+
const serialized = KvSerializer.serialize(val, { ...options, name: key }, nestedLevel + 1);
|
|
26
|
+
kvLines.push(serialized);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const kvString = `${indentStrKv}"${key}" "${String(val)}"`;
|
|
30
|
+
kvLines.push(kvString);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
kvLines.push(`${indentObjStr}}`);
|
|
34
|
+
const fullStr = kvLines.join("\n");
|
|
35
|
+
return fullStr;
|
|
36
|
+
},
|
|
37
|
+
deserialize(doc, options) {
|
|
38
|
+
const nodes = doc.getRootItems().map(_deserializeItem).filter(i => i !== undefined);
|
|
39
|
+
if (options?.detectArrays) {
|
|
40
|
+
return _recursiveTransformNodesToArray(nodes);
|
|
41
|
+
}
|
|
42
|
+
return nodes;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
function _deserializeItem(item) {
|
|
46
|
+
const children = item.getChildren();
|
|
47
|
+
if (!children) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const node = {};
|
|
51
|
+
for (const child of children) {
|
|
52
|
+
const values = child.getValues();
|
|
53
|
+
const hasChildren = child.getChildren() !== null;
|
|
54
|
+
const name = child.getKey().getUnquotedContent();
|
|
55
|
+
if (values) {
|
|
56
|
+
const val = _deserializeItemValue(values);
|
|
57
|
+
if (val !== undefined) {
|
|
58
|
+
node[name] = val;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (hasChildren) {
|
|
62
|
+
const childName = child.getKey().getUnquotedContent();
|
|
63
|
+
const childItem = _deserializeItem(child);
|
|
64
|
+
if (childItem) {
|
|
65
|
+
node[childName] = childItem;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return node;
|
|
70
|
+
}
|
|
71
|
+
function _deserializeItemValue(vals) {
|
|
72
|
+
if (vals.length === 1) {
|
|
73
|
+
return _transformKvValue(vals[0].getUnquotedContent());
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
return vals.map(v => _transformKvValue(v.getUnquotedContent()));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function _recursiveTransformNodesToArray(nodes) {
|
|
80
|
+
const result = [];
|
|
81
|
+
for (const node of nodes) {
|
|
82
|
+
result.push(_transformNodeToArray(node));
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
function _transformNodeToArray(node) {
|
|
87
|
+
if (typeof node !== "object") {
|
|
88
|
+
return node;
|
|
89
|
+
}
|
|
90
|
+
const resultNode = {};
|
|
91
|
+
const entries = Object.entries(node);
|
|
92
|
+
for (const [k, v] of entries) {
|
|
93
|
+
if (typeof v === "object") {
|
|
94
|
+
const newV = _transformNodeToArray(v);
|
|
95
|
+
if (_isArrayNode(newV)) {
|
|
96
|
+
resultNode[k] = Array.from(Object.values(newV));
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
resultNode[k] = v;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
resultNode[k] = v;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return resultNode;
|
|
107
|
+
}
|
|
108
|
+
function _isArrayNode(node) {
|
|
109
|
+
let prev = -1;
|
|
110
|
+
for (const key of Object.keys(node)) {
|
|
111
|
+
const intKey = Number.parseInt(key);
|
|
112
|
+
if (Number.isNaN(intKey)) {
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
if (intKey !== prev + 1) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
prev += 1;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
function _transformKvValue(val) {
|
|
123
|
+
if (isFloatValue(val)) {
|
|
124
|
+
const float = Number.parseFloat(val);
|
|
125
|
+
if (!Number.isNaN(float)) {
|
|
126
|
+
return float;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (isIntegerValue(val)) {
|
|
130
|
+
const int = Number.parseInt(val);
|
|
131
|
+
if (!Number.isNaN(int)) {
|
|
132
|
+
return int;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (val === "true") {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
if (val === "false") {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
return val;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/kv/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const regexScalar: RegExp;
|
|
2
|
+
export declare const regexFloat: RegExp;
|
|
3
|
+
export declare const regexInteger: RegExp;
|
|
4
|
+
export declare function isWhitespace(char: string): boolean;
|
|
5
|
+
export declare function isQuoted(text: string): boolean;
|
|
6
|
+
export declare function stripQuotes(text: string): string;
|
|
7
|
+
declare function isMatchingValue(str: string, regex: RegExp): boolean;
|
|
8
|
+
export declare function isFloatValue(n: string): boolean;
|
|
9
|
+
export declare function isIntegerValue(n: string): boolean;
|
|
10
|
+
export declare function isScalarValue(n: string): boolean;
|
|
11
|
+
declare const _default: {
|
|
12
|
+
isWhitespace: typeof isWhitespace;
|
|
13
|
+
isQuoted: typeof isQuoted;
|
|
14
|
+
stripQuotes: typeof stripQuotes;
|
|
15
|
+
isMatchingValue: typeof isMatchingValue;
|
|
16
|
+
isFloatValue: typeof isFloatValue;
|
|
17
|
+
isIntegerValue: typeof isIntegerValue;
|
|
18
|
+
isScalarValue: typeof isScalarValue;
|
|
19
|
+
};
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// ==========================================================================
|
|
2
|
+
// Purpose:
|
|
3
|
+
// Basic string functions for keyvalue tokenization
|
|
4
|
+
// ==========================================================================
|
|
5
|
+
export const regexScalar = /^((0?\.\d+)|([10]?\.\d+)|[01])$/;
|
|
6
|
+
export const regexFloat = /^-?((\d+)|(\d*\.\d+))$/;
|
|
7
|
+
export const regexInteger = /^-?\d+$/;
|
|
8
|
+
export function isWhitespace(char) {
|
|
9
|
+
return char === " " || char === "\t" || char === "\n" || char === "\r";
|
|
10
|
+
}
|
|
11
|
+
export function isQuoted(text) {
|
|
12
|
+
return (text.startsWith("\"") && text.endsWith("\"")) ||
|
|
13
|
+
(text.startsWith("'") && text.endsWith("'"));
|
|
14
|
+
}
|
|
15
|
+
export function stripQuotes(text) {
|
|
16
|
+
if (isQuoted(text)) {
|
|
17
|
+
return text.substring(1, text.length - 1);
|
|
18
|
+
}
|
|
19
|
+
else
|
|
20
|
+
return text;
|
|
21
|
+
}
|
|
22
|
+
function isMatchingValue(str, regex) {
|
|
23
|
+
const matches = str.match(regex);
|
|
24
|
+
return matches != null;
|
|
25
|
+
}
|
|
26
|
+
export function isFloatValue(n) {
|
|
27
|
+
return isMatchingValue(n, regexFloat);
|
|
28
|
+
}
|
|
29
|
+
export function isIntegerValue(n) {
|
|
30
|
+
return isMatchingValue(n, regexInteger);
|
|
31
|
+
}
|
|
32
|
+
export function isScalarValue(n) {
|
|
33
|
+
return isMatchingValue(n, regexScalar);
|
|
34
|
+
}
|
|
35
|
+
export default {
|
|
36
|
+
isWhitespace,
|
|
37
|
+
isQuoted,
|
|
38
|
+
stripQuotes,
|
|
39
|
+
isMatchingValue,
|
|
40
|
+
isFloatValue,
|
|
41
|
+
isIntegerValue,
|
|
42
|
+
isScalarValue
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=string-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-util.js","sourceRoot":"","sources":["../../src/kv/string-util.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,WAAW;AACX,mDAAmD;AACnD,6EAA6E;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,wBAAwB,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AAEtC,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,OAAO,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,IAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;;QAAM,OAAO,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,KAAa;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,OAAO,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IAClC,OAAO,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAS;IACpC,OAAO,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,CAAS;IACnC,OAAO,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAED,eAAe;IACX,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,eAAe;IACf,YAAY;IACZ,cAAc;IACd,aAAa;CAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TokenList } from "./parser-types";
|
|
2
|
+
export declare function tokenize(text: string): TokenList;
|
|
3
|
+
export declare function consumeComment(text: string, i: number): number;
|
|
4
|
+
export declare function consumeConditional(text: string, i: number): number;
|
|
5
|
+
export declare function consumeString(text: string, i: number): number;
|
|
6
|
+
export declare function consumeStringQuoted(text: string, i: number, startingQuote: string): number;
|
|
7
|
+
export declare function consumeStringUnquoted(text: string, i: number): number;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { isWhitespace } from "./string-util";
|
|
2
|
+
import { TokenList, TokenType, Token, Range } from "./parser-types";
|
|
3
|
+
const preprocessorRegex = /#(base|include)/;
|
|
4
|
+
export function tokenize(text) {
|
|
5
|
+
return tokenizeInternal(text);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Sets basic tokens for the file provided. The semantic token provider must do analysis on these, as it's not done here. These tokens could be in illegal positions, but since we might want to do different analysis depending on the keyvalue format (eg VMT), it's better to analyse later.
|
|
9
|
+
* @param text The text of the file to tokenize
|
|
10
|
+
*/
|
|
11
|
+
function tokenizeInternal(text) {
|
|
12
|
+
const textSize = text.length;
|
|
13
|
+
const tokenList = new TokenList();
|
|
14
|
+
let line = 0;
|
|
15
|
+
let lineColumn = -1;
|
|
16
|
+
let expectingKey = true;
|
|
17
|
+
for (let i = 0; i < textSize; i++) {
|
|
18
|
+
const c = text[i];
|
|
19
|
+
lineColumn++;
|
|
20
|
+
// Skip forward to the next interesting token
|
|
21
|
+
if (c === " " || c === "\t")
|
|
22
|
+
continue;
|
|
23
|
+
if (c === "\r" || c === "\n") {
|
|
24
|
+
if (c === "\n") {
|
|
25
|
+
line++;
|
|
26
|
+
lineColumn = -1;
|
|
27
|
+
}
|
|
28
|
+
expectingKey = true;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Is it a comment?
|
|
32
|
+
if (c === "/" && text[i + 1] === "/") {
|
|
33
|
+
const commentLength = consumeComment(text, i + 2);
|
|
34
|
+
tokenList.push(new Token(TokenType.Comment, new Range(lineColumn, lineColumn + commentLength), text.substring(i, i + commentLength), line));
|
|
35
|
+
i += commentLength - 1;
|
|
36
|
+
lineColumn += commentLength - 1;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
// Is it an object?
|
|
40
|
+
if (c === "{") {
|
|
41
|
+
tokenList.push(new Token(TokenType.ObjectStart, new Range(lineColumn, lineColumn + 1), text[i], line));
|
|
42
|
+
expectingKey = true;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (c === "}") {
|
|
46
|
+
tokenList.push(new Token(TokenType.ObjectEnd, new Range(lineColumn, lineColumn + 1), text[i], line));
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// Is it a conditional?
|
|
50
|
+
if (c === "[") {
|
|
51
|
+
const conditionalLength = consumeConditional(text, i);
|
|
52
|
+
tokenList.push(new Token(TokenType.Conditional, new Range(lineColumn, lineColumn + conditionalLength), text.substring(i, i + conditionalLength), line));
|
|
53
|
+
i += conditionalLength - 1;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// No, it's a string!
|
|
57
|
+
const stringLength = consumeString(text, i);
|
|
58
|
+
const stringContent = text.substring(i, i + stringLength);
|
|
59
|
+
let tokenType = expectingKey ? TokenType.Key : TokenType.Value;
|
|
60
|
+
// Are we a preprocessor key?
|
|
61
|
+
if (expectingKey && stringContent.match(preprocessorRegex)) {
|
|
62
|
+
tokenType = TokenType.PreprocessorKey;
|
|
63
|
+
}
|
|
64
|
+
tokenList.push(new Token(tokenType, new Range(lineColumn, lineColumn + stringLength), stringContent, line));
|
|
65
|
+
if (expectingKey)
|
|
66
|
+
expectingKey = false;
|
|
67
|
+
i += stringLength - 1; // Prevents skipping the next character after the string
|
|
68
|
+
lineColumn += stringLength - 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
return tokenList;
|
|
72
|
+
}
|
|
73
|
+
export function consumeComment(text, i) {
|
|
74
|
+
let n = 1;
|
|
75
|
+
let c = text[i];
|
|
76
|
+
for (; c != null; c = text[i + n++]) {
|
|
77
|
+
if (c === "\n" || c === "\r") {
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return n + 1;
|
|
82
|
+
}
|
|
83
|
+
export function consumeConditional(text, i) {
|
|
84
|
+
let n = 1;
|
|
85
|
+
let c = text[i];
|
|
86
|
+
for (; c != null; c = text[i + n++]) {
|
|
87
|
+
if (c === "]" || c === "\n" || c === "\r") {
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return n;
|
|
92
|
+
}
|
|
93
|
+
export function consumeString(text, i) {
|
|
94
|
+
const c = text[i];
|
|
95
|
+
// Is it quoted?
|
|
96
|
+
if (c === "\"" || c === "'") {
|
|
97
|
+
return consumeStringQuoted(text, i + 1, c);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return consumeStringUnquoted(text, i + 1);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export function consumeStringQuoted(text, i, startingQuote) {
|
|
104
|
+
let n = 1;
|
|
105
|
+
let escaped = false;
|
|
106
|
+
let c = text[i];
|
|
107
|
+
for (; c != null; c = text[i + n++]) {
|
|
108
|
+
if (c === "\n") {
|
|
109
|
+
return n;
|
|
110
|
+
}
|
|
111
|
+
if (c === "\\") {
|
|
112
|
+
escaped = !escaped;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (c === startingQuote) {
|
|
116
|
+
if (escaped) {
|
|
117
|
+
escaped = false;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
if (escaped)
|
|
126
|
+
escaped = false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return n + 1;
|
|
130
|
+
}
|
|
131
|
+
export function consumeStringUnquoted(text, i) {
|
|
132
|
+
let n = 0;
|
|
133
|
+
for (; i + n < text.length && !isWhitespace(text[i + n]); n++)
|
|
134
|
+
;
|
|
135
|
+
return n + 1;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/kv/tokenizer.ts"],"names":[],"mappings":"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"}
|
package/out/main.d.ts
ADDED
package/out/main.js
ADDED
package/out/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAElC,OAAO,EACH,QAAQ,EACR,EAAE,EACF,EAAE,EACF,GAAG,GACN,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare enum ColorMatchParenthesisType {
|
|
2
|
+
None = 0,
|
|
3
|
+
Brackets = 1,
|
|
4
|
+
Braces = 2,
|
|
5
|
+
Inconsistent = 3
|
|
6
|
+
}
|
|
7
|
+
export declare class ColorMatchDescription {
|
|
8
|
+
r: number;
|
|
9
|
+
g: number;
|
|
10
|
+
b: number;
|
|
11
|
+
a: number;
|
|
12
|
+
validFormat: boolean;
|
|
13
|
+
valuesOutOfBounds: boolean;
|
|
14
|
+
parenthesisType: ColorMatchParenthesisType;
|
|
15
|
+
}
|
|
16
|
+
export declare function getColorMatches(colorString: string): ColorMatchDescription;
|
package/out/vmt/color.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export var ColorMatchParenthesisType;
|
|
2
|
+
(function (ColorMatchParenthesisType) {
|
|
3
|
+
ColorMatchParenthesisType[ColorMatchParenthesisType["None"] = 0] = "None";
|
|
4
|
+
ColorMatchParenthesisType[ColorMatchParenthesisType["Brackets"] = 1] = "Brackets";
|
|
5
|
+
ColorMatchParenthesisType[ColorMatchParenthesisType["Braces"] = 2] = "Braces";
|
|
6
|
+
ColorMatchParenthesisType[ColorMatchParenthesisType["Inconsistent"] = 3] = "Inconsistent";
|
|
7
|
+
})(ColorMatchParenthesisType || (ColorMatchParenthesisType = {}));
|
|
8
|
+
export class ColorMatchDescription {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.r = 0;
|
|
11
|
+
this.g = 0;
|
|
12
|
+
this.b = 0;
|
|
13
|
+
this.a = 1;
|
|
14
|
+
this.validFormat = false;
|
|
15
|
+
this.valuesOutOfBounds = false;
|
|
16
|
+
this.parenthesisType = ColorMatchParenthesisType.None;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function createOutOfBounds(parenthesisType) {
|
|
20
|
+
const desc = new ColorMatchDescription();
|
|
21
|
+
desc.validFormat = true;
|
|
22
|
+
desc.valuesOutOfBounds = true;
|
|
23
|
+
desc.parenthesisType = parenthesisType;
|
|
24
|
+
return desc;
|
|
25
|
+
}
|
|
26
|
+
// Rgb must be between 0 and 255
|
|
27
|
+
function createValid(r, g, b, parenthesisType) {
|
|
28
|
+
const desc = new ColorMatchDescription();
|
|
29
|
+
desc.r = r;
|
|
30
|
+
desc.g = g;
|
|
31
|
+
desc.b = b;
|
|
32
|
+
desc.validFormat = true;
|
|
33
|
+
desc.parenthesisType = parenthesisType;
|
|
34
|
+
return desc;
|
|
35
|
+
}
|
|
36
|
+
function createInconsistent() {
|
|
37
|
+
const desc = new ColorMatchDescription();
|
|
38
|
+
desc.parenthesisType = ColorMatchParenthesisType.Inconsistent;
|
|
39
|
+
return desc;
|
|
40
|
+
}
|
|
41
|
+
function isSameParenSet(p1, p2) {
|
|
42
|
+
return p1 === "{" && p2 === "}" || p1 === "[" && p2 === "]";
|
|
43
|
+
}
|
|
44
|
+
export function getColorMatches(colorString) {
|
|
45
|
+
// Regex matches color syntax [1 0 0.3] or {255 0 4}
|
|
46
|
+
// Matches more than the actual syntax allows to allow for more specific analysis and error messages later on instead of just not matching
|
|
47
|
+
const matches = colorString.match(/ *(\[|\{) *(-?\d*\.?\d+) *(-?\d*\.?\d+) *(-?\d*\.?\d+) *(\]|\}) */);
|
|
48
|
+
if (!matches)
|
|
49
|
+
return new ColorMatchDescription();
|
|
50
|
+
const p1 = matches[1];
|
|
51
|
+
const p2 = matches[5];
|
|
52
|
+
if (!isSameParenSet(p1, p2)) {
|
|
53
|
+
return createInconsistent();
|
|
54
|
+
}
|
|
55
|
+
let is255 = false;
|
|
56
|
+
const limitMin = 0;
|
|
57
|
+
let limitMax = 1;
|
|
58
|
+
if (p1 === "{") {
|
|
59
|
+
is255 = true;
|
|
60
|
+
limitMax = 255;
|
|
61
|
+
}
|
|
62
|
+
const parenType = is255 ? ColorMatchParenthesisType.Braces : ColorMatchParenthesisType.Brackets;
|
|
63
|
+
let r = parseFloat(matches[2]);
|
|
64
|
+
let g = parseFloat(matches[3]);
|
|
65
|
+
let b = parseFloat(matches[4]);
|
|
66
|
+
if (r > limitMax || r < limitMin || g > limitMax || g < limitMin || b > limitMax || b < limitMin) {
|
|
67
|
+
return createOutOfBounds(parenType);
|
|
68
|
+
}
|
|
69
|
+
if (is255) {
|
|
70
|
+
r /= 255;
|
|
71
|
+
g /= 255;
|
|
72
|
+
b /= 255;
|
|
73
|
+
}
|
|
74
|
+
return createValid(r, g, b, parenType);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/vmt/color.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ShaderParam, ShaderParamHint } from "./shader-param";
|
|
2
|
+
import { shaderParams, internalTextures } from "./shader-param-list";
|
|
3
|
+
import { ColorMatchDescription, ColorMatchParenthesisType, getColorMatches } from "./color";
|
|
4
|
+
import { getMatrixMatches, matrixRegExp } from "./matrix";
|
|
5
|
+
export { ShaderParam, ShaderParamHint, ColorMatchDescription, ColorMatchParenthesisType, getColorMatches, getMatrixMatches, matrixRegExp, shaderParams, internalTextures };
|