xml-tokenizer 0.0.30 → 0.0.32

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 (111) hide show
  1. package/dist/cjs/config.js +43 -1
  2. package/dist/cjs/config.js.map +1 -0
  3. package/dist/cjs/get-q-name.js +8 -1
  4. package/dist/cjs/get-q-name.js.map +1 -0
  5. package/dist/cjs/index.js +80 -1
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/selector/TokenSelectState.js +107 -1
  8. package/dist/cjs/selector/TokenSelectState.js.map +1 -0
  9. package/dist/cjs/selector/TokenSelectStateMachine.js +151 -1
  10. package/dist/cjs/selector/TokenSelectStateMachine.js.map +1 -0
  11. package/dist/cjs/selector/TokenSelector.js +140 -1
  12. package/dist/cjs/selector/TokenSelector.js.map +1 -0
  13. package/dist/cjs/selector/match-string.js +22 -1
  14. package/dist/cjs/selector/match-string.js.map +1 -0
  15. package/dist/cjs/selector/select.js +20 -1
  16. package/dist/cjs/selector/select.js.map +1 -0
  17. package/dist/cjs/token-to-xml.js +45 -1
  18. package/dist/cjs/token-to-xml.js.map +1 -0
  19. package/dist/cjs/tokenizer/XmlError.js +97 -1
  20. package/dist/cjs/tokenizer/XmlError.js.map +1 -0
  21. package/dist/cjs/tokenizer/XmlStream.js +479 -1
  22. package/dist/cjs/tokenizer/XmlStream.js.map +1 -0
  23. package/dist/cjs/tokenizer/ascii-constants.js +70 -1
  24. package/dist/cjs/tokenizer/ascii-constants.js.map +1 -0
  25. package/dist/cjs/tokenizer/tokenize.js +420 -1
  26. package/dist/cjs/tokenizer/tokenize.js.map +1 -0
  27. package/dist/cjs/tokenizer/utils.js +48 -1
  28. package/dist/cjs/tokenizer/utils.js.map +1 -0
  29. package/dist/cjs/tokens-to-xml.js +14 -1
  30. package/dist/cjs/tokens-to-xml.js.map +1 -0
  31. package/dist/cjs/xml-to-object.js +70 -1
  32. package/dist/cjs/xml-to-object.js.map +1 -0
  33. package/dist/cjs/xml-to-simplified-object.js +87 -1
  34. package/dist/cjs/xml-to-simplified-object.js.map +1 -0
  35. package/dist/esm/config.js +39 -1
  36. package/dist/esm/config.js.map +1 -0
  37. package/dist/esm/get-q-name.js +6 -1
  38. package/dist/esm/get-q-name.js.map +1 -0
  39. package/dist/esm/index.js +16 -1
  40. package/dist/esm/index.js.map +1 -0
  41. package/dist/esm/selector/TokenSelectState.js +103 -1
  42. package/dist/esm/selector/TokenSelectState.js.map +1 -0
  43. package/dist/esm/selector/TokenSelectStateMachine.js +149 -1
  44. package/dist/esm/selector/TokenSelectStateMachine.js.map +1 -0
  45. package/dist/esm/selector/TokenSelector.js +138 -1
  46. package/dist/esm/selector/TokenSelector.js.map +1 -0
  47. package/dist/esm/selector/match-string.js +20 -1
  48. package/dist/esm/selector/match-string.js.map +1 -0
  49. package/dist/esm/selector/select.js +18 -1
  50. package/dist/esm/selector/select.js.map +1 -0
  51. package/dist/esm/token-to-xml.js +43 -1
  52. package/dist/esm/token-to-xml.js.map +1 -0
  53. package/dist/esm/tokenizer/XmlError.js +95 -1
  54. package/dist/esm/tokenizer/XmlError.js.map +1 -0
  55. package/dist/esm/tokenizer/XmlStream.js +477 -1
  56. package/dist/esm/tokenizer/XmlStream.js.map +1 -0
  57. package/dist/esm/tokenizer/ascii-constants.js +36 -1
  58. package/dist/esm/tokenizer/ascii-constants.js.map +1 -0
  59. package/dist/esm/tokenizer/tokenize.js +417 -1
  60. package/dist/esm/tokenizer/tokenize.js.map +1 -0
  61. package/dist/esm/tokenizer/utils.js +41 -1
  62. package/dist/esm/tokenizer/utils.js.map +1 -0
  63. package/dist/esm/tokens-to-xml.js +12 -1
  64. package/dist/esm/tokens-to-xml.js.map +1 -0
  65. package/dist/esm/xml-to-object.js +67 -1
  66. package/dist/esm/xml-to-object.js.map +1 -0
  67. package/dist/esm/xml-to-simplified-object.js +84 -1
  68. package/dist/esm/xml-to-simplified-object.js.map +1 -0
  69. package/dist/types/config.d.ts +1 -0
  70. package/dist/types/config.d.ts.map +1 -0
  71. package/dist/types/get-q-name.d.ts +1 -0
  72. package/dist/types/get-q-name.d.ts.map +1 -0
  73. package/dist/types/index.d.ts +1 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/selector/TokenSelectState.d.ts +1 -0
  76. package/dist/types/selector/TokenSelectState.d.ts.map +1 -0
  77. package/dist/types/selector/TokenSelectStateMachine.d.ts +1 -0
  78. package/dist/types/selector/TokenSelectStateMachine.d.ts.map +1 -0
  79. package/dist/types/selector/TokenSelector.d.ts +1 -0
  80. package/dist/types/selector/TokenSelector.d.ts.map +1 -0
  81. package/dist/types/selector/index.d.ts +1 -0
  82. package/dist/types/selector/index.d.ts.map +1 -0
  83. package/dist/types/selector/match-string.d.ts +1 -0
  84. package/dist/types/selector/match-string.d.ts.map +1 -0
  85. package/dist/types/selector/select.d.ts +1 -0
  86. package/dist/types/selector/select.d.ts.map +1 -0
  87. package/dist/types/selector/types.d.ts +1 -0
  88. package/dist/types/selector/types.d.ts.map +1 -0
  89. package/dist/types/token-to-xml.d.ts +1 -0
  90. package/dist/types/token-to-xml.d.ts.map +1 -0
  91. package/dist/types/tokenizer/XmlError.d.ts +1 -0
  92. package/dist/types/tokenizer/XmlError.d.ts.map +1 -0
  93. package/dist/types/tokenizer/XmlStream.d.ts +1 -0
  94. package/dist/types/tokenizer/XmlStream.d.ts.map +1 -0
  95. package/dist/types/tokenizer/ascii-constants.d.ts +1 -0
  96. package/dist/types/tokenizer/ascii-constants.d.ts.map +1 -0
  97. package/dist/types/tokenizer/index.d.ts +1 -0
  98. package/dist/types/tokenizer/index.d.ts.map +1 -0
  99. package/dist/types/tokenizer/tokenize.d.ts +1 -0
  100. package/dist/types/tokenizer/tokenize.d.ts.map +1 -0
  101. package/dist/types/tokenizer/types.d.ts +1 -0
  102. package/dist/types/tokenizer/types.d.ts.map +1 -0
  103. package/dist/types/tokenizer/utils.d.ts +1 -0
  104. package/dist/types/tokenizer/utils.d.ts.map +1 -0
  105. package/dist/types/tokens-to-xml.d.ts +1 -0
  106. package/dist/types/tokens-to-xml.d.ts.map +1 -0
  107. package/dist/types/xml-to-object.d.ts +1 -0
  108. package/dist/types/xml-to-object.d.ts.map +1 -0
  109. package/dist/types/xml-to-simplified-object.d.ts +1 -0
  110. package/dist/types/xml-to-simplified-object.d.ts.map +1 -0
  111. package/package.json +6 -5
