@gmb/bitmark-parser-generator 1.4.8 → 1.4.10

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 (151) hide show
  1. package/dist/browser/bitmark-parser-generator.min.js +1 -1
  2. package/dist/browser/bundle-report.html +2 -2
  3. package/dist/cjs/BitmarkParserGenerator.js +6 -3
  4. package/dist/cjs/BitmarkParserGenerator.js.map +1 -1
  5. package/dist/cjs/ast/BaseBuilder.js +6 -5
  6. package/dist/cjs/ast/BaseBuilder.js.map +1 -1
  7. package/dist/cjs/ast/Builder.js +2 -1
  8. package/dist/cjs/ast/Builder.js.map +1 -1
  9. package/dist/cjs/ast/ResourceBuilder.js +2 -1
  10. package/dist/cjs/ast/ResourceBuilder.js.map +1 -1
  11. package/dist/cjs/breakscaping/Breakscape.js +240 -0
  12. package/dist/cjs/breakscaping/Breakscape.js.map +1 -0
  13. package/dist/cjs/generated/build-info.js +1 -1
  14. package/dist/cjs/generated/build-info.js.map +1 -1
  15. package/dist/cjs/generated/parser/bitmark/bitmark-peggy-parser.js +94 -68
  16. package/dist/cjs/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
  17. package/dist/cjs/generated/parser/text/text-peggy-parser.js +9 -9
  18. package/dist/cjs/generated/parser/text/text-peggy-parser.js.map +1 -1
  19. package/dist/cjs/generator/json/JsonGenerator.js +136 -126
  20. package/dist/cjs/generator/json/JsonGenerator.js.map +1 -1
  21. package/dist/cjs/generator/text/TextGenerator.js +13 -28
  22. package/dist/cjs/generator/text/TextGenerator.js.map +1 -1
  23. package/dist/cjs/index.js.map +1 -1
  24. package/dist/cjs/model/ast/BreakscapedString.js +3 -0
  25. package/dist/cjs/model/ast/BreakscapedString.js.map +1 -0
  26. package/dist/cjs/model/ast/StardardString.js +3 -0
  27. package/dist/cjs/model/ast/StardardString.js.map +1 -0
  28. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js +8 -7
  29. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
  30. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  31. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  32. package/dist/cjs/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.js.map +1 -1
  33. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +17 -16
  34. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  35. package/dist/cjs/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.js.map +1 -1
  36. package/dist/cjs/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.js.map +1 -1
  37. package/dist/cjs/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.js.map +1 -1
  38. package/dist/cjs/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js +2 -1
  39. package/dist/cjs/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js.map +1 -1
  40. package/dist/cjs/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.js.map +1 -1
  41. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js +2 -1
  42. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js.map +1 -1
  43. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js +1 -1
  44. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js.map +1 -1
  45. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.js.map +1 -1
  46. package/dist/cjs/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +1 -1
  47. package/dist/cjs/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.js.map +1 -1
  48. package/dist/cjs/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.js.map +1 -1
  49. package/dist/cjs/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.js.map +1 -1
  50. package/dist/cjs/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.js.map +1 -1
  51. package/dist/cjs/parser/json/JsonParser.js +98 -99
  52. package/dist/cjs/parser/json/JsonParser.js.map +1 -1
  53. package/dist/esm/BitmarkParserGenerator.js +7 -4
  54. package/dist/esm/BitmarkParserGenerator.js.map +1 -1
  55. package/dist/esm/ast/BaseBuilder.js +6 -5
  56. package/dist/esm/ast/BaseBuilder.js.map +1 -1
  57. package/dist/esm/ast/Builder.js +2 -1
  58. package/dist/esm/ast/Builder.js.map +1 -1
  59. package/dist/esm/ast/ResourceBuilder.js +2 -1
  60. package/dist/esm/ast/ResourceBuilder.js.map +1 -1
  61. package/dist/esm/breakscaping/Breakscape.js +237 -0
  62. package/dist/esm/breakscaping/Breakscape.js.map +1 -0
  63. package/dist/esm/generated/build-info.js +1 -1
  64. package/dist/esm/generated/build-info.js.map +1 -1
  65. package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js +94 -68
  66. package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
  67. package/dist/esm/generated/parser/text/text-peggy-parser.js +9 -8
  68. package/dist/esm/generated/parser/text/text-peggy-parser.js.map +1 -1
  69. package/dist/esm/generator/json/JsonGenerator.js +136 -126
  70. package/dist/esm/generator/json/JsonGenerator.js.map +1 -1
  71. package/dist/esm/generator/text/TextGenerator.js +13 -26
  72. package/dist/esm/generator/text/TextGenerator.js.map +1 -1
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/model/ast/BreakscapedString.js +2 -0
  75. package/dist/esm/model/ast/BreakscapedString.js.map +1 -0
  76. package/dist/esm/model/ast/StardardString.js +2 -0
  77. package/dist/esm/model/ast/StardardString.js.map +1 -0
  78. package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js +8 -7
  79. package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
  80. package/dist/esm/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  81. package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  82. package/dist/esm/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.js.map +1 -1
  83. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +17 -16
  84. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  85. package/dist/esm/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.js.map +1 -1
  86. package/dist/esm/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.js.map +1 -1
  87. package/dist/esm/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.js.map +1 -1
  88. package/dist/esm/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js +2 -1
  89. package/dist/esm/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js.map +1 -1
  90. package/dist/esm/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.js.map +1 -1
  91. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js +2 -1
  92. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js.map +1 -1
  93. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js +1 -1
  94. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js.map +1 -1
  95. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.js.map +1 -1
  96. package/dist/esm/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +1 -1
  97. package/dist/esm/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.js.map +1 -1
  98. package/dist/esm/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.js.map +1 -1
  99. package/dist/esm/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.js.map +1 -1
  100. package/dist/esm/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.js.map +1 -1
  101. package/dist/esm/parser/json/JsonParser.js +98 -99
  102. package/dist/esm/parser/json/JsonParser.js.map +1 -1
  103. package/dist/types/BitmarkParserGenerator.d.ts.map +1 -1
  104. package/dist/types/ast/BaseBuilder.d.ts +4 -3
  105. package/dist/types/ast/BaseBuilder.d.ts.map +1 -1
  106. package/dist/types/ast/Builder.d.ts +157 -156
  107. package/dist/types/ast/Builder.d.ts.map +1 -1
  108. package/dist/types/ast/ResourceBuilder.d.ts +111 -110
  109. package/dist/types/ast/ResourceBuilder.d.ts.map +1 -1
  110. package/dist/types/breakscaping/Breakscape.d.ts +49 -0
  111. package/dist/types/breakscaping/Breakscape.d.ts.map +1 -0
  112. package/dist/types/generated/parser/bitmark/bitmark-peggy-parser.d.ts.map +1 -1
  113. package/dist/types/generated/parser/text/text-peggy-parser.d.ts +0 -1
  114. package/dist/types/generated/parser/text/text-peggy-parser.d.ts.map +1 -1
  115. package/dist/types/generator/json/JsonGenerator.d.ts +8 -7
  116. package/dist/types/generator/json/JsonGenerator.d.ts.map +1 -1
  117. package/dist/types/generator/text/TextGenerator.d.ts +11 -12
  118. package/dist/types/generator/text/TextGenerator.d.ts.map +1 -1
  119. package/dist/types/index.d.ts +1 -0
  120. package/dist/types/index.d.ts.map +1 -1
  121. package/dist/types/model/ast/BreakscapedString.d.ts +4 -0
  122. package/dist/types/model/ast/BreakscapedString.d.ts.map +1 -0
  123. package/dist/types/model/ast/Nodes.d.ts +97 -96
  124. package/dist/types/model/ast/Nodes.d.ts.map +1 -1
  125. package/dist/types/model/ast/StardardString.d.ts +4 -0
  126. package/dist/types/model/ast/StardardString.d.ts.map +1 -0
  127. package/dist/types/model/json/BitJson.d.ts +1 -1
  128. package/dist/types/parser/bitmark/peg/BitmarkPegParserProcessor.d.ts.map +1 -1
  129. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts +36 -35
  130. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts.map +1 -1
  131. package/dist/types/parser/bitmark/peg/BitmarkPegParserValidator.d.ts +4 -3
  132. package/dist/types/parser/bitmark/peg/BitmarkPegParserValidator.d.ts.map +1 -1
  133. package/dist/types/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.d.ts.map +1 -1
  134. package/dist/types/parser/bitmark/peg/contentProcessors/CardContentProcessor.d.ts.map +1 -1
  135. package/dist/types/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.d.ts.map +1 -1
  136. package/dist/types/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.d.ts.map +1 -1
  137. package/dist/types/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.d.ts.map +1 -1
  138. package/dist/types/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.d.ts.map +1 -1
  139. package/dist/types/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.d.ts.map +1 -1
  140. package/dist/types/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.d.ts.map +1 -1
  141. package/dist/types/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.d.ts.map +1 -1
  142. package/dist/types/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.d.ts.map +1 -1
  143. package/dist/types/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.d.ts.map +1 -1
  144. package/dist/types/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.d.ts.map +1 -1
  145. package/dist/types/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.d.ts.map +1 -1
  146. package/dist/types/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.d.ts +2 -1
  147. package/dist/types/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.d.ts.map +1 -1
  148. package/dist/types/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.d.ts.map +1 -1
  149. package/dist/types/parser/json/JsonParser.d.ts +9 -0
  150. package/dist/types/parser/json/JsonParser.d.ts.map +1 -1
  151. package/package.json +1 -1
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Breakscape = void 0;
4
+ const StringUtils_1 = require("../utils/StringUtils");
5
+ /**
6
+ * Utility class for breakscaping strings.
7
+ *
8
+ * Breakscaping is the process of escaping certain character sequences in a string so that they are not interpreted as
9
+ * special sequences by the parser.
10
+ *
11
+ * This is different from escaping in that when escaping, single characters tend to be escaped, rather than sequences
12
+ * being broken (split) by a special charater.
13
+ *
14
+ * The special character is ^
15
+ * To include the special character in a text, use ^^ (once), ^^^ (twice), etc.
16
+ *
17
+ * The following sequences can be breakscaped:
18
+ * - inline: == ==> =^=
19
+ * - comment: || ==> |^|
20
+ * - remark: :: ==> :^:
21
+ * - title block: (SOL)[##]#(space) ==> (SOL)[##]#^(space)
22
+ * - new block: (SOL)|(WS EOL) ==> (SOL)|^(WS EOL)
23
+ * - code block: (SOL)|code(:type) ==> (SOL)|^code(:type)
24
+ * - image block: (SOL)|image:(url) ==> (SOL)|^image:(url)
25
+ * - bullet list: (SOL)•(space) ==> (SOL)•^(space)
26
+ * - ordered list: (SOL)•1(space) ==> (SOL)•^1(space)
27
+ * - tag list +: (SOL)•+(space) ==> (SOL)•^+(space)
28
+ * - tag list -: (SOL)•-(space) ==> (SOL)•^-(space)
29
+ * - bold: ** ==> *^*
30
+ * - light: `` ==> `^`
31
+ * - italic: __ ==> _^_
32
+ * - highlight: !! ==> !^!
33
+ * - start of bit: [. ==> [^.
34
+ * - start of property: [@ ==> [^@
35
+ * - start of title: [# ==> [^#
36
+ * - start of anchor: [▼ ==> [^▼
37
+ * - start of reference: [► ==> [^►
38
+ * - start of item/lead: [% ==> [^%
39
+ * - start of instruction: [! ==> [^!
40
+ * - start of hint: [? ==> [^?
41
+ * - start of true statement: [+ ==> [^+
42
+ * - start of false statement: [- ==> [^-
43
+ * - start of sample solution: [$ ==> [^$
44
+ * - start of gap: [_ ==> [^_
45
+ * - start of mark: [= ==> [^=
46
+ * - start of resource: [& ==> [^&
47
+ * - end of tag: ] ==> ^]
48
+ *
49
+ *
50
+ * The following are breakscaped with ^ in between. Just add more ^s to increase the number of ^ string:
51
+ * - inline: =^= ==> =^^=
52
+ * - comment: |^| ==> |^^|
53
+ * - remark: :^: ==> :^^:
54
+ * - title block: (SOL)[##]#^(space) ==> (SOL)[##]#^^(space)
55
+ * - new block: (SOL)|^(WS EOL) ==> (SOL)|^^(WS EOL)
56
+ * - code block: (SOL)|^code(:type) ==> (SOL)|^^code(:type)
57
+ * - image block: (SOL)|^image:(url) ==> (SOL)|^^image:(url)
58
+ * - bullet list: (SOL)•^(space) ==> (SOL)•^^(space)
59
+ * - ordered list: (SOL)•^1(space) ==> (SOL)•^^1(space)
60
+ * - tag list +: (SOL)•^+(space) ==> (SOL)•^^+(space)
61
+ * - tag list -: (SOL)•^-(space) ==> (SOL)•^^-(space)
62
+ * - bold: *^* ==> *^^*
63
+ * - light: `^` ==> `^^`
64
+ * - italic: _^_ ==> _^^_
65
+ * - highlight: !^! ==> !^^!
66
+ * - start of bit: [^. ==> [^^.
67
+ * - start of property: [^@ ==> [^^@
68
+ * - start of title: [^# ==> [^^#
69
+ * - start of anchor: [^▼ ==> [^^▼
70
+ * - start of reference: [^► ==> [^^►
71
+ * - start of item/lead: [^% ==> [^^%
72
+ * - start of instruction: [^! ==> [^^!
73
+ * - start of hint: [^? ==> [^^?
74
+ * - start of true statement: [^+ ==> [^^+
75
+ * - start of false statement: [^- ==> [^^-
76
+ * - start of sample solution: [^$ ==> [^^$
77
+ * - start of gap: [^_ ==> [^^_
78
+ * - start of mark: [^= ==> [^^=
79
+ * - start of resource: [^& ==> [^^&
80
+ * - end of tag: ^] ==> ^^]
81
+ */
82
+ //
83
+ // Breakscaping
84
+ //
85
+ const REGEX_MARKS = /([*`_!|:=])([\^]*)\1/;
86
+ const REGEX_BLOCKS = /^(\|)([\^]*)(code[\s]*|code:|image:|[\s]*$)/;
87
+ const REGEX_TITLE_BLOCKS = /^([#]{1,3})([\^]*)([^\S\r\n]+)/;
88
+ const REGEX_LIST_BLOCKS = /^(•)([\^]*)(1|\+|-|)([^\S\r\n]+)/;
89
+ const REGEX_START_OF_TAG = /(\[)([\^]*)([.@#▼►%!?+\-$_=&])/;
90
+ const REGEX_END_OF_TAG = /([\^]*)(])/;
91
+ const BREAKSCAPE_REGEX_SOURCE = `${REGEX_MARKS.source}|${REGEX_BLOCKS.source}|${REGEX_TITLE_BLOCKS.source}|${REGEX_LIST_BLOCKS.source}|${REGEX_START_OF_TAG.source}|${REGEX_END_OF_TAG.source}`;
92
+ const UNBREAKSCAPE_REGEX_SOURCE = BREAKSCAPE_REGEX_SOURCE.replace(/(\(\[\\\^\]\*\))/g, '\\^$1'); // Add ^ into the regex
93
+ // Regex groups in BODY (bitmark++):
94
+ // 1: start of MARK
95
+ // 2: ^ in MARK
96
+ // 3: start of BLOCK
97
+ // 4: ^ in BLOCK
98
+ // 5: end of BLOCK
99
+ // 6: start of TITLE_BLOCK
100
+ // 7: ^ in TITLE_BLOCK
101
+ // 8: end of TITLE_BLOCK
102
+ // 9: start of LIST_BLOCK
103
+ // 10: ^ in LIST_BLOCK
104
+ // 11: end of LIST_BLOCK part 1
105
+ // 12: end of LIST_BLOCK part 2
106
+ // 13: start of START_OF_TAG block
107
+ // 14: ^ in START_OF_TAG block
108
+ // 15: end of START_OF_TAG block
109
+ // 16: ^ in END_OF_TAG block
110
+ // 17: end of END_OF_TAG block
111
+ const BREAKSCAPE_REGEX = new RegExp(BREAKSCAPE_REGEX_SOURCE, 'gm');
112
+ const BREAKSCAPE_REGEX_REPLACER = '$1$3$6$9$13^$2$1$4$5$7$8$10$11$12$14$15$16$17';
113
+ const UNBREAKSCAPE_REGEX = new RegExp(UNBREAKSCAPE_REGEX_SOURCE, 'gm');
114
+ const UNBREAKSCAPE_REGEX_REPLACER = BREAKSCAPE_REGEX_REPLACER.replace(/\^/g, ''); // Remove ^ from the regex replacer
115
+ // Regex explanation:
116
+ // - match a single | or • or # character at the start of a line and capture in group 1
117
+ // This will capture all new block characters within the code text.
118
+ // Replace with group 1, ^
119
+ const BREAKSCAPE_CODE_REGEX = new RegExp('^(\\||•|#)', 'gm');
120
+ const BREAKSCAPE_CODE_REGEX_REPLACER = '$1^';
121
+ class Breakscape {
122
+ constructor() {
123
+ this.EMPTY_STRING = '';
124
+ }
125
+ /**
126
+ * Breakscape a string or an array of strings.
127
+ * If the input is an array, a new array will be returned.
128
+ *
129
+ * @param val input value
130
+ * @param options options for breakscaping
131
+ * @param modifyArray
132
+ * @returns the input value with any strings breakscaped.
133
+ */
134
+ breakscape(val, options) {
135
+ if (val == null)
136
+ return val;
137
+ const opts = Object.assign({}, options);
138
+ const breakscapeStr = (str) => {
139
+ if (!str)
140
+ return str;
141
+ str = str.replace(BREAKSCAPE_REGEX, BREAKSCAPE_REGEX_REPLACER);
142
+ return str;
143
+ };
144
+ if (Array.isArray(val)) {
145
+ const newVal = opts.modifyArray ? val : [val.length];
146
+ for (let i = 0, len = val.length; i < len; i++) {
147
+ const v = val[i];
148
+ if (StringUtils_1.StringUtils.isString(v)) {
149
+ newVal[i] = breakscapeStr(v);
150
+ }
151
+ }
152
+ val = newVal;
153
+ }
154
+ else if (StringUtils_1.StringUtils.isString(val)) {
155
+ val = breakscapeStr(val);
156
+ }
157
+ return val;
158
+ }
159
+ /**
160
+ * Unbreakscape a string or an array of strings.
161
+ * If the input is an array, a new array will be returned.
162
+ *
163
+ * @param val input value
164
+ * @param modifyArray if true, the original array will be modified rather than a copy being made
165
+ * @returns the input value with any strings unbreakscaped.
166
+ */
167
+ unbreakscape(val, options) {
168
+ if (val == null)
169
+ return val;
170
+ const opts = Object.assign({}, options);
171
+ const unbreakscapeStr = (str) => {
172
+ if (!str)
173
+ return str;
174
+ str = str.replace(UNBREAKSCAPE_REGEX, UNBREAKSCAPE_REGEX_REPLACER);
175
+ return str;
176
+ };
177
+ if (Array.isArray(val)) {
178
+ const newVal = opts.modifyArray ? val : [];
179
+ for (let i = 0, len = val.length; i < len; i++) {
180
+ const v = val[i];
181
+ if (StringUtils_1.StringUtils.isString(v)) {
182
+ newVal[i] = unbreakscapeStr(v);
183
+ }
184
+ else {
185
+ newVal[i] = v;
186
+ }
187
+ }
188
+ val = newVal;
189
+ }
190
+ else if (StringUtils_1.StringUtils.isString(val)) {
191
+ val = unbreakscapeStr(val);
192
+ }
193
+ return val;
194
+ }
195
+ /**
196
+ * Breakscape a code string or an array of code strings.
197
+ * If the input is an array, a new array will be returned.
198
+ *
199
+ * @param val input value
200
+ * @param modifyArray if true, the original array will be modified rather than a copy being made
201
+ * @returns the input value with any strings breakscaped
202
+ */
203
+ breakscapeCode(val, options) {
204
+ if (val == null)
205
+ return val;
206
+ const opts = Object.assign({}, options);
207
+ const breakscapeStr = (str) => {
208
+ if (!str)
209
+ return str;
210
+ return str.replace(BREAKSCAPE_CODE_REGEX, BREAKSCAPE_CODE_REGEX_REPLACER);
211
+ };
212
+ if (Array.isArray(val)) {
213
+ const newVal = opts.modifyArray ? val : [val.length];
214
+ for (let i = 0, len = val.length; i < len; i++) {
215
+ const v = val[i];
216
+ if (StringUtils_1.StringUtils.isString(v)) {
217
+ val[i] = breakscapeStr(v);
218
+ }
219
+ }
220
+ val = newVal;
221
+ }
222
+ else if (StringUtils_1.StringUtils.isString(val)) {
223
+ val = breakscapeStr(val);
224
+ }
225
+ return val;
226
+ }
227
+ /**
228
+ * Concatenate two breakscaped strings.
229
+ *
230
+ * @param s1 first string
231
+ * @param s2 second string
232
+ * @returns the concatenated string
233
+ */
234
+ concatenate(s1, s2) {
235
+ return (s1 + s2);
236
+ }
237
+ }
238
+ const instance = new Breakscape();
239
+ exports.Breakscape = instance;
240
+ //# sourceMappingURL=Breakscape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breakscape.js","sourceRoot":"","sources":["../../../src/breakscaping/Breakscape.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ exports.buildInfo = void 0;
5
5
  /* eslint-disable */
6
6
  exports.buildInfo = {
7
7
  "name": "@gmb/bitmark-parser-generator",
8
- "version": "1.4.8",
8
+ "version": "1.4.10",
9
9
  "author": "Get More Brain Ltd",
10
10
  "license": "ISC",
11
11
  "description": "A bitmark parser and generator using Peggy.js"
@@ -1 +1 @@
1
- {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../../src/generated/build-info.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,oBAAoB;AAEP,QAAA,SAAS,GAAG;IACvB,MAAM,EAAE,+BAA+B;IACvC,SAAS,EAAE,OAAO;IAClB,QAAQ,EAAE,oBAAoB;IAC9B,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,+CAA+C;CAC/D,CAAC"}
1
+ {"version":3,"file":"build-info.js","sourceRoot":"","sources":["../../../src/generated/build-info.ts"],"names":[],"mappings":";AAAA,qDAAqD;;;AAErD,oBAAoB;AAEP,QAAA,SAAS,GAAG;IACvB,MAAM,EAAE,+BAA+B;IACvC,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,oBAAoB;IAC9B,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,+CAA+C;CAC/D,CAAC"}
@@ -189,12 +189,13 @@ function peg$parse(input, options) {
189
189
  var peg$c24 = "[&";
190
190
  var peg$c25 = "::";
191
191
  var peg$c26 = "||";
192
- var peg$c27 = "id:";
193
- var peg$c28 = "\n";
194
- var peg$c29 = "\r\n";
195
- var peg$c30 = "\r";
196
- var peg$c31 = "\u2028";
197
- var peg$c32 = "\u2029";
192
+ var peg$c27 = "^]";
193
+ var peg$c28 = "id:";
194
+ var peg$c29 = "\n";
195
+ var peg$c30 = "\r\n";
196
+ var peg$c31 = "\r";
197
+ var peg$c32 = "\u2028";
198
+ var peg$c33 = "\u2029";
198
199
  var peg$r0 = /^[^\]]/;
199
200
  var peg$r1 = /^[^:\]]/;
200
201
  var peg$r2 = /^[^&:\]]/;
@@ -230,26 +231,27 @@ function peg$parse(input, options) {
230
231
  var peg$e26 = peg$literalExpectation("[&", false);
231
232
  var peg$e27 = peg$literalExpectation("::", false);
232
233
  var peg$e28 = peg$literalExpectation("||", false);
233
- var peg$e29 = peg$literalExpectation("id:", false);
234
- var peg$e30 = peg$classExpectation([":", "]"], true, false);
235
- var peg$e31 = peg$classExpectation(["&", ":", "]"], true, false);
236
- var peg$e32 = peg$otherExpectation("Empty");
237
- var peg$e33 = peg$classExpectation([" ", "\t"], false, false);
238
- var peg$e34 = peg$otherExpectation("Anything");
239
- var peg$e35 = peg$otherExpectation("Character");
240
- var peg$e36 = peg$classExpectation(["\n", "\r", "\u2028", "\u2029"], true, false);
241
- var peg$e37 = peg$otherExpectation("Line");
242
- var peg$e38 = peg$otherExpectation("whitespace in line");
243
- var peg$e39 = peg$otherExpectation("Blank Line");
244
- var peg$e40 = peg$otherExpectation("Line Terminator");
245
- var peg$e41 = peg$literalExpectation("\n", false);
246
- var peg$e42 = peg$literalExpectation("\r\n", false);
247
- var peg$e43 = peg$literalExpectation("\r", false);
248
- var peg$e44 = peg$literalExpectation("\u2028", false);
249
- var peg$e45 = peg$literalExpectation("\u2029", false);
250
- var peg$e46 = peg$otherExpectation("Whitespace, then Line Terminator");
251
- var peg$e47 = peg$otherExpectation("whitespace");
252
- var peg$e48 = peg$classExpectation([" ", "\t", "\n", "\r", "\u2028", "\u2029"], false, false);
234
+ var peg$e29 = peg$literalExpectation("^]", false);
235
+ var peg$e30 = peg$literalExpectation("id:", false);
236
+ var peg$e31 = peg$classExpectation([":", "]"], true, false);
237
+ var peg$e32 = peg$classExpectation(["&", ":", "]"], true, false);
238
+ var peg$e33 = peg$otherExpectation("Empty");
239
+ var peg$e34 = peg$classExpectation([" ", "\t"], false, false);
240
+ var peg$e35 = peg$otherExpectation("Anything");
241
+ var peg$e36 = peg$otherExpectation("Character");
242
+ var peg$e37 = peg$classExpectation(["\n", "\r", "\u2028", "\u2029"], true, false);
243
+ var peg$e38 = peg$otherExpectation("Line");
244
+ var peg$e39 = peg$otherExpectation("whitespace in line");
245
+ var peg$e40 = peg$otherExpectation("Blank Line");
246
+ var peg$e41 = peg$otherExpectation("Line Terminator");
247
+ var peg$e42 = peg$literalExpectation("\n", false);
248
+ var peg$e43 = peg$literalExpectation("\r\n", false);
249
+ var peg$e44 = peg$literalExpectation("\r", false);
250
+ var peg$e45 = peg$literalExpectation("\u2028", false);
251
+ var peg$e46 = peg$literalExpectation("\u2029", false);
252
+ var peg$e47 = peg$otherExpectation("Whitespace, then Line Terminator");
253
+ var peg$e48 = peg$otherExpectation("whitespace");
254
+ var peg$e49 = peg$classExpectation([" ", "\t", "\n", "\r", "\u2028", "\u2029"], false, false);
253
255
  var peg$f0 = function (firstBit, bits) { return processor.buildBits([firstBit, ...bits]); };
254
256
  var peg$f1 = function (bit) { return helper.handleRawBit(bit); };
255
257
  var peg$f2 = function (bit) { return bit; };
@@ -2383,18 +2385,17 @@ function peg$parse(input, options) {
2383
2385
  s0 = peg$currPos;
2384
2386
  s1 = peg$currPos;
2385
2387
  s2 = [];
2386
- if (peg$r0.test(input.charAt(peg$currPos))) {
2387
- s3 = input.charAt(peg$currPos);
2388
- peg$currPos++;
2388
+ if (input.substr(peg$currPos, 2) === peg$c27) {
2389
+ s3 = peg$c27;
2390
+ peg$currPos += 2;
2389
2391
  }
2390
2392
  else {
2391
2393
  s3 = peg$FAILED;
2392
2394
  if (peg$silentFails === 0) {
2393
- peg$fail(peg$e1);
2395
+ peg$fail(peg$e29);
2394
2396
  }
2395
2397
  }
2396
- while (s3 !== peg$FAILED) {
2397
- s2.push(s3);
2398
+ if (s3 === peg$FAILED) {
2398
2399
  if (peg$r0.test(input.charAt(peg$currPos))) {
2399
2400
  s3 = input.charAt(peg$currPos);
2400
2401
  peg$currPos++;
@@ -2406,6 +2407,31 @@ function peg$parse(input, options) {
2406
2407
  }
2407
2408
  }
2408
2409
  }
2410
+ while (s3 !== peg$FAILED) {
2411
+ s2.push(s3);
2412
+ if (input.substr(peg$currPos, 2) === peg$c27) {
2413
+ s3 = peg$c27;
2414
+ peg$currPos += 2;
2415
+ }
2416
+ else {
2417
+ s3 = peg$FAILED;
2418
+ if (peg$silentFails === 0) {
2419
+ peg$fail(peg$e29);
2420
+ }
2421
+ }
2422
+ if (s3 === peg$FAILED) {
2423
+ if (peg$r0.test(input.charAt(peg$currPos))) {
2424
+ s3 = input.charAt(peg$currPos);
2425
+ peg$currPos++;
2426
+ }
2427
+ else {
2428
+ s3 = peg$FAILED;
2429
+ if (peg$silentFails === 0) {
2430
+ peg$fail(peg$e1);
2431
+ }
2432
+ }
2433
+ }
2434
+ }
2409
2435
  s1 = input.substring(s1, peg$currPos);
2410
2436
  peg$savedPos = s0;
2411
2437
  s1 = peg$f47(s1);
@@ -2417,14 +2443,14 @@ function peg$parse(input, options) {
2417
2443
  s0 = peg$currPos;
2418
2444
  s1 = peg$currPos;
2419
2445
  peg$silentFails++;
2420
- if (input.substr(peg$currPos, 3) === peg$c27) {
2421
- s2 = peg$c27;
2446
+ if (input.substr(peg$currPos, 3) === peg$c28) {
2447
+ s2 = peg$c28;
2422
2448
  peg$currPos += 3;
2423
2449
  }
2424
2450
  else {
2425
2451
  s2 = peg$FAILED;
2426
2452
  if (peg$silentFails === 0) {
2427
- peg$fail(peg$e29);
2453
+ peg$fail(peg$e30);
2428
2454
  }
2429
2455
  }
2430
2456
  peg$silentFails--;
@@ -2445,7 +2471,7 @@ function peg$parse(input, options) {
2445
2471
  else {
2446
2472
  s4 = peg$FAILED;
2447
2473
  if (peg$silentFails === 0) {
2448
- peg$fail(peg$e30);
2474
+ peg$fail(peg$e31);
2449
2475
  }
2450
2476
  }
2451
2477
  while (s4 !== peg$FAILED) {
@@ -2457,7 +2483,7 @@ function peg$parse(input, options) {
2457
2483
  else {
2458
2484
  s4 = peg$FAILED;
2459
2485
  if (peg$silentFails === 0) {
2460
- peg$fail(peg$e30);
2486
+ peg$fail(peg$e31);
2461
2487
  }
2462
2488
  }
2463
2489
  }
@@ -2529,7 +2555,7 @@ function peg$parse(input, options) {
2529
2555
  else {
2530
2556
  s3 = peg$FAILED;
2531
2557
  if (peg$silentFails === 0) {
2532
- peg$fail(peg$e31);
2558
+ peg$fail(peg$e32);
2533
2559
  }
2534
2560
  }
2535
2561
  while (s3 !== peg$FAILED) {
@@ -2541,7 +2567,7 @@ function peg$parse(input, options) {
2541
2567
  else {
2542
2568
  s3 = peg$FAILED;
2543
2569
  if (peg$silentFails === 0) {
2544
- peg$fail(peg$e31);
2570
+ peg$fail(peg$e32);
2545
2571
  }
2546
2572
  }
2547
2573
  }
@@ -2952,7 +2978,7 @@ function peg$parse(input, options) {
2952
2978
  else {
2953
2979
  s2 = peg$FAILED;
2954
2980
  if (peg$silentFails === 0) {
2955
- peg$fail(peg$e33);
2981
+ peg$fail(peg$e34);
2956
2982
  }
2957
2983
  }
2958
2984
  if (s2 === peg$FAILED) {
@@ -2967,7 +2993,7 @@ function peg$parse(input, options) {
2967
2993
  else {
2968
2994
  s2 = peg$FAILED;
2969
2995
  if (peg$silentFails === 0) {
2970
- peg$fail(peg$e33);
2996
+ peg$fail(peg$e34);
2971
2997
  }
2972
2998
  }
2973
2999
  if (s2 === peg$FAILED) {
@@ -2987,7 +3013,7 @@ function peg$parse(input, options) {
2987
3013
  if (s0 === peg$FAILED) {
2988
3014
  s1 = peg$FAILED;
2989
3015
  if (peg$silentFails === 0) {
2990
- peg$fail(peg$e32);
3016
+ peg$fail(peg$e33);
2991
3017
  }
2992
3018
  }
2993
3019
  return s0;
@@ -3022,7 +3048,7 @@ function peg$parse(input, options) {
3022
3048
  peg$silentFails--;
3023
3049
  s1 = peg$FAILED;
3024
3050
  if (peg$silentFails === 0) {
3025
- peg$fail(peg$e34);
3051
+ peg$fail(peg$e35);
3026
3052
  }
3027
3053
  return s0;
3028
3054
  }
@@ -3036,14 +3062,14 @@ function peg$parse(input, options) {
3036
3062
  else {
3037
3063
  s0 = peg$FAILED;
3038
3064
  if (peg$silentFails === 0) {
3039
- peg$fail(peg$e36);
3065
+ peg$fail(peg$e37);
3040
3066
  }
3041
3067
  }
3042
3068
  peg$silentFails--;
3043
3069
  if (s0 === peg$FAILED) {
3044
3070
  s1 = peg$FAILED;
3045
3071
  if (peg$silentFails === 0) {
3046
- peg$fail(peg$e35);
3072
+ peg$fail(peg$e36);
3047
3073
  }
3048
3074
  }
3049
3075
  return s0;
@@ -3060,7 +3086,7 @@ function peg$parse(input, options) {
3060
3086
  peg$silentFails--;
3061
3087
  s1 = peg$FAILED;
3062
3088
  if (peg$silentFails === 0) {
3063
- peg$fail(peg$e37);
3089
+ peg$fail(peg$e38);
3064
3090
  }
3065
3091
  return s0;
3066
3092
  }
@@ -3074,14 +3100,14 @@ function peg$parse(input, options) {
3074
3100
  else {
3075
3101
  s0 = peg$FAILED;
3076
3102
  if (peg$silentFails === 0) {
3077
- peg$fail(peg$e33);
3103
+ peg$fail(peg$e34);
3078
3104
  }
3079
3105
  }
3080
3106
  peg$silentFails--;
3081
3107
  if (s0 === peg$FAILED) {
3082
3108
  s1 = peg$FAILED;
3083
3109
  if (peg$silentFails === 0) {
3084
- peg$fail(peg$e38);
3110
+ peg$fail(peg$e39);
3085
3111
  }
3086
3112
  }
3087
3113
  return s0;
@@ -3098,7 +3124,7 @@ function peg$parse(input, options) {
3098
3124
  else {
3099
3125
  s2 = peg$FAILED;
3100
3126
  if (peg$silentFails === 0) {
3101
- peg$fail(peg$e33);
3127
+ peg$fail(peg$e34);
3102
3128
  }
3103
3129
  }
3104
3130
  while (s2 !== peg$FAILED) {
@@ -3110,7 +3136,7 @@ function peg$parse(input, options) {
3110
3136
  else {
3111
3137
  s2 = peg$FAILED;
3112
3138
  if (peg$silentFails === 0) {
3113
- peg$fail(peg$e33);
3139
+ peg$fail(peg$e34);
3114
3140
  }
3115
3141
  }
3116
3142
  }
@@ -3127,7 +3153,7 @@ function peg$parse(input, options) {
3127
3153
  if (s0 === peg$FAILED) {
3128
3154
  s1 = peg$FAILED;
3129
3155
  if (peg$silentFails === 0) {
3130
- peg$fail(peg$e39);
3156
+ peg$fail(peg$e40);
3131
3157
  }
3132
3158
  }
3133
3159
  return s0;
@@ -3136,57 +3162,57 @@ function peg$parse(input, options) {
3136
3162
  var s0, s1;
3137
3163
  peg$silentFails++;
3138
3164
  if (input.charCodeAt(peg$currPos) === 10) {
3139
- s0 = peg$c28;
3165
+ s0 = peg$c29;
3140
3166
  peg$currPos++;
3141
3167
  }
3142
3168
  else {
3143
3169
  s0 = peg$FAILED;
3144
3170
  if (peg$silentFails === 0) {
3145
- peg$fail(peg$e41);
3171
+ peg$fail(peg$e42);
3146
3172
  }
3147
3173
  }
3148
3174
  if (s0 === peg$FAILED) {
3149
- if (input.substr(peg$currPos, 2) === peg$c29) {
3150
- s0 = peg$c29;
3175
+ if (input.substr(peg$currPos, 2) === peg$c30) {
3176
+ s0 = peg$c30;
3151
3177
  peg$currPos += 2;
3152
3178
  }
3153
3179
  else {
3154
3180
  s0 = peg$FAILED;
3155
3181
  if (peg$silentFails === 0) {
3156
- peg$fail(peg$e42);
3182
+ peg$fail(peg$e43);
3157
3183
  }
3158
3184
  }
3159
3185
  if (s0 === peg$FAILED) {
3160
3186
  if (input.charCodeAt(peg$currPos) === 13) {
3161
- s0 = peg$c30;
3187
+ s0 = peg$c31;
3162
3188
  peg$currPos++;
3163
3189
  }
3164
3190
  else {
3165
3191
  s0 = peg$FAILED;
3166
3192
  if (peg$silentFails === 0) {
3167
- peg$fail(peg$e43);
3193
+ peg$fail(peg$e44);
3168
3194
  }
3169
3195
  }
3170
3196
  if (s0 === peg$FAILED) {
3171
3197
  if (input.charCodeAt(peg$currPos) === 8232) {
3172
- s0 = peg$c31;
3198
+ s0 = peg$c32;
3173
3199
  peg$currPos++;
3174
3200
  }
3175
3201
  else {
3176
3202
  s0 = peg$FAILED;
3177
3203
  if (peg$silentFails === 0) {
3178
- peg$fail(peg$e44);
3204
+ peg$fail(peg$e45);
3179
3205
  }
3180
3206
  }
3181
3207
  if (s0 === peg$FAILED) {
3182
3208
  if (input.charCodeAt(peg$currPos) === 8233) {
3183
- s0 = peg$c32;
3209
+ s0 = peg$c33;
3184
3210
  peg$currPos++;
3185
3211
  }
3186
3212
  else {
3187
3213
  s0 = peg$FAILED;
3188
3214
  if (peg$silentFails === 0) {
3189
- peg$fail(peg$e45);
3215
+ peg$fail(peg$e46);
3190
3216
  }
3191
3217
  }
3192
3218
  }
@@ -3197,7 +3223,7 @@ function peg$parse(input, options) {
3197
3223
  if (s0 === peg$FAILED) {
3198
3224
  s1 = peg$FAILED;
3199
3225
  if (peg$silentFails === 0) {
3200
- peg$fail(peg$e40);
3226
+ peg$fail(peg$e41);
3201
3227
  }
3202
3228
  }
3203
3229
  return s0;
@@ -3214,7 +3240,7 @@ function peg$parse(input, options) {
3214
3240
  else {
3215
3241
  s2 = peg$FAILED;
3216
3242
  if (peg$silentFails === 0) {
3217
- peg$fail(peg$e33);
3243
+ peg$fail(peg$e34);
3218
3244
  }
3219
3245
  }
3220
3246
  while (s2 !== peg$FAILED) {
@@ -3226,7 +3252,7 @@ function peg$parse(input, options) {
3226
3252
  else {
3227
3253
  s2 = peg$FAILED;
3228
3254
  if (peg$silentFails === 0) {
3229
- peg$fail(peg$e33);
3255
+ peg$fail(peg$e34);
3230
3256
  }
3231
3257
  }
3232
3258
  }
@@ -3243,7 +3269,7 @@ function peg$parse(input, options) {
3243
3269
  if (s0 === peg$FAILED) {
3244
3270
  s1 = peg$FAILED;
3245
3271
  if (peg$silentFails === 0) {
3246
- peg$fail(peg$e46);
3272
+ peg$fail(peg$e47);
3247
3273
  }
3248
3274
  }
3249
3275
  return s0;
@@ -3258,14 +3284,14 @@ function peg$parse(input, options) {
3258
3284
  else {
3259
3285
  s0 = peg$FAILED;
3260
3286
  if (peg$silentFails === 0) {
3261
- peg$fail(peg$e48);
3287
+ peg$fail(peg$e49);
3262
3288
  }
3263
3289
  }
3264
3290
  peg$silentFails--;
3265
3291
  if (s0 === peg$FAILED) {
3266
3292
  s1 = peg$FAILED;
3267
3293
  if (peg$silentFails === 0) {
3268
- peg$fail(peg$e47);
3294
+ peg$fail(peg$e48);
3269
3295
  }
3270
3296
  }
3271
3297
  return s0;