@cratis/screenplay-language 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/README.md +52 -0
- package/completion-items.ts +128 -0
- package/completion-planner.ts +111 -0
- package/completions.ts +112 -0
- package/diagnostics.ts +52 -0
- package/dist/completion-items.d.ts +23 -0
- package/dist/completion-items.d.ts.map +1 -0
- package/dist/completion-items.js +105 -0
- package/dist/completion-items.js.map +1 -0
- package/dist/completion-planner.d.ts +25 -0
- package/dist/completion-planner.d.ts.map +1 -0
- package/dist/completion-planner.js +90 -0
- package/dist/completion-planner.js.map +1 -0
- package/dist/completions.d.ts +4 -0
- package/dist/completions.d.ts.map +1 -0
- package/dist/completions.js +78 -0
- package/dist/completions.js.map +1 -0
- package/dist/diagnostics.d.ts +5 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +47 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/document-context.d.ts +5 -0
- package/dist/document-context.d.ts.map +1 -0
- package/dist/document-context.js +45 -0
- package/dist/document-context.js.map +1 -0
- package/dist/hover-content.d.ts +2 -0
- package/dist/hover-content.d.ts.map +1 -0
- package/dist/hover-content.js +64 -0
- package/dist/hover-content.js.map +1 -0
- package/dist/hover.d.ts +3 -0
- package/dist/hover.d.ts.map +1 -0
- package/dist/hover.js +15 -0
- package/dist/hover.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/keyword-docs.d.ts +4 -0
- package/dist/keyword-docs.d.ts.map +1 -0
- package/dist/keyword-docs.js +100 -0
- package/dist/keyword-docs.js.map +1 -0
- package/dist/language.d.ts +12 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +117 -0
- package/dist/language.js.map +1 -0
- package/dist/sub-language-registry.d.ts +20 -0
- package/dist/sub-language-registry.d.ts.map +1 -0
- package/dist/sub-language-registry.js +18 -0
- package/dist/sub-language-registry.js.map +1 -0
- package/dist/sub-languages/capture/CompletionProvider.d.ts +32 -0
- package/dist/sub-languages/capture/CompletionProvider.d.ts.map +1 -0
- package/dist/sub-languages/capture/CompletionProvider.js +332 -0
- package/dist/sub-languages/capture/CompletionProvider.js.map +1 -0
- package/dist/sub-languages/capture/HoverProvider.d.ts +8 -0
- package/dist/sub-languages/capture/HoverProvider.d.ts.map +1 -0
- package/dist/sub-languages/capture/HoverProvider.js +87 -0
- package/dist/sub-languages/capture/HoverProvider.js.map +1 -0
- package/dist/sub-languages/capture/Validator.d.ts +6 -0
- package/dist/sub-languages/capture/Validator.d.ts.map +1 -0
- package/dist/sub-languages/capture/Validator.js +72 -0
- package/dist/sub-languages/capture/Validator.js.map +1 -0
- package/dist/sub-languages/capture/index.d.ts +6 -0
- package/dist/sub-languages/capture/index.d.ts.map +1 -0
- package/dist/sub-languages/capture/index.js +58 -0
- package/dist/sub-languages/capture/index.js.map +1 -0
- package/dist/sub-languages/capture/language.d.ts +6 -0
- package/dist/sub-languages/capture/language.d.ts.map +1 -0
- package/dist/sub-languages/capture/language.js +160 -0
- package/dist/sub-languages/capture/language.js.map +1 -0
- package/dist/sub-languages/cdl.d.ts +3 -0
- package/dist/sub-languages/cdl.d.ts.map +1 -0
- package/dist/sub-languages/cdl.js +74 -0
- package/dist/sub-languages/cdl.js.map +1 -0
- package/dist/sub-languages/pdl.d.ts +3 -0
- package/dist/sub-languages/pdl.d.ts.map +1 -0
- package/dist/sub-languages/pdl.js +67 -0
- package/dist/sub-languages/pdl.js.map +1 -0
- package/dist/sub-languages/projection/CodeActionProvider.d.ts +18 -0
- package/dist/sub-languages/projection/CodeActionProvider.d.ts.map +1 -0
- package/dist/sub-languages/projection/CodeActionProvider.js +93 -0
- package/dist/sub-languages/projection/CodeActionProvider.js.map +1 -0
- package/dist/sub-languages/projection/CompletionProvider.d.ts +41 -0
- package/dist/sub-languages/projection/CompletionProvider.d.ts.map +1 -0
- package/dist/sub-languages/projection/CompletionProvider.js +591 -0
- package/dist/sub-languages/projection/CompletionProvider.js.map +1 -0
- package/dist/sub-languages/projection/HoverProvider.d.ts +24 -0
- package/dist/sub-languages/projection/HoverProvider.d.ts.map +1 -0
- package/dist/sub-languages/projection/HoverProvider.js +298 -0
- package/dist/sub-languages/projection/HoverProvider.js.map +1 -0
- package/dist/sub-languages/projection/Validator.d.ts +22 -0
- package/dist/sub-languages/projection/Validator.d.ts.map +1 -0
- package/dist/sub-languages/projection/Validator.js +339 -0
- package/dist/sub-languages/projection/Validator.js.map +1 -0
- package/dist/sub-languages/projection/index.d.ts +49 -0
- package/dist/sub-languages/projection/index.d.ts.map +1 -0
- package/dist/sub-languages/projection/index.js +160 -0
- package/dist/sub-languages/projection/index.js.map +1 -0
- package/dist/sub-languages/projection/language.d.ts +5 -0
- package/dist/sub-languages/projection/language.d.ts.map +1 -0
- package/dist/sub-languages/projection/language.js +171 -0
- package/dist/sub-languages/projection/language.js.map +1 -0
- package/dist/symbols.d.ts +45 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/symbols.js +100 -0
- package/dist/symbols.js.map +1 -0
- package/dist/themes/screenplay-dark.d.ts +4 -0
- package/dist/themes/screenplay-dark.d.ts.map +1 -0
- package/dist/themes/screenplay-dark.js +29 -0
- package/dist/themes/screenplay-dark.js.map +1 -0
- package/dist/themes/screenplay-light.d.ts +4 -0
- package/dist/themes/screenplay-light.d.ts.map +1 -0
- package/dist/themes/screenplay-light.js +29 -0
- package/dist/themes/screenplay-light.js.map +1 -0
- package/dist/tokens.d.ts +5 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +121 -0
- package/dist/tokens.js.map +1 -0
- package/dist/validation.d.ts +10 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +101 -0
- package/dist/validation.js.map +1 -0
- package/document-context.ts +51 -0
- package/hover-content.ts +76 -0
- package/hover.ts +23 -0
- package/index.ts +98 -0
- package/keyword-docs.ts +102 -0
- package/language.ts +130 -0
- package/package.json +44 -0
- package/sub-language-registry.ts +42 -0
- package/sub-languages/capture/CompletionProvider.ts +365 -0
- package/sub-languages/capture/HoverProvider.ts +99 -0
- package/sub-languages/capture/Validator.ts +97 -0
- package/sub-languages/capture/index.ts +72 -0
- package/sub-languages/capture/language.ts +176 -0
- package/sub-languages/cdl.ts +76 -0
- package/sub-languages/pdl.ts +69 -0
- package/sub-languages/projection/CodeActionProvider.ts +123 -0
- package/sub-languages/projection/CompletionProvider.ts +653 -0
- package/sub-languages/projection/HoverProvider.ts +338 -0
- package/sub-languages/projection/Validator.ts +387 -0
- package/sub-languages/projection/index.ts +223 -0
- package/sub-languages/projection/language.ts +193 -0
- package/symbols.ts +161 -0
- package/themes/screenplay-dark.ts +32 -0
- package/themes/screenplay-light.ts +32 -0
- package/tokens.ts +145 -0
- package/validation.ts +145 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-planner.d.ts","sourceRoot":"","sources":["../completion-planner.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAExB,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CA2CvE;AAID,wBAAgB,eAAe,CAC3B,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,cAAc,CAwChB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { enclosingChain, fenceMap, indentOf } from './document-context';
|
|
4
|
+
import { getSubLanguage } from './sub-language-registry';
|
|
5
|
+
import * as items from './completion-items';
|
|
6
|
+
export function completionEntriesFor(chain) {
|
|
7
|
+
const construct = chain[0];
|
|
8
|
+
if (construct === undefined)
|
|
9
|
+
return items.topLevelItems;
|
|
10
|
+
const subLanguage = getSubLanguage(construct);
|
|
11
|
+
if (subLanguage)
|
|
12
|
+
return subLanguage.completions ?? [];
|
|
13
|
+
switch (construct) {
|
|
14
|
+
case 'module':
|
|
15
|
+
return items.moduleItems;
|
|
16
|
+
case 'feature':
|
|
17
|
+
return items.featureItems;
|
|
18
|
+
case 'slice':
|
|
19
|
+
return items.sliceItems;
|
|
20
|
+
case 'command':
|
|
21
|
+
return items.commandItems;
|
|
22
|
+
case 'produces':
|
|
23
|
+
return items.producesItems;
|
|
24
|
+
case 'handler':
|
|
25
|
+
return items.handlerItems;
|
|
26
|
+
case 'query':
|
|
27
|
+
return items.queryItems;
|
|
28
|
+
case 'constraint':
|
|
29
|
+
return items.constraintItems;
|
|
30
|
+
case 'reactor':
|
|
31
|
+
return items.reactorItems;
|
|
32
|
+
case 'on':
|
|
33
|
+
return items.reactorOnItems;
|
|
34
|
+
case 'policy':
|
|
35
|
+
return items.policyItems;
|
|
36
|
+
case 'validate':
|
|
37
|
+
return items.validateItems;
|
|
38
|
+
case 'action':
|
|
39
|
+
return items.actionItems;
|
|
40
|
+
case 'table':
|
|
41
|
+
case 'summary':
|
|
42
|
+
return items.tableItems;
|
|
43
|
+
default:
|
|
44
|
+
// Layout slots and sections inside a screen expose the screen vocabulary.
|
|
45
|
+
if (chain.includes('screen') || construct === 'section' || construct === 'layout') {
|
|
46
|
+
return items.screenItems;
|
|
47
|
+
}
|
|
48
|
+
if (chain.includes('produces'))
|
|
49
|
+
return items.producesItems;
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Decides what to complete at a position, without any editor dependency — the
|
|
54
|
+
// Monaco service and the VSCode extension both materialize the plan into items.
|
|
55
|
+
export function planCompletions(lines, lineIndex, textBefore) {
|
|
56
|
+
const fences = fenceMap(lines);
|
|
57
|
+
if (fences[lineIndex])
|
|
58
|
+
return { kind: 'none' };
|
|
59
|
+
const contextVariableMatch = textBefore.match(/\$[\w.]*$/);
|
|
60
|
+
if (contextVariableMatch) {
|
|
61
|
+
return { kind: 'contextVariables', replaceLength: contextVariableMatch[0].length };
|
|
62
|
+
}
|
|
63
|
+
const currentLine = lines[lineIndex] ?? '';
|
|
64
|
+
const effectiveIndent = textBefore.trim().length === 0 ? textBefore.length : indentOf(currentLine);
|
|
65
|
+
const chain = enclosingChain(lines, fences, lineIndex, effectiveIndent);
|
|
66
|
+
if (/\bauthorize\s+[\w\s]*$/.test(textBefore) || chain[0] === 'authorize') {
|
|
67
|
+
return { kind: 'policies' };
|
|
68
|
+
}
|
|
69
|
+
if (/\bon\s+\w*$/.test(textBefore) && (chain.includes('reactor') || chain.includes('constraint'))) {
|
|
70
|
+
return { kind: 'events' };
|
|
71
|
+
}
|
|
72
|
+
if (/\b(?:on|unique\s+event)\s+\w*$/.test(textBefore) && chain[0] === 'constraint') {
|
|
73
|
+
return { kind: 'events' };
|
|
74
|
+
}
|
|
75
|
+
if (/\bproduces\s+\w*$/.test(textBefore)) {
|
|
76
|
+
return { kind: 'producesTargets' };
|
|
77
|
+
}
|
|
78
|
+
if (/\bnavigate\s+to\s+\w*$/.test(textBefore)) {
|
|
79
|
+
return { kind: 'screens' };
|
|
80
|
+
}
|
|
81
|
+
if (/\bvia\s+query\s+\w*$/.test(textBefore)) {
|
|
82
|
+
return { kind: 'queries' };
|
|
83
|
+
}
|
|
84
|
+
if ((chain[0] === 'event' || chain[0] === 'command') &&
|
|
85
|
+
/^\s+[a-z_]\w*\s+[\w[\]?]*$/.test(textBefore)) {
|
|
86
|
+
return { kind: 'types' };
|
|
87
|
+
}
|
|
88
|
+
return { kind: 'entries', entries: completionEntriesFor(chain) };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=completion-planner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-planner.js","sourceRoot":"","sources":["../completion-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.d.ts","sourceRoot":"","sources":["../completions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAkB,MAAM,YAAY,CAAC;AAKpD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,sBAAsB,CAsGzF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { primitiveTypes } from './language';
|
|
4
|
+
import { knownEventNames, scanDocument } from './symbols';
|
|
5
|
+
import { planCompletions } from './completion-planner';
|
|
6
|
+
import { contextVariableItems, producesItems } from './completion-items';
|
|
7
|
+
export function createCompletionProvider(monaco) {
|
|
8
|
+
return {
|
|
9
|
+
triggerCharacters: [' ', '$', '@', '.'],
|
|
10
|
+
provideCompletionItems(model, position) {
|
|
11
|
+
const lines = model.getLinesContent();
|
|
12
|
+
const lineIndex = position.lineNumber - 1;
|
|
13
|
+
const currentLine = lines[lineIndex] ?? '';
|
|
14
|
+
const textBefore = currentLine.substring(0, position.column - 1);
|
|
15
|
+
const plan = planCompletions(lines, lineIndex, textBefore);
|
|
16
|
+
if (plan.kind === 'none')
|
|
17
|
+
return { suggestions: [] };
|
|
18
|
+
const symbols = scanDocument(lines);
|
|
19
|
+
const word = model.getWordUntilPosition(position);
|
|
20
|
+
const range = new monaco.Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);
|
|
21
|
+
const kinds = monaco.languages.CompletionItemKind;
|
|
22
|
+
const asSnippet = monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet;
|
|
23
|
+
const snippet = (entry) => ({
|
|
24
|
+
label: entry.label,
|
|
25
|
+
kind: entry.insertText.includes('$') ? kinds.Snippet : kinds.Keyword,
|
|
26
|
+
insertText: entry.insertText,
|
|
27
|
+
insertTextRules: asSnippet,
|
|
28
|
+
documentation: entry.documentation,
|
|
29
|
+
range,
|
|
30
|
+
});
|
|
31
|
+
const symbolItem = (name, kind, detail) => ({
|
|
32
|
+
label: name,
|
|
33
|
+
kind,
|
|
34
|
+
insertText: name,
|
|
35
|
+
detail,
|
|
36
|
+
range,
|
|
37
|
+
});
|
|
38
|
+
const eventNames = () => knownEventNames(symbols).map((name) => symbolItem(name, kinds.Event, 'event'));
|
|
39
|
+
switch (plan.kind) {
|
|
40
|
+
case 'contextVariables': {
|
|
41
|
+
const variableRange = new monaco.Range(position.lineNumber, position.column - plan.replaceLength, position.lineNumber, word.endColumn);
|
|
42
|
+
return {
|
|
43
|
+
suggestions: contextVariableItems.map((entry) => ({
|
|
44
|
+
...snippet(entry),
|
|
45
|
+
range: variableRange,
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
case 'policies':
|
|
50
|
+
return {
|
|
51
|
+
suggestions: symbols.policies.map((policy) => symbolItem(policy.name, kinds.Reference, 'policy')),
|
|
52
|
+
};
|
|
53
|
+
case 'events':
|
|
54
|
+
return { suggestions: eventNames() };
|
|
55
|
+
case 'producesTargets':
|
|
56
|
+
return { suggestions: [...producesItems.map(snippet), ...eventNames()] };
|
|
57
|
+
case 'screens':
|
|
58
|
+
return {
|
|
59
|
+
suggestions: symbols.screens.map((screen) => symbolItem(screen.name, kinds.Interface, 'screen')),
|
|
60
|
+
};
|
|
61
|
+
case 'queries':
|
|
62
|
+
return {
|
|
63
|
+
suggestions: symbols.queries.map((query) => symbolItem(query.name, kinds.Function, `query => ${query.returnType}`)),
|
|
64
|
+
};
|
|
65
|
+
case 'types':
|
|
66
|
+
return {
|
|
67
|
+
suggestions: [
|
|
68
|
+
...symbols.concepts.map((concept) => symbolItem(concept.name, kinds.Class, `concept : ${concept.primitive}${concept.attributes.length ? ' ' + concept.attributes.join(' ') : ''}`)),
|
|
69
|
+
...primitiveTypes.map((primitive) => symbolItem(primitive, kinds.Struct, 'primitive')),
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
case 'entries':
|
|
73
|
+
return { suggestions: plan.entries.map(snippet) };
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { editor } from 'monaco-editor';
|
|
2
|
+
import { Monaco } from './language';
|
|
3
|
+
export declare function validate(monaco: Monaco, model: editor.ITextModel): editor.IMarkerData[];
|
|
4
|
+
export declare function attachDiagnostics(monaco: Monaco): void;
|
|
5
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,MAAM,YAAY,CAAC;AAMhD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAYvF;AA0BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGtD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { languageId } from './language';
|
|
4
|
+
import { validateLines } from './validation';
|
|
5
|
+
const owner = 'screenplay';
|
|
6
|
+
const validationDelay = 300;
|
|
7
|
+
export function validate(monaco, model) {
|
|
8
|
+
return validateLines(model.getLinesContent()).map((issue) => ({
|
|
9
|
+
severity: issue.severity === 'error'
|
|
10
|
+
? monaco.MarkerSeverity.Error
|
|
11
|
+
: monaco.MarkerSeverity.Warning,
|
|
12
|
+
message: issue.message,
|
|
13
|
+
startLineNumber: issue.line + 1,
|
|
14
|
+
startColumn: issue.startColumn,
|
|
15
|
+
endLineNumber: issue.line + 1,
|
|
16
|
+
endColumn: issue.endColumn,
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
function watch(monaco, model) {
|
|
20
|
+
let handle;
|
|
21
|
+
const run = () => {
|
|
22
|
+
if (model.isDisposed())
|
|
23
|
+
return;
|
|
24
|
+
if (model.getLanguageId() !== languageId) {
|
|
25
|
+
monaco.editor.setModelMarkers(model, owner, []);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
monaco.editor.setModelMarkers(model, owner, validate(monaco, model));
|
|
29
|
+
};
|
|
30
|
+
const schedule = () => {
|
|
31
|
+
if (handle !== undefined)
|
|
32
|
+
clearTimeout(handle);
|
|
33
|
+
handle = setTimeout(run, validationDelay);
|
|
34
|
+
};
|
|
35
|
+
model.onDidChangeContent(schedule);
|
|
36
|
+
model.onDidChangeLanguage(run);
|
|
37
|
+
model.onWillDispose(() => {
|
|
38
|
+
if (handle !== undefined)
|
|
39
|
+
clearTimeout(handle);
|
|
40
|
+
});
|
|
41
|
+
run();
|
|
42
|
+
}
|
|
43
|
+
export function attachDiagnostics(monaco) {
|
|
44
|
+
monaco.editor.getModels().forEach((model) => watch(monaco, model));
|
|
45
|
+
monaco.editor.onDidCreateModel((model) => watch(monaco, model));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAU,UAAU,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAwB;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,EACJ,KAAK,CAAC,QAAQ,KAAK,OAAO;YACtB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK;YAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,KAAK,CAAC,MAAc,EAAE,KAAwB;IACnD,IAAI,MAAiD,CAAC;IAEtD,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO;QAC/B,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function indentOf(line: string): number;
|
|
2
|
+
export declare function firstWord(line: string): string;
|
|
3
|
+
export declare function fenceMap(lines: string[]): boolean[];
|
|
4
|
+
export declare function enclosingChain(lines: string[], fences: boolean[], lineIndex: number, indent: number): string[];
|
|
5
|
+
//# sourceMappingURL=document-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-context.d.ts","sourceRoot":"","sources":["../document-context.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,CAYnD;AAMD,wBAAgB,cAAc,CAC1B,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,EAAE,OAAO,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACf,MAAM,EAAE,CAcV"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
export function indentOf(line) {
|
|
4
|
+
return line.length - line.trimStart().length;
|
|
5
|
+
}
|
|
6
|
+
export function firstWord(line) {
|
|
7
|
+
return line.trim().split(/\s+/)[0] ?? '';
|
|
8
|
+
}
|
|
9
|
+
// Marks every line that is a code fence or lives inside one, so structural
|
|
10
|
+
// scanning never mistakes inline C#/TypeScript/HTML for Screenplay.
|
|
11
|
+
export function fenceMap(lines) {
|
|
12
|
+
const map = new Array(lines.length).fill(false);
|
|
13
|
+
let open = false;
|
|
14
|
+
for (let index = 0; index < lines.length; index++) {
|
|
15
|
+
if (/^\s*```\s*$/.test(lines[index])) {
|
|
16
|
+
map[index] = true;
|
|
17
|
+
open = !open;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
map[index] = open;
|
|
21
|
+
}
|
|
22
|
+
return map;
|
|
23
|
+
}
|
|
24
|
+
// Walks upward from a position and returns the chain of enclosing block openers,
|
|
25
|
+
// innermost first — e.g. ['command', 'slice', 'feature', 'module']. A block opener
|
|
26
|
+
// is any less-indented line above; its first word names the construct (for layout
|
|
27
|
+
// slots this is the slot name, which callers treat as an unknown construct).
|
|
28
|
+
export function enclosingChain(lines, fences, lineIndex, indent) {
|
|
29
|
+
const chain = [];
|
|
30
|
+
let currentIndent = indent;
|
|
31
|
+
for (let index = lineIndex - 1; index >= 0 && currentIndent > 0; index--) {
|
|
32
|
+
if (fences[index])
|
|
33
|
+
continue;
|
|
34
|
+
const line = lines[index];
|
|
35
|
+
if (line.trim().length === 0)
|
|
36
|
+
continue;
|
|
37
|
+
const lineIndent = indentOf(line);
|
|
38
|
+
if (lineIndent < currentIndent) {
|
|
39
|
+
chain.push(firstWord(line));
|
|
40
|
+
currentIndent = lineIndent;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return chain;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=document-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-context.js","sourceRoot":"","sources":["../document-context.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,UAAU,QAAQ,CAAC,KAAe;IACpC,MAAM,GAAG,GAAc,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,CAAC;YACb,SAAS;QACb,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,iFAAiF;AACjF,mFAAmF;AACnF,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,UAAU,cAAc,CAC1B,KAAe,EACf,MAAiB,EACjB,SAAiB,EACjB,MAAc;IAEd,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,aAAa,GAAG,MAAM,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,SAAS,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvE,IAAI,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5B,aAAa,GAAG,UAAU,CAAC;QAC/B,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-content.d.ts","sourceRoot":"","sources":["../hover-content.ts"],"names":[],"mappings":"AAWA,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CA0Df"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { enclosingChain, fenceMap, indentOf } from './document-context';
|
|
4
|
+
import { scanDocument } from './symbols';
|
|
5
|
+
import { getSubLanguage } from './sub-language-registry';
|
|
6
|
+
import { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
|
|
7
|
+
// Produces the hover markdown for a word at a position, without any editor
|
|
8
|
+
// dependency — the Monaco service and the VSCode extension share this content.
|
|
9
|
+
// Columns are 1-based, matching both editors' word-at-position APIs.
|
|
10
|
+
export function hoverContent(lines, lineIndex, word, startColumn, endColumn) {
|
|
11
|
+
const fences = fenceMap(lines);
|
|
12
|
+
if (fences[lineIndex])
|
|
13
|
+
return null;
|
|
14
|
+
const line = lines[lineIndex] ?? '';
|
|
15
|
+
const before = line.charAt(startColumn - 2);
|
|
16
|
+
if (before === '@') {
|
|
17
|
+
const doc = attributeDocs[word];
|
|
18
|
+
if (doc)
|
|
19
|
+
return doc;
|
|
20
|
+
}
|
|
21
|
+
if (before === '$' || before === '.') {
|
|
22
|
+
const variable = line.substring(0, endColumn - 1).match(/\$[\w.]*$/)?.[0];
|
|
23
|
+
if (variable) {
|
|
24
|
+
const doc = contextVariableDocs[variable] ??
|
|
25
|
+
(variable.startsWith('$env') ? contextVariableDocs['$env'] : undefined);
|
|
26
|
+
if (doc)
|
|
27
|
+
return doc;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const symbols = scanDocument(lines);
|
|
31
|
+
const concept = symbols.concepts.find((candidate) => candidate.name === word);
|
|
32
|
+
if (concept) {
|
|
33
|
+
const attributes = concept.attributes.length ? ` ${concept.attributes.join(' ')}` : '';
|
|
34
|
+
const values = concept.enumValues.length
|
|
35
|
+
? `\n\nValues: ${concept.enumValues.join(', ')}`
|
|
36
|
+
: '';
|
|
37
|
+
return `\`\`\`screenplay\nconcept ${concept.name} : ${concept.primitive}${attributes}\n\`\`\`${values}`;
|
|
38
|
+
}
|
|
39
|
+
const policy = symbols.policies.find((candidate) => candidate.name === word);
|
|
40
|
+
if (policy) {
|
|
41
|
+
const body = policy.requires.length ? policy.requires.join('\n') : '(custom C#)';
|
|
42
|
+
return `\`\`\`screenplay\npolicy ${policy.name}\n${body}\n\`\`\``;
|
|
43
|
+
}
|
|
44
|
+
const event = symbols.events.find((candidate) => candidate.name === word);
|
|
45
|
+
if (event) {
|
|
46
|
+
const properties = event.properties
|
|
47
|
+
.map((property) => `${property.name} ${property.type}`)
|
|
48
|
+
.join('\n');
|
|
49
|
+
return `\`\`\`screenplay\nevent ${event.name}\n${properties}\n\`\`\``;
|
|
50
|
+
}
|
|
51
|
+
// Sub-language keywords take precedence inside their construct.
|
|
52
|
+
const chain = enclosingChain(lines, fences, lineIndex, indentOf(line));
|
|
53
|
+
for (const construct of [line.trim().split(/\s+/)[0], ...chain]) {
|
|
54
|
+
const subLanguage = getSubLanguage(construct ?? '');
|
|
55
|
+
const doc = subLanguage?.hovers?.[word];
|
|
56
|
+
if (doc)
|
|
57
|
+
return doc;
|
|
58
|
+
}
|
|
59
|
+
const keywordDoc = keywordDocs[word];
|
|
60
|
+
if (keywordDoc)
|
|
61
|
+
return `**${word}** — ${keywordDoc}`;
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=hover-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover-content.js","sourceRoot":"","sources":["../hover-content.ts"],"names":[],"mappings":"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"}
|
package/dist/hover.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.d.ts","sourceRoot":"","sources":["../hover.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,wBAAgB,mBAAmB,IAAI,SAAS,CAAC,aAAa,CAgB7D"}
|
package/dist/hover.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { hoverContent } from './hover-content';
|
|
4
|
+
export function createHoverProvider() {
|
|
5
|
+
return {
|
|
6
|
+
provideHover(model, position) {
|
|
7
|
+
const word = model.getWordAtPosition(position);
|
|
8
|
+
if (!word)
|
|
9
|
+
return null;
|
|
10
|
+
const content = hoverContent(model.getLinesContent(), position.lineNumber - 1, word.word, word.startColumn, word.endColumn);
|
|
11
|
+
return content ? { contents: [{ value: content }] } : null;
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hover.js","sourceRoot":"","sources":["../hover.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,mBAAmB;IAC/B,OAAO;QACH,YAAY,CAAC,KAAK,EAAE,QAAQ;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YAEvB,MAAM,OAAO,GAAG,YAAY,CACxB,KAAK,CAAC,eAAe,EAAE,EACvB,QAAQ,CAAC,UAAU,GAAG,CAAC,EACvB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACjB,CAAC;YACF,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Monaco } from './language';
|
|
2
|
+
export declare function ensureBuiltInSubLanguages(): void;
|
|
3
|
+
export declare function register(monaco: Monaco): void;
|
|
4
|
+
export { clauseKeywords, codeBlockTags, conceptAttributes, constructKeywords, languageId, primitiveTypes, sliceTypes, } from './language';
|
|
5
|
+
export type { Monaco } from './language';
|
|
6
|
+
export { getSubLanguage, getSubLanguages, registerSubLanguage } from './sub-language-registry';
|
|
7
|
+
export type { MonarchTokenRules, SubLanguage, SubLanguageCompletion, SubLanguageDefinition, } from './sub-language-registry';
|
|
8
|
+
export { pdl } from './sub-languages/pdl';
|
|
9
|
+
export { cdl } from './sub-languages/cdl';
|
|
10
|
+
export { screenplayDarkThemeName } from './themes/screenplay-dark';
|
|
11
|
+
export { screenplayLightThemeName } from './themes/screenplay-light';
|
|
12
|
+
export { enclosingChain, fenceMap, firstWord, indentOf } from './document-context';
|
|
13
|
+
export { knownEventNames, scanDocument } from './symbols';
|
|
14
|
+
export type { ConceptSymbol, DocumentSymbols, EventSymbol, ImportSymbol, NamedSymbol, PolicySymbol, PropertySymbol, QuerySymbol, } from './symbols';
|
|
15
|
+
export { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
|
|
16
|
+
export { contextVariableItems, producesItems } from './completion-items';
|
|
17
|
+
export type { CompletionEntry } from './completion-items';
|
|
18
|
+
export { completionEntriesFor, planCompletions } from './completion-planner';
|
|
19
|
+
export type { CompletionPlan } from './completion-planner';
|
|
20
|
+
export { hoverContent } from './hover-content';
|
|
21
|
+
export { validateLines } from './validation';
|
|
22
|
+
export type { ValidationIssue, ValidationSeverity } from './validation';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,MAAM,EAIT,MAAM,YAAY,CAAC;AA2BpB,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe7C;AAED,OAAO,EACH,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACR,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { languageConfiguration, languageExtensionPoint, languageId, } from './language';
|
|
4
|
+
import { createTokensProvider } from './tokens';
|
|
5
|
+
import { createCompletionProvider } from './completions';
|
|
6
|
+
import { createHoverProvider } from './hover';
|
|
7
|
+
import { attachDiagnostics } from './diagnostics';
|
|
8
|
+
import { getSubLanguage, getSubLanguages, onSubLanguagesChanged, registerSubLanguage, } from './sub-language-registry';
|
|
9
|
+
import { pdl } from './sub-languages/pdl';
|
|
10
|
+
import { cdl } from './sub-languages/cdl';
|
|
11
|
+
import { screenplayDark, screenplayDarkThemeName } from './themes/screenplay-dark';
|
|
12
|
+
import { screenplayLight, screenplayLightThemeName } from './themes/screenplay-light';
|
|
13
|
+
const registeredInstances = new Set();
|
|
14
|
+
function applyTokensProvider(monaco) {
|
|
15
|
+
monaco.languages.setMonarchTokensProvider(languageId, createTokensProvider(getSubLanguages()));
|
|
16
|
+
}
|
|
17
|
+
// Sub-languages registered after register() recompose the tokenizer on the fly.
|
|
18
|
+
onSubLanguagesChanged(() => registeredInstances.forEach(applyTokensProvider));
|
|
19
|
+
// Registers the built-in PDL and CDL sub-languages. Hosts that do not go through
|
|
20
|
+
// register() — such as the VSCode extension — call this before using the registry.
|
|
21
|
+
export function ensureBuiltInSubLanguages() {
|
|
22
|
+
if (!getSubLanguage('projection'))
|
|
23
|
+
registerSubLanguage('projection', pdl);
|
|
24
|
+
if (!getSubLanguage('capture'))
|
|
25
|
+
registerSubLanguage('capture', cdl);
|
|
26
|
+
}
|
|
27
|
+
export function register(monaco) {
|
|
28
|
+
if (registeredInstances.has(monaco))
|
|
29
|
+
return;
|
|
30
|
+
ensureBuiltInSubLanguages();
|
|
31
|
+
registeredInstances.add(monaco);
|
|
32
|
+
monaco.languages.register(languageExtensionPoint);
|
|
33
|
+
monaco.languages.setLanguageConfiguration(languageId, languageConfiguration);
|
|
34
|
+
applyTokensProvider(monaco);
|
|
35
|
+
monaco.languages.registerCompletionItemProvider(languageId, createCompletionProvider(monaco));
|
|
36
|
+
monaco.languages.registerHoverProvider(languageId, createHoverProvider());
|
|
37
|
+
monaco.editor.defineTheme(screenplayDarkThemeName, screenplayDark);
|
|
38
|
+
monaco.editor.defineTheme(screenplayLightThemeName, screenplayLight);
|
|
39
|
+
attachDiagnostics(monaco);
|
|
40
|
+
}
|
|
41
|
+
export { clauseKeywords, codeBlockTags, conceptAttributes, constructKeywords, languageId, primitiveTypes, sliceTypes, } from './language';
|
|
42
|
+
export { getSubLanguage, getSubLanguages, registerSubLanguage } from './sub-language-registry';
|
|
43
|
+
export { pdl } from './sub-languages/pdl';
|
|
44
|
+
export { cdl } from './sub-languages/cdl';
|
|
45
|
+
export { screenplayDarkThemeName } from './themes/screenplay-dark';
|
|
46
|
+
export { screenplayLightThemeName } from './themes/screenplay-light';
|
|
47
|
+
export { enclosingChain, fenceMap, firstWord, indentOf } from './document-context';
|
|
48
|
+
export { knownEventNames, scanDocument } from './symbols';
|
|
49
|
+
export { attributeDocs, contextVariableDocs, keywordDocs } from './keyword-docs';
|
|
50
|
+
export { contextVariableItems, producesItems } from './completion-items';
|
|
51
|
+
export { completionEntriesFor, planCompletions } from './completion-planner';
|
|
52
|
+
export { hoverContent } from './hover-content';
|
|
53
|
+
export { validateLines } from './validation';
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword-docs.d.ts","sourceRoot":"","sources":["../keyword-docs.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoF9C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGhD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOtD,CAAC"}
|