Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/invalid-keyboards/ik_001_bad_key.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="a" /> <!-- number row -->
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_000_minimal_keyboard.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Keys that don't show up in a row don't generate an output
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="1" />
<row keys="q" />
</layer>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_001_tiny.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="hmaqtugha that" /> <!-- number row -->
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_002_tinyu32.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="hmaqtugha that screamcat" /> <!-- number row -->
</layer>
</layers>
Expand Down
4 changes: 2 additions & 2 deletions core/tests/unit/ldml/keyboards/k_003_transform.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ from https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-ke
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="hat 1 2 3 4 5 6 7 8 9 0 hyphen equal" />
<row keys="q w e r t y u i o p" />
<row keys="a s d f g h j k l" />
<row keys="z x c v b n m" />
<row keys="space" />
</layer>
<layer modifiers="shift" id="shift">
<layer modifiers="shift">
<row keys="untransformed-hat 1 2 3 4 5 6 7 8 9 0 hyphen equal" />
<row keys="Q W E R T Y U I O P" />
<row keys="A S D F G H J K L" />
Expand Down
8 changes: 4 additions & 4 deletions core/tests/unit/ldml/keyboards/k_004_tinyshift.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@
</keys>

<layers formId="us">
<layer id="base" modifiers="none">
<layer modifiers="none">
<row keys="hmaqtugha that" /> <!-- number row -->
</layer>
<layer id="shift" modifiers="shift">
<layer modifiers="shift">
<row keys="seven eee" /> <!-- number row -->
</layer>
<layer id="control" modifiers="ctrl">
<layer modifiers="ctrl">
<row keys="that gap" /> <!-- number row -->
</layer>
<layer id="catchall" modifiers="other">
<layer modifiers="other">
<row keys="eee gap" /> <!-- number row -->
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_005_modbittest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<keys/> <!-- implied only -->

<layers formId="us">
<layer id="base" modifiers="none">
<layer modifiers="none">
<row keys="a" /> <!-- K_BKQUOTE -->
</layer>
<layer modifiers="shift">
Expand Down
4 changes: 2 additions & 2 deletions core/tests/unit/ldml/keyboards/k_006_backspace.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="hat 1 2 3 4 5 6 7 8 9 0 hyphen equal" />
<row keys="q w e r t y u i o p" />
<row keys="a s d f g h j k l" />
<row keys="z x c v b n m" />
<row keys="space" />
</layer>
<layer modifiers="shift" id="shift">
<layer modifiers="shift">
<row keys="untransformed-hat 1 2 3 4 5 6 7 8 9 0 hyphen equal" />
<row keys="Q W E R T Y U I O P" />
<row keys="A S D F G H J K L" />
Expand Down
4 changes: 2 additions & 2 deletions core/tests/unit/ldml/keyboards/k_007_transform_rgx.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ from https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-ke
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="grave 1 2 3 4 5 6 7 8 9 0" />
<row keys="q w e r t y u i o p" />
<row keys="a s d f g h j k l" />
<row keys="z x c v b n m" />
<row keys="space" />
</layer>
<layer modifiers="shift" id="shift">
<layer modifiers="shift">
<row keys="grave 1 2 3 4 5 6 7 8 9 0" />
<row keys="Q W E R T Y U I O P" />
<row keys="A S D F G H J K L" />
Expand Down
4 changes: 2 additions & 2 deletions core/tests/unit/ldml/keyboards/k_008_transform_norm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ https://github.com/unicode-org/cldr/blob/keyboard-preview/docs/ldml/tr35-keyboar
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="u-0320 1 2 3 4 5 6 7 8 9 0" />
<row keys="q w e r t y u i o p" />
<row keys="a s d f g h j k l" />
<row keys="z x c v b n m" />
<row keys="space" />
</layer>
<layer modifiers="shift" id="shift">
<layer modifiers="shift">
<row keys="u-0300 u-00e8 nfd nfc not-nfd stampy lgtm u-0344" />
</layer>
</layers>
Expand Down
4 changes: 2 additions & 2 deletions core/tests/unit/ldml/keyboards/k_009_transform_nfc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ like k_008 but in NFC (and other normalizations)
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="u-0320 1 2 3 4 5 6 7 8 9 0" />
<row keys="q w e r t y u i o p" />
<row keys="a s d f g h j k l" />
<row keys="z x c v b n m" />
<row keys="space" />
</layer>
<layer modifiers="shift" id="shift">
<layer modifiers="shift">
<row keys="u-0300 u-00e8 nfd nfc not-nfd stampy lgtm u-0344" />
</layer>
</layers>
Expand Down
6 changes: 3 additions & 3 deletions core/tests/unit/ldml/keyboards/k_012_other.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ will match the default layer
<keys/>

