@keymanapp/common-types 17.0.248-alpha → 17.0.250-alpha
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.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d1b50f0f-d4fc-5277-9486-8918c1900b0a")}catch(e){}}();
|
|
2
2
|
/**
|
|
3
3
|
* Utilities for transform and marker processing
|
|
4
4
|
*/
|
|
@@ -27,11 +27,13 @@ export declare class MarkerParser {
|
|
|
27
27
|
* Marker sentinel as a string - U+FFFF
|
|
28
28
|
*/
|
|
29
29
|
static readonly SENTINEL: string;
|
|
30
|
+
/** Marker sentinel as a regex match */
|
|
30
31
|
static readonly SENTINEL_MATCH: string;
|
|
31
32
|
/**
|
|
32
33
|
* Marker code as a string - U+0008
|
|
33
34
|
*/
|
|
34
35
|
static readonly MARKER_CODE: string;
|
|
36
|
+
/** Marker code as a regex match */
|
|
35
37
|
static readonly MARKER_CODE_MATCH: string;
|
|
36
38
|
/** Minimum ID (trailing code unit) */
|
|
37
39
|
static readonly MIN_MARKER_INDEX = 1;
|
|
@@ -59,6 +61,58 @@ export declare class MarkerParser {
|
|
|
59
61
|
static markerOutput(n: number, forMatch?: boolean): string;
|
|
60
62
|
/** @returns all marker strings as sentinel values */
|
|
61
63
|
static toSentinelString(s: string, markers?: OrderedStringList, forMatch?: boolean): string;
|
|
64
|
+
/**
|
|
65
|
+
* NFD a string, respecting markers.
|
|
66
|
+
* @param s input string
|
|
67
|
+
* @param forMatch true if regex, false if individual
|
|
68
|
+
* @returns the normalized string
|
|
69
|
+
*/
|
|
70
|
+
static nfd_markers(s: string, forMatch?: boolean): string;
|
|
71
|
+
/**
|
|
72
|
+
* NFD a safe subset of a string, respecting markers
|
|
73
|
+
* @param s input string
|
|
74
|
+
* @param map output array of marker chars
|
|
75
|
+
* @param forMatch true if used for regexes
|
|
76
|
+
* @returns the updated string
|
|
77
|
+
*/
|
|
78
|
+
static nfd_markers_segment(s: string, map: MarkerMap, forMatch?: boolean): string;
|
|
79
|
+
/** return the string s but with a marker sequence before it */
|
|
80
|
+
static prepend_marker(s: string, marker: number, forMatch?: boolean): string;
|
|
81
|
+
/**
|
|
82
|
+
* Add back all markers in the map to the string
|
|
83
|
+
* @param s input string
|
|
84
|
+
* @param map output: the marker map
|
|
85
|
+
* @param forMatch if true, use regex format
|
|
86
|
+
*/
|
|
87
|
+
static add_back_markers(s: string, map: MarkerMap, forMatch?: boolean): string;
|
|
88
|
+
/**
|
|
89
|
+
* Remove (and parse) markers from a string
|
|
90
|
+
* @param s input string
|
|
91
|
+
* @param map output map containing marker locations
|
|
92
|
+
* @param forMatch true if regex
|
|
93
|
+
* @returns the original string, without any markers
|
|
94
|
+
*/
|
|
95
|
+
static remove_markers(s: string, map: MarkerMap, forMatch?: boolean): string;
|
|
96
|
+
/**
|
|
97
|
+
* analyze the string to see if it begins with a marker
|
|
98
|
+
* @param s input string
|
|
99
|
+
* @param forMatch true if regex
|
|
100
|
+
* @returns parsed marker details
|
|
101
|
+
*/
|
|
102
|
+
static parse_next_marker(s: string, forMatch?: boolean): MarkerResult;
|
|
103
|
+
}
|
|
104
|
+
export interface MarkerEntry {
|
|
105
|
+
/** code point 'glued' to, or MARKER_BEFORE_EOT */
|
|
106
|
+
ch?: string;
|
|
107
|
+
/** marker number, 1-based */
|
|
108
|
+
marker?: number;
|
|
109
|
+
}
|
|
110
|
+
/** list of marker entries, from remove_markers */
|
|
111
|
+
export type MarkerMap = Array<MarkerEntry>;
|
|
112
|
+
/** return type from parse_next_marker */
|
|
113
|
+
export interface MarkerResult {
|
|
114
|
+
marker?: number;
|
|
115
|
+
match?: string;
|
|
62
116
|
}
|
|
63
117
|
/**
|
|
64
118
|
* Class for helping with markers
|
|
@@ -140,5 +194,5 @@ export declare class ElementParser {
|
|
|
140
194
|
/** Split a string into ElementSegments */
|
|
141
195
|
static segment(str: string): ElementSegment[];
|
|
142
196
|
}
|
|
143
|
-
//# debugId=
|
|
197
|
+
//# debugId=d1b50f0f-d4fc-5277-9486-8918c1900b0a
|
|
144
198
|
//# sourceMappingURL=pattern-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"
|
|
1
|
+
{"debug_id":"d1b50f0f-d4fc-5277-9486-8918c1900b0a","file":"pattern-parser.d.ts","mappings":";AAAA;;GAEG;AAqBH,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,YAAY,CAAC,IAAI,EAAG,MAAM,GAAI,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,gBAAuB,EAAE,SAAa;IAEtC;;OAEG;IACH,gBAAuB,UAAU,YAAY;IAE7C;;OAEG;IACH,gBAAuB,aAAa,OAAO;IAE3C;;OAEG;IACH,gBAAuB,QAAQ,SAA+C;IAC9E,uCAAuC;IACvC,MAAM,CAAC,QAAQ,CAAC,cAAc,SAA0C;IACxE;;OAEG;IACH,gBAAuB,WAAW,SAA+C;IACjF,mCAAmC;IACnC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,SAA0C;IAE3E,sCAAsC;IACtC,gBAAuB,gBAAgB,KAA8B;IACrE,4CAA4C;IAC5C,gBAAuB,gBAAgB,SAA8B;IACrE,kCAAkC;IAClC,gBAAuB,gBAAgB,SAA8B;IACrE,2BAA2B;IAC3B,gBAAuB,gBAAgB,SAA8B;IAErE,OAAO,CAAC,MAAM,CAAC,cAAc;IAM7B,yCAAyC;IACzC,gBAAuB,gBAAgB,SAAiC;IAExE;;OAEG;IACH,gBAAuB,SAAS,SAAmC;IAEnE;;;;OAIG;WACW,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAOlD,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAQjC,oCAAoC;WACtB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM;IAWjE,qDAAqD;WACvC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IAuBnG;;;;;OAKG;WACW,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IA4FjE;;;;;;OAMG;WACW,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IAkBzF,+DAA+D;WACjD,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IAQpF;;;;;OAKG;WACW,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IAqDtF;;;;;;OAMG;WACW,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,MAAM;IAgDpF;;;;;OAKG;WACW,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAI,YAAY;CA6B9E;AAWD,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,EAAE,CAAC,EAAG,MAAM,CAAC;IACb,6BAA6B;IAC7B,MAAM,CAAC,EAAG,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;AAE3C,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;OAEG;IACH,gBAAuB,EAAE,SAAa;IAEtC;;OAEG;IACH,gBAAuB,gBAAgB,SAA+B;IAEtE;;OAEG;IACH,gBAAuB,aAAa,SAAiC;IAErE;;OAEG;IACH,gBAAuB,qBAAqB,SAAqC;IAEjF;;;OAGG;IACH,gBAAuB,oBAAoB,SAAoC;IAE/E;;;;OAIG;WACW,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAIxD;;;;OAIG;WACW,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrD;;;;OAIG;WACW,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;CAKjD;AAED,kCAAkC;AAClC,oBAAY,WAAW;IACrB,SAAS,MAAM;IACf,OAAO,OAAM;IACb,IAAI,MAAM;IACV,MAAM,MAAM;CACb;AAED,gDAAgD;AAChD,qBAAa,cAAc;IAMN,OAAO,EAAE,MAAM;IALlC,SAAgB,IAAI,EAAE,WAAW,CAAC;IAClC;;;OAGG;gBACgB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAYtD,uBAAuB;IACvB,IAAI,SAAS,IAAK,MAAM,CAUvB;CACF;AAED,4DAA4D;AAC5D,qBAAa,aAAa;IACxB;;;;0DAIsD;IACtD,gBAAuB,4BAA4B,SAAgB;IAEnE,8EAA8E;IAC9E,gBAAuB,sBAAsB,SACyE;IAEtH,kEAAkE;IAClE,gBAAuB,UAAU,SAAS;IAE1C,qEAAqE;IACrE,gBAAuB,aAAa,SAAU;IAE9C,0CAA0C;WAC5B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,EAAE;CAyBrD","names":[],"sourceRoot":"","sources":["../../../src/ldml-keyboard/pattern-parser.ts"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
1
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="323913d4-2329-533d-9718-2f68c019ca23")}catch(e){}}();
|
|
2
2
|
/**
|
|
3
3
|
* Utilities for transform and marker processing
|
|
4
4
|
*/
|
|
@@ -38,11 +38,13 @@ export class MarkerParser {
|
|
|
38
38
|
* Marker sentinel as a string - U+FFFF
|
|
39
39
|
*/
|
|
40
40
|
static SENTINEL = String.fromCodePoint(constants.uc_sentinel);
|
|
41
|
+
/** Marker sentinel as a regex match */
|
|
41
42
|
static SENTINEL_MATCH = '\\u' + hexQuad(constants.uc_sentinel);
|
|
42
43
|
/**
|
|
43
44
|
* Marker code as a string - U+0008
|
|
44
45
|
*/
|
|
45
46
|
static MARKER_CODE = String.fromCodePoint(constants.marker_code);
|
|
47
|
+
/** Marker code as a regex match */
|
|
46
48
|
static MARKER_CODE_MATCH = '\\u' + hexQuad(constants.marker_code);
|
|
47
49
|
/** Minimum ID (trailing code unit) */
|
|
48
50
|
static MIN_MARKER_INDEX = constants.marker_min_index;
|
|
@@ -120,7 +122,294 @@ export class MarkerParser {
|
|
|
120
122
|
}
|
|
121
123
|
});
|
|
122
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* NFD a string, respecting markers.
|
|
127
|
+
* @param s input string
|
|
128
|
+
* @param forMatch true if regex, false if individual
|
|
129
|
+
* @returns the normalized string
|
|
130
|
+
*/
|
|
131
|
+
static nfd_markers(s, forMatch) {
|
|
132
|
+
// Note: parallel to ldml::normalize_nfd_markers()
|
|
133
|
+
if (!s)
|
|
134
|
+
return s;
|
|
135
|
+
/** Accumulate output normalized string */
|
|
136
|
+
let out = '';
|
|
137
|
+
/** 's' split into code point units */
|
|
138
|
+
let a = [...s];
|
|
139
|
+
/** index into `a` where the current segment starts */
|
|
140
|
+
let seg_start = 0;
|
|
141
|
+
/** index into 'a' following end of current segment */
|
|
142
|
+
let seg_end = 0;
|
|
143
|
+
/** iterator over 'a' */
|
|
144
|
+
let i = 0;
|
|
145
|
+
/** for parallelism with C++, end of string */
|
|
146
|
+
let str_end = a.length;
|
|
147
|
+
/** map of all markers in the string */
|
|
148
|
+
const mall = [];
|
|
149
|
+
// preprocess string, also check for markers
|
|
150
|
+
const all_no_markers = MarkerParser.remove_markers(s, mall, forMatch);
|
|
151
|
+
if (mall.length == 0) {
|
|
152
|
+
// no markers, so just normalize as a single segment
|
|
153
|
+
return all_no_markers.normalize("NFD");
|
|
154
|
+
}
|
|
155
|
+
// split segments on grapheme cluster boundaries for processing
|
|
156
|
+
const raw_segments = Array.from(graphemeSegmenter.segment(all_no_markers))
|
|
157
|
+
.map(({ segment }) => segment)
|
|
158
|
+
.map((c) => c.codePointAt(0));
|
|
159
|
+
/**
|
|
160
|
+
* Set of all code points which have a boundary before.
|
|
161
|
+
* This parallels nfd->hasBoundaryBefore().
|
|
162
|
+
*/
|
|
163
|
+
const hasBoundaryBefore = new Set(raw_segments);
|
|
164
|
+
// now we'll loop through looking for normalization-safe subsegments of [seg_start, seg_end)
|
|
165
|
+
// For example (sentinel mode) the following would be segments:
|
|
166
|
+
// - A
|
|
167
|
+
// - E\u0320\u0302
|
|
168
|
+
// - U\u0320\m{marker}\u0300
|
|
169
|
+
//
|
|
170
|
+
// The marker will typically 'look' like an NFD-safe boundary, but it's not! It's part of the
|
|
171
|
+
// subsegment, we want to skip over it. This is why we use parse_next_marker to look-ahead to see
|
|
172
|
+
// if there is actually a marker under the iterator.
|
|
173
|
+
//
|
|
174
|
+
// We don't assume that the marker sentinel or regex appears as an NFD boundary, that is why
|
|
175
|
+
// the parse function and the nfd function are called in parallel.
|
|
176
|
+
do {
|
|
177
|
+
/** remainder of string i..end, for match */
|
|
178
|
+
const rest = a.slice(i).join('');
|
|
179
|
+
const p = this.parse_next_marker(rest, forMatch);
|
|
180
|
+
const have_marker = !!(p?.match);
|
|
181
|
+
// First, categorize the current character.
|
|
182
|
+
if (i === str_end) {
|
|
183
|
+
// at end of string, so this is also the end of the segment.
|
|
184
|
+
seg_end = i;
|
|
185
|
+
}
|
|
186
|
+
else if (hasBoundaryBefore.has(rest.codePointAt(0)) && !have_marker) {
|
|
187
|
+
// it's an NFD safe boundary, but NOT a marker
|
|
188
|
+
// (if it were a marker, we would fall through to consume the marker)
|
|
189
|
+
// segment ends before this code point
|
|
190
|
+
seg_end = i;
|
|
191
|
+
// move the index past the NFD boundary
|
|
192
|
+
i++;
|
|
193
|
+
}
|
|
194
|
+
else if (have_marker) {
|
|
195
|
+
// we have a marker. move the index past the marker.
|
|
196
|
+
i += [...p.match].length;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// non boundary. just move the index forward
|
|
200
|
+
i++;
|
|
201
|
+
}
|
|
202
|
+
// Next, if we found a segment boundary (which includes
|
|
203
|
+
// end of string) process it
|
|
204
|
+
if (seg_end !== seg_start) {
|
|
205
|
+
// re-join the segment from the iterated code points
|
|
206
|
+
const segment = a.slice(seg_start, seg_end).join('');
|
|
207
|
+
const m = [];
|
|
208
|
+
// process the subsegment
|
|
209
|
+
const segment_nfd = MarkerParser.nfd_markers_segment(segment, m, forMatch);
|
|
210
|
+
// append the processed segment to the output buffer
|
|
211
|
+
out = out + segment_nfd;
|
|
212
|
+
// the end of this segment is the start of the next one.
|
|
213
|
+
seg_start = seg_end;
|
|
214
|
+
}
|
|
215
|
+
} while (seg_end != str_end); // until the last codepoint processed
|
|
216
|
+
return out;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* NFD a safe subset of a string, respecting markers
|
|
220
|
+
* @param s input string
|
|
221
|
+
* @param map output array of marker chars
|
|
222
|
+
* @param forMatch true if used for regexes
|
|
223
|
+
* @returns the updated string
|
|
224
|
+
*/
|
|
225
|
+
static nfd_markers_segment(s, map, forMatch) {
|
|
226
|
+
// remove (and parse) the markers first
|
|
227
|
+
const str_unmarked = this.remove_markers(s, map, forMatch);
|
|
228
|
+
// then, NFD the normalized string
|
|
229
|
+
const str_unmarked_nfd = str_unmarked.normalize("NFD");
|
|
230
|
+
if (map.length == 0) {
|
|
231
|
+
// no markers, so we can safely return the normalized unmarked string
|
|
232
|
+
return str_unmarked_nfd;
|
|
233
|
+
}
|
|
234
|
+
else if (str_unmarked_nfd === str_unmarked) {
|
|
235
|
+
// normalization didn't shuffle anything, so it's entirely a no-op.
|
|
236
|
+
return s;
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
// we had markers AND the normalization made a difference.
|
|
240
|
+
// add the markers back per the map, and return
|
|
241
|
+
return this.add_back_markers(str_unmarked_nfd, map, forMatch);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/** return the string s but with a marker sequence before it */
|
|
245
|
+
static prepend_marker(s, marker, forMatch) {
|
|
246
|
+
if (forMatch && marker === constants.marker_any_index) {
|
|
247
|
+
return MarkerParser.ANY_MARKER_MATCH + s;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
return this.markerOutput(marker, forMatch) + s;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Add back all markers in the map to the string
|
|
255
|
+
* @param s input string
|
|
256
|
+
* @param map output: the marker map
|
|
257
|
+
* @param forMatch if true, use regex format
|
|
258
|
+
*/
|
|
259
|
+
static add_back_markers(s, map, forMatch) {
|
|
260
|
+
// quick check: if no string, or no map: nothing to do
|
|
261
|
+
if (!s || !map?.length) {
|
|
262
|
+
return s;
|
|
263
|
+
}
|
|
264
|
+
/** output string */
|
|
265
|
+
let out = '';
|
|
266
|
+
/** for checking: the total number of markers expected */
|
|
267
|
+
const max_markers = map.length;
|
|
268
|
+
/** for checking: the number of markers we've written */
|
|
269
|
+
let written_markers = 0;
|
|
270
|
+
/** we are going to mutate the map, so copy it */
|
|
271
|
+
const map2 = [...map]; // make a copy
|
|
272
|
+
// First, add back all 'MARKER_BEFORE_EOT' markers
|
|
273
|
+
while (map2.length && map2[map2.length - 1].ch === MARKER_BEFORE_EOT) {
|
|
274
|
+
// remove from list
|
|
275
|
+
const { marker } = map2.pop();
|
|
276
|
+
out = MarkerParser.prepend_marker(out, marker, forMatch);
|
|
277
|
+
written_markers++;
|
|
278
|
+
}
|
|
279
|
+
// Then, take each codepoint (from back to front)
|
|
280
|
+
for (let p of [...s].reverse()) {
|
|
281
|
+
// reverse order code units, prepend to out
|
|
282
|
+
out = p + out;
|
|
283
|
+
// 1. we write any markers which match the output string in order,
|
|
284
|
+
// and pop them off the list as dones
|
|
285
|
+
while (map2.length > 0 && map2[map2.length - 1].ch === p) {
|
|
286
|
+
const { marker } = map2.pop();
|
|
287
|
+
if (marker !== constants.marker_no_index) { // if not already written
|
|
288
|
+
out = MarkerParser.prepend_marker(out, marker, forMatch);
|
|
289
|
+
written_markers++;
|
|
290
|
+
// no need to update .marker here, we're about to pop it
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// 2. now, any out of order markers. iterate with an index so we can record.
|
|
294
|
+
// will skip this if map2.length < 2
|
|
295
|
+
for (let i = map2.length - 2; i >= 0; i--) {
|
|
296
|
+
const { ch, marker } = map2[i]; // don't pop here, as it might not be the right char
|
|
297
|
+
if (ch === p && marker !== constants.marker_no_index) {
|
|
298
|
+
out = MarkerParser.prepend_marker(out, marker, forMatch);
|
|
299
|
+
written_markers++;
|
|
300
|
+
map2[i].marker = constants.marker_no_index; // mark as written
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// validate that we consumed all markers
|
|
305
|
+
if (written_markers !== max_markers) {
|
|
306
|
+
throw Error(`Internal Error: We should have written ${max_markers} markers but only wrote ${written_markers}`);
|
|
307
|
+
}
|
|
308
|
+
return out;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Remove (and parse) markers from a string
|
|
312
|
+
* @param s input string
|
|
313
|
+
* @param map output map containing marker locations
|
|
314
|
+
* @param forMatch true if regex
|
|
315
|
+
* @returns the original string, without any markers
|
|
316
|
+
*/
|
|
317
|
+
static remove_markers(s, map, forMatch) {
|
|
318
|
+
/** accumulated output */
|
|
319
|
+
let out = '';
|
|
320
|
+
/** array of marker ids in order waiting to be added */
|
|
321
|
+
let last_markers = [];
|
|
322
|
+
/** input string, split into codepoint runs */
|
|
323
|
+
let a = [...s];
|
|
324
|
+
/**
|
|
325
|
+
* subfunc: add all markers in the pending (last_markers) queue
|
|
326
|
+
* @param l string the marker is 'glued' to, or '' for end
|
|
327
|
+
*/
|
|
328
|
+
function add_pending_markers(l) {
|
|
329
|
+
// first char, or, marker-before-eot
|
|
330
|
+
const ch = (l === '') ? MARKER_BEFORE_EOT : [...l][0];
|
|
331
|
+
while (last_markers.length) {
|
|
332
|
+
const marker = last_markers[0];
|
|
333
|
+
last_markers = last_markers.slice(1); // pop from front
|
|
334
|
+
map.push({ ch, marker });
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// iterate until the codepoint list is empty
|
|
338
|
+
while (a.length > 0) {
|
|
339
|
+
// does 'a' begin with a marker?
|
|
340
|
+
const p = this.parse_next_marker(a.join(''), forMatch);
|
|
341
|
+
if (!p?.match) {
|
|
342
|
+
// no match
|
|
343
|
+
add_pending_markers(a[0]); // add any pending markers
|
|
344
|
+
out = out + a[0]; // add the non-marker text to the buffer
|
|
345
|
+
a = a.slice(1); // move forward 1 codepoint
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
// found a marker
|
|
349
|
+
const { marker, match } = p;
|
|
350
|
+
if ((marker == constants.marker_any_index) ||
|
|
351
|
+
(marker >= constants.marker_min_index && marker <= constants.marker_max_index)) {
|
|
352
|
+
last_markers.push(marker);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
throw RangeError(`String contained out-of-range marker ${marker}: '${s}'`);
|
|
356
|
+
}
|
|
357
|
+
a = a.slice([...match].length); // move forward over matched marker
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// finally, add any remaining markers at the end of the string
|
|
361
|
+
add_pending_markers('');
|
|
362
|
+
return out;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* analyze the string to see if it begins with a marker
|
|
366
|
+
* @param s input string
|
|
367
|
+
* @param forMatch true if regex
|
|
368
|
+
* @returns parsed marker details
|
|
369
|
+
*/
|
|
370
|
+
static parse_next_marker(s, forMatch) {
|
|
371
|
+
if (!forMatch) {
|
|
372
|
+
// plain
|
|
373
|
+
const m = s.match(PARSE_SENTINEL_MARKER);
|
|
374
|
+
if (m) {
|
|
375
|
+
// full string matched
|
|
376
|
+
const match = m[0];
|
|
377
|
+
// extract the marker number
|
|
378
|
+
const marker = match.codePointAt(2);
|
|
379
|
+
return ({ match, marker });
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
// regex
|
|
384
|
+
const m = s.match(PARSE_REGEX_MARKER);
|
|
385
|
+
if (m) {
|
|
386
|
+
// full string
|
|
387
|
+
const match = m[0];
|
|
388
|
+
// hex digit (if a single)
|
|
389
|
+
const single = m[1];
|
|
390
|
+
if (single) {
|
|
391
|
+
return ({ match, marker: Number.parseInt(single.substring(3), 16) });
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
// it's a range, so it's an any match
|
|
395
|
+
return ({ match, marker: constants.marker_any_index });
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
123
401
|
}
|
|
402
|
+
;
|
|
403
|
+
/** special noncharacter value denoting end of string */
|
|
404
|
+
const MARKER_BEFORE_EOT = '\ufffe';
|
|
405
|
+
/** matcher for a sentinel */
|
|
406
|
+
const PARSE_SENTINEL_MARKER = new RegExp(`^${MarkerParser.ANY_MARKER_MATCH}`);
|
|
407
|
+
/** matcher for a regex marker, either single or any */
|
|
408
|
+
const PARSE_REGEX_MARKER = /^\\uffff\\u0008(?:(\\u[0-9a-fA-F]{4})|(\[\\u[0-9a-fA-F]{4}-\\u[0-9a-fA-F]{4}\]))/;
|
|
409
|
+
/** a grapheme cluster segmenter for finding NFD boundaries */
|
|
410
|
+
const graphemeSegmenter = new Intl.Segmenter(['und'], { granularity: 'grapheme' });
|
|
411
|
+
;
|
|
412
|
+
;
|
|
124
413
|
/**
|
|
125
414
|
* Class for helping with markers
|
|
126
415
|
*/
|
|
@@ -266,5 +555,5 @@ export class ElementParser {
|
|
|
266
555
|
}
|
|
267
556
|
}
|
|
268
557
|
;
|
|
269
|
-
//# debugId=
|
|
558
|
+
//# debugId=323913d4-2329-533d-9718-2f68c019ca23
|
|
270
559
|
//# sourceMappingURL=pattern-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"debug_id":"768d0b86-61f3-5c3a-8d19-1d1e471e3138","file":"pattern-parser.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/ldml-keyboard/pattern-parser.ts"],"version":3}
|
|
1
|
+
{"debug_id":"323913d4-2329-533d-9718-2f68c019ca23","file":"pattern-parser.js","mappings":"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","names":[],"sourceRoot":"","sources":["../../../src/ldml-keyboard/pattern-parser.ts"],"version":3}
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@keymanapp/keyman-version": "17.0.
|
|
32
|
+
"@keymanapp/keyman-version": "17.0.250-alpha",
|
|
33
33
|
"restructure": "git+https://github.com/keymanapp/dependency-restructure.git#7a188a1e26f8f36a175d95b67ffece8702363dfc",
|
|
34
34
|
"semver": "^7.5.2",
|
|
35
35
|
"xml2js": "git+https://github.com/keymanapp/dependency-node-xml2js#535fe732dc408d697e0f847c944cc45f0baf0829"
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
]
|
|
85
85
|
},
|
|
86
86
|
"sideEffects": false,
|
|
87
|
-
"version": "17.0.
|
|
87
|
+
"version": "17.0.250-alpha"
|
|
88
88
|
}
|