@@ -1 +1,43 @@
1
- "use strict";const t={strictDocument:!0,allowDtd:!0,rawTextElements:null,implicitSelfClosingElements:null,contextSliceSize:30},e={strictDocument:!1,allowDtd:!0,rawTextElements:["script","style","title","textarea"],implicitSelfClosingElements:["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"],contextSliceSize:30},l={strictDocument:!1,allowDtd:!0,rawTextElements:["style"],implicitSelfClosingElements:[],contextSliceSize:30};exports.htmlConfig=e,exports.svgConfig=l,exports.xmlConfig=t;
1
+ 'use strict';
2
+
3
+ const xmlConfig = {
4
+ strictDocument: true,
5
+ allowDtd: true,
6
+ rawTextElements: null,
7
+ implicitSelfClosingElements: null,
8
+ contextSliceSize: 30
9
+ };
10
+ const htmlConfig = {
11
+ strictDocument: false,
12
+ allowDtd: true,
13
+ rawTextElements: ["script", "style", "title", "textarea"],
14
+ implicitSelfClosingElements: [
15
+ "area",
16
+ "base",
17
+ "br",
18
+ "col",
19
+ "embed",
20
+ "hr",
21
+ "img",
22
+ "input",
23
+ "link",
24
+ "meta",
25
+ "param",
26
+ "source",
27
+ "track",
28
+ "wbr"
29
+ ],
30
+ contextSliceSize: 30
31
+ };
32
+ const svgConfig = {
33
+ strictDocument: false,
34
+ allowDtd: true,
35
+ rawTextElements: ["style"],
36
+ implicitSelfClosingElements: [],
37
+ contextSliceSize: 30
38
+ };
39
+
40
+ exports.htmlConfig = htmlConfig;
41
+ exports.svgConfig = svgConfig;
42
+ exports.xmlConfig = xmlConfig;
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sources":["../../src/config.ts"],"sourcesContent":["import { TXmlStreamOptions } from './tokenizer';\n\n/**\n * Default XML configuration with strict XML compliance.\n */\nexport const xmlConfig: TXmlStreamOptions = {\n\tstrictDocument: true,\n\tallowDtd: true,\n\trawTextElements: null,\n\timplicitSelfClosingElements: null,\n\tcontextSliceSize: 30\n};\n\n/**\n * HTML configuration with HTML-specific settings.\n * - Non-strict document structure\n * - Raw text elements like script and style\n * - Implicit self-closing elements (void elements in HTML)\n */\nexport const htmlConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['script', 'style', 'title', 'textarea'],\n\timplicitSelfClosingElements: [\n\t\t'area',\n\t\t'base',\n\t\t'br',\n\t\t'col',\n\t\t'embed',\n\t\t'hr',\n\t\t'img',\n\t\t'input',\n\t\t'link',\n\t\t'meta',\n\t\t'param',\n\t\t'source',\n\t\t'track',\n\t\t'wbr'\n\t],\n\tcontextSliceSize: 30\n};\n\n/**\n * SVG configuration with SVG-specific settings.\n */\nexport const svgConfig: TXmlStreamOptions = {\n\tstrictDocument: false,\n\tallowDtd: true,\n\trawTextElements: ['style'],\n\timplicitSelfClosingElements: [],\n\tcontextSliceSize: 30\n};\n"],"names":[],"mappings":";;AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,IAAI;AACtB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,IAAI;AACvB,EAAE,2BAA2B,EAAE,IAAI;AACnC,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,UAAU,GAAG;AAC1B,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC;AAC3D,EAAE,2BAA2B,EAAE;AAC/B,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,KAAK;AACT,IAAI,OAAO;AACX,IAAI,MAAM;AACV,IAAI,MAAM;AACV,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI;AACJ,GAAG;AACH,EAAE,gBAAgB,EAAE;AACpB;AACY,MAAC,SAAS,GAAG;AACzB,EAAE,cAAc,EAAE,KAAK;AACvB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,eAAe,EAAE,CAAC,OAAO,CAAC;AAC5B,EAAE,2BAA2B,EAAE,EAAE;AACjC,EAAE,gBAAgB,EAAE;AACpB;;;;;;"}
@@ -1 +1,8 @@
1
- "use strict";function l(t,e=null){return e!=null&&e.length>0?`${e}:${t}`:t}exports.getQName=l;
1
+ 'use strict';
2
+
3
+ function getQName(local, prefix = null) {
4
+ return prefix != null && prefix.length > 0 ? `${prefix}:${local}` : local;
5
+ }
6
+
7
+ exports.getQName = getQName;
8
+ //# sourceMappingURL=get-q-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-q-name.js","sources":["../../src/get-q-name.ts"],"sourcesContent":["/**\n * Constructs a qualified name (QName) from a local name and an optional namespace prefix.\n *\n * https://www.w3.org/2001/tag/doc/qnameids.html\n */\nexport function getQName(local: string, prefix: string | null = null): string {\n\treturn prefix != null && prefix.length > 0 ? `${prefix}:${local}` : local;\n}\n"],"names":[],"mappings":";;AACO,SAAS,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE;AAC/C,EAAE,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK;AAC3E;;;;"}
package/dist/cjs/index.js CHANGED
@@ -1 +1,80 @@
1
- "use strict";var r=require("./config.js"),A=require("./get-q-name.js"),R=require("./selector/select.js"),T=require("./selector/TokenSelector.js"),S=require("./selector/TokenSelectState.js"),m=require("./selector/TokenSelectStateMachine.js"),a=require("./token-to-xml.js"),e=require("./tokenizer/ascii-constants.js"),t=require("./tokenizer/tokenize.js"),E=require("./tokenizer/utils.js"),l=require("./tokenizer/XmlError.js"),C=require("./tokenizer/XmlStream.js"),O=require("./tokens-to-xml.js"),i=require("./xml-to-object.js"),o=require("./xml-to-simplified-object.js");exports.htmlConfig=r.htmlConfig,exports.svgConfig=r.svgConfig,exports.xmlConfig=r.xmlConfig,exports.getQName=A.getQName,exports.select=R.select,exports.TokenSelector=T.TokenSelector,exports.EToCacheNodeProps=S.EToCacheNodeProps,exports.ETokenMatchCriteria=S.ETokenMatchCriteria,exports.TokenSelectState=S.TokenSelectState,exports.TokenSelectStateMachine=m.TokenSelectStateMachine,exports.tokenToXml=a.tokenToXml,exports.AMPERSAND=e.AMPERSAND,exports.CARRIAGE_RETURN=e.CARRIAGE_RETURN,exports.CLOSE_SQUARE_BRACKET=e.CLOSE_SQUARE_BRACKET,exports.COLON=e.COLON,exports.DOUBLE_QUOTE=e.DOUBLE_QUOTE,exports.EQUALS=e.EQUALS,exports.EXCLAMATION_MARK=e.EXCLAMATION_MARK,exports.GREATER_THAN=e.GREATER_THAN,exports.HASH=e.HASH,exports.HORIZONTAL_TAB=e.HORIZONTAL_TAB,exports.HYPHEN=e.HYPHEN,exports.LESS_THAN=e.LESS_THAN,exports.LINE_FEED=e.LINE_FEED,exports.LOWERCASE_A=e.LOWERCASE_A,exports.LOWERCASE_F=e.LOWERCASE_F,exports.LOWERCASE_X=e.LOWERCASE_X,exports.LOWERCASE_Z=e.LOWERCASE_Z,exports.NINE=e.NINE,exports.OPEN_SQUARE_BRACKET=e.OPEN_SQUARE_BRACKET,exports.PERCENT=e.PERCENT,exports.PERIOD=e.PERIOD,exports.QUESTION_MARK=e.QUESTION_MARK,exports.SEMICOLON=e.SEMICOLON,exports.SINGLE_QUOTE=e.SINGLE_QUOTE,exports.SLASH=e.SLASH,exports.SPACE=e.SPACE,exports.UNDERSCORE=e.UNDERSCORE,exports.UPPERCASE_A=e.UPPERCASE_A,exports.UPPERCASE_F=e.UPPERCASE_F,exports.UPPERCASE_P=e.UPPERCASE_P,exports.UPPERCASE_S=e.UPPERCASE_S,exports.UPPERCASE_Z=e.UPPERCASE_Z,exports.ZERO=e.ZERO,exports.tokenize=t.tokenize,exports.tokenizeXmlStream=t.tokenizeXmlStream,exports.isAsciiDigit=E.isAsciiDigit,exports.isXmlChar=E.isXmlChar,exports.isXmlName=E.isXmlName,exports.isXmlNameByte=E.isXmlNameByte,exports.isXmlNameStart=E.isXmlNameStart,exports.isXmlSpaceByte=E.isXmlSpaceByte,exports.XmlError=l.XmlError,exports.XmlStream=C.XmlStream,exports.tokensToXml=O.tokensToXml,exports.processTokenForObject=i.processTokenForObject,exports.xmlToObject=i.xmlToObject,exports.processTokenForSimplifiedObject=o.processTokenForSimplifiedObject,exports.xmlToSimplifiedObject=o.xmlToSimplifiedObject;
1
+ 'use strict';
2
+
3
+ var config = require('./config.js');
4
+ var getQName = require('./get-q-name.js');
5
+ var select = require('./selector/select.js');
6
+ var TokenSelector = require('./selector/TokenSelector.js');
7
+ var TokenSelectState = require('./selector/TokenSelectState.js');
8
+ var TokenSelectStateMachine = require('./selector/TokenSelectStateMachine.js');
9
+ var tokenToXml = require('./token-to-xml.js');
10
+ var asciiConstants = require('./tokenizer/ascii-constants.js');
11
+ var tokenize = require('./tokenizer/tokenize.js');
12
+ var utils = require('./tokenizer/utils.js');
13
+ var XmlError = require('./tokenizer/XmlError.js');
14
+ var XmlStream = require('./tokenizer/XmlStream.js');
15
+ var tokensToXml = require('./tokens-to-xml.js');
16
+ var xmlToObject = require('./xml-to-object.js');
17
+ var xmlToSimplifiedObject = require('./xml-to-simplified-object.js');
18
+
19
+
20
+
21
+ exports.htmlConfig = config.htmlConfig;
22
+ exports.svgConfig = config.svgConfig;
23
+ exports.xmlConfig = config.xmlConfig;
24
+ exports.getQName = getQName.getQName;
25
+ exports.select = select.select;
26
+ exports.TokenSelector = TokenSelector.TokenSelector;
27
+ exports.EToCacheNodeProps = TokenSelectState.EToCacheNodeProps;
28
+ exports.ETokenMatchCriteria = TokenSelectState.ETokenMatchCriteria;
29
+ exports.TokenSelectState = TokenSelectState.TokenSelectState;
30
+ exports.TokenSelectStateMachine = TokenSelectStateMachine.TokenSelectStateMachine;
31
+ exports.tokenToXml = tokenToXml.tokenToXml;
32
+ exports.AMPERSAND = asciiConstants.AMPERSAND;
33
+ exports.CARRIAGE_RETURN = asciiConstants.CARRIAGE_RETURN;
34
+ exports.CLOSE_SQUARE_BRACKET = asciiConstants.CLOSE_SQUARE_BRACKET;
35
+ exports.COLON = asciiConstants.COLON;
36
+ exports.DOUBLE_QUOTE = asciiConstants.DOUBLE_QUOTE;
37
+ exports.EQUALS = asciiConstants.EQUALS;
38
+ exports.EXCLAMATION_MARK = asciiConstants.EXCLAMATION_MARK;
39
+ exports.GREATER_THAN = asciiConstants.GREATER_THAN;
40
+ exports.HASH = asciiConstants.HASH;
41
+ exports.HORIZONTAL_TAB = asciiConstants.HORIZONTAL_TAB;
42
+ exports.HYPHEN = asciiConstants.HYPHEN;
43
+ exports.LESS_THAN = asciiConstants.LESS_THAN;
44
+ exports.LINE_FEED = asciiConstants.LINE_FEED;
45
+ exports.LOWERCASE_A = asciiConstants.LOWERCASE_A;
46
+ exports.LOWERCASE_F = asciiConstants.LOWERCASE_F;
47
+ exports.LOWERCASE_X = asciiConstants.LOWERCASE_X;
48
+ exports.LOWERCASE_Z = asciiConstants.LOWERCASE_Z;
49
+ exports.NINE = asciiConstants.NINE;
50
+ exports.OPEN_SQUARE_BRACKET = asciiConstants.OPEN_SQUARE_BRACKET;
51
+ exports.PERCENT = asciiConstants.PERCENT;
52
+ exports.PERIOD = asciiConstants.PERIOD;
53
+ exports.QUESTION_MARK = asciiConstants.QUESTION_MARK;
54
+ exports.SEMICOLON = asciiConstants.SEMICOLON;
55
+ exports.SINGLE_QUOTE = asciiConstants.SINGLE_QUOTE;
56
+ exports.SLASH = asciiConstants.SLASH;
57
+ exports.SPACE = asciiConstants.SPACE;
58
+ exports.UNDERSCORE = asciiConstants.UNDERSCORE;
59
+ exports.UPPERCASE_A = asciiConstants.UPPERCASE_A;
60
+ exports.UPPERCASE_F = asciiConstants.UPPERCASE_F;
61
+ exports.UPPERCASE_P = asciiConstants.UPPERCASE_P;
62
+ exports.UPPERCASE_S = asciiConstants.UPPERCASE_S;
63
+ exports.UPPERCASE_Z = asciiConstants.UPPERCASE_Z;
64
+ exports.ZERO = asciiConstants.ZERO;
65
+ exports.tokenize = tokenize.tokenize;
66
+ exports.tokenizeXmlStream = tokenize.tokenizeXmlStream;
67
+ exports.isAsciiDigit = utils.isAsciiDigit;
68
+ exports.isXmlChar = utils.isXmlChar;
69
+ exports.isXmlName = utils.isXmlName;
70
+ exports.isXmlNameByte = utils.isXmlNameByte;
71
+ exports.isXmlNameStart = utils.isXmlNameStart;
72
+ exports.isXmlSpaceByte = utils.isXmlSpaceByte;
73
+ exports.XmlError = XmlError.XmlError;
74
+ exports.XmlStream = XmlStream.XmlStream;
75
+ exports.tokensToXml = tokensToXml.tokensToXml;
76
+ exports.processTokenForObject = xmlToObject.processTokenForObject;
77
+ exports.xmlToObject = xmlToObject.xmlToObject;
78
+ exports.processTokenForSimplifiedObject = xmlToSimplifiedObject.processTokenForSimplifiedObject;
79
+ exports.xmlToSimplifiedObject = xmlToSimplifiedObject.xmlToSimplifiedObject;
80
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1,107 @@
1
- "use strict";var s=require("./match-string.js"),m=Object.defineProperty,g=(e,t,r)=>t in e?m(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,a=(e,t,r)=>g(e,typeof t!="symbol"?t+"":t,r);class p{constructor(t){a(this,"_segment"),a(this,"_matchCriteria",0),a(this,"_toCacheNodeProps",0),a(this,"_enteredDepth",null),this._segment=t,this.applyLevels()}get matchCriteria(){return this._matchCriteria}get toCacheNodeProps(){return this._toCacheNodeProps}get enteredDepth(){return this._enteredDepth}applyLevels(){let t=0,r=0;(this._segment.local!=null||this._segment.prefix!=null)&&(t|=1),this._segment.attributes!=null&&(t|=2,r|=2),this._segment.text!=null&&(t|=4),this._matchCriteria=t,this._toCacheNodeProps=r}matchesName(t,r){return(this._segment.local==null||s.matchString(t,this._segment.local))&&(this._segment.prefix==null||s.matchString(r,this._segment.prefix))}matchesAttributes(t){if(this._segment.attributes==null)return!0;for(const r of this._segment.attributes){let n=!1;for(const i of t){const u=r.local==null||s.matchString(i.local,r.local),o=r.value==null||i.value!=null&&s.matchString(i.value,r.value),c=r.prefix==null||i.prefix!=null&&s.matchString(i.prefix,r.prefix);if(u&&o&&c){n=!0;break}}if(!n)return!1}return!0}matchesText(t){return this._segment.text==null||s.matchString(t,this._segment.text)}matchesDepth(t,r){switch(this._segment.axis){case"child":return t===r+1;case"self-or-descendant":return t>=r}}match(t){this._enteredDepth=t}unmatch(){this._enteredDepth=null}}var h=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e))(h||{}),l=(e=>(e[e.None=0]="None",e[e.Name=1]="Name",e[e.Attributes=2]="Attributes",e[e.Text=4]="Text",e[e.Node=8]="Node",e))(l||{});exports.EToCacheNodeProps=h,exports.ETokenMatchCriteria=l,exports.TokenSelectState=p;
1
+ 'use strict';
2
+
3
+ var matchString = require('./match-string.js');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ class TokenSelectState {
9
+ constructor(segment) {
10
+ __publicField(this, "_segment");
11
+ __publicField(this, "_matchCriteria", 0 /* None */);
12
+ __publicField(this, "_toCacheNodeProps", 0 /* None */);
13
+ __publicField(this, "_enteredDepth", null);
14
+ this._segment = segment;
15
+ this.applyLevels();
16
+ }
17
+ get matchCriteria() {
18
+ return this._matchCriteria;
19
+ }
20
+ get toCacheNodeProps() {
21
+ return this._toCacheNodeProps;
22
+ }
23
+ get enteredDepth() {
24
+ return this._enteredDepth;
25
+ }
26
+ applyLevels() {
27
+ let matchCriteria = 0 /* None */;
28
+ let cacheProps = 0 /* None */;
29
+ if (this._segment.local != null || this._segment.prefix != null) {
30
+ matchCriteria |= 1 /* Name */;
31
+ }
32
+ if (this._segment.attributes != null) {
33
+ matchCriteria |= 2 /* Attributes */;
34
+ cacheProps |= 2 /* Attributes */;
35
+ }
36
+ if (this._segment.text != null) {
37
+ matchCriteria |= 4 /* Text */;
38
+ }
39
+ this._matchCriteria = matchCriteria;
40
+ this._toCacheNodeProps = cacheProps;
41
+ }
42
+ matchesName(local, prefix) {
43
+ return (
44
+ // Match local
45
+ (this._segment.local == null || matchString.matchString(local, this._segment.local)) && // Match prefix
46
+ (this._segment.prefix == null || matchString.matchString(prefix, this._segment.prefix))
47
+ );
48
+ }
49
+ matchesAttributes(attributes) {
50
+ if (this._segment.attributes == null) {
51
+ return true;
52
+ }
53
+ for (const attributeConfig of this._segment.attributes) {
54
+ let matchFound = false;
55
+ for (const attribute of attributes) {
56
+ const localMatch = attributeConfig.local == null || matchString.matchString(attribute.local, attributeConfig.local);
57
+ const valueMatch = attributeConfig.value == null || attribute.value != null && matchString.matchString(attribute.value, attributeConfig.value);
58
+ const prefixMatch = attributeConfig.prefix == null || attribute.prefix != null && matchString.matchString(attribute.prefix, attributeConfig.prefix);
59
+ if (localMatch && valueMatch && prefixMatch) {
60
+ matchFound = true;
61
+ break;
62
+ }
63
+ }
64
+ if (!matchFound) {
65
+ return false;
66
+ }
67
+ }
68
+ return true;
69
+ }
70
+ matchesText(text) {
71
+ return this._segment.text == null || matchString.matchString(text, this._segment.text);
72
+ }
73
+ matchesDepth(depth, parentDepth) {
74
+ switch (this._segment.axis) {
75
+ case "child":
76
+ return depth === parentDepth + 1;
77
+ case "self-or-descendant":
78
+ return depth >= parentDepth;
79
+ }
80
+ }
81
+ match(depth) {
82
+ this._enteredDepth = depth;
83
+ }
84
+ unmatch() {
85
+ this._enteredDepth = null;
86
+ }
87
+ }
88
+ var EToCacheNodeProps = /* @__PURE__ */ ((EToCacheNodeProps2) => {
89
+ EToCacheNodeProps2[EToCacheNodeProps2["None"] = 0] = "None";
90
+ EToCacheNodeProps2[EToCacheNodeProps2["Name"] = 1] = "Name";
91
+ EToCacheNodeProps2[EToCacheNodeProps2["Attributes"] = 2] = "Attributes";
92
+ EToCacheNodeProps2[EToCacheNodeProps2["Text"] = 4] = "Text";
93
+ return EToCacheNodeProps2;
94
+ })(EToCacheNodeProps || {});
95
+ var ETokenMatchCriteria = /* @__PURE__ */ ((ETokenMatchCriteria2) => {
96
+ ETokenMatchCriteria2[ETokenMatchCriteria2["None"] = 0] = "None";
97
+ ETokenMatchCriteria2[ETokenMatchCriteria2["Name"] = 1] = "Name";
98
+ ETokenMatchCriteria2[ETokenMatchCriteria2["Attributes"] = 2] = "Attributes";
99
+ ETokenMatchCriteria2[ETokenMatchCriteria2["Text"] = 4] = "Text";
100
+ ETokenMatchCriteria2[ETokenMatchCriteria2["Node"] = 8] = "Node";
101
+ return ETokenMatchCriteria2;
102
+ })(ETokenMatchCriteria || {});
103
+
104
+ exports.EToCacheNodeProps = EToCacheNodeProps;
105
+ exports.ETokenMatchCriteria = ETokenMatchCriteria;
106
+ exports.TokenSelectState = TokenSelectState;
107
+ //# sourceMappingURL=TokenSelectState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelectState.js","sources":["../../../src/selector/TokenSelectState.ts"],"sourcesContent":["import { matchString } from './match-string';\nimport { type TCachedAttribute } from './TokenSelectStateMachine';\nimport { type TTokenSelectPathSegment } from './types';\n\nexport class TokenSelectState {\n\tprivate _segment: TTokenSelectPathSegment;\n\tprivate _matchCriteria: ETokenMatchCriteria = ETokenMatchCriteria.None;\n\tprivate _toCacheNodeProps: EToCacheNodeProps = EToCacheNodeProps.None;\n\tprivate _enteredDepth: number | null = null;\n\n\tconstructor(segment: TTokenSelectPathSegment) {\n\t\tthis._segment = segment;\n\t\tthis.applyLevels();\n\t}\n\n\tpublic get matchCriteria(): ETokenMatchCriteria {\n\t\treturn this._matchCriteria;\n\t}\n\n\tpublic get toCacheNodeProps(): EToCacheNodeProps {\n\t\treturn this._toCacheNodeProps;\n\t}\n\n\tpublic get enteredDepth(): number | null {\n\t\treturn this._enteredDepth;\n\t}\n\n\tprivate applyLevels(): void {\n\t\tlet matchCriteria = ETokenMatchCriteria.None;\n\t\tlet cacheProps = EToCacheNodeProps.None;\n\n\t\tif (this._segment.local != null || this._segment.prefix != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Name;\n\t\t}\n\t\tif (this._segment.attributes != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Attributes;\n\t\t\tcacheProps |= EToCacheNodeProps.Attributes;\n\t\t}\n\t\tif (this._segment.text != null) {\n\t\t\tmatchCriteria |= ETokenMatchCriteria.Text;\n\t\t}\n\t\t// if (this._segment.predicate != null) {\n\t\t// \tmatchCriteria |= ETokenMatchCriteria.Node;\n\t\t// \tcacheProps |= EToCacheNodeProps.Name | EToCacheNodeProps.Attributes | EToCacheNodeProps.Text;\n\t\t// }\n\n\t\tthis._matchCriteria = matchCriteria;\n\t\tthis._toCacheNodeProps = cacheProps;\n\t}\n\n\tpublic matchesName(local: string, prefix: string): boolean {\n\t\treturn (\n\t\t\t// Match local\n\t\t\t(this._segment.local == null || matchString(local, this._segment.local)) &&\n\t\t\t// Match prefix\n\t\t\t(this._segment.prefix == null || matchString(prefix, this._segment.prefix))\n\t\t);\n\t}\n\n\tpublic matchesAttributes(attributes: TCachedAttribute[]): boolean {\n\t\tif (this._segment.attributes == null) {\n\t\t\treturn true;\n\t\t}\n\n\t\tfor (const attributeConfig of this._segment.attributes) {\n\t\t\tlet matchFound = false;\n\n\t\t\tfor (const attribute of attributes) {\n\t\t\t\tconst localMatch =\n\t\t\t\t\tattributeConfig.local == null || matchString(attribute.local, attributeConfig.local);\n\t\t\t\tconst valueMatch =\n\t\t\t\t\tattributeConfig.value == null ||\n\t\t\t\t\t(attribute.value != null && matchString(attribute.value, attributeConfig.value));\n\t\t\t\tconst prefixMatch =\n\t\t\t\t\tattributeConfig.prefix == null ||\n\t\t\t\t\t(attribute.prefix != null && matchString(attribute.prefix, attributeConfig.prefix));\n\n\t\t\t\tif (localMatch && valueMatch && prefixMatch) {\n\t\t\t\t\tmatchFound = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!matchFound) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic matchesText(text: string): boolean {\n\t\treturn this._segment.text == null || matchString(text, this._segment.text);\n\t}\n\n\tpublic matchesDepth(depth: number, parentDepth: number): boolean {\n\t\tswitch (this._segment.axis) {\n\t\t\tcase 'child':\n\t\t\t\treturn depth === parentDepth + 1;\n\t\t\tcase 'self-or-descendant':\n\t\t\t\treturn depth >= parentDepth;\n\t\t}\n\t}\n\n\tpublic match(depth: number): void {\n\t\tthis._enteredDepth = depth;\n\t}\n\n\tpublic unmatch(): void {\n\t\tthis._enteredDepth = null;\n\t}\n}\n\nexport const enum EToCacheNodeProps {\n\tNone = 0, // Cache none\n\tName = 1 << 0, // Cache local and prefix <prefix:local\n\tAttributes = 1 << 1, // Cache attributes <prefix:local attribute=\"x\"\n\tText = 1 << 2 // Cache text content <prefix:local attribute=\"x\">text\n}\n\nexport const enum ETokenMatchCriteria {\n\tNone = 0, // Match none\n\tName = 1 << 0, // Match local and prefix <prefix:local\n\tAttributes = 1 << 1, // Match attributes <prefix:local attribute=\"x\"\n\tText = 1 << 2, // Match text content <prefix:local attribute=\"x\">text\n\tNode = 1 << 3 // Match node\n}\n"],"names":["matchString"],"mappings":"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"}
@@ -1 +1,151 @@
1
- "use strict";var n=require("./TokenSelectState.js"),d=Object.defineProperty,_=(i,t,e)=>t in i?d(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,c=(i,t,e)=>_(i,typeof t!="symbol"?t+"":t,e);class S{constructor(t){c(this,"_states"),c(this,"_currentState",null),c(this,"_cachedNodeProps",{prefix:null,local:null,attributes:null,text:null}),c(this,"_cachedTokens",[]),c(this,"_toRecordTokens",[]),this._states=t.map(e=>new n.TokenSelectState(e))}getNextState(){var t;const e=this._currentState!=null?this._currentState+1:0;return e<this._states.length&&(t=this._states[e])!=null?t:null}getCurrentState(){var t;return this._currentState!=null&&this._currentState<this._states.length&&(t=this._states[this._currentState])!=null?t:null}record(t){this.getOffsetToFinal()<=1&&this._cachedTokens.push(t)}takeRecordedTokens(){if(this._toRecordTokens.length>0){const t=this._toRecordTokens;return this._toRecordTokens=[],t}return null}transitionIfNameMatch(t,e,r){var s;const a=this.getNextState(),h=this.getCurrentState();return a==null?!1:(a.toCacheNodeProps&n.EToCacheNodeProps.Name&&(this._cachedNodeProps.local=t,this._cachedNodeProps.prefix=e),a.matchesName(t,e)&&a.matchesDepth(r,(s=h==null?void 0:h.enteredDepth)!=null?s:0)&&!(a.matchCriteria&(n.ETokenMatchCriteria.Attributes|n.ETokenMatchCriteria.Text|n.ETokenMatchCriteria.Node))?(this.transitionForward(r),!0):!1)}transitionIfAttributesMatch(t,e,r,s){var a,h;const o=this.getNextState(),u=this.getCurrentState();if(o==null)return!1;const l=(a=this._cachedNodeProps.attributes)!=null?a:[];return l.push({local:t,prefix:e,value:r}),o.toCacheNodeProps&n.EToCacheNodeProps.Attributes&&(this._cachedNodeProps.attributes=l),o.matchesAttributes(l)&&o.matchesDepth(s,(h=u==null?void 0:u.enteredDepth)!=null?h:0)&&!(o.matchCriteria&(n.ETokenMatchCriteria.Text|n.ETokenMatchCriteria.Node))?(this.transitionForward(s),!0):!1}transitionIfTextMatch(t,e){var r;const s=this.getNextState(),a=this.getCurrentState();return s==null?!1:(s.toCacheNodeProps&n.EToCacheNodeProps.Text&&(this._cachedNodeProps.text=t),s.matchesText(t)&&s.matchesDepth(e,(r=a==null?void 0:a.enteredDepth)!=null?r:0)&&!(s.matchCriteria&n.ETokenMatchCriteria.Node)?(this.transitionForward(e),!0):!1)}transitionForward(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState+1:0;const r=this.getCurrentState();r!=null&&r.match(t),this.isFinalState()&&(this._toRecordTokens=this._cachedTokens),this.resetCurrentStateCache()}transitionBack(t){const e=this.getCurrentState();e!=null&&e.unmatch(),this._currentState=this._currentState!=null?this._currentState-1:0;const r=this.getCurrentState();r!=null&&r.match(t),this.resetCurrentStateCache()}isFinalState(){return this._currentState!=null&&this._currentState>=this._states.length-1}getOffsetToFinal(){return this._currentState==null?this._states.length:this._states.length-1-this._currentState}resetCurrentStateCache(){this._cachedNodeProps.prefix=null,this._cachedNodeProps.local=null,this._cachedNodeProps.attributes=null,this._cachedNodeProps.text=null,this._cachedTokens=[]}}exports.TokenSelectStateMachine=S;
1
+ 'use strict';
2
+
3
+ var TokenSelectState = require('./TokenSelectState.js');
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ class TokenSelectStateMachine {
9
+ constructor(tokenSelectPath) {
10
+ __publicField(this, "_states");
11
+ // null (start state) -> index (x state)
12
+ __publicField(this, "_currentState", null);
13
+ // Current state cache
14
+ __publicField(this, "_cachedNodeProps", {
15
+ prefix: null,
16
+ local: null,
17
+ attributes: null,
18
+ text: null
19
+ });
20
+ __publicField(this, "_cachedTokens", []);
21
+ __publicField(this, "_toRecordTokens", []);
22
+ this._states = tokenSelectPath.map((part) => new TokenSelectState.TokenSelectState(part));
23
+ }
24
+ getNextState() {
25
+ var _a;
26
+ const nextIndex = this._currentState != null ? this._currentState + 1 : 0;
27
+ if (nextIndex < this._states.length) {
28
+ return (_a = this._states[nextIndex]) != null ? _a : null;
29
+ }
30
+ return null;
31
+ }
32
+ getCurrentState() {
33
+ var _a;
34
+ if (this._currentState != null && this._currentState < this._states.length) {
35
+ return (_a = this._states[this._currentState]) != null ? _a : null;
36
+ }
37
+ return null;
38
+ }
39
+ record(token) {
40
+ if (this.getOffsetToFinal() <= 1) {
41
+ this._cachedTokens.push(token);
42
+ }
43
+ }
44
+ takeRecordedTokens() {
45
+ if (this._toRecordTokens.length > 0) {
46
+ const recordedTokens = this._toRecordTokens;
47
+ this._toRecordTokens = [];
48
+ return recordedTokens;
49
+ }
50
+ return null;
51
+ }
52
+ transitionIfNameMatch(local, prefix, depth) {
53
+ var _a;
54
+ const nextState = this.getNextState();
55
+ const currentState = this.getCurrentState();
56
+ if (nextState == null) {
57
+ return false;
58
+ }
59
+ if (nextState.toCacheNodeProps & TokenSelectState.EToCacheNodeProps.Name) {
60
+ this._cachedNodeProps.local = local;
61
+ this._cachedNodeProps.prefix = prefix;
62
+ }
63
+ if (nextState.matchesName(local, prefix) && nextState.matchesDepth(depth, (_a = currentState == null ? void 0 : currentState.enteredDepth) != null ? _a : 0) && !(nextState.matchCriteria & (TokenSelectState.ETokenMatchCriteria.Attributes | TokenSelectState.ETokenMatchCriteria.Text | TokenSelectState.ETokenMatchCriteria.Node))) {
64
+ this.transitionForward(depth);
65
+ return true;
66
+ }
67
+ return false;
68
+ }
69
+ // Transition forward if attributes and depth match, and no additional criteria are required
70
+ transitionIfAttributesMatch(local, prefix, value, depth) {
71
+ var _a, _b;
72
+ const nextState = this.getNextState();
73
+ const currentState = this.getCurrentState();
74
+ if (nextState == null) {
75
+ return false;
76
+ }
77
+ const attributes = (_a = this._cachedNodeProps.attributes) != null ? _a : [];
78
+ attributes.push({ local, prefix, value });
79
+ if (nextState.toCacheNodeProps & TokenSelectState.EToCacheNodeProps.Attributes) {
80
+ this._cachedNodeProps.attributes = attributes;
81
+ }
82
+ if (nextState.matchesAttributes(attributes) && nextState.matchesDepth(depth, (_b = currentState == null ? void 0 : currentState.enteredDepth) != null ? _b : 0) && !(nextState.matchCriteria & (TokenSelectState.ETokenMatchCriteria.Text | TokenSelectState.ETokenMatchCriteria.Node))) {
83
+ this.transitionForward(depth);
84
+ return true;
85
+ }
86
+ return false;
87
+ }
88
+ // Transition forward if text content and depth match, and no additional criteria are required
89
+ transitionIfTextMatch(text, depth) {
90
+ var _a;
91
+ const nextState = this.getNextState();
92
+ const currentState = this.getCurrentState();
93
+ if (nextState == null) {
94
+ return false;
95
+ }
96
+ if (nextState.toCacheNodeProps & TokenSelectState.EToCacheNodeProps.Text) {
97
+ this._cachedNodeProps.text = text;
98
+ }
99
+ if (nextState.matchesText(text) && nextState.matchesDepth(depth, (_a = currentState == null ? void 0 : currentState.enteredDepth) != null ? _a : 0) && !(nextState.matchCriteria & TokenSelectState.ETokenMatchCriteria.Node)) {
100
+ this.transitionForward(depth);
101
+ return true;
102
+ }
103
+ return false;
104
+ }
105
+ transitionForward(depth) {
106
+ const previousState = this.getCurrentState();
107
+ if (previousState != null) {
108
+ previousState.unmatch();
109
+ }
110
+ this._currentState = this._currentState != null ? this._currentState + 1 : 0;
111
+ const currentState = this.getCurrentState();
112
+ if (currentState != null) {
113
+ currentState.match(depth);
114
+ }
115
+ if (this.isFinalState()) {
116
+ this._toRecordTokens = this._cachedTokens;
117
+ }
118
+ this.resetCurrentStateCache();
119
+ }
120
+ transitionBack(depth) {
121
+ const previousState = this.getCurrentState();
122
+ if (previousState != null) {
123
+ previousState.unmatch();
124
+ }
125
+ this._currentState = this._currentState != null ? this._currentState - 1 : 0;
126
+ const currentState = this.getCurrentState();
127
+ if (currentState != null) {
128
+ currentState.match(depth);
129
+ }
130
+ this.resetCurrentStateCache();
131
+ }
132
+ isFinalState() {
133
+ return this._currentState != null && this._currentState >= this._states.length - 1;
134
+ }
135
+ getOffsetToFinal() {
136
+ if (this._currentState == null) {
137
+ return this._states.length;
138
+ }
139
+ return this._states.length - 1 - this._currentState;
140
+ }
141
+ resetCurrentStateCache() {
142
+ this._cachedNodeProps.prefix = null;
143
+ this._cachedNodeProps.local = null;
144
+ this._cachedNodeProps.attributes = null;
145
+ this._cachedNodeProps.text = null;
146
+ this._cachedTokens = [];
147
+ }
148
+ }
149
+
150
+ exports.TokenSelectStateMachine = TokenSelectStateMachine;
151
+ //# sourceMappingURL=TokenSelectStateMachine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelectStateMachine.js","sources":["../../../src/selector/TokenSelectStateMachine.ts"],"sourcesContent":["import { type TXmlToken } from '../tokenizer';\nimport { EToCacheNodeProps, ETokenMatchCriteria, TokenSelectState } from './TokenSelectState';\nimport { type TTokenSelectPath } from './types';\n\nexport class TokenSelectStateMachine {\n\tprivate _states: TokenSelectState[];\n\n\t// null (start state) -> index (x state)\n\tprivate _currentState: number | null = null;\n\n\t// Current state cache\n\tprivate _cachedNodeProps: TCachedNodeProps = {\n\t\tprefix: null,\n\t\tlocal: null,\n\t\tattributes: null,\n\t\ttext: null\n\t};\n\tprivate _cachedTokens: TXmlToken[] = [];\n\tprivate _toRecordTokens: TXmlToken[] = [];\n\n\tconstructor(tokenSelectPath: TTokenSelectPath) {\n\t\tthis._states = tokenSelectPath.map((part) => new TokenSelectState(part));\n\t}\n\n\tpublic getNextState(): TokenSelectState | null {\n\t\tconst nextIndex = this._currentState != null ? this._currentState + 1 : 0;\n\t\tif (nextIndex < this._states.length) {\n\t\t\treturn this._states[nextIndex] ?? null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic getCurrentState(): TokenSelectState | null {\n\t\tif (this._currentState != null && this._currentState < this._states.length) {\n\t\t\treturn this._states[this._currentState] ?? null;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic record(token: TXmlToken): void {\n\t\tif (this.getOffsetToFinal() <= 1) {\n\t\t\tthis._cachedTokens.push(token);\n\t\t}\n\t}\n\n\tpublic takeRecordedTokens(): TXmlToken[] | null {\n\t\tif (this._toRecordTokens.length > 0) {\n\t\t\tconst recordedTokens = this._toRecordTokens;\n\t\t\tthis._toRecordTokens = [];\n\t\t\treturn recordedTokens;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic transitionIfNameMatch(local: string, prefix: string, depth: number): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Cache name\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Name) {\n\t\t\tthis._cachedNodeProps.local = local;\n\t\t\tthis._cachedNodeProps.prefix = prefix;\n\t\t}\n\n\t\t// Transition forward if name and depth match, and no additional criteria are required\n\t\tif (\n\t\t\tnextState.matchesName(local, prefix) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(\n\t\t\t\tnextState.matchCriteria &\n\t\t\t\t(ETokenMatchCriteria.Attributes | ETokenMatchCriteria.Text | ETokenMatchCriteria.Node)\n\t\t\t)\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// Transition forward if attributes and depth match, and no additional criteria are required\n\tpublic transitionIfAttributesMatch(\n\t\tlocal: string,\n\t\tprefix: string,\n\t\tvalue: string,\n\t\tdepth: number\n\t): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst attributes = this._cachedNodeProps.attributes ?? [];\n\t\tattributes.push({ local, prefix, value });\n\n\t\t// Cache attributes\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Attributes) {\n\t\t\tthis._cachedNodeProps.attributes = attributes;\n\t\t}\n\n\t\tif (\n\t\t\tnextState.matchesAttributes(attributes) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(nextState.matchCriteria & (ETokenMatchCriteria.Text | ETokenMatchCriteria.Node))\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t// Transition forward if text content and depth match, and no additional criteria are required\n\tpublic transitionIfTextMatch(text: string, depth: number): boolean {\n\t\tconst nextState = this.getNextState();\n\t\tconst currentState = this.getCurrentState();\n\t\tif (nextState == null) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Cache text\n\t\tif (nextState.toCacheNodeProps & EToCacheNodeProps.Text) {\n\t\t\tthis._cachedNodeProps.text = text;\n\t\t}\n\n\t\tif (\n\t\t\tnextState.matchesText(text) &&\n\t\t\tnextState.matchesDepth(depth, currentState?.enteredDepth ?? 0) &&\n\t\t\t!(nextState.matchCriteria & ETokenMatchCriteria.Node)\n\t\t) {\n\t\t\tthis.transitionForward(depth);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate transitionForward(depth: number): void {\n\t\tconst previousState = this.getCurrentState();\n\t\tif (previousState != null) {\n\t\t\tpreviousState.unmatch();\n\t\t}\n\n\t\tthis._currentState = this._currentState != null ? this._currentState + 1 : 0;\n\n\t\tconst currentState = this.getCurrentState();\n\t\tif (currentState != null) {\n\t\t\tcurrentState.match(depth);\n\t\t}\n\n\t\tif (this.isFinalState()) {\n\t\t\tthis._toRecordTokens = this._cachedTokens;\n\t\t}\n\t\tthis.resetCurrentStateCache();\n\t}\n\n\tpublic transitionBack(depth: number): void {\n\t\tconst previousState = this.getCurrentState();\n\t\tif (previousState != null) {\n\t\t\tpreviousState.unmatch();\n\t\t}\n\n\t\tthis._currentState = this._currentState != null ? this._currentState - 1 : 0;\n\n\t\tconst currentState = this.getCurrentState();\n\t\tif (currentState != null) {\n\t\t\tcurrentState.match(depth);\n\t\t}\n\n\t\tthis.resetCurrentStateCache();\n\t}\n\n\tpublic isFinalState(): boolean {\n\t\treturn this._currentState != null && this._currentState >= this._states.length - 1;\n\t}\n\n\tpublic getOffsetToFinal(): number {\n\t\tif (this._currentState == null) {\n\t\t\treturn this._states.length;\n\t\t}\n\t\treturn this._states.length - 1 - this._currentState;\n\t}\n\n\tpublic resetCurrentStateCache(): void {\n\t\tthis._cachedNodeProps.prefix = null;\n\t\tthis._cachedNodeProps.local = null;\n\t\tthis._cachedNodeProps.attributes = null;\n\t\tthis._cachedNodeProps.text = null;\n\t\tthis._cachedTokens = [];\n\t}\n}\n\nexport interface TCachedNodeProps {\n\tprefix: string | null;\n\tlocal: string | null;\n\tattributes: TCachedAttribute[] | null;\n\ttext: string | null;\n}\n\nexport interface TCachedAttribute {\n\tlocal: string;\n\tprefix?: string;\n\tvalue?: string;\n}\n"],"names":["TokenSelectState","EToCacheNodeProps","ETokenMatchCriteria"],"mappings":";;;;AACA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAC/J,IAAI,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC;AAEvG,MAAM,uBAAuB,CAAC;AACrC,EAAE,WAAW,CAAC,eAAe,EAAE;AAC/B,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC;AAClC;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC;AAC9C;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,kBAAkB,EAAE;AAC5C,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,KAAK,EAAE,IAAI;AACjB,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,IAAI,EAAE;AACZ,KAAK,CAAC;AACN,IAAI,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC;AAC5C,IAAI,aAAa,CAAC,IAAI,EAAE,iBAAiB,EAAE,EAAE,CAAC;AAC9C,IAAI,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAIA,iCAAgB,CAAC,IAAI,CAAC,CAAC;AAC5E;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC;AAC7E,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACzC,MAAM,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AAC/D;AACA,IAAI,OAAO,IAAI;AACf;AACA,EAAE,eAAe,GAAG;AACpB,IAAI,IAAI,EAAE;AACV,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAChF,MAAM,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI;AACxE;AACA,IAAI,OAAO,IAAI;AACf;AACA,EAAE,MAAM,CAAC,KAAK,EAAE;AAChB,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE;AACtC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC;AACA;AACA,EAAE,kBAAkB,GAAG;AACvB,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AACzC,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe;AACjD,MAAM,IAAI,CAAC,eAAe,GAAG,EAAE;AAC/B,MAAM,OAAO,cAAc;AAC3B;AACA,IAAI,OAAO,IAAI;AACf;AACA,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE;AAC9C,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,IAAI,SAAS,CAAC,gBAAgB,GAAGC,kCAAiB,CAAC,IAAI,EAAE;AAC7D,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK;AACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM;AAC3C;AACA,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,IAAIC,oCAAmB,CAAC,UAAU,GAAGA,oCAAmB,CAAC,IAAI,GAAGA,oCAAmB,CAAC,IAAI,CAAC,CAAC,EAAE;AACzR,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnC,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA,EAAE,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;AAC3D,IAAI,IAAI,EAAE,EAAE,EAAE;AACd,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,MAAM,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE;AAChF,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC7C,IAAI,IAAI,SAAS,CAAC,gBAAgB,GAAGD,kCAAiB,CAAC,UAAU,EAAE;AACnE,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU;AACnD;AACA,IAAI,IAAI,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,IAAIC,oCAAmB,CAAC,IAAI,GAAGA,oCAAmB,CAAC,IAAI,CAAC,CAAC,EAAE;AAC3P,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnC,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,OAAO,KAAK;AAChB;AACA;AACA,EAAE,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE;AACrC,IAAI,IAAI,EAAE;AACV,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACzC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,IAAI,IAAI,SAAS,IAAI,IAAI,EAAE;AAC3B,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,IAAI,SAAS,CAAC,gBAAgB,GAAGD,kCAAiB,CAAC,IAAI,EAAE;AAC7D,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI;AACvC;AACA,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,YAAY,IAAI,IAAI,GAAG,MAAM,GAAG,YAAY,CAAC,YAAY,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,aAAa,GAAGC,oCAAmB,CAAC,IAAI,CAAC,EAAE;AAClN,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnC,MAAM,OAAO,IAAI;AACjB;AACA,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,iBAAiB,CAAC,KAAK,EAAE;AAC3B,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;AAChD,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AAC/B,MAAM,aAAa,CAAC,OAAO,EAAE;AAC7B;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC;AAChF,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE;AAC9B,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B;AACA,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7B,MAAM,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa;AAC/C;AACA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjC;AACA,EAAE,cAAc,CAAC,KAAK,EAAE;AACxB,IAAI,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE;AAChD,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE;AAC/B,MAAM,aAAa,CAAC,OAAO,EAAE;AAC7B;AACA,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC;AAChF,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;AAC/C,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE;AAC9B,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/B;AACA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACjC;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACtF;AACA,EAAE,gBAAgB,GAAG;AACrB,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;AACpC,MAAM,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;AAChC;AACA,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa;AACvD;AACA,EAAE,sBAAsB,GAAG;AAC3B,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI;AACvC,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI;AACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI;AAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI;AACrC,IAAI,IAAI,CAAC,aAAa,GAAG,EAAE;AAC3B;AACA;;;;"}
@@ -1 +1,140 @@
1
- "use strict";var a=require("./TokenSelectState.js"),o=require("./TokenSelectStateMachine.js"),u=Object.defineProperty,f=(r,e,t)=>e in r?u(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s=(r,e,t)=>f(r,typeof e!="symbol"?e+"":e,t);class S{constructor(e){s(this,"_currentDepth",0),s(this,"_tspStateMachines"),s(this,"_isRecording",!1),this._tspStateMachines=e.map(t=>new o.TokenSelectStateMachine(t))}pipeToken(e,t){let n=!1,i=!1;switch(e.type){case"ElementStart":n=this.handleElementStart(e);break;case"Attribute":n=this.handleAttribute(e);break;case"Text":n=this.handleText(e);break;case"ElementEnd":{i=this.handleElementEnd(e);break}}n&&!this._isRecording&&(this._isRecording=!0,t({type:"SelectionStart"}));for(const c of this._tspStateMachines){c.record(e);const l=c.takeRecordedTokens();l!=null&&l.forEach(h=>{t(h)})}this._isRecording&&t(e),i&&this._isRecording&&(t({type:"SelectionEnd"}),this._isRecording=!1)}handleElementStart(e){this._currentDepth+=1;let t=!1;for(const n of this._tspStateMachines){if(n.resetCurrentStateCache(),n.isFinalState())continue;const i=n.getNextState();i==null||!(i.matchCriteria&a.ETokenMatchCriteria.Name)||n.transitionIfNameMatch(e.local,e.prefix,this._currentDepth)&&n.isFinalState()&&(t=!0)}return t}handleAttribute(e){let t=!1;for(const n of this._tspStateMachines){if(n.isFinalState())continue;const i=n.getNextState();i==null||!(i.matchCriteria&a.ETokenMatchCriteria.Attributes)||n.transitionIfAttributesMatch(e.local,e.prefix,e.value,this._currentDepth)&&n.isFinalState()&&(t=!0)}return t}handleText(e){let t=!1;for(const n of this._tspStateMachines){if(n.isFinalState())continue;const i=n.getNextState();i==null||!(i.matchCriteria&a.ETokenMatchCriteria.Text)||n.transitionIfTextMatch(e.text,this._currentDepth)&&n.isFinalState()&&(t=!0)}return t}handleElementEnd(e){if(e.end.type==="Close"||e.end.type==="Empty"){this._currentDepth-=1;let t=!1;for(const n of this._tspStateMachines){const i=n.getCurrentState();i!=null&&(i.enteredDepth!=null&&this._currentDepth<i.enteredDepth&&n.transitionBack(this._currentDepth),t=t||n.isFinalState())}return!t}return!1}}exports.TokenSelector=S;
1
+ 'use strict';
2
+
3
+ var TokenSelectState = require('./TokenSelectState.js');
4
+ var TokenSelectStateMachine = require('./TokenSelectStateMachine.js');
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
+ class TokenSelector {
10
+ constructor(tokenSelectPaths) {
11
+ __publicField(this, "_currentDepth", 0);
12
+ __publicField(this, "_tspStateMachines");
13
+ __publicField(this, "_isRecording", false);
14
+ this._tspStateMachines = tokenSelectPaths.map(
15
+ (tokenSelectPath) => new TokenSelectStateMachine.TokenSelectStateMachine(tokenSelectPath)
16
+ );
17
+ }
18
+ pipeToken(token, recorder) {
19
+ let startRecording = false;
20
+ let stopRecording = false;
21
+ switch (token.type) {
22
+ case "ElementStart":
23
+ startRecording = this.handleElementStart(token);
24
+ break;
25
+ case "Attribute":
26
+ startRecording = this.handleAttribute(token);
27
+ break;
28
+ case "Text":
29
+ startRecording = this.handleText(token);
30
+ break;
31
+ case "ElementEnd": {
32
+ stopRecording = this.handleElementEnd(token);
33
+ break;
34
+ }
35
+ }
36
+ if (startRecording && !this._isRecording) {
37
+ this._isRecording = true;
38
+ recorder({ type: "SelectionStart" });
39
+ }
40
+ for (const stateMachine of this._tspStateMachines) {
41
+ stateMachine.record(token);
42
+ const recordedTokens = stateMachine.takeRecordedTokens();
43
+ if (recordedTokens != null) {
44
+ recordedTokens.forEach((t) => {
45
+ recorder(t);
46
+ });
47
+ }
48
+ }
49
+ if (this._isRecording) {
50
+ recorder(token);
51
+ }
52
+ if (stopRecording && this._isRecording) {
53
+ recorder({ type: "SelectionEnd" });
54
+ this._isRecording = false;
55
+ }
56
+ }
57
+ handleElementStart(token) {
58
+ this._currentDepth += 1;
59
+ let startRecording = false;
60
+ for (const stateMachine of this._tspStateMachines) {
61
+ stateMachine.resetCurrentStateCache();
62
+ if (stateMachine.isFinalState()) {
63
+ continue;
64
+ }
65
+ const nextState = stateMachine.getNextState();
66
+ if (nextState == null || !(nextState.matchCriteria & TokenSelectState.ETokenMatchCriteria.Name)) {
67
+ continue;
68
+ }
69
+ const transitioned = stateMachine.transitionIfNameMatch(
70
+ token.local,
71
+ token.prefix,
72
+ this._currentDepth
73
+ );
74
+ if (transitioned && stateMachine.isFinalState()) {
75
+ startRecording = true;
76
+ }
77
+ }
78
+ return startRecording;
79
+ }
80
+ handleAttribute(token) {
81
+ let startRecording = false;
82
+ for (const stateMachine of this._tspStateMachines) {
83
+ if (stateMachine.isFinalState()) {
84
+ continue;
85
+ }
86
+ const nextState = stateMachine.getNextState();
87
+ if (nextState == null || !(nextState.matchCriteria & TokenSelectState.ETokenMatchCriteria.Attributes)) {
88
+ continue;
89
+ }
90
+ const transitioned = stateMachine.transitionIfAttributesMatch(
91
+ token.local,
92
+ token.prefix,
93
+ token.value,
94
+ this._currentDepth
95
+ );
96
+ if (transitioned && stateMachine.isFinalState()) {
97
+ startRecording = true;
98
+ }
99
+ }
100
+ return startRecording;
101
+ }
102
+ handleText(token) {
103
+ let startRecording = false;
104
+ for (const stateMachine of this._tspStateMachines) {
105
+ if (stateMachine.isFinalState()) {
106
+ continue;
107
+ }
108
+ const nextState = stateMachine.getNextState();
109
+ if (nextState == null || !(nextState.matchCriteria & TokenSelectState.ETokenMatchCriteria.Text)) {
110
+ continue;
111
+ }
112
+ const transitioned = stateMachine.transitionIfTextMatch(token.text, this._currentDepth);
113
+ if (transitioned && stateMachine.isFinalState()) {
114
+ startRecording = true;
115
+ }
116
+ }
117
+ return startRecording;
118
+ }
119
+ handleElementEnd(token) {
120
+ if (token.end.type === "Close" || token.end.type === "Empty") {
121
+ this._currentDepth -= 1;
122
+ let isFinalState = false;
123
+ for (const stateMachine of this._tspStateMachines) {
124
+ const currentState = stateMachine.getCurrentState();
125
+ if (currentState == null) {
126
+ continue;
127
+ }
128
+ if (currentState.enteredDepth != null && this._currentDepth < currentState.enteredDepth) {
129
+ stateMachine.transitionBack(this._currentDepth);
130
+ }
131
+ isFinalState = isFinalState || stateMachine.isFinalState();
132
+ }
133
+ return !isFinalState;
134
+ }
135
+ return false;
136
+ }
137
+ }
138
+
139
+ exports.TokenSelector = TokenSelector;
140
+ //# sourceMappingURL=TokenSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenSelector.js","sources":["../../../src/selector/TokenSelector.ts"],"sourcesContent":["import {\n\ttype TAttributeToken,\n\ttype TElementEndToken,\n\ttype TElementStartToken,\n\ttype TTextToken,\n\ttype TXmlToken\n} from '../tokenizer';\nimport { ETokenMatchCriteria } from './TokenSelectState';\nimport { TokenSelectStateMachine } from './TokenSelectStateMachine';\nimport { type TSelectedXmlToken, type TTokenSelectPath } from './types';\n\nexport class TokenSelector {\n\tprivate _currentDepth = 0;\n\tprivate _tspStateMachines: TokenSelectStateMachine[];\n\tprivate _isRecording = false;\n\n\tconstructor(tokenSelectPaths: TTokenSelectPath[]) {\n\t\tthis._tspStateMachines = tokenSelectPaths.map(\n\t\t\t(tokenSelectPath) => new TokenSelectStateMachine(tokenSelectPath)\n\t\t);\n\t}\n\n\tpublic pipeToken(token: TXmlToken, recorder: (token: TSelectedXmlToken) => void): void {\n\t\tlet startRecording = false;\n\t\tlet stopRecording = false;\n\t\tswitch (token.type) {\n\t\t\tcase 'ElementStart':\n\t\t\t\tstartRecording = this.handleElementStart(token);\n\t\t\t\tbreak;\n\t\t\tcase 'Attribute':\n\t\t\t\tstartRecording = this.handleAttribute(token);\n\t\t\t\tbreak;\n\t\t\tcase 'Text':\n\t\t\t\tstartRecording = this.handleText(token);\n\t\t\t\tbreak;\n\t\t\tcase 'ElementEnd': {\n\t\t\t\tstopRecording = this.handleElementEnd(token);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t}\n\n\t\tif (startRecording && !this._isRecording) {\n\t\t\tthis._isRecording = true;\n\t\t\trecorder({ type: 'SelectionStart' });\n\t\t}\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tstateMachine.record(token);\n\t\t\tconst recordedTokens = stateMachine.takeRecordedTokens();\n\t\t\tif (recordedTokens != null) {\n\t\t\t\trecordedTokens.forEach((t) => {\n\t\t\t\t\trecorder(t);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this._isRecording) {\n\t\t\trecorder(token);\n\t\t}\n\n\t\tif (stopRecording && this._isRecording) {\n\t\t\trecorder({ type: 'SelectionEnd' });\n\t\t\tthis._isRecording = false;\n\t\t}\n\t}\n\n\tprivate handleElementStart(token: TElementStartToken): boolean {\n\t\tthis._currentDepth += 1;\n\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tstateMachine.resetCurrentStateCache();\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Name)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfNameMatch(\n\t\t\t\ttoken.local,\n\t\t\t\ttoken.prefix,\n\t\t\t\tthis._currentDepth\n\t\t\t);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleAttribute(token: TAttributeToken): boolean {\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Attributes)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfAttributesMatch(\n\t\t\t\ttoken.local,\n\t\t\t\ttoken.prefix,\n\t\t\t\ttoken.value,\n\t\t\t\tthis._currentDepth\n\t\t\t);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleText(token: TTextToken): boolean {\n\t\tlet startRecording = false;\n\n\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\tif (stateMachine.isFinalState()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst nextState = stateMachine.getNextState();\n\t\t\tif (nextState == null || !(nextState.matchCriteria & ETokenMatchCriteria.Text)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst transitioned = stateMachine.transitionIfTextMatch(token.text, this._currentDepth);\n\t\t\tif (transitioned && stateMachine.isFinalState()) {\n\t\t\t\tstartRecording = true;\n\t\t\t}\n\t\t}\n\n\t\treturn startRecording;\n\t}\n\n\tprivate handleElementEnd(token: TElementEndToken): boolean {\n\t\tif (token.end.type === 'Close' || token.end.type === 'Empty') {\n\t\t\tthis._currentDepth -= 1;\n\n\t\t\t// if (token.end.type === 'Close' && token.end.local === 'head') {\n\t\t\t// \tconsole.log({ token });\n\t\t\t// }\n\n\t\t\tlet isFinalState = false;\n\n\t\t\tfor (const stateMachine of this._tspStateMachines) {\n\t\t\t\tconst currentState = stateMachine.getCurrentState();\n\t\t\t\tif (currentState == null) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (currentState.enteredDepth != null && this._currentDepth < currentState.enteredDepth) {\n\t\t\t\t\tstateMachine.transitionBack(this._currentDepth);\n\t\t\t\t}\n\n\t\t\t\tisFinalState = isFinalState || stateMachine.isFinalState();\n\t\t\t}\n\n\t\t\treturn !isFinalState;\n\t\t}\n\t\treturn false;\n\t}\n}\n"],"names":["TokenSelectStateMachine","ETokenMatchCriteria"],"mappings":"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"}