<layers formId="us">
<layer id="base" modifiers="none">
<layer modifiers="none">
<row keys="b" /> <!-- number row -->
</layer>
<layer id="shift" modifiers="shift">
<layer modifiers="shift">
<row keys="s" /> <!-- number row -->
</layer>
<layer id="other" modifiers="other">
<layer modifiers="other">
<row keys="d" /> <!-- number row -->
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_100_keytest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="a gap"/>
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_101_keytest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="a" /> <!-- number row -->
</layer>
</layers>
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_102_keytest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Comment: enter=not mappable, causes ctx reset.
</keys>

<layers formId="us">
<layer id="base">
<layer modifiers="none">
<row keys="a gap" /> <!-- number row -->
<row keys="q gap" /> <!-- q w ... -->
<row keys="gap" />
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_200_reorder_nod_Lana.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="roast" />
<row keys="gap wa gap gap t2 gap gap gap o gap" />
<row keys="gap sakot gap gap gap gap gap kha gap" />
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_201_reorder_esk.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="gap overbar underbar circumflex" />
<row keys="gap gap e gap gap y u i o gap" />
<row keys="a" />
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_210_marker.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="grave acute caret hacek squiggle" />
<row keys="q w e" /> <!-- etc -->
<row keys="a s d" /> <!-- etc -->
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_211_marker_escape.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="B 1 2 3" />
<row keys="q w e" /> <!-- etc -->
<row keys="a s d" /> <!-- etc -->
Expand Down
2 changes: 1 addition & 1 deletion core/tests/unit/ldml/keyboards/k_212_marker_11057.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</keys>

<layers formId="us">
<layer modifiers="none" id="base">
<layer modifiers="none">
<row keys="caret umlaut" />
<row keys="q w e r t y" />
<row keys="a" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<key id="that" output="&#xFFFF;" /> <!-- illegal NCR (single char)-->
</keys>

