@lionweb/validation 0.6.1-beta.0 → 0.6.1-beta.1

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 (160) hide show
  1. package/dist/diff/LionWebJsonDiff.d.ts.map +1 -1
  2. package/dist/diff/LionWebJsonDiff.js +18 -23
  3. package/dist/diff/LionWebJsonDiff.js.map +1 -1
  4. package/dist/diff/changes/ContainmentChange.d.ts +2 -2
  5. package/dist/diff/changes/ContainmentChange.d.ts.map +1 -1
  6. package/dist/diff/changes/ContainmentChange.js.map +1 -1
  7. package/dist/diff/changes/ReferenceChange.d.ts +3 -3
  8. package/dist/diff/changes/ReferenceChange.d.ts.map +1 -1
  9. package/dist/diff/changes/ReferenceChange.js.map +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/issues/LanguageIssues.d.ts +37 -13
  15. package/dist/issues/LanguageIssues.d.ts.map +1 -1
  16. package/dist/issues/LanguageIssues.js +49 -13
  17. package/dist/issues/LanguageIssues.js.map +1 -1
  18. package/dist/issues/ReferenceIssues.d.ts +6 -6
  19. package/dist/issues/ReferenceIssues.d.ts.map +1 -1
  20. package/dist/issues/ReferenceIssues.js +6 -6
  21. package/dist/issues/ReferenceIssues.js.map +1 -1
  22. package/dist/issues/SyntaxIssues.d.ts +9 -9
  23. package/dist/issues/SyntaxIssues.d.ts.map +1 -1
  24. package/dist/issues/SyntaxIssues.js +9 -9
  25. package/dist/issues/SyntaxIssues.js.map +1 -1
  26. package/dist/issues/ValidationIssue.d.ts +7 -1
  27. package/dist/issues/ValidationIssue.d.ts.map +1 -1
  28. package/dist/issues/ValidationIssue.js +9 -1
  29. package/dist/issues/ValidationIssue.js.map +1 -1
  30. package/dist/json/LionWebJson.d.ts +1 -14
  31. package/dist/json/LionWebJson.d.ts.map +1 -1
  32. package/dist/json/LionWebJson.js +4 -14
  33. package/dist/json/LionWebJson.js.map +1 -1
  34. package/dist/json/LionWebJsonChunkWrapper.d.ts +20 -8
  35. package/dist/json/LionWebJsonChunkWrapper.d.ts.map +1 -1
  36. package/dist/json/LionWebJsonChunkWrapper.js +50 -22
  37. package/dist/json/LionWebJsonChunkWrapper.js.map +1 -1
  38. package/dist/json/M3definitions.d.ts +176 -0
  39. package/dist/json/M3definitions.d.ts.map +1 -0
  40. package/dist/json/M3definitions.js +174 -0
  41. package/dist/json/M3definitions.js.map +1 -0
  42. package/dist/json/NodeUtils.d.ts +3 -9
  43. package/dist/json/NodeUtils.d.ts.map +1 -1
  44. package/dist/json/NodeUtils.js +18 -31
  45. package/dist/json/NodeUtils.js.map +1 -1
  46. package/dist/json/index.d.ts +1 -2
  47. package/dist/json/index.d.ts.map +1 -1
  48. package/dist/json/index.js +1 -2
  49. package/dist/json/index.js.map +1 -1
  50. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts +24 -0
  51. package/dist/languages/CompositeLionWebLanguageWrapper.d.ts.map +1 -0
  52. package/dist/languages/CompositeLionWebLanguageWrapper.js +56 -0
  53. package/dist/languages/CompositeLionWebLanguageWrapper.js.map +1 -0
  54. package/dist/languages/LanguageRegistry.d.ts +19 -0
  55. package/dist/languages/LanguageRegistry.d.ts.map +1 -0
  56. package/dist/languages/LanguageRegistry.js +37 -0
  57. package/dist/languages/LanguageRegistry.js.map +1 -0
  58. package/dist/languages/LanguageUtils.d.ts +35 -0
  59. package/dist/languages/LanguageUtils.d.ts.map +1 -0
  60. package/dist/languages/LanguageUtils.js +52 -0
  61. package/dist/languages/LanguageUtils.js.map +1 -0
  62. package/dist/languages/LionCore-M3.json +2356 -0
  63. package/{src/json/std-builtins-copy.json → dist/languages/LionCore-builtins.json} +57 -52
  64. package/dist/languages/LionWebLanguageWrapper.d.ts +31 -0
  65. package/dist/languages/LionWebLanguageWrapper.d.ts.map +1 -0
  66. package/dist/languages/LionWebLanguageWrapper.js +69 -0
  67. package/dist/languages/LionWebLanguageWrapper.js.map +1 -0
  68. package/dist/languages/MetaPointerMap.d.ts +11 -0
  69. package/dist/languages/MetaPointerMap.d.ts.map +1 -0
  70. package/dist/languages/MetaPointerMap.js +39 -0
  71. package/dist/languages/MetaPointerMap.js.map +1 -0
  72. package/dist/languages/index.d.ts +3 -0
  73. package/dist/languages/index.d.ts.map +1 -0
  74. package/dist/languages/index.js +3 -0
  75. package/dist/languages/index.js.map +1 -0
  76. package/dist/runners/FileUtils.d.ts +4 -4
  77. package/dist/runners/FileUtils.d.ts.map +1 -1
  78. package/dist/runners/FileUtils.js +8 -32
  79. package/dist/runners/FileUtils.js.map +1 -1
  80. package/dist/runners/RunCheckFolder.js +3 -1
  81. package/dist/runners/RunCheckFolder.js.map +1 -1
  82. package/dist/runners/RunCheckFolderWithLanguage.js +7 -3
  83. package/dist/runners/RunCheckFolderWithLanguage.js.map +1 -1
  84. package/dist/runners/RunCheckOneFile.js +3 -1
  85. package/dist/runners/RunCheckOneFile.js.map +1 -1
  86. package/dist/runners/RunCheckOneFileWithLanguage.js +12 -3
  87. package/dist/runners/RunCheckOneFileWithLanguage.js.map +1 -1
  88. package/dist/runners/Utils.d.ts.map +1 -1
  89. package/dist/runners/Utils.js +0 -1
  90. package/dist/runners/Utils.js.map +1 -1
  91. package/dist/util/graphs.d.ts +18 -0
  92. package/dist/util/graphs.d.ts.map +1 -0
  93. package/dist/util/graphs.js +27 -0
  94. package/dist/util/graphs.js.map +1 -0
  95. package/dist/validators/LionWebLanguageReferenceValidator.d.ts +5 -4
  96. package/dist/validators/LionWebLanguageReferenceValidator.d.ts.map +1 -1
  97. package/dist/validators/LionWebLanguageReferenceValidator.js +96 -34
  98. package/dist/validators/LionWebLanguageReferenceValidator.js.map +1 -1
  99. package/dist/validators/LionWebLanguageValidator.d.ts +15 -3
  100. package/dist/validators/LionWebLanguageValidator.d.ts.map +1 -1
  101. package/dist/validators/LionWebLanguageValidator.js +54 -21
  102. package/dist/validators/LionWebLanguageValidator.js.map +1 -1
  103. package/dist/validators/LionWebReferenceValidator.d.ts.map +1 -1
  104. package/dist/validators/LionWebReferenceValidator.js +0 -5
  105. package/dist/validators/LionWebReferenceValidator.js.map +1 -1
  106. package/dist/validators/LionWebSyntaxValidator.d.ts +1 -1
  107. package/dist/validators/LionWebSyntaxValidator.js +1 -1
  108. package/dist/validators/LionWebValidator.d.ts +3 -3
  109. package/dist/validators/LionWebValidator.d.ts.map +1 -1
  110. package/dist/validators/LionWebValidator.js +5 -8
  111. package/dist/validators/LionWebValidator.js.map +1 -1
  112. package/package.json +5 -5
  113. package/src/diff/LionWebJsonDiff.ts +18 -23
  114. package/src/diff/changes/ContainmentChange.ts +1 -1
  115. package/src/diff/changes/ReferenceChange.ts +2 -2
  116. package/src/index.ts +2 -0
  117. package/src/issues/LanguageIssues.ts +49 -14
  118. package/src/issues/ReferenceIssues.ts +6 -6
  119. package/src/issues/SyntaxIssues.ts +9 -9
  120. package/src/issues/ValidationIssue.ts +12 -2
  121. package/src/json/LionCore_M3.json +2320 -0
  122. package/src/json/LionCore_builtins.json +231 -0
  123. package/src/json/LionWebJson.ts +5 -14
  124. package/src/json/LionWebJsonChunkWrapper.ts +59 -30
  125. package/src/json/M3definitions.ts +177 -0
  126. package/src/json/NodeUtils.ts +21 -39
  127. package/src/json/index.ts +1 -2
  128. package/src/languages/CompositeLionWebLanguageWrapper.ts +57 -0
  129. package/src/languages/LanguageRegistry.ts +44 -0
  130. package/src/languages/LanguageUtils.ts +61 -0
  131. package/src/languages/LionCore-M3.json +2356 -0
  132. package/src/languages/LionCore-builtins.json +372 -0
  133. package/src/languages/LionWebLanguageWrapper.ts +95 -0
  134. package/src/languages/MetaPointerMap.ts +40 -0
  135. package/src/languages/index.ts +2 -0
  136. package/src/runners/FileUtils.ts +9 -36
  137. package/src/runners/RunCheckFolder.ts +3 -1
  138. package/src/runners/RunCheckFolderWithLanguage.ts +7 -7
  139. package/src/runners/RunCheckOneFile.ts +3 -1
  140. package/src/runners/RunCheckOneFileWithLanguage.ts +12 -7
  141. package/src/runners/Utils.ts +0 -1
  142. package/src/tmp.json +574 -0
  143. package/src/tryout.js +21 -0
  144. package/src/util/graphs.ts +36 -0
  145. package/src/validators/LionWebLanguageReferenceValidator.ts +110 -48
  146. package/src/validators/LionWebLanguageValidator.ts +62 -21
  147. package/src/validators/LionWebReferenceValidator.ts +0 -5
  148. package/src/validators/LionWebSyntaxValidator.ts +2 -2
  149. package/src/validators/LionWebValidator.ts +5 -9
  150. package/structure.puml +25 -0
  151. package/dist/json/LanguageUtils.d.ts +0 -9
  152. package/dist/json/LanguageUtils.d.ts.map +0 -1
  153. package/dist/json/LanguageUtils.js +0 -30
  154. package/dist/json/LanguageUtils.js.map +0 -1
  155. package/dist/json/LionWebLanguageDefinition.d.ts +0 -48
  156. package/dist/json/LionWebLanguageDefinition.d.ts.map +0 -1
  157. package/dist/json/LionWebLanguageDefinition.js +0 -126
  158. package/dist/json/LionWebLanguageDefinition.js.map +0 -1
  159. package/src/json/LanguageUtils.ts +0 -52
  160. package/src/json/LionWebLanguageDefinition.ts +0 -144
