@gmb/bitmark-parser-generator 1.34.0 → 1.35.0
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.
- package/dist/browser/bitmark-parser-generator.min.js +1 -1
- package/dist/browser/bundle-report.html +2 -2
- package/dist/cjs/ast/Builder.js +18 -2
- package/dist/cjs/ast/Builder.js.map +1 -1
- package/dist/cjs/ast/writer/StreamWriter.js +13 -0
- package/dist/cjs/ast/writer/StreamWriter.js.map +1 -1
- package/dist/cjs/ast/writer/StringWriter.js +13 -0
- package/dist/cjs/ast/writer/StringWriter.js.map +1 -1
- package/dist/cjs/breakscaping/Breakscape.js +93 -91
- package/dist/cjs/breakscaping/Breakscape.js.map +1 -1
- package/dist/cjs/config/raw/bits.js +10 -0
- package/dist/cjs/config/raw/bits.js.map +1 -1
- package/dist/cjs/generated/build-info.js +1 -1
- package/dist/cjs/generated/parser/bitmark/bitmark-peggy-parser.js +311 -262
- package/dist/cjs/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
- package/dist/cjs/generator/bitmark/BitmarkGenerator.js +22 -2
- package/dist/cjs/generator/bitmark/BitmarkGenerator.js.map +1 -1
- package/dist/cjs/generator/json/JsonGenerator.js +75 -4
- package/dist/cjs/generator/json/JsonGenerator.js.map +1 -1
- package/dist/cjs/model/ast/NodeType.js +39 -36
- package/dist/cjs/model/ast/NodeType.js.map +1 -1
- package/dist/cjs/model/enum/BitType.js +1 -0
- package/dist/cjs/model/enum/BitType.js.map +1 -1
- package/dist/cjs/model/enum/TextFormat.js +1 -0
- package/dist/cjs/model/enum/TextFormat.js.map +1 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserHelper.js +13 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserHelper.js.map +1 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js +130 -43
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserTypes.js +3 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js +3 -1
- package/dist/cjs/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
- package/dist/cjs/parser/json/JsonParser.js +13 -7
- package/dist/cjs/parser/json/JsonParser.js.map +1 -1
- package/dist/cjs/parser/text/TextParser.js +16 -1
- package/dist/cjs/parser/text/TextParser.js.map +1 -1
- package/dist/cjs/utils/StringUtils.js +40 -0
- package/dist/cjs/utils/StringUtils.js.map +1 -1
- package/dist/esm/ast/Builder.js +18 -2
- package/dist/esm/ast/Builder.js.map +1 -1
- package/dist/esm/ast/writer/StreamWriter.js +13 -0
- package/dist/esm/ast/writer/StreamWriter.js.map +1 -1
- package/dist/esm/ast/writer/StringWriter.js +13 -0
- package/dist/esm/ast/writer/StringWriter.js.map +1 -1
- package/dist/esm/breakscaping/Breakscape.js +93 -91
- package/dist/esm/breakscaping/Breakscape.js.map +1 -1
- package/dist/esm/config/raw/bits.js +10 -0
- package/dist/esm/config/raw/bits.js.map +1 -1
- package/dist/esm/generated/build-info.js +1 -1
- package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js +311 -262
- package/dist/esm/generated/parser/bitmark/bitmark-peggy-parser.js.map +1 -1
- package/dist/esm/generator/bitmark/BitmarkGenerator.js +22 -2
- package/dist/esm/generator/bitmark/BitmarkGenerator.js.map +1 -1
- package/dist/esm/generator/json/JsonGenerator.js +75 -4
- package/dist/esm/generator/json/JsonGenerator.js.map +1 -1
- package/dist/esm/model/ast/NodeType.js +39 -36
- package/dist/esm/model/ast/NodeType.js.map +1 -1
- package/dist/esm/model/enum/BitType.js +1 -0
- package/dist/esm/model/enum/BitType.js.map +1 -1
- package/dist/esm/model/enum/TextFormat.js +1 -0
- package/dist/esm/model/enum/TextFormat.js.map +1 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserHelper.js +13 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserHelper.js.map +1 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js +130 -43
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserProcessor.js.map +1 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserTypes.js +3 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserTypes.js.map +1 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js +3 -1
- package/dist/esm/parser/bitmark/peg/BitmarkPegParserValidator.js.map +1 -1
- package/dist/esm/parser/json/JsonParser.js +13 -7
- package/dist/esm/parser/json/JsonParser.js.map +1 -1
- package/dist/esm/parser/text/TextParser.js +16 -1
- package/dist/esm/parser/text/TextParser.js.map +1 -1
- package/dist/esm/utils/StringUtils.js +40 -0
- package/dist/esm/utils/StringUtils.js.map +1 -1
- package/dist/types/ast/Builder.d.ts +14 -4
- package/dist/types/ast/Builder.d.ts.map +1 -1
- package/dist/types/ast/writer/StreamWriter.d.ts +2 -0
- package/dist/types/ast/writer/StreamWriter.d.ts.map +1 -1
- package/dist/types/ast/writer/StringWriter.d.ts +2 -0
- package/dist/types/ast/writer/StringWriter.d.ts.map +1 -1
- package/dist/types/ast/writer/Writer.d.ts +6 -0
- package/dist/types/ast/writer/Writer.d.ts.map +1 -1
- package/dist/types/breakscaping/Breakscape.d.ts +4 -0
- package/dist/types/breakscaping/Breakscape.d.ts.map +1 -1
- package/dist/types/config/raw/bits.d.ts.map +1 -1
- package/dist/types/generated/parser/bitmark/bitmark-peggy-parser.d.ts.map +1 -1
- package/dist/types/generator/bitmark/BitmarkGenerator.d.ts +3 -1
- package/dist/types/generator/bitmark/BitmarkGenerator.d.ts.map +1 -1
- package/dist/types/generator/json/JsonGenerator.d.ts +8 -0
- package/dist/types/generator/json/JsonGenerator.d.ts.map +1 -1
- package/dist/types/model/ast/NodeType.d.ts +78 -72
- package/dist/types/model/ast/NodeType.d.ts.map +1 -1
- package/dist/types/model/ast/Nodes.d.ts +7 -1
- package/dist/types/model/ast/Nodes.d.ts.map +1 -1
- package/dist/types/model/ast/TextNodes.d.ts +1 -1
- package/dist/types/model/ast/TextNodes.d.ts.map +1 -1
- package/dist/types/model/enum/BitType.d.ts +2 -0
- package/dist/types/model/enum/BitType.d.ts.map +1 -1
- package/dist/types/model/enum/TextFormat.d.ts +2 -0
- package/dist/types/model/enum/TextFormat.d.ts.map +1 -1
- package/dist/types/parser/bitmark/peg/BitmarkPegParserHelper.d.ts +1 -0
- package/dist/types/parser/bitmark/peg/BitmarkPegParserHelper.d.ts.map +1 -1
- package/dist/types/parser/bitmark/peg/BitmarkPegParserProcessor.d.ts +9 -2
- package/dist/types/parser/bitmark/peg/BitmarkPegParserProcessor.d.ts.map +1 -1
- package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts +8 -4
- package/dist/types/parser/bitmark/peg/BitmarkPegParserTypes.d.ts.map +1 -1
- package/dist/types/parser/bitmark/peg/BitmarkPegParserValidator.d.ts.map +1 -1
- package/dist/types/parser/json/JsonParser.d.ts.map +1 -1
- package/dist/types/parser/text/TextParser.d.ts.map +1 -1
- package/dist/types/utils/StringUtils.d.ts +24 -0
- package/dist/types/utils/StringUtils.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -14,6 +14,7 @@ class StringWriter {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
this._string = '';
|
|
16
16
|
this.endOfLineString = '\n';
|
|
17
|
+
this.lastWrite = '';
|
|
17
18
|
}
|
|
18
19
|
get isSync() {
|
|
19
20
|
return true;
|
|
@@ -61,9 +62,11 @@ class StringWriter {
|
|
|
61
62
|
return this;
|
|
62
63
|
if (value != null) {
|
|
63
64
|
this._buffer.push(value + this.endOfLineString);
|
|
65
|
+
this.lastWrite = value + this.endOfLineString;
|
|
64
66
|
}
|
|
65
67
|
else {
|
|
66
68
|
this._buffer.push(this.endOfLineString);
|
|
69
|
+
this.lastWrite = this.endOfLineString;
|
|
67
70
|
}
|
|
68
71
|
return this;
|
|
69
72
|
}
|
|
@@ -72,14 +75,19 @@ class StringWriter {
|
|
|
72
75
|
return this;
|
|
73
76
|
if (!values)
|
|
74
77
|
return this;
|
|
78
|
+
let str = '';
|
|
75
79
|
for (let i = 0, len = values.length; i < len; i++) {
|
|
76
80
|
const value = values[i];
|
|
77
81
|
this._buffer.push(value);
|
|
82
|
+
str += value;
|
|
78
83
|
if (delimiter && i < len - 1) {
|
|
79
84
|
this._buffer.push(delimiter);
|
|
85
|
+
str += delimiter;
|
|
80
86
|
}
|
|
81
87
|
this._buffer.push(this.endOfLineString);
|
|
88
|
+
str += this.endOfLineString;
|
|
82
89
|
}
|
|
90
|
+
this.lastWrite = str;
|
|
83
91
|
return this;
|
|
84
92
|
}
|
|
85
93
|
write(value) {
|
|
@@ -87,6 +95,8 @@ class StringWriter {
|
|
|
87
95
|
return this;
|
|
88
96
|
if (value == null)
|
|
89
97
|
return this;
|
|
98
|
+
if (value)
|
|
99
|
+
this.lastWrite = value;
|
|
90
100
|
this._buffer.push(value);
|
|
91
101
|
return this;
|
|
92
102
|
}
|
|
@@ -94,6 +104,9 @@ class StringWriter {
|
|
|
94
104
|
this.write(' ');
|
|
95
105
|
return this;
|
|
96
106
|
}
|
|
107
|
+
getLastWrite() {
|
|
108
|
+
return this.lastWrite;
|
|
109
|
+
}
|
|
97
110
|
}
|
|
98
111
|
export { StringWriter };
|
|
99
112
|
//# sourceMappingURL=StringWriter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringWriter.js","sourceRoot":"","sources":["../../../../src/ast/writer/StringWriter.ts"],"names":[],"mappings":";;;;;;;;;AAEA;;GAEG;AACH,MAAM,YAAY;IAAlB;QAEU,YAAO,GAAW,EAAE,CAAC;QACtB,oBAAe,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"StringWriter.js","sourceRoot":"","sources":["../../../../src/ast/writer/StringWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,103 +9,101 @@ import { StringUtils } from '../utils/StringUtils';
|
|
|
9
9
|
* being broken (split) by a special charater.
|
|
10
10
|
*
|
|
11
11
|
* The special character is ^
|
|
12
|
-
* To include the special character in a text
|
|
12
|
+
* To include the special character in a text which is breakscaped, use ^^ (once), ^^^ (twice), etc.
|
|
13
13
|
*
|
|
14
|
-
*
|
|
15
|
-
* - inline: == ==> =^=
|
|
16
|
-
* - title block: (SOL)[##]#(space) ==> (SOL)[##]#^(space)
|
|
17
|
-
* - new block: (SOL)|(WS EOL) ==> (SOL)|^(WS EOL)
|
|
18
|
-
* - code block: (SOL)|code(:type) ==> (SOL)|^code(:type)
|
|
19
|
-
* - image block: (SOL)|image:(url) ==> (SOL)|^image:(url)
|
|
20
|
-
* - bullet list: (SOL)•(space) ==> (SOL)•^(space)
|
|
21
|
-
* - ordered list: (SOL)•1(space) ==> (SOL)•^1(space)
|
|
22
|
-
* - tag list +: (SOL)•+(space) ==> (SOL)•^+(space)
|
|
23
|
-
* - tag list -: (SOL)•-(space) ==> (SOL)•^-(space)
|
|
24
|
-
* - bold: ** ==> *^*
|
|
25
|
-
* - light: `` ==> `^`
|
|
26
|
-
* - italic: __ ==> _^_
|
|
27
|
-
* - highlight: !! ==> !^!
|
|
28
|
-
* - start of bit: [. ==> [^.
|
|
29
|
-
* - start of property: [@ ==> [^@
|
|
30
|
-
* - start of title: [# ==> [^#
|
|
31
|
-
* - start of anchor: [▼ ==> [^▼
|
|
32
|
-
* - start of reference: [► ==> [^►
|
|
33
|
-
* - start of item/lead: [% ==> [^%
|
|
34
|
-
* - start of instruction: [! ==> [^!
|
|
35
|
-
* - start of hint: [? ==> [^?
|
|
36
|
-
* - start of true statement: [+ ==> [^+
|
|
37
|
-
* - start of false statement: [- ==> [^-
|
|
38
|
-
* - start of sample solution: [$ ==> [^$
|
|
39
|
-
* - start of gap: [_ ==> [^_
|
|
40
|
-
* - start of mark: [= ==> [^=
|
|
41
|
-
* - start of resource: [& ==> [^&
|
|
42
|
-
* - end of tag: ] ==> ^]
|
|
14
|
+
* Any sequence can be breakscaped by breaking it with a ^ character.
|
|
43
15
|
*
|
|
16
|
+
* The following unbreakscaping rules are applied when unbreakscaping text:
|
|
17
|
+
* - hat: ^ ==>
|
|
18
|
+
* - hat: ^^ ==> ^
|
|
19
|
+
* - hat: ^..N ==> ^..N-1
|
|
44
20
|
*
|
|
45
|
-
* The following
|
|
46
|
-
* -
|
|
47
|
-
* -
|
|
48
|
-
* -
|
|
49
|
-
* -
|
|
50
|
-
* -
|
|
51
|
-
* -
|
|
52
|
-
* -
|
|
53
|
-
* -
|
|
54
|
-
* -
|
|
55
|
-
* -
|
|
56
|
-
* -
|
|
57
|
-
* -
|
|
58
|
-
* -
|
|
59
|
-
* -
|
|
60
|
-
* -
|
|
61
|
-
* -
|
|
62
|
-
* -
|
|
63
|
-
* -
|
|
64
|
-
* -
|
|
65
|
-
* -
|
|
66
|
-
* -
|
|
67
|
-
* -
|
|
68
|
-
* -
|
|
69
|
-
* -
|
|
70
|
-
* -
|
|
71
|
-
* -
|
|
72
|
-
* -
|
|
73
|
-
* -
|
|
74
|
-
* -
|
|
21
|
+
* The following breakscaping rules are applied when breakscaping text:
|
|
22
|
+
* - hat: ^ ==> ^^
|
|
23
|
+
* - hat: ^^ ==> ^^^
|
|
24
|
+
* - hat: ^..N ==> ^..N+1
|
|
25
|
+
* - inline: == ==> =^=
|
|
26
|
+
* - title block: (SOL)[##]#(space) ==> (SOL)[##]#^(space)
|
|
27
|
+
* - new block: (SOL)|(WS EOL) ==> (SOL)|^(WS EOL)
|
|
28
|
+
* - code block: (SOL)|code(:type) ==> (SOL)|^code(:type)
|
|
29
|
+
* - image block: (SOL)|image:(url) ==> (SOL)|^image:(url)
|
|
30
|
+
* - bullet list: (SOL)•(space) ==> (SOL)•^(space)
|
|
31
|
+
* - simple list: (SOL)•_(space) ==> (SOL)•^_(space)
|
|
32
|
+
* - ordered list (numeric): (SOL)•<numbers>(space) ==> (SOL)•^<numbers>(space)
|
|
33
|
+
* - ordered list: (roman,lower) (SOL)•<numbers>i(space) ==> (SOL)•^<numbers>i(space)
|
|
34
|
+
* - ordered list: (roman,upper) (SOL)•<numbers>I(space) ==> (SOL)•^<numbers>I(space)
|
|
35
|
+
* - ordered list: (SOL)•<letters>(space) ==> (SOL)•^<letters>(space)
|
|
36
|
+
* - tag list +: (SOL)•+(space) ==> (SOL)•^+(space)
|
|
37
|
+
* - tag list -: (SOL)•-(space) ==> (SOL)•^-(space)
|
|
38
|
+
* - bold: ** ==> *^*
|
|
39
|
+
* - half-bold (at end): *<end> ==> *^<end>
|
|
40
|
+
* - half-bold (at start): <start>* ==> <start>^*
|
|
41
|
+
* - light: `` ==> `^`
|
|
42
|
+
* - half-light (at end): `<end> ==> `^<end>
|
|
43
|
+
* - half-light (at start): <start>` ==> <start>^`
|
|
44
|
+
* - italic: __ ==> _^_
|
|
45
|
+
* - half-italic (at end): _<end> ==> _^<end>
|
|
46
|
+
* - half-italic (at start): <start>_ ==> <start>^_
|
|
47
|
+
* - highlight: !! ==> !^!
|
|
48
|
+
* - half-highlight (at end): !<end> ==> !^<end>
|
|
49
|
+
* - half-highlight (at start): <start>! ==> <start>^!
|
|
50
|
+
* - start of bit (at end): [<end> ==> [^<end>
|
|
51
|
+
* - start of bit: [. ==> [^.
|
|
52
|
+
* - start of property: [@ ==> [^@
|
|
53
|
+
* - start of title: [# ==> [^#
|
|
54
|
+
* - start of anchor: [▼ ==> [^▼
|
|
55
|
+
* - start of reference: [► ==> [^►
|
|
56
|
+
* - start of item/lead: [% ==> [^%
|
|
57
|
+
* - start of instruction: [! ==> [^!
|
|
58
|
+
* - start of hint: [? ==> [^?
|
|
59
|
+
* - start of true statement: [+ ==> [^+
|
|
60
|
+
* - start of false statement: [- ==> [^-
|
|
61
|
+
* - start of sample solution: [$ ==> [^$
|
|
62
|
+
* - start of gap: [_ ==> [^_
|
|
63
|
+
* - start of mark: [= ==> [^=
|
|
64
|
+
* - start of resource: [& ==> [^&
|
|
65
|
+
* - end of tag: ] ==> ^]
|
|
66
|
+
*
|
|
67
|
+
* In non- bitmark++ / bitmark-- text, breakscaping is only applied to bit tags.
|
|
68
|
+
* This is true for both breakscaping and unbreakscaping.
|
|
69
|
+
*
|
|
70
|
+
* The following unbreakscaping rules are applied when unbreakscaping plain text:
|
|
71
|
+
* - start of bit: <line start>[^. ==> <line start>[.
|
|
72
|
+
* - start of bit: <line start>[^^. ==> <line start>[^.
|
|
73
|
+
* - start of bit: <line start>[^..N. ==> <line start>[^..N-1.
|
|
74
|
+
*
|
|
75
|
+
* The following breakscaping rules are applied when breakscaping plain text:
|
|
76
|
+
* - start of bit: <line start>[. ==> <line start>[^.
|
|
77
|
+
* - start of bit: <line start>[^. ==> <line start>[^^.
|
|
78
|
+
* - start of bit: <line start>[^..N. ==> <line start>[^..N+1.
|
|
75
79
|
*/
|
|
76
80
|
//
|
|
77
81
|
// Breakscaping
|
|
78
82
|
//
|
|
79
|
-
const REGEX_MARKS = /([*`_
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
const
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
//
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
// 5: end of BLOCK
|
|
93
|
-
// 6: start of TITLE_BLOCK
|
|
94
|
-
// 7: ^ in TITLE_BLOCK
|
|
95
|
-
// 8: end of TITLE_BLOCK
|
|
96
|
-
// 9: start of LIST_BLOCK
|
|
97
|
-
// 10: ^ in LIST_BLOCK
|
|
98
|
-
// 11: end of LIST_BLOCK part 1
|
|
99
|
-
// 12: end of LIST_BLOCK part 2
|
|
100
|
-
// 13: start of START_OF_TAG block
|
|
101
|
-
// 14: ^ in START_OF_TAG block
|
|
102
|
-
// 15: end of START_OF_TAG block
|
|
103
|
-
// 16: ^ in END_OF_TAG block
|
|
104
|
-
// 17: end of END_OF_TAG block
|
|
83
|
+
const REGEX_MARKS = /([*`_!=])\1/; // $1^$1
|
|
84
|
+
const REGEX_START = /^([*`_!=])/; // ^$2
|
|
85
|
+
const REGEX_END = /([*`_!=\\[])$/; // $3^
|
|
86
|
+
const REGEX_BLOCKS = /^(\|)(code[\s]*|code:|image:|[\s]*$)/; // $4^$5
|
|
87
|
+
const REGEX_TITLE_BLOCKS = /^([#]{1,3})([^\S\r\n]+)/; // $6^$7
|
|
88
|
+
const REGEX_LIST_BLOCKS = /^(•)([0-9]+[iI]*|[a-zA-Z]{1}|_|\+|-|)([^\S\r\n]+)/; // $8^$9$10
|
|
89
|
+
const REGEX_START_OF_TAG = /(\[)([.@#▼►%!?+\-$_=&])/; // $11^$12
|
|
90
|
+
const REGEX_FOOTER_DIVIDER = /^(~)(~~~)/; // $13^$14
|
|
91
|
+
const REGEX_PLAIN_TEXT_DIVIDER = /^(\$)(\$\$\$)/; // $15^$16
|
|
92
|
+
const REGEX_END_OF_TAG = /(\^*])/; // ^$17
|
|
93
|
+
const REGEX_HATS = /(\^+)/; // $18^ // Must be last
|
|
94
|
+
// const BREAKSCAPE_REGEX_SOURCE = `${REGEX_MARKS.source}|${REGEX_BLOCKS.source}|${REGEX_TITLE_BLOCKS.source}|${REGEX_LIST_BLOCKS.source}|${REGEX_START_OF_TAG.source}|${REGEX_FOOTER_DIVIDER.source}|${REGEX_PLAIN_TEXT_DIVIDER.source}|${REGEX_END_OF_TAG.source}|${REGEX_HATS.source}`;
|
|
95
|
+
const BREAKSCAPE_REGEX_SOURCE = `${REGEX_MARKS.source}|${REGEX_START.source}|${REGEX_END.source}|${REGEX_BLOCKS.source}|${REGEX_TITLE_BLOCKS.source}|${REGEX_LIST_BLOCKS.source}|${REGEX_START_OF_TAG.source}|${REGEX_FOOTER_DIVIDER.source}|${REGEX_PLAIN_TEXT_DIVIDER.source}|${REGEX_END_OF_TAG.source}|${REGEX_HATS.source}`;
|
|
105
96
|
const BREAKSCAPE_REGEX = new RegExp(BREAKSCAPE_REGEX_SOURCE, 'gm');
|
|
106
|
-
const BREAKSCAPE_REGEX_REPLACER = '$1$
|
|
107
|
-
const
|
|
108
|
-
const
|
|
97
|
+
// const BREAKSCAPE_REGEX_REPLACER = '$1$2$4$6$9$11$13$16^$1$3$5$7$8$10$12$14$15';
|
|
98
|
+
const BREAKSCAPE_REGEX_REPLACER = '$1$3$4$6$8$11$13$15$18^$1$2$5$7$9$10$12$14$16$17';
|
|
99
|
+
const BREAKSCAPE_BIT_TAG_ONLY_REGEX = new RegExp('^(\\[)(\\^*)(\\.)', 'gm');
|
|
100
|
+
const BREAKSCAPE_BIT_TAG_ONLY_REGEX_REPLACER = '$1^$2$3';
|
|
101
|
+
// const UNBREAKSCAPE_REGEX = new RegExp(UNBREAKSCAPE_REGEX_SOURCE, 'gm');
|
|
102
|
+
// const UNBREAKSCAPE_REGEX_REPLACER = BREAKSCAPE_REGEX_REPLACER.replace(/\^/g, ''); // Remove ^ from the regex replacer
|
|
103
|
+
const UNBREAKSCAPE_REGEX = new RegExp('\\^([\\^]*)', 'gm');
|
|
104
|
+
const UNBREAKSCAPE_REGEX_REPLACER = '$1';
|
|
105
|
+
const UNBREAKSCAPE_BIT_TAG_ONLY_REGEX = new RegExp('^(\\[)\\^(\\^*)(\\.)', 'gm');
|
|
106
|
+
const UNBREAKSCAPE_BIT_TAG_ONLY_REGEX_REPLACER = '$1$2$3';
|
|
109
107
|
// Regex explanation:
|
|
110
108
|
// - match a single | or • or # character at the start of a line and capture in group 1
|
|
111
109
|
// This will capture all new block characters within the code text.
|
|
@@ -132,7 +130,9 @@ class Breakscape {
|
|
|
132
130
|
const breakscapeStr = (str) => {
|
|
133
131
|
if (!str)
|
|
134
132
|
return str;
|
|
135
|
-
|
|
133
|
+
const regex = opts.bitTagOnly ? BREAKSCAPE_BIT_TAG_ONLY_REGEX : BREAKSCAPE_REGEX;
|
|
134
|
+
const replacer = opts.bitTagOnly ? BREAKSCAPE_BIT_TAG_ONLY_REGEX_REPLACER : BREAKSCAPE_REGEX_REPLACER;
|
|
135
|
+
str = str.replace(regex, replacer);
|
|
136
136
|
return str;
|
|
137
137
|
};
|
|
138
138
|
if (Array.isArray(val)) {
|
|
@@ -165,7 +165,9 @@ class Breakscape {
|
|
|
165
165
|
const unbreakscapeStr = (str) => {
|
|
166
166
|
if (!str)
|
|
167
167
|
return str;
|
|
168
|
-
|
|
168
|
+
const regex = opts.bitTagOnly ? UNBREAKSCAPE_BIT_TAG_ONLY_REGEX : UNBREAKSCAPE_REGEX;
|
|
169
|
+
const replacer = opts.bitTagOnly ? UNBREAKSCAPE_BIT_TAG_ONLY_REGEX_REPLACER : UNBREAKSCAPE_REGEX_REPLACER;
|
|
170
|
+
str = str.replace(regex, replacer);
|
|
169
171
|
return str;
|
|
170
172
|
};
|
|
171
173
|
if (Array.isArray(val)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breakscape.js","sourceRoot":"","sources":["../../../src/breakscaping/Breakscape.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD
|
|
1
|
+
{"version":3,"file":"Breakscape.js","sourceRoot":"","sources":["../../../src/breakscaping/Breakscape.ts"],"names":[],"mappings":"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"}
|
|
@@ -497,6 +497,16 @@ const BITS = {
|
|
|
497
497
|
],
|
|
498
498
|
textFormatDefault: TextFormat.text,
|
|
499
499
|
},
|
|
500
|
+
[BitType.formula]: {
|
|
501
|
+
since: '1.35.0',
|
|
502
|
+
tags: [
|
|
503
|
+
{
|
|
504
|
+
type: BitTagType.group,
|
|
505
|
+
configKey: GroupConfigKey.group_standardTags,
|
|
506
|
+
},
|
|
507
|
+
],
|
|
508
|
+
textFormatDefault: TextFormat.latex,
|
|
509
|
+
},
|
|
500
510
|
[BitType.appCodeCell]: { since: '1.4.3', baseBitType: BitType.code },
|
|
501
511
|
[BitType.appCodeEditor]: { since: '1.4.3', baseBitType: BitType.code },
|
|
502
512
|
[BitType.appCodeIde]: { since: '1.4.3', baseBitType: BitType.code },
|