@bscotch/gcdata 0.20.0 → 0.21.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/dist/GameChanger.js +1 -1
- package/dist/GameChanger.js.map +1 -1
- package/dist/cl2.character.pointers.d.ts +3 -0
- package/dist/cl2.character.pointers.d.ts.map +1 -0
- package/dist/cl2.character.pointers.js +2 -0
- package/dist/cl2.character.pointers.js.map +1 -0
- package/dist/cl2.chat.pointers.d.ts +3 -0
- package/dist/cl2.chat.pointers.d.ts.map +1 -0
- package/dist/cl2.chat.pointers.js +2 -0
- package/dist/cl2.chat.pointers.js.map +1 -0
- package/dist/cl2.comfort.d.ts +4 -0
- package/dist/cl2.comfort.d.ts.map +1 -0
- package/dist/cl2.comfort.js +4 -0
- package/dist/cl2.comfort.js.map +1 -0
- package/dist/cl2.comfort.parse.d.ts +7 -0
- package/dist/cl2.comfort.parse.d.ts.map +1 -0
- package/dist/cl2.comfort.parse.js +109 -0
- package/dist/cl2.comfort.parse.js.map +1 -0
- package/dist/cl2.comfort.pointers.d.ts +3 -0
- package/dist/cl2.comfort.pointers.d.ts.map +1 -0
- package/dist/cl2.comfort.pointers.js +2 -0
- package/dist/cl2.comfort.pointers.js.map +1 -0
- package/dist/cl2.comfort.stringify.d.ts +4 -0
- package/dist/cl2.comfort.stringify.d.ts.map +1 -0
- package/dist/cl2.comfort.stringify.js +25 -0
- package/dist/cl2.comfort.stringify.js.map +1 -0
- package/dist/cl2.comfort.types.d.ts +14 -0
- package/dist/cl2.comfort.types.d.ts.map +1 -0
- package/dist/cl2.comfort.types.js +23 -0
- package/dist/cl2.comfort.types.js.map +1 -0
- package/dist/cl2.quest.d.ts +1 -1
- package/dist/cl2.quest.d.ts.map +1 -1
- package/dist/cl2.quest.js +1 -1
- package/dist/cl2.quest.js.map +1 -1
- package/dist/cl2.quest.parse.d.ts +1 -1
- package/dist/cl2.quest.parse.d.ts.map +1 -1
- package/dist/cl2.quest.parse.js +42 -196
- package/dist/cl2.quest.parse.js.map +1 -1
- package/dist/cl2.quest.types.d.ts +15 -105
- package/dist/cl2.quest.types.d.ts.map +1 -1
- package/dist/cl2.quest.types.js +1 -84
- package/dist/cl2.quest.types.js.map +1 -1
- package/dist/cl2.quest.utils.d.ts +0 -2
- package/dist/cl2.quest.utils.d.ts.map +1 -1
- package/dist/cl2.quest.utils.js +0 -14
- package/dist/cl2.quest.utils.js.map +1 -1
- package/dist/cl2.shared.parse.d.ts +38 -0
- package/dist/cl2.shared.parse.d.ts.map +1 -0
- package/dist/cl2.shared.parse.js +223 -0
- package/dist/cl2.shared.parse.js.map +1 -0
- package/dist/cl2.shared.types.d.ts +126 -0
- package/dist/cl2.shared.types.d.ts.map +1 -0
- package/dist/cl2.shared.types.js +108 -0
- package/dist/cl2.shared.types.js.map +1 -0
- package/dist/cl2.storyline.d.ts +1 -1
- package/dist/cl2.storyline.d.ts.map +1 -1
- package/dist/cl2.storyline.js +1 -1
- package/dist/cl2.storyline.js.map +1 -1
- package/dist/cl2.storyline.parse.d.ts.map +1 -1
- package/dist/cl2.storyline.parse.js +18 -176
- package/dist/cl2.storyline.parse.js.map +1 -1
- package/dist/cl2.storyline.stringify.d.ts +1 -1
- package/dist/cl2.storyline.stringify.d.ts.map +1 -1
- package/dist/cl2.storyline.types.d.ts +5 -28
- package/dist/cl2.storyline.types.d.ts.map +1 -1
- package/dist/cl2.storyline.types.js +1 -65
- package/dist/cl2.storyline.types.js.map +1 -1
- package/dist/cl2.types.auto.d.ts +10635 -10434
- package/dist/cl2.types.auto.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types.editor.d.ts +10 -0
- package/dist/types.editor.d.ts.map +1 -1
- package/dist/util.d.ts +2 -2
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +3 -0
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
- package/dist/cl2.storyline.utils.d.ts +0 -1
- package/dist/cl2.storyline.utils.d.ts.map +0 -1
- package/dist/cl2.storyline.utils.js +0 -2
- package/dist/cl2.storyline.utils.js.map +0 -1
- package/dist/cl2.types.editor.d.ts +0 -33
- package/dist/cl2.types.editor.d.ts.map +0 -1
- package/dist/cl2.types.editor.js +0 -2
- package/dist/cl2.types.editor.js.map +0 -1
- package/dist/dict.d.ts +0 -3
- package/dist/dict.d.ts.map +0 -1
- package/dist/dict.js +0 -49777
- package/dist/dict.js.map +0 -1
package/dist/cl2.quest.types.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export const questSchemaId = 'cl2_quest';
|
|
1
|
+
import { arrayTagPattern, questSchemaId, } from './cl2.shared.types.js';
|
|
3
2
|
export function listQuests(gcData) {
|
|
4
3
|
return gcData.listMotesBySchema(questSchemaId);
|
|
5
4
|
}
|
|
@@ -7,47 +6,6 @@ export function isQuestMote(mote) {
|
|
|
7
6
|
return mote.schema_id === questSchemaId;
|
|
8
7
|
}
|
|
9
8
|
export const sections = ['start moments', 'end moments'];
|
|
10
|
-
const linePartsSchema = z.object({
|
|
11
|
-
indicator: z
|
|
12
|
-
.string()
|
|
13
|
-
.optional()
|
|
14
|
-
.describe('The symbol prefixing the line to indicate what the line type is'),
|
|
15
|
-
arrayTag: z
|
|
16
|
-
.string()
|
|
17
|
-
.regex(/^[a-z0-9]+$/)
|
|
18
|
-
.optional()
|
|
19
|
-
.describe("BsArrayElement identifier (without the '#' prefix)"),
|
|
20
|
-
moteTag: z
|
|
21
|
-
.string()
|
|
22
|
-
.regex(/^[\w_-]+$/)
|
|
23
|
-
.optional()
|
|
24
|
-
.describe("MoteId (without the '@' prefix)"),
|
|
25
|
-
moteName: z.string().optional().describe('Mote Name'),
|
|
26
|
-
emojiGroup: z
|
|
27
|
-
.string()
|
|
28
|
-
.optional()
|
|
29
|
-
.describe('The emoji name, including the outer `()`'),
|
|
30
|
-
emojiName: z.string().optional().describe("The emoji's mote name"),
|
|
31
|
-
labelGroup: z.string().optional().describe('The label, including the `:`'),
|
|
32
|
-
label: z.string().optional().describe('For `Label:Value` elements'),
|
|
33
|
-
sep: z
|
|
34
|
-
.string()
|
|
35
|
-
.optional()
|
|
36
|
-
.describe('Separator between the line prefix and content.'),
|
|
37
|
-
text: z
|
|
38
|
-
.string()
|
|
39
|
-
.optional()
|
|
40
|
-
.describe('For dialog and similar, the text content'),
|
|
41
|
-
style: z
|
|
42
|
-
.string()
|
|
43
|
-
.optional()
|
|
44
|
-
.describe('For array elements whose values come in distinct flavors, the identifier indicating which flavor it is'),
|
|
45
|
-
status: z
|
|
46
|
-
.string()
|
|
47
|
-
.optional()
|
|
48
|
-
.describe('For entries that have some kind of "status" concept'),
|
|
49
|
-
});
|
|
50
|
-
export const arrayTagPattern = '(?:#(?<arrayTag>[a-z0-9]+))';
|
|
51
9
|
const moteTagPattern = '(?:@(?<moteTag>[a-z0-9_]+))';
|
|
52
10
|
const moteNamePattern = "(?<moteName>[A-Za-z0-9:&?! ',()/-]+)";
|
|
53
11
|
const emojiGroupPattern = '(?<emojiGroup>\\(\\s*(?<emojiName>[^)]*?)\\s*\\))';
|
|
@@ -72,45 +30,4 @@ export const linePatterns = [
|
|
|
72
30
|
/** Non-Dialog Moment */
|
|
73
31
|
`^(?<indicator>\\?)\\s*?${arrayTagPattern}?(?<sep>\\s+)(?<style>.*?)?\\s*$`,
|
|
74
32
|
];
|
|
75
|
-
export function parseIfMatch(pattern, line, startPosition) {
|
|
76
|
-
const rawMatch = line.match(new RegExp(pattern));
|
|
77
|
-
if (!rawMatch)
|
|
78
|
-
return null;
|
|
79
|
-
const parsedLine = linePartsSchema.parse(rawMatch.groups);
|
|
80
|
-
const result = {
|
|
81
|
-
_: {
|
|
82
|
-
start: startPosition,
|
|
83
|
-
end: { ...startPosition },
|
|
84
|
-
value: line,
|
|
85
|
-
},
|
|
86
|
-
};
|
|
87
|
-
result._.end.character += line.length;
|
|
88
|
-
result._.end.index += line.length;
|
|
89
|
-
for (const [key, value] of Object.entries(parsedLine)) {
|
|
90
|
-
if (typeof value !== 'undefined') {
|
|
91
|
-
// Figure out where this is in the matches so we
|
|
92
|
-
// can get the start and end positions.
|
|
93
|
-
const startChar = line.indexOf(`${value}`);
|
|
94
|
-
const endChar = startChar + `${value}`.length;
|
|
95
|
-
const start = { ...startPosition };
|
|
96
|
-
start.character += startChar;
|
|
97
|
-
start.index += startChar;
|
|
98
|
-
const end = { ...startPosition };
|
|
99
|
-
end.character += endChar;
|
|
100
|
-
end.index += endChar;
|
|
101
|
-
result[key] = {
|
|
102
|
-
start,
|
|
103
|
-
end,
|
|
104
|
-
value: value,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return result;
|
|
109
|
-
}
|
|
110
|
-
export function lineIsArrayItem(line) {
|
|
111
|
-
if (line.match(/^(\t|name|stage|storyline|(start|end) (moments|requirements)|log|giver|receiver)/i)) {
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
33
|
//# sourceMappingURL=cl2.quest.types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cl2.quest.types.js","sourceRoot":"","sources":["../src/cl2.quest.types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cl2.quest.types.js","sourceRoot":"","sources":["../src/cl2.quest.types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAIf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAI/B,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,iBAAiB,CAAY,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAS;IACnC,OAAO,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC;AAC1C,CAAC;AAyFD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,aAAa,CAAU,CAAC;AAElE,MAAM,cAAc,GAAG,6BAA6B,CAAC;AACrD,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,oEAAoE;IACpE,mBAAmB;IACnB,mCAAmC,eAAe,eAAe,eAAe,GAAG,cAAc,UAAU;IAC3G,uBAAuB;IACvB,sBAAsB,eAAe,GAAG,cAAc,UAAU;IAChE,oBAAoB;IACpB,wBAAwB,eAAe,SAAS,iBAAiB,2BAA2B;IAC5F,mBAAmB;IACnB,yBAAyB,eAAe,wBAAwB;IAChE,wBAAwB;IACxB,0BAA0B,eAAe,QAAQ;IACjD,YAAY;IACZ,wBAAwB,eAAe,iBAAiB,eAAe,GAAG,cAAc,OAAO,iBAAiB,SAAS;IACzH,yBAAyB;IACzB,wEAAwE;IACxE,yBAAyB,eAAe,oFAAoF,eAAe,GAAG,cAAc,MAAM;IAClK,wBAAwB;IACxB,0BAA0B,eAAe,kCAAkC;CAC5E,CAAC"}
|
|
@@ -5,9 +5,7 @@ export declare function getMoteLists(packed: Gcdata): {
|
|
|
5
5
|
allowedGivers: import("./types.js").Mote<unknown, string>[];
|
|
6
6
|
storylines: import("./types.js").Mote<Crashlands2.Storyline1, string>[];
|
|
7
7
|
quests: import("./types.js").Mote<Crashlands2.Quest, string>[];
|
|
8
|
-
emojis: import("./types.js").Mote<Crashlands2.Emoji11, string>[];
|
|
9
8
|
};
|
|
10
|
-
export declare function getStagingOptions(packed: Gcdata): Crashlands2.Staging[];
|
|
11
9
|
export declare function getRequirementQuestStatuses(packed: Gcdata): string[];
|
|
12
10
|
export declare function getRequirementStyleNames(packed: Gcdata): string[];
|
|
13
11
|
export declare function getMomentStyleNames(packed: Gcdata): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cl2.quest.utils.d.ts","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"cl2.quest.utils.d.ts","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;;;;;EA6B1C;AA2BD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBpE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBjE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB5D;AAsBD,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,WAAW,EAC7D,MAAM,EAAE,CAAC,GACR,MAAM,IAAI,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAElC"}
|
package/dist/cl2.quest.utils.js
CHANGED
|
@@ -9,27 +9,13 @@ export function getMoteLists(packed) {
|
|
|
9
9
|
assert(storylines.length > 0, 'Should have at least one storyline mote');
|
|
10
10
|
const quests = packed.listMotesBySchema('cl2_quest');
|
|
11
11
|
assert(quests.length > 0, 'Should have at least one quest mote');
|
|
12
|
-
const emojis = packed.listMotesBySchema('cl2_emoji');
|
|
13
|
-
assert(emojis.length > 0, 'Should have at least one emoji mote');
|
|
14
12
|
return {
|
|
15
13
|
allowedSpeakers,
|
|
16
14
|
allowedGivers,
|
|
17
15
|
storylines,
|
|
18
16
|
quests,
|
|
19
|
-
emojis,
|
|
20
17
|
};
|
|
21
18
|
}
|
|
22
|
-
export function getStagingOptions(packed) {
|
|
23
|
-
const stagingSubchema = resolvePointerInSchema(['wip', 'staging'], {
|
|
24
|
-
schema_id: 'cl2_quest',
|
|
25
|
-
data: {
|
|
26
|
-
wip: {
|
|
27
|
-
staging: 'any',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
}, packed);
|
|
31
|
-
return stagingSubchema.enum;
|
|
32
|
-
}
|
|
33
19
|
function getAllowedSpeakers(packed) {
|
|
34
20
|
const speakerSubchema = resolvePointerInSchema(['quest_start_moments', 'anykey', 'element', 'speech', 'speaker'], {
|
|
35
21
|
schema_id: 'cl2_quest',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cl2.quest.utils.js","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,CACJ,eAAe,CAAC,MAAM,GAAG,CAAC,EAC1B,+CAA+C,CAChD,CAAC;IAEF,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CACJ,aAAa,CAAC,MAAM,GAAG,CAAC,EACxB,6CAA6C,CAC9C,CAAC;IAEF,MAAM,UAAU,GACd,MAAM,CAAC,iBAAiB,CACtB,eAAe,CAChB,CAAC;IACJ,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,yCAAyC,CAAC,CAAC;IAEzE,MAAM,MAAM,GACV,MAAM,CAAC,iBAAiB,CAAmC,WAAW,CAAC,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;IAEjE,
|
|
1
|
+
{"version":3,"file":"cl2.quest.utils.js","sourceRoot":"","sources":["../src/cl2.quest.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ParsedBase, ParsedLine, ParserResult } from './cl2.shared.types.js';
|
|
2
|
+
import type { GameChanger } from './GameChanger.js';
|
|
3
|
+
import { ParsedLineItem } from './types.editor.js';
|
|
4
|
+
export declare function prepareParserHelpers(text: string, packed: GameChanger, options: {
|
|
5
|
+
checkSpelling?: boolean;
|
|
6
|
+
globalLabels?: Set<string>;
|
|
7
|
+
globalNonUniqueLabels?: Set<string>;
|
|
8
|
+
} | undefined, result: ParserResult<any>): {
|
|
9
|
+
glossaryTerms: string[];
|
|
10
|
+
stagingOptions: import("./cl2.types.auto.js").Crashlands2.Staging[];
|
|
11
|
+
emojis: import("./types.js").Mote<import("./cl2.types.auto.js").Crashlands2.Emoji11, string>[];
|
|
12
|
+
emojiIdFromName: (name: string | undefined) => string | undefined;
|
|
13
|
+
checkSpelling: (item: ParsedLineItem<any> | undefined) => void;
|
|
14
|
+
parseCurrentLine: (linePatterns: string[]) => ParsedLine | null;
|
|
15
|
+
addComment: (line: ParsedLine) => void;
|
|
16
|
+
addStage: (line: ParsedLine) => void;
|
|
17
|
+
readonly currentLineRange: {
|
|
18
|
+
start: {
|
|
19
|
+
index: number;
|
|
20
|
+
line: number;
|
|
21
|
+
character: number;
|
|
22
|
+
};
|
|
23
|
+
end: {
|
|
24
|
+
index: number;
|
|
25
|
+
line: number;
|
|
26
|
+
character: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
lines: {
|
|
30
|
+
[Symbol.iterator](): Generator<string, void, unknown>;
|
|
31
|
+
};
|
|
32
|
+
index: number;
|
|
33
|
+
lineNumber: number;
|
|
34
|
+
};
|
|
35
|
+
export declare function isCommentLine(line: ParsedLine): boolean;
|
|
36
|
+
export declare function isStageLine(line: ParsedLine): boolean;
|
|
37
|
+
export declare function updateWipChangesFromParsed(parsed: ParsedBase, moteId: string, packed: GameChanger, trace: (msg: any) => void): void;
|
|
38
|
+
//# sourceMappingURL=cl2.shared.parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.shared.parse.d.ts","sourceRoot":"","sources":["../src/cl2.shared.parse.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,UAAU,EACV,UAAU,EAEV,YAAY,EACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAMpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IACP,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrC,YAAK,EACN,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC;;;;4BA4GM,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAAS;0BArGzC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS;qCA0BpB,MAAM,EAAE,KAAG,UAAU,GAAG,IAAI;uBA8F/C,UAAU;qBAOZ,UAAU;;;;;;;;;;;;;;;;;;EAmD9B;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEvD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAErD;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,QAkD1B"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { assert } from './assert.js';
|
|
2
|
+
import { arrayTagPattern, getEmojis, getStagingOptions, lineIsArrayItem, parseIfMatch, } from './cl2.shared.types.js';
|
|
3
|
+
import { bsArrayToArray, createBsArrayKey, updateBsArrayOrder, } from './helpers.js';
|
|
4
|
+
import { checkWords, includes } from './util.js';
|
|
5
|
+
export function prepareParserHelpers(text, packed, options = {}, result) {
|
|
6
|
+
/** Terms from the glossary for use in autocompletes */
|
|
7
|
+
const glossaryTerms = (packed.glossary?.relevantTerms() || []).map((t) => t.text);
|
|
8
|
+
const checkSpelling = (item) => {
|
|
9
|
+
if (!item || !options.checkSpelling || !packed.glossary)
|
|
10
|
+
return;
|
|
11
|
+
result.words.push(...checkWords(item, packed.glossary));
|
|
12
|
+
};
|
|
13
|
+
const lines = text.split(/(\r?\n)/g);
|
|
14
|
+
let index = 0;
|
|
15
|
+
let lineNumber = 0;
|
|
16
|
+
let currentLine = lines[0];
|
|
17
|
+
const currentLineRange = () => {
|
|
18
|
+
return {
|
|
19
|
+
start: {
|
|
20
|
+
index,
|
|
21
|
+
line: lineNumber,
|
|
22
|
+
character: 0,
|
|
23
|
+
},
|
|
24
|
+
end: {
|
|
25
|
+
index: index + currentLine.length,
|
|
26
|
+
line: lineNumber,
|
|
27
|
+
character: currentLine.length,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
const parseCurrentLine = (linePatterns) => {
|
|
32
|
+
// Find the first matching pattern and pull the values from it.
|
|
33
|
+
let parsedLine = null;
|
|
34
|
+
const lineRange = currentLineRange();
|
|
35
|
+
for (const pattern of linePatterns) {
|
|
36
|
+
parsedLine = parseIfMatch(pattern, currentLine, lineRange.start);
|
|
37
|
+
if (parsedLine)
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
if (!parsedLine) {
|
|
41
|
+
// Then this is likely the result of uncommenting something
|
|
42
|
+
// that was commented out, resulting in a line that starts with
|
|
43
|
+
// the comment's array tag. Provide a deletion edit!
|
|
44
|
+
parsedLine = parseIfMatch(`^${arrayTagPattern} +(?<text>.*)$`, currentLine, lineRange.start);
|
|
45
|
+
if (parsedLine) {
|
|
46
|
+
result.edits.push({
|
|
47
|
+
start: lineRange.start,
|
|
48
|
+
end: lineRange.end,
|
|
49
|
+
newText: parsedLine.text.value,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
result.diagnostics.push({
|
|
54
|
+
message: `Unfamiliar syntax: ${currentLine}`,
|
|
55
|
+
...lineRange,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
index += currentLine.length;
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
// Ensure the array tag. It goes right after the label or indicator.
|
|
62
|
+
if (!parsedLine.arrayTag?.value && lineIsArrayItem(currentLine)) {
|
|
63
|
+
const arrayTag = createBsArrayKey();
|
|
64
|
+
const start = parsedLine.indicator?.end || parsedLine.label?.end;
|
|
65
|
+
result.edits.push({
|
|
66
|
+
start,
|
|
67
|
+
end: start,
|
|
68
|
+
newText: `#${arrayTag}`,
|
|
69
|
+
});
|
|
70
|
+
parsedLine.arrayTag = {
|
|
71
|
+
start,
|
|
72
|
+
end: start,
|
|
73
|
+
value: arrayTag,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// If this has a label, remove it from the list of available labels
|
|
77
|
+
if (parsedLine.label?.value &&
|
|
78
|
+
options.globalLabels?.has(parsedLine.label.value) &&
|
|
79
|
+
!options.globalNonUniqueLabels?.has(parsedLine.label.value)) {
|
|
80
|
+
options.globalLabels.delete(parsedLine.label.value);
|
|
81
|
+
}
|
|
82
|
+
// If this has a text section, provide glossary autocompletes
|
|
83
|
+
if ('text' in parsedLine) {
|
|
84
|
+
const start = parsedLine.text.start;
|
|
85
|
+
const end = parsedLine.text.end;
|
|
86
|
+
result.completions.push({
|
|
87
|
+
type: 'glossary',
|
|
88
|
+
start,
|
|
89
|
+
end,
|
|
90
|
+
options: glossaryTerms,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return parsedLine;
|
|
94
|
+
};
|
|
95
|
+
const stagingOptions = getStagingOptions(packed.working);
|
|
96
|
+
const emojis = getEmojis(packed.working);
|
|
97
|
+
const emojiIdFromName = (name) => {
|
|
98
|
+
if (!name) {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
const emoji = emojis.find((e) => packed.working.getMoteName(e)?.toLowerCase() ===
|
|
102
|
+
name?.trim().toLowerCase() || e.id === name?.trim());
|
|
103
|
+
return emoji?.id;
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
glossaryTerms,
|
|
107
|
+
stagingOptions,
|
|
108
|
+
emojis,
|
|
109
|
+
emojiIdFromName,
|
|
110
|
+
checkSpelling,
|
|
111
|
+
parseCurrentLine,
|
|
112
|
+
addComment: (line) => {
|
|
113
|
+
result.parsed.comments.push({
|
|
114
|
+
id: line.arrayTag?.value?.trim(),
|
|
115
|
+
text: line.text?.value?.trim(),
|
|
116
|
+
});
|
|
117
|
+
checkSpelling(line.text);
|
|
118
|
+
},
|
|
119
|
+
addStage: (line) => {
|
|
120
|
+
const stage = line.text?.value?.trim();
|
|
121
|
+
if (includes(stagingOptions, stage)) {
|
|
122
|
+
result.parsed.stage = stage;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const range = currentLineRange();
|
|
126
|
+
result.diagnostics.push({
|
|
127
|
+
message: `Stage must be one of: ${stagingOptions.join(', ')}`,
|
|
128
|
+
...range,
|
|
129
|
+
});
|
|
130
|
+
// Provide autocomplete options
|
|
131
|
+
result.completions.push({
|
|
132
|
+
type: 'stages',
|
|
133
|
+
options: stagingOptions,
|
|
134
|
+
start: line.labelGroup.end,
|
|
135
|
+
end: range.end,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
get currentLineRange() {
|
|
140
|
+
return currentLineRange();
|
|
141
|
+
},
|
|
142
|
+
lines: {
|
|
143
|
+
// Use a generator
|
|
144
|
+
*[Symbol.iterator]() {
|
|
145
|
+
for (const line of lines) {
|
|
146
|
+
if (line.match(/\r?\n/)) {
|
|
147
|
+
index += line.length;
|
|
148
|
+
lineNumber++;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
// If this is an empty line, add global autocompletes
|
|
152
|
+
if (!line && options.globalLabels) {
|
|
153
|
+
const lineRange = currentLineRange();
|
|
154
|
+
// Add global autocompletes
|
|
155
|
+
result.completions.push({
|
|
156
|
+
type: 'labels',
|
|
157
|
+
start: lineRange.start,
|
|
158
|
+
end: lineRange.end,
|
|
159
|
+
options: options.globalLabels,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
currentLine = line;
|
|
163
|
+
yield line;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
index,
|
|
168
|
+
lineNumber,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export function isCommentLine(line) {
|
|
172
|
+
return line.indicator?.value === '//';
|
|
173
|
+
}
|
|
174
|
+
export function isStageLine(line) {
|
|
175
|
+
return line.label?.value?.toLowerCase() === 'stage';
|
|
176
|
+
}
|
|
177
|
+
export function updateWipChangesFromParsed(parsed, moteId, packed, trace) {
|
|
178
|
+
const baseMote = packed.base.getMote(moteId);
|
|
179
|
+
const workingMote = packed.working.getMote(moteId);
|
|
180
|
+
// Could use pretty much any pointer, since all motes have WIP
|
|
181
|
+
const updateMote = (path, value) => {
|
|
182
|
+
packed.updateMoteData(moteId, path, value);
|
|
183
|
+
};
|
|
184
|
+
if (parsed.stage) {
|
|
185
|
+
updateMote('data/wip/staging', parsed.stage);
|
|
186
|
+
}
|
|
187
|
+
else if (workingMote?.data.wip) {
|
|
188
|
+
updateMote('data/wip/staging', null);
|
|
189
|
+
}
|
|
190
|
+
// Add/Update COMMENTS
|
|
191
|
+
trace(`Updating comments`);
|
|
192
|
+
const parsedComments = parsed.comments.filter((c) => !!c.text);
|
|
193
|
+
for (const comment of parsedComments) {
|
|
194
|
+
trace(`Updating comment ${comment.id} with text "${comment.text}"`);
|
|
195
|
+
updateMote(`data/wip/notes/${comment.id}/element/text`, comment.text);
|
|
196
|
+
}
|
|
197
|
+
// Remove deleted comments
|
|
198
|
+
for (const existingComment of bsArrayToArray(baseMote?.data.wip?.notes || {})) {
|
|
199
|
+
if (!parsedComments.find((c) => c.id === existingComment.id)) {
|
|
200
|
+
trace(`Deleting comment ${existingComment.id}`);
|
|
201
|
+
updateMote(`data/wip/notes/${existingComment.id}`, null);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Get the BASE order of the comments (if any) and use those
|
|
205
|
+
// as the starting point for an up to date order.
|
|
206
|
+
const comments = parsedComments.map((c) => {
|
|
207
|
+
// Look up the base comment
|
|
208
|
+
let comment = baseMote?.data.wip?.notes?.[c.id];
|
|
209
|
+
if (!comment) {
|
|
210
|
+
comment = workingMote?.data.wip?.notes?.[c.id];
|
|
211
|
+
delete comment?.order;
|
|
212
|
+
}
|
|
213
|
+
assert(comment, `Comment ${c.id} not found in base or working mote`);
|
|
214
|
+
return { ...comment, id: c.id };
|
|
215
|
+
});
|
|
216
|
+
trace('Updating comment order');
|
|
217
|
+
updateBsArrayOrder(comments);
|
|
218
|
+
comments.forEach((comment) => {
|
|
219
|
+
trace(`Updating comment ${comment.id} order to ${comment.order}`);
|
|
220
|
+
updateMote(`data/wip/notes/${comment.id}/order`, comment.order);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=cl2.shared.parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.shared.parse.js","sourceRoot":"","sources":["../src/cl2.shared.parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Crashlands2 } from './cl2.types.auto.js';
|
|
3
|
+
import type { Gcdata } from './GameChanger.js';
|
|
4
|
+
import type { ParsedLineItem, ParsedWord, Position, Range } from './types.editor.js';
|
|
5
|
+
import type { Mote } from './types.js';
|
|
6
|
+
export declare const questSchemaId = "cl2_quest";
|
|
7
|
+
export type QuestData = Crashlands2.Schemas['cl2_quest'];
|
|
8
|
+
export type QuestMote = Mote<QuestData>;
|
|
9
|
+
export declare const chatSchemaId = "cl2_chat";
|
|
10
|
+
export type ChatData = Crashlands2.Schemas['cl2_chat'];
|
|
11
|
+
export type ChatMote = Mote<ChatData>;
|
|
12
|
+
export declare const buddySchemaId = "artisan";
|
|
13
|
+
export type BuddyData = Crashlands2.Schemas['artisan'];
|
|
14
|
+
export type BuddyMote = Mote<BuddyData>;
|
|
15
|
+
export declare const npcSchemaId = "cl2_npc";
|
|
16
|
+
export type NpcData = Crashlands2.Schemas['cl2_npc'];
|
|
17
|
+
export type NpcMote = Mote<NpcData>;
|
|
18
|
+
export declare const comfortSchemaId = "cl2_artisan_glads";
|
|
19
|
+
export type ComfortData = Crashlands2.Schemas['cl2_artisan_glads'];
|
|
20
|
+
export type ComfortMote = Mote<ComfortData>;
|
|
21
|
+
export declare const storylineSchemaId = "cl2_storyline";
|
|
22
|
+
export type StorylineData = Crashlands2.Schemas['cl2_storyline'];
|
|
23
|
+
export type StorylineMote = Mote<StorylineData>;
|
|
24
|
+
export interface ParsedComment {
|
|
25
|
+
/** arrayId */
|
|
26
|
+
id: string | undefined;
|
|
27
|
+
text: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface ParsedBase {
|
|
30
|
+
name?: string;
|
|
31
|
+
stage?: Crashlands2.Staging;
|
|
32
|
+
comments: ParsedComment[];
|
|
33
|
+
}
|
|
34
|
+
export interface ParserResult<P extends Record<string, any>> {
|
|
35
|
+
diagnostics: (Range & {
|
|
36
|
+
message: string;
|
|
37
|
+
})[];
|
|
38
|
+
hovers: (Range & {
|
|
39
|
+
title?: string;
|
|
40
|
+
description?: string;
|
|
41
|
+
})[];
|
|
42
|
+
edits: (Range & {
|
|
43
|
+
newText: string;
|
|
44
|
+
})[];
|
|
45
|
+
completions: (Range & CompletionsData)[];
|
|
46
|
+
words: ParsedWord[];
|
|
47
|
+
parsed: ParsedBase & P;
|
|
48
|
+
}
|
|
49
|
+
export type CompletionsData = {
|
|
50
|
+
type: 'motes';
|
|
51
|
+
options: Mote[];
|
|
52
|
+
} | {
|
|
53
|
+
type: 'labels';
|
|
54
|
+
options: Set<string>;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'stages';
|
|
57
|
+
options: Crashlands2.Staging[];
|
|
58
|
+
} | {
|
|
59
|
+
type: 'booleans';
|
|
60
|
+
options: ['true', 'false'];
|
|
61
|
+
} | {
|
|
62
|
+
type: 'momentStyles';
|
|
63
|
+
options: string[];
|
|
64
|
+
} | {
|
|
65
|
+
type: 'requirementStyles';
|
|
66
|
+
options: string[];
|
|
67
|
+
} | {
|
|
68
|
+
type: 'glossary';
|
|
69
|
+
options: string[];
|
|
70
|
+
};
|
|
71
|
+
export type ParsedLine = {
|
|
72
|
+
[K in keyof LineParts]?: ParsedLineItem<LineParts[K]>;
|
|
73
|
+
} & {
|
|
74
|
+
_: {
|
|
75
|
+
start: Position;
|
|
76
|
+
end: Position;
|
|
77
|
+
value: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
export declare const arrayTagPattern = "(?:#(?<arrayTag>[a-z0-9]+))";
|
|
81
|
+
export type LineParts = z.output<typeof linePartsSchema>;
|
|
82
|
+
export declare const linePartsSchema: z.ZodObject<{
|
|
83
|
+
indicator: z.ZodOptional<z.ZodString>;
|
|
84
|
+
arrayTag: z.ZodOptional<z.ZodString>;
|
|
85
|
+
moteTag: z.ZodOptional<z.ZodString>;
|
|
86
|
+
moteName: z.ZodOptional<z.ZodString>;
|
|
87
|
+
emojiGroup: z.ZodOptional<z.ZodString>;
|
|
88
|
+
emojiName: z.ZodOptional<z.ZodString>;
|
|
89
|
+
labelGroup: z.ZodOptional<z.ZodString>;
|
|
90
|
+
label: z.ZodOptional<z.ZodString>;
|
|
91
|
+
sep: z.ZodOptional<z.ZodString>;
|
|
92
|
+
text: z.ZodOptional<z.ZodString>;
|
|
93
|
+
style: z.ZodOptional<z.ZodString>;
|
|
94
|
+
status: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, "strip", z.ZodTypeAny, {
|
|
96
|
+
indicator?: string | undefined;
|
|
97
|
+
arrayTag?: string | undefined;
|
|
98
|
+
moteTag?: string | undefined;
|
|
99
|
+
moteName?: string | undefined;
|
|
100
|
+
emojiGroup?: string | undefined;
|
|
101
|
+
emojiName?: string | undefined;
|
|
102
|
+
labelGroup?: string | undefined;
|
|
103
|
+
label?: string | undefined;
|
|
104
|
+
sep?: string | undefined;
|
|
105
|
+
text?: string | undefined;
|
|
106
|
+
style?: string | undefined;
|
|
107
|
+
status?: string | undefined;
|
|
108
|
+
}, {
|
|
109
|
+
indicator?: string | undefined;
|
|
110
|
+
arrayTag?: string | undefined;
|
|
111
|
+
moteTag?: string | undefined;
|
|
112
|
+
moteName?: string | undefined;
|
|
113
|
+
emojiGroup?: string | undefined;
|
|
114
|
+
emojiName?: string | undefined;
|
|
115
|
+
labelGroup?: string | undefined;
|
|
116
|
+
label?: string | undefined;
|
|
117
|
+
sep?: string | undefined;
|
|
118
|
+
text?: string | undefined;
|
|
119
|
+
style?: string | undefined;
|
|
120
|
+
status?: string | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
export declare function parseIfMatch(pattern: string, line: string, startPosition: Position): ParsedLine | null;
|
|
123
|
+
export declare function lineIsArrayItem(line: string): boolean;
|
|
124
|
+
export declare function getStagingOptions(packed: Gcdata): Crashlands2.Staging[];
|
|
125
|
+
export declare function getEmojis(packed: Gcdata): Mote<Crashlands2.Schemas['cl2_emoji']>[];
|
|
126
|
+
//# sourceMappingURL=cl2.shared.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cl2.shared.types.d.ts","sourceRoot":"","sources":["../src/cl2.shared.types.ts"],"names":[],"mappings":"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"}
|