@@ -1,126 +0,0 @@
1
- import { LION_CORE_BUILTINS_INAMED_NAME } from "./LionWebJson.js";
2
- import { NodeUtils } from "./NodeUtils.js";
3
- export const LIONWEB_M3_PROPERTY_KEY = "Property";
4
- export const LIONWEB_M3_CONCEPT_KEY = "Concept";
5
- export const LIONWEB_M3_INTERFACE_KEY = "Interface";
6
- export const LIONWEB_M3_ANNOTATION_KEY = "Annotation";
7
- export const LIONWEB_M3_REFERENCE_KEY = "Reference";
8
- export const LIONWEB_M3_LANGUAGE_KEY = "Language";
9
- export const LIONWEB_M3_LANGUAGE_VERSION_KEY = "Language-version";
10
- export const LIONWEB_M3_IKEYED_KEY_KEY = "IKeyed-key";
11
- export const LIONWEB_M3_PROPERTY_TYPE_KEY = "Property-type";
12
- /**
13
- * Collection of language definitions
14
- */
15
- // export class LionwebLanguages {
16
- // // The builtin language of LionWeb.
17
- // static M3 = LionCore_M3 as LionWebJsonChunk;
18
- //
19
- // languageMap = new Map<string, Map<string, Map<string, LionwebLanguageDefinition>>>();
20
- //
21
- // setLanguage(lionWebLanguage: LionwebLanguageDefinition) {
22
- // // Assume LwNode is a concept of type "Language"
23
- // let language = this.languageMap.get(lionWebLanguage.languageId.name);
24
- // if (language === undefined) {
25
- // language = new Map<string, Map<string, LionwebLanguageDefinition>>();
26
- // this.languageMap.set(lionWebLanguage.languageId.name, language);
27
- // }
28
- // let version = language.get(lionWebLanguage.languageId.version);
29
- // if (version === undefined) {
30
- // version = new Map<string, LionwebLanguageDefinition>();
31
- // language.set(lionWebLanguage.languageId.version, version);
32
- // }
33
- // let key = version.get(lionWebLanguage.languageId.key);
34
- // if (key === undefined) {
35
- // version.set(lionWebLanguage.languageId.key, lionWebLanguage);
36
- // }
37
- // }
38
- //
39
- // getLanguage(pointer: LionWebJsonMetaPointer): LionwebLanguageDefinition {
40
- // return this.languageMap.get(pointer.language)?.get(pointer.version)?.get(pointer.key);
41
- // }
42
- // }
43
- /**
44
- * Represents a LionWeb serialiation chunk which represents a language definition / metamodel
45
- */
46
- export class LionWebLanguageDefinition {
47
- /**
48
- * Assume chunk represents a language metamodel according to Lionweb M3.
49
- * @param chunk
50
- */
51
- constructor(chunk) {
52
- this.languageId = null;
53
- /**
54
- * All nodes in the language
55
- */
56
- this.nodeKeymap = new Map();
57
- // console.log("CHUNK " + JSON.stringify(chunk))
58
- const languageNodes = chunk.findNodesOfConcept(LIONWEB_M3_LANGUAGE_KEY);
59
- if (languageNodes.length !== 1) {
60
- // TODO Better error handling.
61
- console.error("1 Expected exactly one Language node, found " + languageNodes.length + " => " + JSON.stringify(languageNodes));
62
- }
63
- else {
64
- const languageNode = languageNodes[0];
65
- this.setLanguage(languageNode);
66
- }
67
- this.languageChunkWrapper = chunk;
68
- }
69
- setLanguage(languageNode) {
70
- // Assume LwNode is a concept of type "Language"
71
- const nameProp = languageNode.properties.find(prop => prop.property.key === LION_CORE_BUILTINS_INAMED_NAME);
72
- const versionProp = languageNode.properties.find(prop => prop.property.key === LIONWEB_M3_LANGUAGE_VERSION_KEY);
73
- const keyProp = languageNode.properties.find(prop => prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY);
74
- this.languageId = {
75
- name: nameProp?.value,
76
- version: versionProp?.value,
77
- key: keyProp?.value,
78
- };
79
- }
80
- /**
81
- * Store the node `node` under `key`.
82
- * @param key
83
- * @param node
84
- */
85
- setNodeByKey(key, node) {
86
- this.nodeKeymap.set(key, node);
87
- }
88
- getNodeByKey(key) {
89
- return this.nodeKeymap.get(key);
90
- }
91
- getNodeByMetaPointer(metaPointer) {
92
- // console.log("get metapointer " + JSON.stringify(metaPointer))
93
- const result = this.languageChunkWrapper.jsonChunk.nodes.find(n => {
94
- // console.log(" looking into " + JSON.stringify(n));
95
- const keyProp = NodeUtils.findLwProperty(n, LIONWEB_M3_IKEYED_KEY_KEY);
96
- // const versionProp = NodeUtils.findLwProperty(n, "Language-version");
97
- // return ((!!keyProp) && (keyProp.value === metaPointer.key) && (!!versionProp) && (versionProp.value === metaPointer.version));
98
- // console.log(" getNodeByMetaPointer.looking into " + node.id + " found " + JSON.stringify(keyProp));
99
- return !!keyProp && keyProp.value === metaPointer.key;
100
- });
101
- return result;
102
- }
103
- getPropertyByKey(key) {
104
- // console.log("get property by key " + key)
105
- const propertyNode = this.languageChunkWrapper.findNodesOfConcept(LIONWEB_M3_PROPERTY_KEY).find(n => {
106
- // console.log(" looking into " + JSON.stringify(n));
107
- const keyProp = n.properties.find(prop => {
108
- return prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY && prop.value === key;
109
- });
110
- return keyProp;
111
- });
112
- return propertyNode;
113
- }
114
- getConceptByKey(key) {
115
- // console.log("get property by key " + key)
116
- const conceptNode = this.languageChunkWrapper.findNodesOfConcept(LIONWEB_M3_CONCEPT_KEY).find(n => {
117
- // console.log(" looking into " + JSON.stringify(n));
118
- const keyProp = n.properties.find(prop => {
119
- return prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY && prop.value === key;
120
- });
121
- return keyProp;
122
- });
123
- return conceptNode;
124
- }
125
- }
126
- //# sourceMappingURL=LionWebLanguageDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LionWebLanguageDefinition.js","sourceRoot":"","sources":["../../src/json/LionWebLanguageDefinition.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { LionWebJsonChunk } from "./LionWebJson.js"
2
- import { LionWebJsonChunkWrapper } from "./LionWebJsonChunkWrapper.js"
3
-
4
- /**
5
- * Contains methods for getting information from a LionWebJsonChunk representing a language.
6
- */
7
- export class LanguageWrapper extends LionWebJsonChunkWrapper {
8
- constructor(languageJson: LionWebJsonChunk) {
9
- super(languageJson)
10
- }
11
-
12
- // inheritsFrom = (classifier: LionWebJsonNode): LionWebJsonNode[] => {
13
- // if (isConcept(classifier) || isAnnotation(classifier)) {
14
- // // find the language (have key and version)
15
- // // find concept or annotation
16
- // // find extends/inherits property
17
- // return [
18
- // ...(
19
- // isRef(classifier.extends)
20
- // ? [classifier.extends as Concept]
21
- // : []
22
- // ),
23
- // ...classifier.implements
24
- // ]
25
- // }
26
- // if (isInterface(classifier)) {
27
- // return classifier.extends
28
- // }
29
- // throw new Error(`concept type ${typeof classifier} not handled`)
30
- // }
31
- }
32
-
33
- //
34
- // function isLionCoreLanguage(node: LionWebJsonNode) {
35
- // return node.classifier.language === LION_CORE_M3_KEY
36
- // && node.classifier.version === "2023.1";
37
- // }
38
- //
39
- // const isConcept = (node: LionWebJsonNode): boolean => {
40
- // return isLionCoreLanguage(node)
41
- // && node.classifier.key === LIONWEB_M3_CONCEPT_KEY;
42
- // }
43
- //
44
- // const isAnnotation = (node: LionWebJsonNode): boolean => {
45
- // return isLionCoreLanguage(node)
46
- // && node.classifier.key === LIONWEB_M3_ANNOTATION_KEY;
47
- // }
48
- //
49
- // const isInterface = (node: LionWebJsonNode): boolean => {
50
- // return isLionCoreLanguage(node)
51
- // && node.classifier.key === LIONWEB_M3_INTERFACE_KEY;
52
- // }
@@ -1,144 +0,0 @@
1
- import { LION_CORE_BUILTINS_INAMED_NAME, LionWebJsonMetaPointer, LionWebJsonNode } from "./LionWebJson.js"
2
- import { LionWebJsonChunkWrapper } from "./LionWebJsonChunkWrapper.js"
3
- import { NodeUtils } from "./NodeUtils.js"
4
-
5
- type LanguageId = {
6
- name?: string
7
- version?: string
8
- key?: string
9
- }
10
-
11
- export const LIONWEB_M3_PROPERTY_KEY = "Property"
12
- export const LIONWEB_M3_CONCEPT_KEY = "Concept"
13
- export const LIONWEB_M3_INTERFACE_KEY = "Interface"
14
- export const LIONWEB_M3_ANNOTATION_KEY = "Annotation"
15
- export const LIONWEB_M3_REFERENCE_KEY = "Reference"
16
- export const LIONWEB_M3_LANGUAGE_KEY = "Language"
17
- export const LIONWEB_M3_LANGUAGE_VERSION_KEY = "Language-version"
18
- export const LIONWEB_M3_IKEYED_KEY_KEY = "IKeyed-key"
19
- export const LIONWEB_M3_PROPERTY_TYPE_KEY = "Property-type"
20
-
21
- /**
22
- * Collection of language definitions
23
- */
24
- // export class LionwebLanguages {
25
- // // The builtin language of LionWeb.
26
- // static M3 = LionCore_M3 as LionWebJsonChunk;
27
- //
28
- // languageMap = new Map<string, Map<string, Map<string, LionwebLanguageDefinition>>>();
29
- //
30
- // setLanguage(lionWebLanguage: LionwebLanguageDefinition) {
31
- // // Assume LwNode is a concept of type "Language"
32
- // let language = this.languageMap.get(lionWebLanguage.languageId.name);
33
- // if (language === undefined) {
34
- // language = new Map<string, Map<string, LionwebLanguageDefinition>>();
35
- // this.languageMap.set(lionWebLanguage.languageId.name, language);
36
- // }
37
- // let version = language.get(lionWebLanguage.languageId.version);
38
- // if (version === undefined) {
39
- // version = new Map<string, LionwebLanguageDefinition>();
40
- // language.set(lionWebLanguage.languageId.version, version);
41
- // }
42
- // let key = version.get(lionWebLanguage.languageId.key);
43
- // if (key === undefined) {
44
- // version.set(lionWebLanguage.languageId.key, lionWebLanguage);
45
- // }
46
- // }
47
- //
48
- // getLanguage(pointer: LionWebJsonMetaPointer): LionwebLanguageDefinition {
49
- // return this.languageMap.get(pointer.language)?.get(pointer.version)?.get(pointer.key);
50
- // }
51
- // }
52
-
53
- /**
54
- * Represents a LionWeb serialiation chunk which represents a language definition / metamodel
55
- */
56
- export class LionWebLanguageDefinition {
57
- languageId: LanguageId | null = null
58
- /**
59
- * All nodes in the language
60
- */
61
- nodeKeymap = new Map<string, LionWebJsonNode>()
62
- languageChunkWrapper: LionWebJsonChunkWrapper
63
-
64
- /**
65
- * Assume chunk represents a language metamodel according to Lionweb M3.
66
- * @param chunk
67
- */
68
- constructor(chunk: LionWebJsonChunkWrapper) {
69
- // console.log("CHUNK " + JSON.stringify(chunk))
70
- const languageNodes = chunk.findNodesOfConcept(LIONWEB_M3_LANGUAGE_KEY)
71
- if (languageNodes.length !== 1) {
72
- // TODO Better error handling.
73
- console.error("1 Expected exactly one Language node, found " + languageNodes.length + " => " + JSON.stringify(languageNodes))
74
- } else {
75
- const languageNode = languageNodes[0]
76
- this.setLanguage(languageNode)
77
- }
78
- this.languageChunkWrapper = chunk
79
- }
80
-
81
- protected setLanguage(languageNode: LionWebJsonNode) {
82
- // Assume LwNode is a concept of type "Language"
83
- const nameProp = languageNode.properties.find(prop => prop.property.key === LION_CORE_BUILTINS_INAMED_NAME)
84
- const versionProp = languageNode.properties.find(prop => prop.property.key === LIONWEB_M3_LANGUAGE_VERSION_KEY)
85
- const keyProp = languageNode.properties.find(prop => prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY)
86
- this.languageId = {
87
- name: nameProp?.value,
88
- version: versionProp?.value,
89
- key: keyProp?.value,
90
- }
91
- }
92
-
93
- /**
94
- * Store the node `node` under `key`.
95
- * @param key
96
- * @param node
97
- */
98
- setNodeByKey(key: string, node: LionWebJsonNode): void {
99
- this.nodeKeymap.set(key, node)
100
- }
101
-
102
- getNodeByKey(key: string): LionWebJsonNode | undefined {
103
- return this.nodeKeymap.get(key)
104
- }
105
-
106
- getNodeByMetaPointer(metaPointer: LionWebJsonMetaPointer): LionWebJsonNode | undefined {
107
- // console.log("get metapointer " + JSON.stringify(metaPointer))
108
- const result = this.languageChunkWrapper.jsonChunk.nodes.find(n => {
109
- // console.log(" looking into " + JSON.stringify(n));
110
- const keyProp = NodeUtils.findLwProperty(n, LIONWEB_M3_IKEYED_KEY_KEY)
111
- // const versionProp = NodeUtils.findLwProperty(n, "Language-version");
112
-
113
- // return ((!!keyProp) && (keyProp.value === metaPointer.key) && (!!versionProp) && (versionProp.value === metaPointer.version));
114
-
115
- // console.log(" getNodeByMetaPointer.looking into " + node.id + " found " + JSON.stringify(keyProp));
116
- return !!keyProp && keyProp.value === metaPointer.key
117
- })
118
- return result
119
- }
120
-
121
- getPropertyByKey(key: string): LionWebJsonNode | undefined {
122
- // console.log("get property by key " + key)
123
- const propertyNode = this.languageChunkWrapper.findNodesOfConcept(LIONWEB_M3_PROPERTY_KEY).find(n => {
124
- // console.log(" looking into " + JSON.stringify(n));
125
- const keyProp = (n as LionWebJsonNode).properties.find(prop => {
126
- return prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY && prop.value === key
127
- })
128
- return keyProp
129
- })
130
- return propertyNode
131
- }
132
-
133
- getConceptByKey(key: string): LionWebJsonNode | undefined {
134
- // console.log("get property by key " + key)
135
- const conceptNode = this.languageChunkWrapper.findNodesOfConcept(LIONWEB_M3_CONCEPT_KEY).find(n => {
136
- // console.log(" looking into " + JSON.stringify(n));
137
- const keyProp = n.properties.find(prop => {
138
- return prop.property.key === LIONWEB_M3_IKEYED_KEY_KEY && prop.value === key
139
- })
140
- return keyProp
141
- })
142
- return conceptNode
143
- }
144
- }