@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
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { LDMLKeyboard, KMXPlus, CompilerCallbacks } from "@keymanapp/common-types";
|
|
2
2
|
import { SectionIdent } from '@keymanapp/ldml-keyboard-constants';
|
|
3
3
|
export declare class SectionCompiler {
|
|
4
|
+
/**
|
|
5
|
+
* Opportunity for async initialization.
|
|
6
|
+
* @returns true when OK. On false, causes a message to happen.
|
|
7
|
+
*/
|
|
8
|
+
init(): Promise<boolean>;
|
|
4
9
|
protected readonly keyboard: LDMLKeyboard.LKKeyboard;
|
|
5
10
|
protected readonly callbacks: CompilerCallbacks;
|
|
6
11
|
constructor(source: LDMLKeyboard.LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
7
12
|
get id(): SectionIdent;
|
|
8
13
|
get required(): boolean;
|
|
9
|
-
compile(sections: KMXPlus.
|
|
14
|
+
compile(sections: KMXPlus.DependencySections): KMXPlus.Section;
|
|
10
15
|
validate(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Get the dependencies for this compiler.
|
|
18
|
+
* @returns set of dependent sections
|
|
19
|
+
*/
|
|
20
|
+
get dependencies(): Set<SectionIdent>;
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=section-compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/section-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"section-compiler.d.ts","sourceRoot":"","sources":["../../../src/compiler/section-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAa,MAAM,oCAAoC,CAAC;AAG7E,qBAAa,eAAe;IAC1B;;;OAGG;IACU,IAAI,IAAK,OAAO,CAAC,OAAO,CAAC;IAKtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;gBAEpC,MAAM,EAAE,YAAY,CAAC,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAKxF,IAAW,EAAE,IAAI,YAAY,CAE5B;IAED,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO;IAI9D,QAAQ,IAAI,OAAO;IAI1B;;;OAGG;IACH,IAAW,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,CAO3C;CACF"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
import { constants } from '@keymanapp/ldml-keyboard-constants';
|
|
1
2
|
/* istanbul ignore next */
|
|
2
3
|
export class SectionCompiler {
|
|
4
|
+
/**
|
|
5
|
+
* Opportunity for async initialization.
|
|
6
|
+
* @returns true when OK. On false, causes a message to happen.
|
|
7
|
+
*/
|
|
8
|
+
async init() {
|
|
9
|
+
// nothing to do here
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
3
12
|
keyboard;
|
|
4
13
|
callbacks;
|
|
5
14
|
constructor(source, callbacks) {
|
|
@@ -18,5 +27,17 @@ export class SectionCompiler {
|
|
|
18
27
|
validate() {
|
|
19
28
|
return true;
|
|
20
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the dependencies for this compiler.
|
|
32
|
+
* @returns set of dependent sections
|
|
33
|
+
*/
|
|
34
|
+
get dependencies() {
|
|
35
|
+
const defaults = new Set([
|
|
36
|
+
constants.section.strs,
|
|
37
|
+
constants.section.list,
|
|
38
|
+
constants.section.elem
|
|
39
|
+
]);
|
|
40
|
+
return defaults;
|
|
41
|
+
}
|
|
21
42
|
}
|
|
22
43
|
//# sourceMappingURL=section-compiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-compiler.js","sourceRoot":"","sources":["../../../src/compiler/section-compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"section-compiler.js","sourceRoot":"","sources":["../../../src/compiler/section-compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE7E,0BAA0B;AAC1B,MAAM,OAAO,eAAe;IAC1B;;;OAGG;IACI,KAAK,CAAC,IAAI;QACf,qBAAqB;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,QAAQ,CAA0B;IAClC,SAAS,CAAoB;IAEhD,YAAY,MAA8C,EAAE,SAA4B;QACtF,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAW,EAAE;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,OAAO,CAAC,QAAoC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,IAAW,YAAY;QACrB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAiB;YACvC,SAAS,CAAC,OAAO,CAAC,IAAI;YACtB,SAAS,CAAC,OAAO,CAAC,IAAI;YACtB,SAAS,CAAC,OAAO,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -1,41 +1,34 @@
|
|
|
1
|
+
import { SectionIdent } from "@keymanapp/ldml-keyboard-constants";
|
|
1
2
|
import { KMXPlus, LDMLKeyboard, CompilerCallbacks } from '@keymanapp/common-types';
|
|
2
3
|
import { SectionCompiler } from "./section-compiler.js";
|
|
3
|
-
import Finl = KMXPlus.Finl;
|
|
4
|
-
import FinlItem = KMXPlus.FinlItem;
|
|
5
4
|
import Bksp = KMXPlus.Bksp;
|
|
6
|
-
import
|
|
7
|
-
import GlobalSections = KMXPlus.GlobalSections;
|
|
5
|
+
import DependencySections = KMXPlus.DependencySections;
|
|
8
6
|
import Tran = KMXPlus.Tran;
|
|
9
|
-
import TranItem = KMXPlus.TranItem;
|
|
10
7
|
import LDMLKeyboardXMLSourceFile = LDMLKeyboard.LDMLKeyboardXMLSourceFile;
|
|
11
|
-
type TransformCompilerType = 'simple' | '
|
|
12
|
-
declare class TransformCompiler<T extends TransformCompilerType, TranBase extends Tran
|
|
8
|
+
type TransformCompilerType = 'simple' | 'backspace';
|
|
9
|
+
declare class TransformCompiler<T extends TransformCompilerType, TranBase extends Tran> extends SectionCompiler {
|
|
13
10
|
protected type: T;
|
|
14
11
|
constructor(source: LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
15
12
|
validate(): boolean;
|
|
16
|
-
protected newTranItem(): TranItemBase;
|
|
17
13
|
protected newTran(): TranBase;
|
|
18
|
-
private compileTransform;
|
|
19
14
|
private compileTransforms;
|
|
20
|
-
|
|
15
|
+
private compileTransformGroup;
|
|
16
|
+
private compileTransformTranGroup;
|
|
17
|
+
private compileTransform;
|
|
18
|
+
private compileReorderTranGroup;
|
|
19
|
+
private compileReorder;
|
|
20
|
+
compile(sections: DependencySections): TranBase;
|
|
21
|
+
get dependencies(): Set<SectionIdent>;
|
|
21
22
|
}
|
|
22
|
-
export declare class TranCompiler extends TransformCompiler<'simple', Tran
|
|
23
|
+
export declare class TranCompiler extends TransformCompiler<'simple', Tran> {
|
|
23
24
|
constructor(source: LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
24
|
-
protected newTranItem(): TranItem;
|
|
25
25
|
protected newTran(): Tran;
|
|
26
|
-
get id():
|
|
27
|
-
}
|
|
28
|
-
export declare class FinlCompiler extends TransformCompiler<'final', Finl, FinlItem> {
|
|
29
|
-
constructor(source: LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
30
|
-
protected newTranItem(): FinlItem;
|
|
31
|
-
protected newTran(): Finl;
|
|
32
|
-
get id(): import("@keymanapp/ldml-keyboard-constants").SectionIdent;
|
|
26
|
+
get id(): SectionIdent;
|
|
33
27
|
}
|
|
34
|
-
export declare class BkspCompiler extends TransformCompiler<'backspace', Bksp
|
|
28
|
+
export declare class BkspCompiler extends TransformCompiler<'backspace', Bksp> {
|
|
35
29
|
constructor(source: LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
36
|
-
protected newTranItem(): BkspItem;
|
|
37
30
|
protected newTran(): Bksp;
|
|
38
|
-
get id():
|
|
31
|
+
get id(): SectionIdent;
|
|
39
32
|
}
|
|
40
33
|
export {};
|
|
41
34
|
//# sourceMappingURL=tran.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tran.d.ts","sourceRoot":"","sources":["../../../src/compiler/tran.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tran.d.ts","sourceRoot":"","sources":["../../../src/compiler/tran.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAkB,MAAM,yBAAyB,CAAC;AACnG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC3B,OAAO,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAI3B,OAAO,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAQ1E,KAAK,qBAAqB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpD,cAAM,iBAAiB,CAAC,CAAC,SAAS,qBAAqB,EAAE,QAAQ,SAAS,IAAI,CAAE,SAAQ,eAAe;IAErG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAEN,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAIpE,QAAQ,IAAI,OAAO;IAwC1B,SAAS,CAAC,OAAO,IAAI,QAAQ;IAK7B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,cAAc;IAOf,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,QAAQ;IAStD,IAAW,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,CAS3C;CACF;AAED,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAgB;gBACpE,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAI3E,SAAS,CAAC,OAAO,IAAI,IAAI;IAGzB,IAAW,EAAE,iBAEZ;CACF;AAED,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAgB;gBACvE,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAI3E,SAAS,CAAC,OAAO,IAAI,IAAI;IAGzB,IAAW,EAAE,iBAEZ;CACF"}
|
|
@@ -1,54 +1,142 @@
|
|
|
1
1
|
import { constants } from "@keymanapp/ldml-keyboard-constants";
|
|
2
|
-
import { KMXPlus } from '@keymanapp/common-types';
|
|
2
|
+
import { KMXPlus, VariableParser } from '@keymanapp/common-types';
|
|
3
3
|
import { SectionCompiler } from "./section-compiler.js";
|
|
4
|
-
var Finl = KMXPlus.Finl;
|
|
5
|
-
var FinlItem = KMXPlus.FinlItem;
|
|
6
4
|
var Bksp = KMXPlus.Bksp;
|
|
7
|
-
var BkspItem = KMXPlus.BkspItem;
|
|
8
5
|
var Tran = KMXPlus.Tran;
|
|
9
|
-
var
|
|
10
|
-
var
|
|
6
|
+
var TranReorder = KMXPlus.TranReorder;
|
|
7
|
+
var TranTransform = KMXPlus.TranTransform;
|
|
8
|
+
import { verifyValidAndUnique } from "../util/util.js";
|
|
9
|
+
import { CompilerMessages } from "./messages.js";
|
|
11
10
|
class TransformCompiler extends SectionCompiler {
|
|
12
11
|
type;
|
|
13
12
|
constructor(source, callbacks) {
|
|
14
13
|
super(source, callbacks);
|
|
15
14
|
}
|
|
16
15
|
validate() {
|
|
16
|
+
const reportMessage = this.callbacks.reportMessage.bind(this.callbacks);
|
|
17
17
|
let valid = true;
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const transforms = this?.keyboard?.transforms;
|
|
19
|
+
if (transforms) {
|
|
20
|
+
const types = transforms.map(({ type }) => type);
|
|
21
|
+
if (!verifyValidAndUnique(types, types => reportMessage(CompilerMessages.Error_DuplicateTransformsType({ types })), new Set(['simple', 'backspace']), types => reportMessage(CompilerMessages.Error_InvalidTransformsType({ types })))) {
|
|
22
|
+
valid = false;
|
|
23
|
+
}
|
|
24
|
+
// check for mixed groups
|
|
25
|
+
let mixed = false;
|
|
26
|
+
let empty = false;
|
|
27
|
+
transforms.forEach(({ transformGroup }) => transformGroup.forEach((transformGroup) => {
|
|
28
|
+
if (transformGroup.reorder?.length && transformGroup.transform?.length) {
|
|
29
|
+
mixed = true;
|
|
30
|
+
}
|
|
31
|
+
if (!transformGroup.reorder?.length && !transformGroup.transform?.length) {
|
|
32
|
+
empty = true;
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
if (mixed) {
|
|
36
|
+
valid = false;
|
|
37
|
+
reportMessage(CompilerMessages.Error_MixedTransformGroup()); // report this once
|
|
38
|
+
}
|
|
39
|
+
if (empty) {
|
|
40
|
+
valid = false;
|
|
41
|
+
reportMessage(CompilerMessages.Error_EmptyTransformGroup()); // report this once
|
|
42
|
+
}
|
|
43
|
+
// TODO-LDML: linting here should check for identical from, but this involves a double-parse which is ugly
|
|
44
|
+
// TODO-LDML: unicodesets means that either we fully parse them and verify conflicting rules or the linting is imperfect
|
|
45
|
+
}
|
|
20
46
|
return valid;
|
|
21
47
|
}
|
|
22
|
-
newTranItem() {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
48
|
newTran() {
|
|
49
|
+
// needs to be overridden in the subclass
|
|
26
50
|
return null;
|
|
27
51
|
}
|
|
28
|
-
compileTransform(sections, transform) {
|
|
29
|
-
let result = this.newTranItem();
|
|
30
|
-
result.from = sections.elem.allocElementString(sections.strs, transform.from);
|
|
31
|
-
result.to = sections.strs.allocAndUnescapeString(transform.to);
|
|
32
|
-
result.before = sections.elem.allocElementString(sections.strs, transform.before);
|
|
33
|
-
result.flags = transform.error == 'fail' ? TranItemFlags.error : TranItemFlags.none;
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
52
|
compileTransforms(sections, transforms) {
|
|
37
53
|
let result = this.newTran();
|
|
38
|
-
if (transforms?.
|
|
39
|
-
for (let
|
|
40
|
-
result.
|
|
54
|
+
if (transforms?.transformGroup) {
|
|
55
|
+
for (let transformGroup of transforms.transformGroup) {
|
|
56
|
+
result.groups.push(this.compileTransformGroup(sections, transformGroup));
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
59
|
return result;
|
|
44
60
|
}
|
|
61
|
+
compileTransformGroup(sections, transformGroup) {
|
|
62
|
+
if (transformGroup.reorder.length && transformGroup.transform.length) {
|
|
63
|
+
// should have been caught by validate
|
|
64
|
+
throw Error(`Internal error: transformGroup has both reorder and transform elements.`);
|
|
65
|
+
}
|
|
66
|
+
else if (transformGroup.reorder.length) {
|
|
67
|
+
return this.compileReorderTranGroup(sections, transformGroup.reorder);
|
|
68
|
+
}
|
|
69
|
+
else if (transformGroup.transform.length) {
|
|
70
|
+
return this.compileTransformTranGroup(sections, transformGroup.transform);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw Error(`Internal error: transformGroup has neither reorder nor transform elements.`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
compileTransformTranGroup(sections, transforms) {
|
|
77
|
+
const result = {
|
|
78
|
+
type: constants.tran_group_type_transform,
|
|
79
|
+
transforms: transforms.map(transform => this.compileTransform(sections, transform)),
|
|
80
|
+
reorders: [],
|
|
81
|
+
};
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
compileTransform(sections, transform) {
|
|
85
|
+
let result = new TranTransform();
|
|
86
|
+
let cookedFrom = transform.from;
|
|
87
|
+
let cookedTo = transform.to;
|
|
88
|
+
cookedFrom = sections.vars.substituteStrings(cookedFrom, sections);
|
|
89
|
+
// TODO: handle 'map' case
|
|
90
|
+
const mapFrom = VariableParser.CAPTURE_SET_REFERENCE.exec(cookedFrom);
|
|
91
|
+
const mapTo = VariableParser.MAPPED_SET_REFERENCE.exec(cookedTo || '');
|
|
92
|
+
if (mapFrom && mapTo) { // TODO-LDML: error cases
|
|
93
|
+
result.mapFrom = sections.strs.allocString(mapFrom[1]); // var name
|
|
94
|
+
result.mapTo = sections.strs.allocString(mapTo[1]); // var name
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
result.mapFrom = sections.strs.allocString(''); // TODO-LDML
|
|
98
|
+
result.mapTo = sections.strs.allocString(''); // TODO-LDML
|
|
99
|
+
}
|
|
100
|
+
cookedFrom = sections.vars.substituteSetRegex(cookedFrom, sections);
|
|
101
|
+
if (cookedTo) {
|
|
102
|
+
cookedTo = sections.vars.substituteStrings(cookedTo, sections);
|
|
103
|
+
}
|
|
104
|
+
result.from = sections.strs.allocAndUnescapeString(cookedFrom); // TODO-LDML: not unescaped here, done previously
|
|
105
|
+
result.to = sections.strs.allocAndUnescapeString(cookedTo); // TODO-LDML: not unescaped here, done previously
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
compileReorderTranGroup(sections, reorders) {
|
|
109
|
+
const result = {
|
|
110
|
+
type: constants.tran_group_type_reorder,
|
|
111
|
+
transforms: [],
|
|
112
|
+
reorders: reorders.map(reorder => this.compileReorder(sections, reorder)),
|
|
113
|
+
};
|
|
114
|
+
return result;
|
|
115
|
+
}
|
|
116
|
+
compileReorder(sections, reorder) {
|
|
117
|
+
let result = new TranReorder();
|
|
118
|
+
result.elements = sections.elem.allocElementString(sections.strs, reorder.from, reorder.order, reorder.tertiary, reorder.tertiaryBase, reorder.preBase);
|
|
119
|
+
result.before = sections.elem.allocElementString(sections.strs, reorder.before);
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
45
122
|
compile(sections) {
|
|
46
123
|
for (let t of this.keyboard.transforms) {
|
|
47
124
|
if (t.type == this.type) {
|
|
125
|
+
// compile only the transforms of the correct type
|
|
48
126
|
return this.compileTransforms(sections, t);
|
|
49
127
|
}
|
|
50
128
|
}
|
|
51
|
-
return this.newTran();
|
|
129
|
+
return this.newTran(); // empty: nothing of this type found.
|
|
130
|
+
}
|
|
131
|
+
get dependencies() {
|
|
132
|
+
const defaults = new Set([
|
|
133
|
+
constants.section.strs,
|
|
134
|
+
constants.section.list,
|
|
135
|
+
constants.section.elem,
|
|
136
|
+
constants.section.vars,
|
|
137
|
+
]);
|
|
138
|
+
defaults.delete(this.id);
|
|
139
|
+
return defaults;
|
|
52
140
|
}
|
|
53
141
|
}
|
|
54
142
|
export class TranCompiler extends TransformCompiler {
|
|
@@ -56,9 +144,6 @@ export class TranCompiler extends TransformCompiler {
|
|
|
56
144
|
super(source, callbacks);
|
|
57
145
|
this.type = 'simple';
|
|
58
146
|
}
|
|
59
|
-
newTranItem() {
|
|
60
|
-
return new TranItem();
|
|
61
|
-
}
|
|
62
147
|
newTran() {
|
|
63
148
|
return new Tran();
|
|
64
149
|
}
|
|
@@ -67,30 +152,11 @@ export class TranCompiler extends TransformCompiler {
|
|
|
67
152
|
}
|
|
68
153
|
}
|
|
69
154
|
;
|
|
70
|
-
export class FinlCompiler extends TransformCompiler {
|
|
71
|
-
constructor(source, callbacks) {
|
|
72
|
-
super(source, callbacks);
|
|
73
|
-
this.type = 'final';
|
|
74
|
-
}
|
|
75
|
-
newTranItem() {
|
|
76
|
-
return new FinlItem();
|
|
77
|
-
}
|
|
78
|
-
newTran() {
|
|
79
|
-
return new Finl();
|
|
80
|
-
}
|
|
81
|
-
get id() {
|
|
82
|
-
return constants.section.finl;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
;
|
|
86
155
|
export class BkspCompiler extends TransformCompiler {
|
|
87
156
|
constructor(source, callbacks) {
|
|
88
157
|
super(source, callbacks);
|
|
89
158
|
this.type = 'backspace';
|
|
90
159
|
}
|
|
91
|
-
newTranItem() {
|
|
92
|
-
return new BkspItem();
|
|
93
|
-
}
|
|
94
160
|
newTran() {
|
|
95
161
|
return new Bksp();
|
|
96
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tran.js","sourceRoot":"","sources":["../../../src/compiler/tran.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"tran.js","sourceRoot":"","sources":["../../../src/compiler/tran.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SectionIdent } from "@keymanapp/ldml-keyboard-constants";
|
|
2
|
+
import { KMXPlus, LDMLKeyboard, CompilerCallbacks } from '@keymanapp/common-types';
|
|
3
|
+
import { UnicodeSetParser } from '@keymanapp/common-types';
|
|
4
|
+
import { SectionCompiler } from "./section-compiler.js";
|
|
5
|
+
import Vars = KMXPlus.Vars;
|
|
6
|
+
import DependencySections = KMXPlus.DependencySections;
|
|
7
|
+
import LDMLKeyboardXMLSourceFile = LDMLKeyboard.LDMLKeyboardXMLSourceFile;
|
|
8
|
+
export declare class VarsCompiler extends SectionCompiler {
|
|
9
|
+
get id(): SectionIdent;
|
|
10
|
+
get dependencies(): Set<SectionIdent>;
|
|
11
|
+
usetparser: UnicodeSetParser;
|
|
12
|
+
init(): Promise<boolean>;
|
|
13
|
+
constructor(source: LDMLKeyboardXMLSourceFile, callbacks: CompilerCallbacks);
|
|
14
|
+
validate(): boolean;
|
|
15
|
+
compile(sections: DependencySections): Vars;
|
|
16
|
+
addString(result: Vars, e: LDMLKeyboard.LKString, sections: DependencySections): void;
|
|
17
|
+
addSet(result: Vars, e: LDMLKeyboard.LKSet, sections: DependencySections): void;
|
|
18
|
+
addUnicodeSet(result: Vars, e: LDMLKeyboard.LKUnicodeSet, sections: DependencySections): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=vars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vars.d.ts","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAa,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAI3B,OAAO,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;AACvD,OAAO,yBAAyB,GAAG,YAAY,CAAC,yBAAyB,CAAC;AAE1E,qBAAa,YAAa,SAAQ,eAAe;IAC/C,IAAW,EAAE,iBAEZ;IAED,IAAW,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,CAO3C;IAED,UAAU,EAAG,gBAAgB,CAAQ;IAExB,IAAI,IAAK,OAAO,CAAC,OAAO,CAAC;gBAS1B,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,iBAAiB;IAIpE,QAAQ,IAAI,OAAO;IA0GnB,OAAO,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAwBlD,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAOrF,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAU/E,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CAS9F"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { constants } from "@keymanapp/ldml-keyboard-constants";
|
|
2
|
+
import { KMXPlus } from '@keymanapp/common-types';
|
|
3
|
+
import { VariableParser } from '@keymanapp/common-types';
|
|
4
|
+
import { KmnCompiler } from '@keymanapp/kmc-kmn';
|
|
5
|
+
import { SectionCompiler } from "./section-compiler.js";
|
|
6
|
+
var Vars = KMXPlus.Vars;
|
|
7
|
+
var StringVarItem = KMXPlus.StringVarItem;
|
|
8
|
+
var SetVarItem = KMXPlus.SetVarItem;
|
|
9
|
+
var UnicodeSetItem = KMXPlus.UnicodeSetItem;
|
|
10
|
+
import { CompilerMessages } from "./messages.js";
|
|
11
|
+
export class VarsCompiler extends SectionCompiler {
|
|
12
|
+
get id() {
|
|
13
|
+
return constants.section.vars;
|
|
14
|
+
}
|
|
15
|
+
get dependencies() {
|
|
16
|
+
const defaults = new Set([
|
|
17
|
+
constants.section.strs,
|
|
18
|
+
constants.section.elem
|
|
19
|
+
]);
|
|
20
|
+
defaults.delete(this.id);
|
|
21
|
+
return defaults;
|
|
22
|
+
}
|
|
23
|
+
usetparser = null;
|
|
24
|
+
async init() {
|
|
25
|
+
const compiler = new KmnCompiler();
|
|
26
|
+
const ok = await compiler.init(this.callbacks);
|
|
27
|
+
if (ok) {
|
|
28
|
+
this.usetparser = compiler;
|
|
29
|
+
}
|
|
30
|
+
return ok;
|
|
31
|
+
}
|
|
32
|
+
constructor(source, callbacks) {
|
|
33
|
+
super(source, callbacks);
|
|
34
|
+
}
|
|
35
|
+
validate() {
|
|
36
|
+
let valid = true;
|
|
37
|
+
// TODO-LDML scan for markers?
|
|
38
|
+
// Check for duplicate ids
|
|
39
|
+
const allIds = new Set();
|
|
40
|
+
const dups = new Set();
|
|
41
|
+
const variables = this.keyboard?.variables;
|
|
42
|
+
if (!variables)
|
|
43
|
+
return valid;
|
|
44
|
+
const allStrings = new Set();
|
|
45
|
+
const allSets = new Set();
|
|
46
|
+
const allUnicodeSets = new Set();
|
|
47
|
+
/**
|
|
48
|
+
* add an ID to check for duplicates
|
|
49
|
+
* @param id id
|
|
50
|
+
*/
|
|
51
|
+
function addId(id) {
|
|
52
|
+
if (allIds.has(id)) {
|
|
53
|
+
dups.add(id);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
allIds.add(id);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Strings
|
|
60
|
+
for (const { id, value } of variables?.string) {
|
|
61
|
+
addId(id);
|
|
62
|
+
allStrings.add(id);
|
|
63
|
+
const stringrefs = VariableParser.allStringReferences(value);
|
|
64
|
+
for (const id2 of stringrefs) {
|
|
65
|
+
if (!allStrings.has(id2)) {
|
|
66
|
+
valid = false;
|
|
67
|
+
this.callbacks.reportMessage(CompilerMessages.Error_MissingStringVariable({ id: id2 }));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Sets
|
|
72
|
+
for (const { id, value } of variables.set) {
|
|
73
|
+
addId(id);
|
|
74
|
+
allSets.add(id);
|
|
75
|
+
// check for illegal references, here.
|
|
76
|
+
const stringrefs = VariableParser.allStringReferences(value);
|
|
77
|
+
for (const id2 of stringrefs) {
|
|
78
|
+
if (!allStrings.has(id2)) {
|
|
79
|
+
valid = false;
|
|
80
|
+
this.callbacks.reportMessage(CompilerMessages.Error_MissingStringVariable({ id: id2 }));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Now split into spaces.
|
|
84
|
+
const items = VariableParser.setSplitter(value);
|
|
85
|
+
for (const item of items) {
|
|
86
|
+
const setrefs = VariableParser.allSetReferences(item);
|
|
87
|
+
if (setrefs.length > 1) {
|
|
88
|
+
// this is the form $[seta]$[setb]
|
|
89
|
+
valid = false;
|
|
90
|
+
this.callbacks.reportMessage(CompilerMessages.Error_NeedSpacesBetweenSetVariables({ item }));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
for (const id2 of setrefs) {
|
|
94
|
+
if (!allSets.has(id2)) {
|
|
95
|
+
valid = false;
|
|
96
|
+
this.callbacks.reportMessage(CompilerMessages.Error_MissingSetVariable({ id: id2 }));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// TODO-LDML: Are there other illegal cases here? what about "x$[set]"?
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// UnicodeSets
|
|
104
|
+
for (const { id, value } of variables.unicodeSet) {
|
|
105
|
+
addId(id);
|
|
106
|
+
allUnicodeSets.add(id);
|
|
107
|
+
const stringrefs = VariableParser.allStringReferences(value);
|
|
108
|
+
for (const id2 of stringrefs) {
|
|
109
|
+
if (!allStrings.has(id2)) {
|
|
110
|
+
valid = false;
|
|
111
|
+
this.callbacks.reportMessage(CompilerMessages.Error_MissingStringVariable({ id: id2 }));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const setrefs = VariableParser.allSetReferences(value);
|
|
115
|
+
for (const id2 of setrefs) {
|
|
116
|
+
if (!allUnicodeSets.has(id2)) {
|
|
117
|
+
valid = false;
|
|
118
|
+
if (allSets.has(id2)) {
|
|
119
|
+
// $[set] in a UnicodeSet must be another UnicodeSet.
|
|
120
|
+
this.callbacks.reportMessage(CompilerMessages.Error_CantReferenceSetFromUnicodeSet({ id: id2 }));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
this.callbacks.reportMessage(CompilerMessages.Error_MissingUnicodeSetVariable({ id: id2 }));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// one report if any dups
|
|
129
|
+
if (dups.size > 0) {
|
|
130
|
+
this.callbacks.reportMessage(CompilerMessages.Error_DuplicateVariable({
|
|
131
|
+
ids: Array.from(dups.values()).sort().join(', ')
|
|
132
|
+
}));
|
|
133
|
+
valid = false;
|
|
134
|
+
}
|
|
135
|
+
return valid;
|
|
136
|
+
}
|
|
137
|
+
compile(sections) {
|
|
138
|
+
const result = new Vars();
|
|
139
|
+
const variables = this.keyboard?.variables;
|
|
140
|
+
if (!variables)
|
|
141
|
+
return result; // Empty vars, to simplify other sections
|
|
142
|
+
// we already know the variables do not conflict with each other
|
|
143
|
+
// need to add these one by one, because they depend on each other.
|
|
144
|
+
// we don't add these in completely 'natural' order because xml2js has already lost that.
|
|
145
|
+
// instead we go: strings, sets, then unicodeSets.
|
|
146
|
+
// first, strings.
|
|
147
|
+
variables?.string?.forEach((e) => this.addString(result, e, sections));
|
|
148
|
+
variables?.set?.forEach((e) => this.addSet(result, e, sections));
|
|
149
|
+
variables?.unicodeSet?.forEach((e) => this.addUnicodeSet(result, e, sections));
|
|
150
|
+
return result.valid() ? result : null;
|
|
151
|
+
}
|
|
152
|
+
// routines for initializing Vars remain here, in the compiler.
|
|
153
|
+
addString(result, e, sections) {
|
|
154
|
+
const { id } = e;
|
|
155
|
+
let { value } = e;
|
|
156
|
+
// fix any variables
|
|
157
|
+
value = result.substituteStrings(value, sections);
|
|
158
|
+
result.strings.push(new StringVarItem(id, value, sections));
|
|
159
|
+
}
|
|
160
|
+
addSet(result, e, sections) {
|
|
161
|
+
const { id } = e;
|
|
162
|
+
let { value } = e;
|
|
163
|
+
// first substitute strings
|
|
164
|
+
value = result.substituteStrings(value, sections);
|
|
165
|
+
// OK to do this as a substitute, because we've already validated the set above.
|
|
166
|
+
value = result.substituteSets(value, sections);
|
|
167
|
+
const items = VariableParser.setSplitter(value);
|
|
168
|
+
result.sets.push(new SetVarItem(id, items, sections));
|
|
169
|
+
}
|
|
170
|
+
addUnicodeSet(result, e, sections) {
|
|
171
|
+
const { id } = e;
|
|
172
|
+
let { value } = e;
|
|
173
|
+
value = result.substituteStrings(value, sections);
|
|
174
|
+
value = result.substituteUnicodeSets(value, sections);
|
|
175
|
+
result.unicodeSets.push(new UnicodeSetItem(id, value, sections, this.usetparser));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=vars.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vars.js","sourceRoot":"","sources":["../../../src/compiler/vars.ts"],"names":[],"mappings":"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"}
|
package/build/src/util/util.d.ts
CHANGED
|
@@ -18,6 +18,16 @@ export declare function calculateUniqueKeys(keys?: LDMLKeyboard.LKKey[]): LDMLKe
|
|
|
18
18
|
* @returns set of key IDs
|
|
19
19
|
*/
|
|
20
20
|
export declare function allUsedKeyIdsInLayers(layersList: LDMLKeyboard.LKLayers[] | null): Set<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Helper function for validating child elements. Written for the convenience of message passing functions.
|
|
23
|
+
*
|
|
24
|
+
* @param values array of values to check
|
|
25
|
+
* @param onDuplicate callback with array of duplicate values, deduped
|
|
26
|
+
* @param allowed optional set of valid values
|
|
27
|
+
* @param onInvalid callback with array of invalid values, deduped
|
|
28
|
+
* @returns true if all OK
|
|
29
|
+
*/
|
|
30
|
+
export declare function verifyValidAndUnique(values: string[], onDuplicate: (duplicates: string[]) => void, allowed?: Set<string>, onInvalid?: (invalids: string[]) => void): boolean;
|
|
21
31
|
/**
|
|
22
32
|
* Determine modifier from layer info
|
|
23
33
|
* @param layer layer obj
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,WAEjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,CAiBrF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAgB9F;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,GAAI,MAAM,CAYjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAI,OAAO,CAQzD"}
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,WAEjG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,CAiBrF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAgB9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,GACtC,OAAO,CA0BV;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,GAAI,MAAM,CAYjF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAI,OAAO,CAQzD"}
|