@keymanapp/kmc-ldml 17.0.120-alpha → 17.0.122-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.
- package/build/src/compiler/compiler.d.ts +12 -2
- package/build/src/compiler/compiler.d.ts.map +1 -1
- package/build/src/compiler/compiler.js +39 -11
- package/build/src/compiler/compiler.js.map +1 -1
- package/build/src/compiler/disp.d.ts +2 -2
- package/build/src/compiler/disp.d.ts.map +1 -1
- package/build/src/compiler/disp.js.map +1 -1
- package/build/src/compiler/empty-compiler.d.ts +31 -0
- package/build/src/compiler/empty-compiler.d.ts.map +1 -0
- package/build/src/compiler/empty-compiler.js +56 -0
- package/build/src/compiler/empty-compiler.js.map +1 -0
- package/build/src/compiler/keys.d.ts +4 -4
- package/build/src/compiler/keys.d.ts.map +1 -1
- package/build/src/compiler/keys.js.map +1 -1
- package/build/src/compiler/layr.d.ts +2 -2
- package/build/src/compiler/layr.d.ts.map +1 -1
- package/build/src/compiler/layr.js.map +1 -1
- package/build/src/compiler/loca.d.ts +2 -2
- package/build/src/compiler/loca.d.ts.map +1 -1
- package/build/src/compiler/loca.js.map +1 -1
- package/build/src/compiler/messages.d.ts +40 -0
- package/build/src/compiler/messages.d.ts.map +1 -1
- package/build/src/compiler/messages.js +23 -0
- package/build/src/compiler/messages.js.map +1 -1
- package/build/src/compiler/meta.d.ts +2 -2
- package/build/src/compiler/meta.d.ts.map +1 -1
- package/build/src/compiler/meta.js.map +1 -1
- package/build/src/compiler/name.d.ts +2 -2
- package/build/src/compiler/name.d.ts.map +1 -1
- package/build/src/compiler/name.js.map +1 -1
- package/build/src/compiler/section-compiler.d.ts +11 -1
- package/build/src/compiler/section-compiler.d.ts.map +1 -1
- package/build/src/compiler/section-compiler.js +21 -0
- package/build/src/compiler/section-compiler.js.map +1 -1
- package/build/src/compiler/tran.d.ts +15 -22
- package/build/src/compiler/tran.d.ts.map +1 -1
- package/build/src/compiler/tran.js +111 -45
- package/build/src/compiler/tran.js.map +1 -1
- package/build/src/compiler/vars.d.ts +20 -0
- package/build/src/compiler/vars.d.ts.map +1 -0
- package/build/src/compiler/vars.js +178 -0
- package/build/src/compiler/vars.js.map +1 -0
- package/build/src/util/util.d.ts +10 -0
- package/build/src/util/util.d.ts.map +1 -1
- package/build/src/util/util.js +35 -0
- package/build/src/util/util.js.map +1 -1
- package/package.json +5 -4
- package/build/src/compiler/ordr.d.ts +0 -12
- package/build/src/compiler/ordr.d.ts.map +0 -1
- package/build/src/compiler/ordr.js +0 -35
- package/build/src/compiler/ordr.js.map +0 -1
package/build/src/util/util.js
CHANGED
|
@@ -50,6 +50,41 @@ export function allUsedKeyIdsInLayers(layersList) {
|
|
|
50
50
|
}
|
|
51
51
|
return s;
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Helper function for validating child elements. Written for the convenience of message passing functions.
|
|
55
|
+
*
|
|
56
|
+
* @param values array of values to check
|
|
57
|
+
* @param onDuplicate callback with array of duplicate values, deduped
|
|
58
|
+
* @param allowed optional set of valid values
|
|
59
|
+
* @param onInvalid callback with array of invalid values, deduped
|
|
60
|
+
* @returns true if all OK
|
|
61
|
+
*/
|
|
62
|
+
export function verifyValidAndUnique(values, onDuplicate, allowed, onInvalid) {
|
|
63
|
+
const dups = [];
|
|
64
|
+
const invalids = [];
|
|
65
|
+
const seen = new Set();
|
|
66
|
+
for (const value of values) {
|
|
67
|
+
if (allowed && !allowed.has(value)) {
|
|
68
|
+
invalids.push(value);
|
|
69
|
+
}
|
|
70
|
+
if (seen.has(value)) {
|
|
71
|
+
dups.push(value);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
seen.add(value);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function dedupedSortedArray(values) {
|
|
78
|
+
return Array.from(new Set(values)).sort();
|
|
79
|
+
}
|
|
80
|
+
if (dups.length > 0 && onDuplicate) {
|
|
81
|
+
onDuplicate(dedupedSortedArray(dups));
|
|
82
|
+
}
|
|
83
|
+
if (invalids.length > 0 && onInvalid) {
|
|
84
|
+
onInvalid(dedupedSortedArray(invalids));
|
|
85
|
+
}
|
|
86
|
+
return (!dups.length && !invalids.length);
|
|
87
|
+
}
|
|
53
88
|
/**
|
|
54
89
|
* Determine modifier from layer info
|
|
55
90
|
* @param layer layer obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAA6C,GAAM,EAAE,KAAa;IAChG,OAAQ,MAAM,CAAC,MAAM,CAAC,GAAG,CAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA2B;IAC7D,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,CAAC;KACX;IACD,oDAAoD;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,mBAAmB;IACvD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,0DAA0D;IAC1D,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YACxB,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAA2C;IAC/E,MAAM,CAAC,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5B,IAAI,UAAU,EAAE;QACd,KAAK,MAAM,MAAM,IAAI,UAAU,IAAI,EAAE,EAAE;YACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE;gBACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE;oBACjC,IAAI,GAAG,CAAC,IAAI,EAAE;wBACZ,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACnC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;yBACV;qBACF;iBACF;aACF;SACF;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAA2B;IACtE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,IAAI,QAAQ,EAAE;QACZ,IAAI,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC;QAClC,KAAK,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/C,GAAG,IAAI,MAAM,CAAC;SACf;QACD,OAAO,GAAG,CAAC;KACZ;IACD,yCAAyC;IACzC,OAAO,SAAS,CAAC,aAAa,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAE,qCAAqC;IAClE,KAAK,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SACd;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
"url": "https://github.com/keymanapp/keyman/issues"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@keymanapp/
|
|
30
|
-
"@keymanapp/
|
|
29
|
+
"@keymanapp/kmc-kmn": "17.0.122-alpha",
|
|
30
|
+
"@keymanapp/keyman-version": "17.0.122-alpha",
|
|
31
|
+
"@keymanapp/ldml-keyboard-constants": "17.0.122-alpha",
|
|
31
32
|
"ajv": "^8.11.0",
|
|
32
33
|
"restructure": "git+https://github.com/keymanapp/dependency-restructure.git#49d129cf0916d082a7278bb09296fb89cecfcc50",
|
|
33
34
|
"semver": "^7.3.7",
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"mocha": "^8.4.0",
|
|
46
47
|
"ts-node": "^9.1.1",
|
|
47
48
|
"typescript": "^4.9.5",
|
|
48
|
-
"@keymanapp/developer-test-helpers": "17.0.
|
|
49
|
+
"@keymanapp/developer-test-helpers": "17.0.122-alpha"
|
|
49
50
|
},
|
|
50
51
|
"mocha": {
|
|
51
52
|
"spec": "build/test/**/test-*.js",
|
|
@@ -67,5 +68,5 @@
|
|
|
67
68
|
"type": "git",
|
|
68
69
|
"url": "git+https://github.com/keymanapp/keyman.git"
|
|
69
70
|
},
|
|
70
|
-
"version": "17.0.
|
|
71
|
+
"version": "17.0.122-alpha"
|
|
71
72
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { KMXPlus } from '@keymanapp/common-types';
|
|
2
|
-
import { SectionCompiler } from "./section-compiler.js";
|
|
3
|
-
import GlobalSections = KMXPlus.GlobalSections;
|
|
4
|
-
import Ordr = KMXPlus.Ordr;
|
|
5
|
-
export declare class OrdrCompiler extends SectionCompiler {
|
|
6
|
-
get id(): import("@keymanapp/ldml-keyboard-constants").SectionIdent;
|
|
7
|
-
validate(): boolean;
|
|
8
|
-
private compileReorder;
|
|
9
|
-
private compileReorders;
|
|
10
|
-
compile(sections: GlobalSections): Ordr;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=ordr.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordr.d.ts","sourceRoot":"","sources":["../../../src/compiler/ordr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;AAC/C,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAK3B,qBAAa,YAAa,SAAQ,eAAe;IAE/C,IAAW,EAAE,8DAEZ;IAEM,QAAQ,IAAI,OAAO;IAO1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,eAAe;IAYhB,OAAO,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;CAG/C"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { constants } from "@keymanapp/ldml-keyboard-constants";
|
|
2
|
-
import { KMXPlus } from '@keymanapp/common-types';
|
|
3
|
-
import { SectionCompiler } from "./section-compiler.js";
|
|
4
|
-
var Ordr = KMXPlus.Ordr;
|
|
5
|
-
var OrdrItem = KMXPlus.OrdrItem;
|
|
6
|
-
export class OrdrCompiler extends SectionCompiler {
|
|
7
|
-
get id() {
|
|
8
|
-
return constants.section.ordr;
|
|
9
|
-
}
|
|
10
|
-
validate() {
|
|
11
|
-
let valid = true;
|
|
12
|
-
// TODO-LDML: linting here should check for identical before+from, but this involves a double-parse which is ugly
|
|
13
|
-
// TODO-LDML: unicodesets means that either we fully parse them and verify conflicting rules or the linting is imperfect
|
|
14
|
-
return valid;
|
|
15
|
-
}
|
|
16
|
-
compileReorder(sections, reorder) {
|
|
17
|
-
let result = new OrdrItem();
|
|
18
|
-
result.elements = sections.elem.allocElementString(sections.strs, reorder.from, reorder.order, reorder.tertiary, reorder.tertiary_base, reorder.prebase);
|
|
19
|
-
result.before = sections.elem.allocElementString(sections.strs, reorder.before);
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
compileReorders(sections, reorders) {
|
|
23
|
-
let result = new Ordr();
|
|
24
|
-
if (reorders?.reorder) {
|
|
25
|
-
for (let reorder of reorders.reorder) {
|
|
26
|
-
result.items.push(this.compileReorder(sections, reorder));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
compile(sections) {
|
|
32
|
-
return this.compileReorders(sections, this.keyboard.reorders);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=ordr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordr.js","sourceRoot":"","sources":["../../../src/compiler/ordr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAgB,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,IAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,IAAO,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAInC,MAAM,OAAO,YAAa,SAAQ,eAAe;IAE/C,IAAW,EAAE;QACX,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,CAAC;IAEM,QAAQ;QACb,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,iHAAiH;QACjH,wHAAwH;QACxH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc,CAAC,QAAwB,EAAE,OAAkB;QACjE,IAAI,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACzJ,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAChF,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CAAC,QAAwB,EAAE,QAAoB;QACpE,IAAI,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QAExB,IAAG,QAAQ,EAAE,OAAO,EAAE;YACpB,KAAI,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3D;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,QAAwB;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF"}
|