@oml/language 0.7.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.
Files changed (91) hide show
  1. package/README.md +44 -0
  2. package/out/oml/generated/ast.d.ts +2109 -0
  3. package/out/oml/generated/ast.js +1807 -0
  4. package/out/oml/generated/ast.js.map +1 -0
  5. package/out/oml/generated/grammar.d.ts +6 -0
  6. package/out/oml/generated/grammar.js +6885 -0
  7. package/out/oml/generated/grammar.js.map +1 -0
  8. package/out/oml/generated/module.d.ts +13 -0
  9. package/out/oml/generated/module.js +21 -0
  10. package/out/oml/generated/module.js.map +1 -0
  11. package/out/oml/index.d.ts +17 -0
  12. package/out/oml/index.js +19 -0
  13. package/out/oml/index.js.map +1 -0
  14. package/out/oml/oml-candidates.d.ts +27 -0
  15. package/out/oml/oml-candidates.js +146 -0
  16. package/out/oml/oml-candidates.js.map +1 -0
  17. package/out/oml/oml-code-actions.d.ts +6 -0
  18. package/out/oml/oml-code-actions.js +79 -0
  19. package/out/oml/oml-code-actions.js.map +1 -0
  20. package/out/oml/oml-completion.d.ts +50 -0
  21. package/out/oml/oml-completion.js +188 -0
  22. package/out/oml/oml-completion.js.map +1 -0
  23. package/out/oml/oml-converter.d.ts +10 -0
  24. package/out/oml/oml-converter.js +62 -0
  25. package/out/oml/oml-converter.js.map +1 -0
  26. package/out/oml/oml-document-validator.d.ts +10 -0
  27. package/out/oml/oml-document-validator.js +31 -0
  28. package/out/oml/oml-document-validator.js.map +1 -0
  29. package/out/oml/oml-document.d.ts +9 -0
  30. package/out/oml/oml-document.js +18 -0
  31. package/out/oml/oml-document.js.map +1 -0
  32. package/out/oml/oml-edit.d.ts +72 -0
  33. package/out/oml/oml-edit.js +1155 -0
  34. package/out/oml/oml-edit.js.map +1 -0
  35. package/out/oml/oml-formatter.d.ts +22 -0
  36. package/out/oml/oml-formatter.js +357 -0
  37. package/out/oml/oml-formatter.js.map +1 -0
  38. package/out/oml/oml-hover.d.ts +13 -0
  39. package/out/oml/oml-hover.js +71 -0
  40. package/out/oml/oml-hover.js.map +1 -0
  41. package/out/oml/oml-index-manager.d.ts +10 -0
  42. package/out/oml/oml-index-manager.js +48 -0
  43. package/out/oml/oml-index-manager.js.map +1 -0
  44. package/out/oml/oml-index.d.ts +20 -0
  45. package/out/oml/oml-index.js +133 -0
  46. package/out/oml/oml-index.js.map +1 -0
  47. package/out/oml/oml-module.d.ts +42 -0
  48. package/out/oml/oml-module.js +76 -0
  49. package/out/oml/oml-module.js.map +1 -0
  50. package/out/oml/oml-rename.d.ts +14 -0
  51. package/out/oml/oml-rename.js +114 -0
  52. package/out/oml/oml-rename.js.map +1 -0
  53. package/out/oml/oml-scope.d.ts +30 -0
  54. package/out/oml/oml-scope.js +225 -0
  55. package/out/oml/oml-scope.js.map +1 -0
  56. package/out/oml/oml-serializer.d.ts +2 -0
  57. package/out/oml/oml-serializer.js +883 -0
  58. package/out/oml/oml-serializer.js.map +1 -0
  59. package/out/oml/oml-utils.d.ts +53 -0
  60. package/out/oml/oml-utils.js +241 -0
  61. package/out/oml/oml-utils.js.map +1 -0
  62. package/out/oml/oml-validator.d.ts +49 -0
  63. package/out/oml/oml-validator.js +668 -0
  64. package/out/oml/oml-validator.js.map +1 -0
  65. package/out/oml/oml-workspace.d.ts +23 -0
  66. package/out/oml/oml-workspace.js +68 -0
  67. package/out/oml/oml-workspace.js.map +1 -0
  68. package/package.json +50 -0
  69. package/src/oml/generated/ast.ts +2641 -0
  70. package/src/oml/generated/grammar.ts +6887 -0
  71. package/src/oml/generated/module.ts +25 -0
  72. package/src/oml/index.ts +19 -0
  73. package/src/oml/oml-candidates.ts +176 -0
  74. package/src/oml/oml-code-actions.ts +120 -0
  75. package/src/oml/oml-completion.ts +222 -0
  76. package/src/oml/oml-converter.ts +66 -0
  77. package/src/oml/oml-document-validator.ts +39 -0
  78. package/src/oml/oml-document.ts +24 -0
  79. package/src/oml/oml-edit.ts +1292 -0
  80. package/src/oml/oml-formatter.ts +390 -0
  81. package/src/oml/oml-hover.ts +93 -0
  82. package/src/oml/oml-index-manager.ts +56 -0
  83. package/src/oml/oml-index.ts +145 -0
  84. package/src/oml/oml-module.ts +105 -0
  85. package/src/oml/oml-rename.ts +140 -0
  86. package/src/oml/oml-scope.ts +279 -0
  87. package/src/oml/oml-serializer.ts +1080 -0
  88. package/src/oml/oml-utils.ts +294 -0
  89. package/src/oml/oml-validator.ts +725 -0
  90. package/src/oml/oml-workspace.ts +81 -0
  91. package/src/oml/oml.langium +594 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oml-edit.js","sourceRoot":"","sources":["../../src/oml/oml-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Formatter } from 'langium/lsp';
