@stxt-lang/core 0.5.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 (169) hide show
  1. package/out/all.d.ts +19 -0
  2. package/out/all.js +42 -0
  3. package/out/all.js.map +1 -0
  4. package/out/core/Constants.d.ts +9 -0
  5. package/out/core/Constants.js +14 -0
  6. package/out/core/Constants.js.map +1 -0
  7. package/out/core/Line.d.ts +9 -0
  8. package/out/core/Line.js +17 -0
  9. package/out/core/Line.js.map +1 -0
  10. package/out/core/LineParser.d.ts +2 -0
  11. package/out/core/LineParser.js +72 -0
  12. package/out/core/LineParser.js.map +1 -0
  13. package/out/core/NameNamespace.d.ts +7 -0
  14. package/out/core/NameNamespace.js +17 -0
  15. package/out/core/NameNamespace.js.map +1 -0
  16. package/out/core/NameNamespaceParser.d.ts +5 -0
  17. package/out/core/NameNamespaceParser.js +43 -0
  18. package/out/core/NameNamespaceParser.js.map +1 -0
  19. package/out/core/NamespaceValidator.d.ts +4 -0
  20. package/out/core/NamespaceValidator.js +17 -0
  21. package/out/core/NamespaceValidator.js.map +1 -0
  22. package/out/core/Node.d.ts +29 -0
  23. package/out/core/Node.js +116 -0
  24. package/out/core/Node.js.map +1 -0
  25. package/out/core/NodeCreator.d.ts +3 -0
  26. package/out/core/NodeCreator.js +52 -0
  27. package/out/core/NodeCreator.js.map +1 -0
  28. package/out/core/ParseResult.d.ts +12 -0
  29. package/out/core/ParseResult.js +26 -0
  30. package/out/core/ParseResult.js.map +1 -0
  31. package/out/core/Parser.d.ts +16 -0
  32. package/out/core/Parser.js +142 -0
  33. package/out/core/Parser.js.map +1 -0
  34. package/out/core/StringUtils.d.ts +8 -0
  35. package/out/core/StringUtils.js +46 -0
  36. package/out/core/StringUtils.js.map +1 -0
  37. package/out/exceptions/ParseException.d.ts +6 -0
  38. package/out/exceptions/ParseException.js +17 -0
  39. package/out/exceptions/ParseException.js.map +1 -0
  40. package/out/exceptions/RuntimeException.d.ts +6 -0
  41. package/out/exceptions/RuntimeException.js +20 -0
  42. package/out/exceptions/RuntimeException.js.map +1 -0
  43. package/out/exceptions/ValidationException.d.ts +4 -0
  44. package/out/exceptions/ValidationException.js +13 -0
  45. package/out/exceptions/ValidationException.js.map +1 -0
  46. package/out/processors/Observer.d.ts +8 -0
  47. package/out/processors/Observer.js +3 -0
  48. package/out/processors/Observer.js.map +1 -0
  49. package/out/processors/Validator.d.ts +5 -0
  50. package/out/processors/Validator.js +3 -0
  51. package/out/processors/Validator.js.map +1 -0
  52. package/out/runtime/ConditionalValidator.d.ts +9 -0
  53. package/out/runtime/ConditionalValidator.js +18 -0
  54. package/out/runtime/ConditionalValidator.js.map +1 -0
  55. package/out/runtime/NodeWriter.d.ts +12 -0
  56. package/out/runtime/NodeWriter.js +59 -0
  57. package/out/runtime/NodeWriter.js.map +1 -0
  58. package/out/runtime/UnifiedSchemaProvider.d.ts +22 -0
  59. package/out/runtime/UnifiedSchemaProvider.js +80 -0
  60. package/out/runtime/UnifiedSchemaProvider.js.map +1 -0
  61. package/out/schema/ChildDefinition.d.ts +21 -0
  62. package/out/schema/ChildDefinition.js +50 -0
  63. package/out/schema/ChildDefinition.js.map +1 -0
  64. package/out/schema/NodeDefinition.d.ts +34 -0
  65. package/out/schema/NodeDefinition.js +74 -0
  66. package/out/schema/NodeDefinition.js.map +1 -0
  67. package/out/schema/Schema.d.ts +30 -0
  68. package/out/schema/Schema.js +43 -0
  69. package/out/schema/Schema.js.map +1 -0
  70. package/out/schema/SchemaParser.d.ts +3 -0
  71. package/out/schema/SchemaParser.js +117 -0
  72. package/out/schema/SchemaParser.js.map +1 -0
  73. package/out/schema/SchemaProvider.d.ts +4 -0
  74. package/out/schema/SchemaProvider.js +3 -0
  75. package/out/schema/SchemaProvider.js.map +1 -0
  76. package/out/schema/SchemaProviderMemory.d.ts +11 -0
  77. package/out/schema/SchemaProviderMemory.js +44 -0
  78. package/out/schema/SchemaProviderMemory.js.map +1 -0
  79. package/out/schema/SchemaProviderMeta.d.ts +8 -0
  80. package/out/schema/SchemaProviderMeta.js +92 -0
  81. package/out/schema/SchemaProviderMeta.js.map +1 -0
  82. package/out/schema/SchemaValidator.d.ts +16 -0
  83. package/out/schema/SchemaValidator.js +115 -0
  84. package/out/schema/SchemaValidator.js.map +1 -0
  85. package/out/schema/Type.d.ts +6 -0
  86. package/out/schema/Type.js +3 -0
  87. package/out/schema/Type.js.map +1 -0
  88. package/out/schema/TypeRegistry.d.ts +8 -0
  89. package/out/schema/TypeRegistry.js +69 -0
  90. package/out/schema/TypeRegistry.js.map +1 -0
  91. package/out/schema/type/BASE64.d.ts +2 -0
  92. package/out/schema/type/BASE64.js +30 -0
  93. package/out/schema/type/BASE64.js.map +1 -0
  94. package/out/schema/type/BINARY.d.ts +2 -0
  95. package/out/schema/type/BINARY.js +18 -0
  96. package/out/schema/type/BINARY.js.map +1 -0
  97. package/out/schema/type/BLOCK.d.ts +2 -0
  98. package/out/schema/type/BLOCK.js +16 -0
  99. package/out/schema/type/BLOCK.js.map +1 -0
  100. package/out/schema/type/BOOLEAN.d.ts +1 -0
  101. package/out/schema/type/BOOLEAN.js +6 -0
  102. package/out/schema/type/BOOLEAN.js.map +1 -0
  103. package/out/schema/type/DATE.d.ts +1 -0
  104. package/out/schema/type/DATE.js +6 -0
  105. package/out/schema/type/DATE.js.map +1 -0
  106. package/out/schema/type/EMAIL.d.ts +1 -0
  107. package/out/schema/type/EMAIL.js +6 -0
  108. package/out/schema/type/EMAIL.js.map +1 -0
  109. package/out/schema/type/ENUM.d.ts +2 -0
  110. package/out/schema/type/ENUM.js +21 -0
  111. package/out/schema/type/ENUM.js.map +1 -0
  112. package/out/schema/type/GROUP.d.ts +2 -0
  113. package/out/schema/type/GROUP.js +16 -0
  114. package/out/schema/type/GROUP.js.map +1 -0
  115. package/out/schema/type/HEXADECIMAL.d.ts +2 -0
  116. package/out/schema/type/HEXADECIMAL.js +18 -0
  117. package/out/schema/type/HEXADECIMAL.js.map +1 -0
  118. package/out/schema/type/INLINE.d.ts +2 -0
  119. package/out/schema/type/INLINE.js +16 -0
  120. package/out/schema/type/INLINE.js.map +1 -0
  121. package/out/schema/type/INTEGER.d.ts +1 -0
  122. package/out/schema/type/INTEGER.js +6 -0
  123. package/out/schema/type/INTEGER.js.map +1 -0
  124. package/out/schema/type/MARKDOWN.d.ts +2 -0
  125. package/out/schema/type/MARKDOWN.js +17 -0
  126. package/out/schema/type/MARKDOWN.js.map +1 -0
  127. package/out/schema/type/NATURAL.d.ts +1 -0
  128. package/out/schema/type/NATURAL.js +6 -0
  129. package/out/schema/type/NATURAL.js.map +1 -0
  130. package/out/schema/type/NUMBER.d.ts +1 -0
  131. package/out/schema/type/NUMBER.js +6 -0
  132. package/out/schema/type/NUMBER.js.map +1 -0
  133. package/out/schema/type/TEXT.d.ts +2 -0
  134. package/out/schema/type/TEXT.js +15 -0
  135. package/out/schema/type/TEXT.js.map +1 -0
  136. package/out/schema/type/TIME.d.ts +1 -0
  137. package/out/schema/type/TIME.js +6 -0
  138. package/out/schema/type/TIME.js.map +1 -0
  139. package/out/schema/type/TIMESTAMP.d.ts +1 -0
  140. package/out/schema/type/TIMESTAMP.js +6 -0
  141. package/out/schema/type/TIMESTAMP.js.map +1 -0
  142. package/out/schema/type/URL.d.ts +2 -0
  143. package/out/schema/type/URL.js +27 -0
  144. package/out/schema/type/URL.js.map +1 -0
  145. package/out/schema/type/UUID.d.ts +1 -0
  146. package/out/schema/type/UUID.js +6 -0
  147. package/out/schema/type/UUID.js.map +1 -0
  148. package/out/schema/type/binaryValue.d.ts +2 -0
  149. package/out/schema/type/binaryValue.js +13 -0
  150. package/out/schema/type/binaryValue.js.map +1 -0
  151. package/out/schema/type/regexType.d.ts +2 -0
  152. package/out/schema/type/regexType.js +20 -0
  153. package/out/schema/type/regexType.js.map +1 -0
  154. package/out/template/ChildLine.d.ts +12 -0
  155. package/out/template/ChildLine.js +28 -0
  156. package/out/template/ChildLine.js.map +1 -0
  157. package/out/template/ChildLineParser.d.ts +7 -0
  158. package/out/template/ChildLineParser.js +98 -0
  159. package/out/template/ChildLineParser.js.map +1 -0
  160. package/out/template/MetaTemplateSchemaProvider.d.ts +8 -0
  161. package/out/template/MetaTemplateSchemaProvider.js +35 -0
  162. package/out/template/MetaTemplateSchemaProvider.js.map +1 -0
  163. package/out/template/TemplateParser.d.ts +3 -0
  164. package/out/template/TemplateParser.js +214 -0
  165. package/out/template/TemplateParser.js.map +1 -0
  166. package/out/template/TemplateSchemaProviderMemory.d.ts +6 -0
  167. package/out/template/TemplateSchemaProviderMemory.js +37 -0
  168. package/out/template/TemplateSchemaProviderMemory.js.map +1 -0
  169. package/package.json +45 -0
