@gmb/bitmark-parser-generator 1.4.8 → 1.4.9

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 (149) 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/parser/bitmark/bitmark-peggy-parser.js +193 -73
  15. package/dist/cjs/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
  16. package/dist/cjs/generated/parser/text/text-peggy-parser.js +9 -9
  17. package/dist/cjs/generated/parser/text/text-peggy-parser.js.map +1 -1
  18. package/dist/cjs/generator/json/JsonGenerator.js +136 -126
  19. package/dist/cjs/generator/json/JsonGenerator.js.map +1 -1
  20. package/dist/cjs/generator/text/TextGenerator.js +13 -28
  21. package/dist/cjs/generator/text/TextGenerator.js.map +1 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/model/ast/BreakscapedString.js +3 -0
  24. package/dist/cjs/model/ast/BreakscapedString.js.map +1 -0
  25. package/dist/cjs/model/ast/StardardString.js +3 -0
  26. package/dist/cjs/model/ast/StardardString.js.map +1 -0
  27. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js +8 -7
  28. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
  29. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  30. package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  31. package/dist/cjs/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.js.map +1 -1
  32. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +17 -16
  33. package/dist/cjs/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  34. package/dist/cjs/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.js.map +1 -1
  35. package/dist/cjs/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.js.map +1 -1
  36. package/dist/cjs/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.js.map +1 -1
  37. package/dist/cjs/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js +2 -1
  38. package/dist/cjs/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js.map +1 -1
  39. package/dist/cjs/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.js.map +1 -1
  40. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js +2 -1
  41. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js.map +1 -1
  42. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js +1 -1
  43. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js.map +1 -1
  44. package/dist/cjs/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.js.map +1 -1
  45. package/dist/cjs/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +1 -1
  46. package/dist/cjs/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.js.map +1 -1
  47. package/dist/cjs/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.js.map +1 -1
  48. package/dist/cjs/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.js.map +1 -1
  49. package/dist/cjs/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.js.map +1 -1
  50. package/dist/cjs/parser/json/JsonParser.js +98 -99
  51. package/dist/cjs/parser/json/JsonParser.js.map +1 -1
  52. package/dist/esm/BitmarkParserGenerator.js +7 -4
  53. package/dist/esm/BitmarkParserGenerator.js.map +1 -1
  54. package/dist/esm/ast/BaseBuilder.js +6 -5
  55. package/dist/esm/ast/BaseBuilder.js.map +1 -1
  56. package/dist/esm/ast/Builder.js +2 -1
  57. package/dist/esm/ast/Builder.js.map +1 -1
  58. package/dist/esm/ast/ResourceBuilder.js +2 -1
  59. package/dist/esm/ast/ResourceBuilder.js.map +1 -1
  60. package/dist/esm/breakscaping/Breakscape.js +237 -0
  61. package/dist/esm/breakscaping/Breakscape.js.map +1 -0
  62. package/dist/esm/generated/build-info.js +1 -1
  63. package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js +193 -73
  64. package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
  65. package/dist/esm/generated/parser/text/text-peggy-parser.js +9 -8
  66. package/dist/esm/generated/parser/text/text-peggy-parser.js.map +1 -1
  67. package/dist/esm/generator/json/JsonGenerator.js +136 -126
  68. package/dist/esm/generator/json/JsonGenerator.js.map +1 -1
  69. package/dist/esm/generator/text/TextGenerator.js +13 -26
  70. package/dist/esm/generator/text/TextGenerator.js.map +1 -1
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/model/ast/BreakscapedString.js +2 -0
  73. package/dist/esm/model/ast/BreakscapedString.js.map +1 -0
  74. package/dist/esm/model/ast/StardardString.js +2 -0
  75. package/dist/esm/model/ast/StardardString.js.map +1 -0
  76. package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js +8 -7
  77. package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
  78. package/dist/esm/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
  79. package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
  80. package/dist/esm/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.js.map +1 -1
  81. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js +17 -16
  82. package/dist/esm/parser/bitmark/peg/contentProcessors/CardContentProcessor.js.map +1 -1
  83. package/dist/esm/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.js.map +1 -1
  84. package/dist/esm/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.js.map +1 -1
  85. package/dist/esm/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.js.map +1 -1
  86. package/dist/esm/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js +2 -1
  87. package/dist/esm/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.js.map +1 -1
  88. package/dist/esm/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.js.map +1 -1
  89. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js +2 -1
  90. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.js.map +1 -1
  91. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js +1 -1
  92. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.js.map +1 -1
  93. package/dist/esm/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.js.map +1 -1
  94. package/dist/esm/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.js.map +1 -1
  95. package/dist/esm/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.js.map +1 -1
  96. package/dist/esm/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.js.map +1 -1
  97. package/dist/esm/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.js.map +1 -1
  98. package/dist/esm/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.js.map +1 -1
  99. package/dist/esm/parser/json/JsonParser.js +98 -99
  100. package/dist/esm/parser/json/JsonParser.js.map +1 -1
  101. package/dist/types/BitmarkParserGenerator.d.ts.map +1 -1
  102. package/dist/types/ast/BaseBuilder.d.ts +4 -3
  103. package/dist/types/ast/BaseBuilder.d.ts.map +1 -1
  104. package/dist/types/ast/Builder.d.ts +157 -156
  105. package/dist/types/ast/Builder.d.ts.map +1 -1
  106. package/dist/types/ast/ResourceBuilder.d.ts +111 -110
  107. package/dist/types/ast/ResourceBuilder.d.ts.map +1 -1
  108. package/dist/types/breakscaping/Breakscape.d.ts +49 -0
  109. package/dist/types/breakscaping/Breakscape.d.ts.map +1 -0
  110. package/dist/types/generated/parser/bitmark/bitmark-peggy-parser.d.ts.map +1 -1
  111. package/dist/types/generated/parser/text/text-peggy-parser.d.ts +0 -1
  112. package/dist/types/generated/parser/text/text-peggy-parser.d.ts.map +1 -1
  113. package/dist/types/generator/json/JsonGenerator.d.ts +8 -7
  114. package/dist/types/generator/json/JsonGenerator.d.ts.map +1 -1
  115. package/dist/types/generator/text/TextGenerator.d.ts +11 -12
  116. package/dist/types/generator/text/TextGenerator.d.ts.map +1 -1
  117. package/dist/types/index.d.ts +1 -0
  118. package/dist/types/index.d.ts.map +1 -1
  119. package/dist/types/model/ast/BreakscapedString.d.ts +4 -0
  120. package/dist/types/model/ast/BreakscapedString.d.ts.map +1 -0
  121. package/dist/types/model/ast/Nodes.d.ts +97 -96
  122. package/dist/types/model/ast/Nodes.d.ts.map +1 -1
  123. package/dist/types/model/ast/StardardString.d.ts +4 -0
  124. package/dist/types/model/ast/StardardString.d.ts.map +1 -0
  125. package/dist/types/model/json/BitJson.d.ts +1 -1
  126. package/dist/types/parser/bitmark/peg/BitmarkPegParserProcessor.d.ts.map +1 -1
  127. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts +36 -35
  128. package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts.map +1 -1
  129. package/dist/types/parser/bitmark/peg/BitmarkPegParserValidator.d.ts +4 -3
  130. package/dist/types/parser/bitmark/peg/BitmarkPegParserValidator.d.ts.map +1 -1
  131. package/dist/types/parser/bitmark/peg/contentProcessors/BookChainContentProcessor.d.ts.map +1 -1
  132. package/dist/types/parser/bitmark/peg/contentProcessors/CardContentProcessor.d.ts.map +1 -1
  133. package/dist/types/parser/bitmark/peg/contentProcessors/ClozeTagContentProcessor.d.ts.map +1 -1
  134. package/dist/types/parser/bitmark/peg/contentProcessors/DefaultTagContentProcessor.d.ts.map +1 -1
  135. package/dist/types/parser/bitmark/peg/contentProcessors/ExampleTagContentProcessor.d.ts.map +1 -1
  136. package/dist/types/parser/bitmark/peg/contentProcessors/ImageSourceChainContentProcessor.d.ts.map +1 -1
  137. package/dist/types/parser/bitmark/peg/contentProcessors/ItemLeadTagContentProcessor.d.ts.map +1 -1
  138. package/dist/types/parser/bitmark/peg/contentProcessors/MarkChainContentProcessor.d.ts.map +1 -1
  139. package/dist/types/parser/bitmark/peg/contentProcessors/MarkConfigChainContentProcessor.d.ts.map +1 -1
  140. package/dist/types/parser/bitmark/peg/contentProcessors/MarkTagContentProcessor.d.ts.map +1 -1
  141. package/dist/types/parser/bitmark/peg/contentProcessors/PartnerChainContentProcessor.d.ts.map +1 -1
  142. package/dist/types/parser/bitmark/peg/contentProcessors/ReferenceTagContentProcessor.d.ts.map +1 -1
  143. package/dist/types/parser/bitmark/peg/contentProcessors/ResourceContentProcessor.d.ts.map +1 -1
  144. package/dist/types/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.d.ts +2 -1
  145. package/dist/types/parser/bitmark/peg/contentProcessors/TitleTagContentProcessor.d.ts.map +1 -1
  146. package/dist/types/parser/bitmark/peg/contentProcessors/TrueFalseTagContentProcessor.d.ts.map +1 -1
  147. package/dist/types/parser/json/JsonParser.d.ts +9 -0
  148. package/dist/types/parser/json/JsonParser.d.ts.map +1 -1
  149. 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.9",
9
9
  "author": "Get More Brain Ltd",
10
10
  "license": "ISC",
11
11
  "description": "A bitmark parser and generator using Peggy.js"