2
+ import type { LangiumDocument } from 'langium';
3
+ import type { DocumentFormattingParams, DocumentOnTypeFormattingOptions, DocumentOnTypeFormattingParams, DocumentRangeFormattingParams, TextEdit } from 'vscode-languageserver-protocol';
4
+ export declare class OmlFormatter implements Formatter {
5
+ private readonly formattedTextCache;
6
+ formatDocument(document: LangiumDocument, _params: DocumentFormattingParams): TextEdit[];
7
+ formatDocumentRange(document: LangiumDocument, params: DocumentRangeFormattingParams): TextEdit[];
8
+ formatDocumentOnType(document: LangiumDocument, params: DocumentOnTypeFormattingParams): TextEdit[];
9
+ get formatOnTypeOptions(): DocumentOnTypeFormattingOptions | undefined;
10
+ private getFormattedText;
11
+ private formatRange;
12
+ private mergeComments;
13
+ private collectCommentBlocks;
14
+ private collectInlineComments;
15
+ private findLineCommentIndex;
16
+ private buildAnchorIndex;
17
+ private findAnchorLine;
18
+ private countCommonPrefixLines;
19
+ private countCommonSuffixLines;
20
+ private computeOnTypeIndent;
21
+ private detectIndentUnit;
22
+ }
@@ -0,0 +1,357 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ import { TextEdit as VsTextEdit } from 'vscode-languageserver-protocol';
3
+ import { isOntology } from './generated/ast.js';
4
+ import { serializeOntology } from './oml-serializer.js';
5
+ export class OmlFormatter {
6
+ constructor() {
7
+ this.formattedTextCache = new Map();
8
+ }
9
+ formatDocument(document, _params) {
10
+ const formatted = this.getFormattedText(document);
11
+ if (formatted === undefined) {
12
+ return [];
13
+ }
14
+ const textDocument = document.textDocument;
15
+ const end = textDocument.positionAt(textDocument.getText().length);
16
+ return [VsTextEdit.replace({ start: { line: 0, character: 0 }, end }, formatted)];
17
+ }
18
+ formatDocumentRange(document, params) {
19
+ return this.formatRange(document, params.range);
20
+ }
21
+ formatDocumentOnType(document, params) {
22
+ const textDocument = document.textDocument;
23
+ const text = textDocument.getText();
24
+ const lines = text.split('\n');
25
+ const line = Math.min(params.position.line, lines.length - 1);
26
+ if (line < 0) {
27
+ return [];
28
+ }
29
+ const currentLine = lines[line] ?? '';
30
+ const desiredIndent = this.computeOnTypeIndent(lines, line);
31
+ if (desiredIndent === undefined) {
32
+ return [];
33
+ }
34
+ const currentIndent = currentLine.match(/^\s*/)?.[0] ?? '';
35
+ if (currentIndent === desiredIndent) {
36
+ return [];
37
+ }
38
+ return [VsTextEdit.replace({ start: { line, character: 0 }, end: { line, character: currentIndent.length } }, desiredIndent)];
39
+ }
40
+ get formatOnTypeOptions() {
41
+ return {
42
+ firstTriggerCharacter: '\n'
43
+ };
44
+ }
45
+ getFormattedText(document) {
46
+ const parseResult = document.parseResult;
47
+ if (!parseResult || parseResult.lexerErrors.length || parseResult.parserErrors.length) {
48
+ return undefined;
49
+ }
50
+ const uri = document.uri?.toString() ?? document.textDocument.uri;
51
+ const version = document.textDocument.version ?? 0;
52
+ const cached = this.formattedTextCache.get(uri);
53
+ if (cached && cached.version === version) {
54
+ return cached.text;
55
+ }
56
+ const root = parseResult.value;
57
+ if (!root || !isOntology(root)) {
58
+ return undefined;
59
+ }
60
+ const formatted = serializeOntology(root);
61
+ const text = this.mergeComments(document.textDocument.getText(), formatted);
62
+ this.formattedTextCache.set(uri, { version, text });
63
+ if (this.formattedTextCache.size > 200) {
64
+ this.formattedTextCache.clear();
65
+ }
66
+ return text;
67
+ }
68
+ formatRange(document, range) {
69
+ const formatted = this.getFormattedText(document);
70
+ if (formatted === undefined) {
71
+ return [];
72
+ }
73
+ const textDocument = document.textDocument;
74
+ const original = textDocument.getText();
75
+ const startOffset = textDocument.offsetAt(range.start);
76
+ const endOffset = textDocument.offsetAt(range.end);
77
+ const prefix = original.slice(0, startOffset);
78
+ const suffix = original.slice(endOffset);
79
+ if (!formatted.startsWith(prefix) || !formatted.endsWith(suffix)) {
80
+ const originalLines = original.split('\n');
81
+ const formattedLines = formatted.split('\n');
82
+ const startLine = Math.max(0, range.start.line);
83
+ const endLine = Math.min(range.end.line, originalLines.length - 1);
84
+ const commonPrefix = this.countCommonPrefixLines(originalLines, formattedLines);
85
+ const commonSuffix = this.countCommonSuffixLines(originalLines, formattedLines, commonPrefix);
86
+ const delta = formattedLines.length - originalLines.length;
87
+ let startLineFormatted = startLine;
88
+ let endLineFormatted = endLine;
89
+ if (startLine >= commonPrefix && endLine <= originalLines.length - commonSuffix - 1) {
90
+ startLineFormatted = startLine + delta;
91
+ endLineFormatted = endLine + delta;
92
+ }
93
+ if (startLineFormatted < 0 ||
94
+ endLineFormatted < startLineFormatted ||
95
+ endLineFormatted >= formattedLines.length) {
96
+ return [];
97
+ }
98
+ const replacementLines = formattedLines.slice(startLineFormatted, endLineFormatted + 1);
99
+ const rangeForLines = {
100
+ start: { line: startLine, character: 0 },
101
+ end: { line: endLine, character: originalLines[endLine]?.length ?? 0 }
102
+ };
103
+ return [VsTextEdit.replace(rangeForLines, replacementLines.join('\n'))];
104
+ }
105
+ const replacement = formatted.slice(prefix.length, formatted.length - suffix.length);
106
+ return [VsTextEdit.replace(range, replacement)];
107
+ }
108
+ mergeComments(original, formatted) {
109
+ const originalLines = original.split('\n');
110
+ const formattedLines = formatted.split('\n');
111
+ const blocks = this.collectCommentBlocks(originalLines);
112
+ const inlineComments = this.collectInlineComments(originalLines);
113
+ const anchorLookup = this.buildAnchorIndex(formattedLines);
114
+ let insertOffset = 0;
115
+ for (const block of blocks) {
116
+ const anchorLine = block.anchorText
117
+ ? this.findAnchorLine(anchorLookup, block.anchorText, insertOffset)
118
+ : -1;
119
+ const insertAt = anchorLine === -1 ? formattedLines.length : anchorLine;
120
+ const insertLines = block.trailingBlankLines
121
+ ? [...block.lines, ...Array.from({ length: block.trailingBlankLines }, () => '')]
122
+ : block.lines;
123
+ formattedLines.splice(insertAt, 0, ...insertLines);
124
+ insertOffset = insertAt + insertLines.length;
125
+ }
126
+ if (inlineComments.size > 0) {
127
+ for (let i = 0; i < formattedLines.length; i += 1) {
128
+ const line = formattedLines[i];
129
+ if (this.findLineCommentIndex(line) !== -1) {
130
+ continue;
131
+ }
132
+ const code = line.trim();
133
+ const queue = inlineComments.get(code);
134
+ if (!queue || queue.length === 0) {
135
+ continue;
136
+ }
137
+ const suffix = queue.shift() ?? '';
138
+ formattedLines[i] = `${line}${suffix}`;
139
+ }
140
+ }
141
+ return formattedLines.join('\n');
142
+ }
143
+ collectCommentBlocks(lines) {
144
+ const blocks = [];
145
+ let index = 0;
146
+ let inBlock = false;
147
+ while (index < lines.length) {
148
+ const line = lines[index];
149
+ const trimmed = line.trim();
150
+ const isLineComment = trimmed.startsWith('//');
151
+ const isBlockStart = trimmed.startsWith('/*');
152
+ const isBlockContinue = inBlock || trimmed.startsWith('*');
153
+ if (isLineComment || isBlockStart || isBlockContinue) {
154
+ const blockLines = [];
155
+ while (index < lines.length) {
156
+ const current = lines[index];
157
+ const currentTrimmed = current.trim();
158
+ const currentLineComment = currentTrimmed.startsWith('//');
159
+ const currentBlockStart = currentTrimmed.startsWith('/*');
160
+ const currentBlockContinue = inBlock || currentTrimmed.startsWith('*');
161
+ if (!(currentLineComment || currentBlockStart || currentBlockContinue)) {
162
+ break;
163
+ }
164
+ blockLines.push(current);
165
+ if (currentTrimmed.includes('*/')) {
166
+ inBlock = false;
167
+ }
168
+ else if (currentBlockStart) {
169
+ inBlock = true;
170
+ }
171
+ index += 1;
172
+ }
173
+ let anchorText;
174
+ let trailingBlankLines = 0;
175
+ let lookahead = index;
176
+ while (lookahead < lines.length) {
177
+ const next = lines[lookahead].trim();
178
+ if (!next) {
179
+ trailingBlankLines += 1;
180
+ lookahead += 1;
181
+ continue;
182
+ }
183
+ if (next && !next.startsWith('//') && !next.startsWith('/*') && !next.startsWith('*')) {
184
+ anchorText = next;
185
+ break;
186
+ }
187
+ lookahead += 1;
188
+ }
189
+ blocks.push({ lines: blockLines, anchorText, trailingBlankLines });
190
+ continue;
191
+ }
192
+ index += 1;
193
+ }
194
+ return blocks;
195
+ }
196
+ collectInlineComments(lines) {
197
+ const inline = new Map();
198
+ for (const line of lines) {
199
+ const commentIndex = this.findLineCommentIndex(line);
200
+ if (commentIndex === -1) {
201
+ continue;
202
+ }
203
+ const codePart = line.slice(0, commentIndex);
204
+ const commentPart = line.slice(commentIndex);
205
+ if (!codePart.trim()) {
206
+ continue;
207
+ }
208
+ const key = codePart.trim();
209
+ const bucket = inline.get(key) ?? [];
210
+ bucket.push(` ${commentPart.trimStart()}`);
211
+ inline.set(key, bucket);
212
+ }
213
+ return inline;
214
+ }
215
+ findLineCommentIndex(line) {
216
+ let inSingle = false;
217
+ let inDouble = false;
218
+ let inTripleSingle = false;
219
+ let inTripleDouble = false;
220
+ let inAngle = false;
221
+ for (let i = 0; i < line.length - 1; i += 1) {
222
+ const ch = line[i];
223
+ const next = line[i + 1];
224
+ if (!inSingle && !inDouble && !inTripleSingle && !inTripleDouble && ch === '<') {
225
+ inAngle = true;
226
+ }
227
+ else if (inAngle && ch === '>') {
228
+ inAngle = false;
229
+ }
230
+ if (!inAngle) {
231
+ if (!inSingle && !inDouble && ch === '\'' && next === '\'' && line[i + 2] === '\'') {
232
+ inTripleSingle = !inTripleSingle;
233
+ i += 2;
234
+ continue;
235
+ }
236
+ if (!inSingle && !inDouble && ch === '"' && next === '"' && line[i + 2] === '"') {
237
+ inTripleDouble = !inTripleDouble;
238
+ i += 2;
239
+ continue;
240
+ }
241
+ if (!inTripleSingle && !inTripleDouble && ch === '\'' && !inDouble) {
242
+ inSingle = !inSingle;
243
+ continue;
244
+ }
245
+ if (!inTripleSingle && !inTripleDouble && ch === '"' && !inSingle) {
246
+ inDouble = !inDouble;
247
+ continue;
248
+ }
249
+ }
250
+ if (!inSingle && !inDouble && !inTripleSingle && !inTripleDouble && !inAngle && ch === '/' && next === '/') {
251
+ return i;
252
+ }
253
+ }
254
+ return -1;
255
+ }
256
+ buildAnchorIndex(lines) {
257
+ const index = new Map();
258
+ for (let i = 0; i < lines.length; i += 1) {
259
+ const key = lines[i].trim();
260
+ if (!key) {
261
+ continue;
262
+ }
263
+ let entry = index.get(key);
264
+ if (!entry) {
265
+ entry = { indices: [], cursor: 0 };
266
+ index.set(key, entry);
267
+ }
268
+ entry.indices.push(i);
269
+ }
270
+ return index;
271
+ }
272
+ findAnchorLine(index, anchorText, startIndex) {
273
+ const entry = index.get(anchorText);
274
+ if (!entry) {
275
+ return -1;
276
+ }
277
+ while (entry.cursor < entry.indices.length && entry.indices[entry.cursor] < startIndex) {
278
+ entry.cursor += 1;
279
+ }
280
+ if (entry.cursor >= entry.indices.length) {
281
+ return -1;
282
+ }
283
+ const line = entry.indices[entry.cursor];
284
+ entry.cursor += 1;
285
+ return line;
286
+ }
287
+ countCommonPrefixLines(originalLines, formattedLines) {
288
+ const limit = Math.min(originalLines.length, formattedLines.length);
289
+ let index = 0;
290
+ while (index < limit && originalLines[index] === formattedLines[index]) {
291
+ index += 1;
292
+ }
293
+ return index;
294
+ }
295
+ countCommonSuffixLines(originalLines, formattedLines, prefixCount) {
296
+ const originalLimit = originalLines.length - prefixCount;
297
+ const formattedLimit = formattedLines.length - prefixCount;
298
+ const limit = Math.min(originalLimit, formattedLimit);
299
+ let count = 0;
300
+ while (count < limit) {
301
+ const originalIndex = originalLines.length - 1 - count;
302
+ const formattedIndex = formattedLines.length - 1 - count;
303
+ if (originalLines[originalIndex] !== formattedLines[formattedIndex]) {
304
+ break;
305
+ }
306
+ count += 1;
307
+ }
308
+ return count;
309
+ }
310
+ computeOnTypeIndent(lines, line) {
311
+ const currentLine = lines[line] ?? '';
312
+ const trimmedCurrent = currentLine.trim();
313
+ if (trimmedCurrent.startsWith('//') || trimmedCurrent.startsWith('/*') || trimmedCurrent.startsWith('*')) {
314
+ return undefined;
315
+ }
316
+ const indentUnit = this.detectIndentUnit(lines);
317
+ let previousIndex = line - 1;
318
+ while (previousIndex >= 0 && !(lines[previousIndex] ?? '').trim()) {
319
+ previousIndex -= 1;
320
+ }
321
+ if (previousIndex < 0) {
322
+ return '';
323
+ }
324
+ const previousLine = lines[previousIndex] ?? '';
325
+ const previousIndent = previousLine.match(/^\s*/)?.[0] ?? '';
326
+ const previousTrimmed = previousLine.trim();
327
+ let level = previousIndent.length;
328
+ if (previousTrimmed.endsWith('{')) {
329
+ level += indentUnit.length;
330
+ }
331
+ if (trimmedCurrent.startsWith('}')) {
332
+ level -= indentUnit.length;
333
+ }
334
+ level = Math.max(0, level);
335
+ if (indentUnit.startsWith('\t')) {
336
+ return '\t'.repeat(Math.floor(level / indentUnit.length));
337
+ }
338
+ return ' '.repeat(level);
339
+ }
340
+ detectIndentUnit(lines) {
341
+ for (const line of lines) {
342
+ if (!line.trim()) {
343
+ continue;
344
+ }
345
+ const indent = line.match(/^\s+/)?.[0];
346
+ if (!indent) {
347
+ continue;
348
+ }
349
+ if (indent.includes('\t')) {
350
+ return '\t';
351
+ }
352
+ return ' '.repeat(Math.min(indent.length, 4));
353
+ }
354
+ return ' ';
355
+ }
356
+ }
357
+ //# sourceMappingURL=oml-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oml-formatter.js","sourceRoot":"","sources":["../../src/oml/oml-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * OML Hover Provider
3
+ * Provides rich hover information for OML elements with type and namespace details
4
+ */
5
+ import type { AstNode, LangiumDocument, MaybePromise } from 'langium';
6
+ import { AstNodeHoverProvider } from 'langium/lsp';
7
+ import type { LangiumServices } from 'langium/lsp';
8
+ import type { Hover, HoverParams } from 'vscode-languageserver-protocol';
9
+ export declare class OmlHoverProvider extends AstNodeHoverProvider {
10
+ constructor(services: LangiumServices);
11
+ getHoverContent(document: LangiumDocument, params: HoverParams): Promise<Hover | undefined>;
12
+ protected getAstNodeHoverContent(node: AstNode): MaybePromise<string | undefined>;
13
+ }
@@ -0,0 +1,71 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ import { CstUtils } from 'langium';
3
+ import { AstNodeHoverProvider } from 'langium/lsp';
4
+ import { MarkupKind } from 'vscode-languageserver-protocol';
5
+ import { findOwningOntologyNode, humanizeTypeName } from './oml-utils.js';
6
+ export class OmlHoverProvider extends AstNodeHoverProvider {
7
+ constructor(services) {
8
+ super(services);
9
+ }
10
+ async getHoverContent(document, params) {
11
+ const rootNode = document.parseResult?.value?.$cstNode;
12
+ if (rootNode) {
13
+ const offset = document.textDocument.offsetAt(params.position);
14
+ const cstNode = CstUtils.findDeclarationNodeAtOffset(rootNode, offset, this.grammarConfig.nameRegexp);
15
+ if (cstNode && cstNode.offset + cstNode.length > offset) {
16
+ const contents = [];
17
+ const targetNodes = this.references.findDeclarations(cstNode);
18
+ for (const targetNode of targetNodes) {
19
+ const content = await this.getAstNodeHoverContent(targetNode);
20
+ if (typeof content === 'string') {
21
+ contents.push(content);
22
+ }
23
+ }
24
+ if (contents.length > 0) {
25
+ // Override to use proper MarkupKind.Markdown instead of 'markdown' with language
26
+ return {
27
+ contents: {
28
+ kind: MarkupKind.Markdown,
29
+ value: contents.join('\n\n---\n\n')
30
+ }
31
+ };
32
+ }
33
+ }
34
+ }
35
+ return undefined;
36
+ }
37
+ getAstNodeHoverContent(node) {
38
+ // The node here is the AST node under the cursor
39
+ // Check if it has a name property (it's a definition)
40
+ if (node.name) {
41
+ const elementType = node.$type || 'element';
42
+ const keyword = humanizeTypeName(elementType);
43
+ const name = node.name;
44
+ let hoverText = `**${keyword}** \`${name}\``;
45
+ const ontology = findOwningOntologyNode(node);
46
+ if (ontology?.namespace) {
47
+ const namespace = ontology.namespace.replace(/^<|>$/g, '');
48
+ hoverText += `\n\nDefined in: \`${namespace}\``;
49
+ }
50
+ return hoverText;
51
+ }
52
+ // For references, we want to show info about the referenced element
53
+ const ref = node.ref;
54
+ if (ref && ref.name) {
55
+ // Get the element type
56
+ const elementType = ref.$type || 'element';
57
+ const keyword = humanizeTypeName(elementType);
58
+ // Build hover text: "keyword name"
59
+ let hoverText = `**${keyword}** \`${ref.name}\``;
60
+ // Add namespace if available
61
+ const ontology = findOwningOntologyNode(ref);
62
+ if (ontology?.namespace) {
63
+ const namespace = ontology.namespace.replace(/^<|>$/g, '');
64
+ hoverText += `\n\nDefined in: \`${namespace}\``;
65
+ }
66
+ return hoverText;
67
+ }
68
+ return undefined;
69
+ }
70
+ }
71
+ //# sourceMappingURL=oml-hover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oml-hover.js","sourceRoot":"","sources":["../../src/oml/oml-hover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { DefaultIndexManager, type AstNode, type LangiumDocument, type LangiumSharedCoreServices, type ReferenceDescription } from 'langium';
2
+ import type { CancellationToken } from 'vscode-jsonrpc';
3
+ export declare class OmlIndexManager extends DefaultIndexManager {
4
+ private readonly services;
5
+ constructor(services: LangiumSharedCoreServices);
6
+ findAllReferences(targetNode: AstNode, astNodePath: string): import("langium").Stream<ReferenceDescription>;
7
+ updateReferences(document: LangiumDocument, cancelToken?: CancellationToken): Promise<void>;
8
+ isAffected(document: LangiumDocument, changedUris: Set<string>): boolean;
9
+ private canonicalizeUri;
10
+ }