package/out/all.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ export { Node } from "./core/Node";
2
+ export { Parser } from "./core/Parser";
3
+ export { ParseResult } from "./core/ParseResult";
4
+ export { Line } from "./core/Line";
5
+ export { Constants } from "./core/Constants";
6
+ export { parseLine } from "./core/LineParser";
7
+ export { StringUtils } from "./core/StringUtils";
8
+ export { ParseException } from "./exceptions/ParseException";
9
+ export { Observer } from "./processors/Observer";
10
+ export { Schema } from "./schema/Schema";
11
+ export { SchemaValidator } from "./schema/SchemaValidator";
12
+ export { SchemaProvider } from "./schema/SchemaProvider";
13
+ export { NodeDefinition } from "./schema/NodeDefinition";
14
+ export { ChildDefinition } from "./schema/ChildDefinition";
15
+ export { transformNodeToSchema } from "./schema/SchemaParser";
16
+ export { UnifiedSchemaProvider } from "./runtime/UnifiedSchemaProvider";
17
+ export { ConditionalValidator } from "./runtime/ConditionalValidator";
18
+ export { NodeWriter, IndentStyle } from "./runtime/NodeWriter";
19
+ export { transformTemplateNodeToSchema } from "./template/TemplateParser";
package/out/all.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ // Punto de entrada público del paquete (out/all.js / out/all.d.ts).
3
+ // Todo lo que deba ser consumible por terceros (p. ej. la extensión VSCode)
4
+ // debe re-exportarse desde aquí.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.transformTemplateNodeToSchema = exports.IndentStyle = exports.NodeWriter = exports.ConditionalValidator = exports.UnifiedSchemaProvider = exports.transformNodeToSchema = exports.ChildDefinition = exports.NodeDefinition = exports.SchemaValidator = exports.Schema = exports.ParseException = exports.StringUtils = exports.parseLine = exports.Constants = exports.Line = exports.ParseResult = exports.Parser = exports.Node = void 0;
7
+ var Node_1 = require("./core/Node");
8
+ Object.defineProperty(exports, "Node", { enumerable: true, get: function () { return Node_1.Node; } });
9
+ var Parser_1 = require("./core/Parser");
10
+ Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_1.Parser; } });
11
+ var ParseResult_1 = require("./core/ParseResult");
12
+ Object.defineProperty(exports, "ParseResult", { enumerable: true, get: function () { return ParseResult_1.ParseResult; } });
13
+ var Line_1 = require("./core/Line");
14
+ Object.defineProperty(exports, "Line", { enumerable: true, get: function () { return Line_1.Line; } });
15
+ var Constants_1 = require("./core/Constants");
16
+ Object.defineProperty(exports, "Constants", { enumerable: true, get: function () { return Constants_1.Constants; } });
17
+ var LineParser_1 = require("./core/LineParser");
18
+ Object.defineProperty(exports, "parseLine", { enumerable: true, get: function () { return LineParser_1.parseLine; } });
19
+ var StringUtils_1 = require("./core/StringUtils");
20
+ Object.defineProperty(exports, "StringUtils", { enumerable: true, get: function () { return StringUtils_1.StringUtils; } });
21
+ var ParseException_1 = require("./exceptions/ParseException");
22
+ Object.defineProperty(exports, "ParseException", { enumerable: true, get: function () { return ParseException_1.ParseException; } });
23
+ var Schema_1 = require("./schema/Schema");
24
+ Object.defineProperty(exports, "Schema", { enumerable: true, get: function () { return Schema_1.Schema; } });
25
+ var SchemaValidator_1 = require("./schema/SchemaValidator");
26
+ Object.defineProperty(exports, "SchemaValidator", { enumerable: true, get: function () { return SchemaValidator_1.SchemaValidator; } });
27
+ var NodeDefinition_1 = require("./schema/NodeDefinition");
28
+ Object.defineProperty(exports, "NodeDefinition", { enumerable: true, get: function () { return NodeDefinition_1.NodeDefinition; } });
29
+ var ChildDefinition_1 = require("./schema/ChildDefinition");
30
+ Object.defineProperty(exports, "ChildDefinition", { enumerable: true, get: function () { return ChildDefinition_1.ChildDefinition; } });
31
+ var SchemaParser_1 = require("./schema/SchemaParser");
32
+ Object.defineProperty(exports, "transformNodeToSchema", { enumerable: true, get: function () { return SchemaParser_1.transformNodeToSchema; } });
33
+ var UnifiedSchemaProvider_1 = require("./runtime/UnifiedSchemaProvider");
34
+ Object.defineProperty(exports, "UnifiedSchemaProvider", { enumerable: true, get: function () { return UnifiedSchemaProvider_1.UnifiedSchemaProvider; } });
35
+ var ConditionalValidator_1 = require("./runtime/ConditionalValidator");
36
+ Object.defineProperty(exports, "ConditionalValidator", { enumerable: true, get: function () { return ConditionalValidator_1.ConditionalValidator; } });
37
+ var NodeWriter_1 = require("./runtime/NodeWriter");
38
+ Object.defineProperty(exports, "NodeWriter", { enumerable: true, get: function () { return NodeWriter_1.NodeWriter; } });
39
+ Object.defineProperty(exports, "IndentStyle", { enumerable: true, get: function () { return NodeWriter_1.IndentStyle; } });
40
+ var TemplateParser_1 = require("./template/TemplateParser");
41
+ Object.defineProperty(exports, "transformTemplateNodeToSchema", { enumerable: true, get: function () { return TemplateParser_1.transformTemplateNodeToSchema; } });
42
+ //# sourceMappingURL=all.js.map
package/out/all.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all.js","sourceRoot":"","sources":["../src/all.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,4EAA4E;AAC5E,iCAAiC;;;AAEjC,oCAAmC;AAA1B,4FAAA,IAAI,OAAA;AACb,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AACpB,oCAAmC;AAA1B,4FAAA,IAAI,OAAA;AACb,8CAA6C;AAApC,sGAAA,SAAS,OAAA;AAClB,gDAA8C;AAArC,uGAAA,SAAS,OAAA;AAClB,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AAEpB,8DAA6D;AAApD,gHAAA,cAAc,OAAA;AAIvB,0CAAyC;AAAhC,gGAAA,MAAM,OAAA;AACf,4DAA2D;AAAlD,kHAAA,eAAe,OAAA;AAExB,0DAAyD;AAAhD,gHAAA,cAAc,OAAA;AACvB,4DAA2D;AAAlD,kHAAA,eAAe,OAAA;AACxB,sDAA8D;AAArD,qHAAA,qBAAqB,OAAA;AAE9B,yEAAwE;AAA/D,8HAAA,qBAAqB,OAAA;AAC9B,uEAAsE;AAA7D,4HAAA,oBAAoB,OAAA;AAC7B,mDAA+D;AAAtD,wGAAA,UAAU,OAAA;AAAE,yGAAA,WAAW,OAAA;AAEhC,4DAA0E;AAAjE,+HAAA,6BAA6B,OAAA"}
@@ -0,0 +1,9 @@
1
+ export declare class Constants {
2
+ static readonly COMMENT_CHAR: string;
3
+ static readonly TAB_SPACES: number;
4
+ static readonly TAB: string;
5
+ static readonly SPACE: string;
6
+ static readonly SEP_NODE: string;
7
+ static readonly SEP_TEXT_NODE: string;
8
+ static readonly EMPTY_NAMESPACE: string;
9
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Constants = void 0;
4
+ class Constants {
5
+ }
6
+ exports.Constants = Constants;
7
+ Constants.COMMENT_CHAR = "#";
8
+ Constants.TAB_SPACES = 4;
9
+ Constants.TAB = "\t";
10
+ Constants.SPACE = " ";
11
+ Constants.SEP_NODE = ":";
12
+ Constants.SEP_TEXT_NODE = ">>";
13
+ Constants.EMPTY_NAMESPACE = "";
14
+ //# sourceMappingURL=Constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../../src/core/Constants.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;;AAAtB,8BAQC;AAPgB,sBAAY,GAAW,GAAG,CAAC;AAC3B,oBAAU,GAAW,CAAC,CAAC;AACvB,aAAG,GAAW,IAAI,CAAC;AACnB,eAAK,GAAW,GAAG,CAAC;AACpB,kBAAQ,GAAW,GAAG,CAAC;AACvB,uBAAa,GAAW,IAAI,CAAC;AAC7B,yBAAe,GAAW,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare class Line {
2
+ readonly level: number;
3
+ readonly content: string;
4
+ readonly isComment: boolean;
5
+ readonly isBlock: boolean;
6
+ readonly indentLength: number;
7
+ constructor(level: number, content: string, isComment: boolean, isBlock: boolean, indentLength: number);
8
+ isEmpty(): boolean;
9
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Line = void 0;
4
+ class Line {
5
+ constructor(level, content, isComment, isBlock, indentLength) {
6
+ this.level = level;
7
+ this.content = content;
8
+ this.isComment = isComment;
9
+ this.isBlock = isBlock;
10
+ this.indentLength = indentLength;
11
+ }
12
+ isEmpty() {
13
+ return this.content.trim() === "";
14
+ }
15
+ }
16
+ exports.Line = Line;
17
+ //# sourceMappingURL=Line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Line.js","sourceRoot":"","sources":["../../src/core/Line.ts"],"names":[],"mappings":";;;AAAA,MAAa,IAAI;IAQhB,YAAY,KAAa,EAAE,OAAe,EAAE,SAAkB,EAAE,OAAgB,EAAE,YAAoB;QACrG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAElC,CAAC;IACD,OAAO;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;CACD;AAnBD,oBAmBC"}
@@ -0,0 +1,2 @@
1
+ import { Line } from "./Line";
2
+ export declare function parseLine(line: string, lastNodeBlock: boolean, lastLevel: number, numLine: number, validate?: boolean): Line;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseLine = parseLine;
4
+ const Constants_1 = require("./Constants");
5
+ const StringUtils_1 = require("./StringUtils");
6
+ const ParseException_1 = require("../exceptions/ParseException");
7
+ const Line_1 = require("./Line");
8
+ function parseLine(line, lastNodeBlock, lastLevel, numLine, validate = true) {
9
+ let level = 0;
10
+ let spaces = 0;
11
+ let pointer = 0;
12
+ let sawSpace = false;
13
+ let sawTab = false;
14
+ while (pointer < line.length) {
15
+ const c = line.charAt(pointer);
16
+ if (c === Constants_1.Constants.SPACE) {
17
+ sawSpace = true;
18
+ spaces++;
19
+ if (spaces === Constants_1.Constants.TAB_SPACES) {
20
+ level++;
21
+ spaces = 0;
22
+ }
23
+ }
24
+ else if (c === Constants_1.Constants.TAB) {
25
+ sawTab = true;
26
+ level++;
27
+ spaces = 0;
28
+ }
29
+ else if (c === Constants_1.Constants.COMMENT_CHAR) {
30
+ return new Line_1.Line(level, line.substring(pointer + 1), true, false, pointer);
31
+ }
32
+ else {
33
+ // Primer carácter no espacio/tab/comentario => fin de indentación
34
+ break;
35
+ }
36
+ // Dentro del bloque de texto
37
+ if (lastNodeBlock && level > lastLevel) {
38
+ const text = StringUtils_1.StringUtils.rightTrim(line.substring(pointer + 1));
39
+ // El prefijo que cubre el nivel de bloque debe ser homogéneo (spec 10.2, regla 2);
40
+ // las líneas vacías se preservan siempre y quedan exentas (spec 10.3)
41
+ if (validate && sawSpace && sawTab && text.length > 0) {
42
+ throw new ParseException_1.ParseException(numLine, "MIXED_INDENTATION", `Mixed tabs and spaces in indentation`);
43
+ }
44
+ return new Line_1.Line(level, text, false, true, pointer);
45
+ }
46
+ // Aumentamos pointer
47
+ pointer++;
48
+ }
49
+ // En este punto ya estamos fuera de bloque de texto (si existía)
50
+ // Empty
51
+ if (pointer === line.length) {
52
+ if (lastNodeBlock) {
53
+ return new Line_1.Line(level, "", false, true, pointer);
54
+ }
55
+ return new Line_1.Line(level, "", false, false, pointer);
56
+ }
57
+ // Mezcla de espacios y tabuladores en la indentación (spec 8.1 y 8.3)
58
+ if (validate && sawSpace && sawTab) {
59
+ throw new ParseException_1.ParseException(numLine, "MIXED_INDENTATION", `Mixed tabs and spaces in indentation`);
60
+ }
61
+ // Indentación no es múltiplo de 4 con espacios
62
+ if (validate && spaces > 0) {
63
+ throw new ParseException_1.ParseException(numLine, "INVALID_NUMBER_SPACES", `There are ${spaces} spaces before node`);
64
+ }
65
+ // Validamos level
66
+ if (validate && level > lastLevel + 1) {
67
+ throw new ParseException_1.ParseException(numLine, "INDENTATION_LEVEL_NOT_VALID", `Level of indent incorrect: ${level}`);
68
+ }
69
+ // Caso general: devolver la línea sin la indentación consumida
70
+ return new Line_1.Line(level, line.substring(pointer).trim(), false, false, pointer);
71
+ }
72
+ //# sourceMappingURL=LineParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineParser.js","sourceRoot":"","sources":["../../src/core/LineParser.ts"],"names":[],"mappings":";;AAKA,8BAsEC;AA3ED,2CAAwC;AACxC,+CAA4C;AAC5C,iEAA8D;AAC9D,iCAA8B;AAE9B,SAAgB,SAAS,CAAC,IAAY,EAAE,aAAsB,EAAE,SAAiB,EAAE,OAAe,EAAE,WAAoB,IAAI;IAC3H,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,OAAO,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,CAAC,KAAK,qBAAS,CAAC,KAAK,EAAE,CAAC;YAC3B,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,EAAE,CAAC;YACT,IAAI,MAAM,KAAK,qBAAS,CAAC,UAAU,EAAE,CAAC;gBACrC,KAAK,EAAE,CAAC;gBACR,MAAM,GAAG,CAAC,CAAC;YACZ,CAAC;QACF,CAAC;aAAM,IAAI,CAAC,KAAK,qBAAS,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,EAAE,CAAC;YACR,MAAM,GAAG,CAAC,CAAC;QACZ,CAAC;aAAM,IAAI,CAAC,KAAK,qBAAS,CAAC,YAAY,EAAE,CAAC;YACzC,OAAO,IAAI,WAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACP,kEAAkE;YAClE,MAAM;QACP,CAAC;QAED,6BAA6B;QAC7B,IAAI,aAAa,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,yBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YAChE,mFAAmF;YACnF,sEAAsE;YACtE,IAAI,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,+BAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,sCAAsC,CAAC,CAAC;YAChG,CAAC;YACD,OAAO,IAAI,WAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QAED,qBAAqB;QACrB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,iEAAiE;IAEjE,QAAQ;IACR,IAAI,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,WAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,WAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,sEAAsE;IACtE,IAAI,QAAQ,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,+BAAc,CAAC,OAAO,EAAE,mBAAmB,EAAE,sCAAsC,CAAC,CAAC;IAChG,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,+BAAc,CAAC,OAAO,EAAE,uBAAuB,EAAE,aAAa,MAAM,qBAAqB,CAAC,CAAC;IACtG,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,IAAI,KAAK,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,+BAAc,CAAC,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,+DAA+D;IAC/D,OAAO,IAAI,WAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare class NameNamespace {
2
+ private readonly name;
3
+ private readonly namespace;
4
+ constructor(name: string, namespace: string);
5
+ getName(): string;
6
+ getNamespace(): string;
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NameNamespace = void 0;
4
+ class NameNamespace {
5
+ constructor(name, namespace) {
6
+ this.name = name;
7
+ this.namespace = namespace;
8
+ }
9
+ getName() {
10
+ return this.name;
11
+ }
12
+ getNamespace() {
13
+ return this.namespace;
14
+ }
15
+ }
16
+ exports.NameNamespace = NameNamespace;
17
+ //# sourceMappingURL=NameNamespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NameNamespace.js","sourceRoot":"","sources":["../../src/core/NameNamespace.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAa;IAIxB,YAAY,IAAY,EAAE,SAAiB;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF;AAhBD,sCAgBC"}
@@ -0,0 +1,5 @@
1
+ import { NameNamespace } from "./NameNamespace";
2
+ export declare class NameNamespaceParser {
3
+ private constructor();
4
+ static parse(rawName: string | null | undefined, inheritedNs: string | null | undefined, lineNumber: number, fullLine: string): NameNamespace;
5
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NameNamespaceParser = void 0;
4
+ const ParseException_1 = require("../exceptions/ParseException");
5
+ const NameNamespace_1 = require("./NameNamespace");
6
+ class NameNamespaceParser {
7
+ constructor() {
8
+ }
9
+ static parse(rawName, inheritedNs, lineNumber, fullLine) {
10
+ if (rawName === null || rawName === undefined) {
11
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_LINE", `Line not valid: ${fullLine}`);
12
+ }
13
+ rawName = rawName.trim();
14
+ const startIndex = rawName.indexOf("(");
15
+ const endIndex = rawName.indexOf(")");
16
+ let name;
17
+ let namespace = inheritedNs ?? "";
18
+ // Encontrados los dos
19
+ if (startIndex !== -1 && endIndex !== -1) {
20
+ if (startIndex > endIndex || endIndex !== rawName.length - 1) {
21
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_NAMESPACE", `Line not valid: ${fullLine}`);
22
+ }
23
+ name = rawName.substring(0, startIndex).trim();
24
+ // Sin trim: la gramática (STXT-SPEC 7/16) no admite espacios dentro de '( )'
25
+ namespace = rawName.substring(startIndex + 1, endIndex);
26
+ if (namespace.length === 0) {
27
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_NAMESPACE", `Line not valid: ${fullLine}`);
28
+ }
29
+ }
30
+ // Ninguno de los dos
31
+ else if (startIndex === -1 && endIndex === -1) {
32
+ name = rawName;
33
+ }
34
+ // Solo uno de los dos
35
+ else {
36
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_NAMESPACE", `Line not valid: ${fullLine}`);
37
+ }
38
+ // Retorno
39
+ return new NameNamespace_1.NameNamespace(name, namespace.toLowerCase());
40
+ }
41
+ }
42
+ exports.NameNamespaceParser = NameNamespaceParser;
43
+ //# sourceMappingURL=NameNamespaceParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NameNamespaceParser.js","sourceRoot":"","sources":["../../src/core/NameNamespaceParser.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAC9D,mDAAgD;AAEhD,MAAa,mBAAmB;IAC/B;IACA,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAkC,EAAE,WAAsC,EAAE,UAAkB,EAAE,QAAgB;QAC5H,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,cAAc,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEzB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,IAAY,CAAC;QACjB,IAAI,SAAS,GAAW,WAAW,IAAI,EAAE,CAAC;QAE1C,sBAAsB;QACtB,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1C,IAAI,UAAU,GAAG,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/C,6EAA6E;YAC7E,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAExD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAC1F,CAAC;QACF,CAAC;QACD,qBAAqB;aAChB,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,OAAO,CAAC;QAChB,CAAC;QACD,sBAAsB;aACjB,CAAC;YACL,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAC,mBAAmB,EAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,UAAU;QACV,OAAO,IAAI,6BAAa,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;CACD;AA3CD,kDA2CC"}
@@ -0,0 +1,4 @@
1
+ export declare class NamespaceValidator {
2
+ private static readonly NAMESPACE_FORMAT;
3
+ static validateNamespaceFormat(namespace: string | null | undefined, lineNumber: number): void;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NamespaceValidator = void 0;
4
+ const ParseException_1 = require("../exceptions/ParseException");
5
+ class NamespaceValidator {
6
+ static validateNamespaceFormat(namespace, lineNumber) {
7
+ if (!namespace) {
8
+ return;
9
+ }
10
+ if (!NamespaceValidator.NAMESPACE_FORMAT.test(namespace)) {
11
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_NAMESPACE", `Namespace not valid: ${namespace}`);
12
+ }
13
+ }
14
+ }
15
+ exports.NamespaceValidator = NamespaceValidator;
16
+ NamespaceValidator.NAMESPACE_FORMAT = /^@?[a-z0-9]+(\.[a-z0-9]+)+$/;
17
+ //# sourceMappingURL=NamespaceValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NamespaceValidator.js","sourceRoot":"","sources":["../../src/core/NamespaceValidator.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAE9D,MAAa,kBAAkB;IAI9B,MAAM,CAAC,uBAAuB,CAAC,SAAoC,EAAE,UAAkB;QACtF,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO;QACR,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,SAAS,EAAE,CAAC,CAAC;QAChG,CAAC;IACF,CAAC;;AAZF,gDAaC;AAXwB,mCAAgB,GAAW,6BAA6B,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare class Node {
2
+ private static readonly VALID_NAME;
3
+ private readonly name;
4
+ private readonly normalizedName;
5
+ private readonly namespace;
6
+ private readonly textNode;
7
+ private readonly value;
8
+ private textLines;
9
+ private readonly line;
10
+ private readonly level;
11
+ private children;
12
+ constructor(line: number, level: number, name: string, namespace: string | null | undefined, textNode: boolean, value: string | null | undefined);
13
+ addTextLine(line: string): void;
14
+ getName(): string;
15
+ getNormalizedName(): string;
16
+ getQualifiedName(): string;
17
+ getNamespace(): string;
18
+ getChildren(): ReadonlyArray<Node>;
19
+ addChild(node: Node): void;
20
+ getValue(): string;
21
+ getTextLines(): ReadonlyArray<string>;
22
+ getLine(): number;
23
+ getLevel(): number;
24
+ isTextNode(): boolean;
25
+ getText(): string;
26
+ getChild(cname: string, namespace?: string): Node | null;
27
+ getChildrenByName(cname: string, namespace?: string): Node[];
28
+ toString(): string;
29
+ }
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Node = void 0;
4
+ const ParseException_1 = require("../exceptions/ParseException");
5
+ const RuntimeException_1 = require("../exceptions/RuntimeException");
6
+ const NamespaceValidator_1 = require("./NamespaceValidator");
7
+ const StringUtils_1 = require("./StringUtils");
8
+ class Node {
9
+ constructor(line, level, name, namespace, textNode, value) {
10
+ this.textLines = [];
11
+ this.children = [];
12
+ this.level = level;
13
+ this.line = line;
14
+ this.name = StringUtils_1.StringUtils.compactSpaces(name);
15
+ this.normalizedName = StringUtils_1.StringUtils.normalize(name);
16
+ this.namespace = StringUtils_1.StringUtils.lowerCase(namespace);
17
+ this.value = (value ?? "").trim();
18
+ this.textNode = textNode;
19
+ NamespaceValidator_1.NamespaceValidator.validateNamespaceFormat(this.namespace, line);
20
+ if (this.value.length > 0 && this.isTextNode()) {
21
+ throw new RuntimeException_1.RuntimeException("INLINE_VALUE_NOT_VALID", "Not empty value with textNode");
22
+ }
23
+ if (!Node.VALID_NAME.test(name)) {
24
+ throw new ParseException_1.ParseException(line, "INVALID_NODE_NAME", `Node name contains invalid characters: ${name}`);
25
+ }
26
+ if (this.normalizedName.length === 0) {
27
+ throw new ParseException_1.ParseException(line, "INVALID_NODE_NAME", `Node name not valid: ${name}`);
28
+ }
29
+ }
30
+ addTextLine(line) {
31
+ this.textLines.push(line);
32
+ }
33
+ getName() {
34
+ return this.name;
35
+ }
36
+ getNormalizedName() {
37
+ return this.normalizedName;
38
+ }
39
+ getQualifiedName() {
40
+ return this.namespace.length === 0
41
+ ? this.normalizedName
42
+ : `${this.namespace}:${this.normalizedName}`;
43
+ }
44
+ getNamespace() {
45
+ return this.namespace;
46
+ }
47
+ getChildren() {
48
+ return this.children;
49
+ }
50
+ addChild(node) {
51
+ this.children.push(node);
52
+ }
53
+ getValue() {
54
+ return this.value;
55
+ }
56
+ getTextLines() {
57
+ return this.textLines;
58
+ }
59
+ getLine() {
60
+ return this.line;
61
+ }
62
+ getLevel() {
63
+ return this.level;
64
+ }
65
+ isTextNode() {
66
+ return this.textNode;
67
+ }
68
+ getText() {
69
+ return this.isTextNode() ? this.textLines.join("\n") : this.value;
70
+ }
71
+ getChild(cname, namespace) {
72
+ const result = this.getChildrenByName(cname, namespace);
73
+ if (result.length > 1) {
74
+ throw new RuntimeException_1.RuntimeException("AMBIGUOUS_CHILD", "More than 1 child. Use getChildren");
75
+ }
76
+ if (result.length === 0) {
77
+ return null;
78
+ }
79
+ return result[0];
80
+ }
81
+ // Fast access methods to children
82
+ getChildrenByName(cname, namespace) {
83
+ const key = StringUtils_1.StringUtils.normalize(cname);
84
+ const targetNamespace = namespace !== undefined ? namespace : this.namespace;
85
+ const result = [];
86
+ for (const child of this.children) {
87
+ if (child.getNormalizedName() === key && child.getNamespace() === targetNamespace) {
88
+ result.push(child);
89
+ }
90
+ }
91
+ return result;
92
+ }
93
+ toString() {
94
+ let s = "Node{";
95
+ s += `line=${this.line}`;
96
+ s += `, level=${this.level}`;
97
+ s += `, name='${this.name}'`;
98
+ if (this.namespace.length > 0) {
99
+ s += `, ns='${this.namespace}'`;
100
+ }
101
+ s += `, text=${this.textNode}`;
102
+ if (!this.textNode && this.value.length > 0) {
103
+ s += `, value='${this.value}'`;
104
+ }
105
+ if (this.textNode) {
106
+ s += `, lines=${this.textLines.length}`;
107
+ }
108
+ s += `, children=${this.children.length}`;
109
+ s += "}";
110
+ return s;
111
+ }
112
+ }
113
+ exports.Node = Node;
114
+ // STXT-SPEC 4.2: letras y dígitos Unicode (categorías L y Nd) más '-', '_' y espacio
115
+ Node.VALID_NAME = /^[\p{L}\p{Nd}\-_ ]+$/u;
116
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/core/Node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Line } from "./Line";
2
+ import { Node } from "./Node";
3
+ export declare function createNode(lineIndent: Line, lineNumber: number, level: number, parent: Node | null): Node;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNode = createNode;
4
+ const NameNamespaceParser_1 = require("./NameNamespaceParser");
5
+ const Node_1 = require("./Node");
6
+ const ParseException_1 = require("../exceptions/ParseException");
7
+ const Constants_1 = require("./Constants");
8
+ function createNode(lineIndent, lineNumber, level, parent) {
9
+ const line = lineIndent.content;
10
+ let name;
11
+ let value;
12
+ let textNode = false;
13
+ const nodeIndex = line.indexOf(Constants_1.Constants.SEP_NODE);
14
+ const textIndex = line.indexOf(Constants_1.Constants.SEP_TEXT_NODE);
15
+ if (nodeIndex === -1 && textIndex === -1) {
16
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_LINE", `Line not valid: ${line}`);
17
+ }
18
+ else if (nodeIndex === -1 && textIndex !== -1) {
19
+ textNode = true;
20
+ }
21
+ else if (nodeIndex !== -1 && textIndex === -1) {
22
+ textNode = false;
23
+ }
24
+ else if (nodeIndex < textIndex) {
25
+ textNode = false;
26
+ }
27
+ else {
28
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_LINE", `Line not valid: ${line}`);
29
+ }
30
+ if (textNode) {
31
+ name = line.substring(0, textIndex);
32
+ value = line.substring(textIndex + Constants_1.Constants.SEP_TEXT_NODE.length);
33
+ }
34
+ else {
35
+ name = line.substring(0, nodeIndex);
36
+ value = line.substring(nodeIndex + Constants_1.Constants.SEP_NODE.length);
37
+ }
38
+ if (textNode && value.trim().length > 0) {
39
+ throw new ParseException_1.ParseException(lineNumber, "INLINE_VALUE_NOT_VALID", `Line not valid: ${line}`);
40
+ }
41
+ // Namespace por defecto: heredado del padre
42
+ const nameNamespace = NameNamespaceParser_1.NameNamespaceParser.parse(name, parent ? parent.getNamespace() : null, lineNumber, line);
43
+ name = nameNamespace.getName();
44
+ const namespace = nameNamespace.getNamespace();
45
+ // Validamos nombre
46
+ if (name.length === 0) {
47
+ throw new ParseException_1.ParseException(lineNumber, "INVALID_LINE", `Line not valid: ${line}`);
48
+ }
49
+ // Creamos nodo
50
+ return new Node_1.Node(lineNumber, level, name, namespace, textNode, value);
51
+ }
52
+ //# sourceMappingURL=NodeCreator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCreator.js","sourceRoot":"","sources":["../../src/core/NodeCreator.ts"],"names":[],"mappings":";;AAMA,gCAmDC;AAxDD,+DAA4D;AAC5D,iCAA8B;AAC9B,iEAA8D;AAC9D,2CAAwC;AAExC,SAAgB,UAAU,CAAC,UAAgB,EAAE,UAAkB,EAAE,KAAa,EAAE,MAAmB;IAC/F,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;IAEhC,IAAI,IAAY,CAAC;IACjB,IAAI,KAAa,CAAC;IAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAS,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAS,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,cAAc,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;SAAM,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9C,QAAQ,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9C,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,SAAS,GAAG,SAAS,EAAE,CAAC;QAC/B,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,cAAc,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACX,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACpC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,qBAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACJ,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACpC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,qBAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,wBAAwB,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,yCAAmB,CAAC,KAAK,CAC3C,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EACrC,UAAU,EACV,IAAI,CACP,CAAC;IACF,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;IAE/C,mBAAmB;IACnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,+BAAc,CAAC,UAAU,EAAE,cAAc,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,eAAe;IACf,OAAO,IAAI,WAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Node } from "./Node";
2
+ import { ParseException } from "../exceptions/ParseException";
3
+ export declare class ParseResult {
4
+ private readonly nodes;
5
+ private readonly errors;
6
+ constructor(nodes?: Node[], errors?: ParseException[]);
7
+ getNodes(): Node[];
8
+ getErrors(): ParseException[];
9
+ hasErrors(): boolean;
10
+ addError(error: ParseException): void;
11
+ addNode(node: Node): void;
12
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParseResult = void 0;
4
+ class ParseResult {
5
+ constructor(nodes = [], errors = []) {
6
+ this.nodes = nodes;
7
+ this.errors = errors;
8
+ }
9
+ getNodes() {
10
+ return this.nodes;
11
+ }
12
+ getErrors() {
13
+ return this.errors;
14
+ }
15
+ hasErrors() {
16
+ return this.errors.length > 0;
17
+ }
18
+ addError(error) {
19
+ this.errors.push(error);
20
+ }
21
+ addNode(node) {
22
+ this.nodes.push(node);
23
+ }
24
+ }
25
+ exports.ParseResult = ParseResult;
26
+ //# sourceMappingURL=ParseResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParseResult.js","sourceRoot":"","sources":["../../src/core/ParseResult.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IAIvB,YAAY,QAAgB,EAAE,EAAE,SAA2B,EAAE;QAC5D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,QAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEM,QAAQ,CAAC,KAAqB;QACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAEM,OAAO,CAAC,IAAU;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;CACD;AA5BD,kCA4BC"}
@@ -0,0 +1,16 @@
1
+ import { Node } from "./Node";
2
+ import { Observer } from "../processors/Observer";
3
+ import { Validator } from "../processors/Validator";
4
+ import { ParseResult } from "./ParseResult";
5
+ export declare class Parser {
6
+ private observers;
7
+ private validators;
8
+ registerObserver(observer: Observer): void;
9
+ registerValidator(validator: Validator): void;
10
+ parse(content: string): Node[];
11
+ parseResult(content: string): ParseResult;
12
+ private processLine;
13
+ private handleError;
14
+ private closeToLevel;
15
+ private removeUTF8BOM;
16
+ }