<layers formId="us" minDeviceWidth="123">
<layers formId="touch" minDeviceWidth="123">
<layer id="&#xFFFE;">
<row keys="hmaqtugha that" />
</layer>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
]
},
"layers": {
"formId": "us",
"formId": "touch",
"minDeviceWidth": "123",
"layer": {
"id": "￾",
Expand Down
2 changes: 1 addition & 1 deletion developer/src/kmc-ldml/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,4 @@ builder_run_action configure do_configure
builder_run_action build do_build
builder_run_action build-fixtures do_build_fixtures
builder_run_action api typescript_run_api_extractor developer/src/kmc-ldml main.d.ts
builder_run_action test typescript_run_eslint_mocha_tests 90
builder_run_action test typescript_run_eslint_mocha_tests
12 changes: 3 additions & 9 deletions developer/src/kmc-ldml/src/compiler/keys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import Keys = KMXPlus.Keys;
import KeysKeys = KMXPlus.KeysKeys;
import ListItem = KMXPlus.ListItem;
import KeysFlicks = KMXPlus.KeysFlicks;
import { allUsedKeyIdsInFlick, allUsedKeyIdsInKey, allUsedKeyIdsInLayers, calculateUniqueKeys, hashFlicks, hashKeys, translateLayerAttrToModifier, validModifier } from '../util/util.js';
import { allUsedKeyIdsInFlick, allUsedKeyIdsInKey, allUsedKeyIdsInLayers, calculateUniqueKeys, hashFlicks, hashKeys, translateLayerAttrToModifier } from '../util/util.js';
import { SubstitutionUse, Substitutions } from './substitution-tracker.js';

/** reserved name for the special gap key. space is not allowed in key ids. */
Expand Down Expand Up @@ -457,12 +457,6 @@ export class KeysCompiler extends SectionCompiler {
let valid = true;

const { modifiers } = layer;
if (!validModifier(modifiers)) {
this.callbacks.reportMessage(
LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer)
);
valid = false;
}

if (layer.row.length > keymap.length) {
this.callbacks.reportMessage(
Expand All @@ -480,7 +474,7 @@ export class KeysCompiler extends SectionCompiler {
LdmlCompilerMessages.Error_RowOnHardwareLayerHasTooManyKeys({
row: y + 1,
hardware: layers.formId,
modifiers: modifiers || 'none',
modifiers,
}, row)
);
valid = false;
Expand All @@ -497,7 +491,7 @@ export class KeysCompiler extends SectionCompiler {
keyId: key,
col: x + 1,
row: y + 1,
layer: layer.id,
layer: layer.id ?? layer.modifiers, // just to give a useful reference point in the error message
form: "hardware",
}, row)
);
Expand Down
35 changes: 27 additions & 8 deletions developer/src/kmc-ldml/src/compiler/layr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export class LayrCompiler extends SectionCompiler {
if (formId === 'touch') {
touchLayers++;
totalLayerCount += layers.layer?.length;
// TODO-LDML: CLDR-19754 spec does not require minDeviceWidth, but if multiple touch forms then it would be important for differentiation
const { minDeviceWidth } = layers;
if (!minDeviceWidth ||
minDeviceWidth < constants.layr_min_minDeviceWidth ||
Expand All @@ -40,22 +41,40 @@ export class LayrCompiler extends SectionCompiler {
} else {
deviceWidths.add(minDeviceWidth);
}
// For touch layers, id attr must exist, and modifiers attribute should not
layers.layer.forEach(layer => {
if(typeof layer.id === 'undefined') {
this.callbacks.reportMessage(LdmlCompilerMessages.Error_TouchLayerRequiresId({minDeviceWidth}, layer));
valid = false;
}
if(typeof layer.modifiers !== 'undefined') {
this.callbacks.reportMessage(LdmlCompilerMessages.Hint_TouchLayerHasModifiers({minDeviceWidth, id: layer.id}, layer));
}
totalLayerCount++;
});
} else {
// hardware
hardwareLayers++;
if (hardwareLayers > 1) {
valid = false;
this.callbacks.reportMessage(LdmlCompilerMessages.Error_ExcessHardware({formId}, layers));
}
layers.layer.forEach(layer => {
const { modifiers } = layer;
if(typeof modifiers === 'undefined' || modifiers == '') {
this.callbacks.reportMessage(LdmlCompilerMessages.Error_HardwareLayerRequiresModifiers({ formId }, layer));
valid = false;
}
else if (!validModifier(modifiers)) {
this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer));
valid = false;
}
if(typeof layer.id !== 'undefined') {
this.callbacks.reportMessage(LdmlCompilerMessages.Hint_HardwareLayerHasId({formId, id: layer.id}, layer));
}
totalLayerCount++;
});
}
layers.layer.forEach((layer) => {
const { modifiers } = layer;
totalLayerCount++;
if (!validModifier(modifiers)) {
this.callbacks.reportMessage(LdmlCompilerMessages.Error_InvalidModifier({ modifiers }, layer));
valid = false;
}
});
});
if (totalLayerCount === 0) { // TODO-LDML: does not validate touch layers yet
// no layers seen anywhere
Expand Down
Loading