mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-13 04:09:25 +00:00
parent
a2a0e79675
commit
53b20e6adc
8 changed files with 41 additions and 3 deletions
1
developer/src/kmc-ldml/.gitignore
vendored
1
developer/src/kmc-ldml/.gitignore
vendored
|
|
@ -1 +1,2 @@
|
|||
src/util/abnf/*.pegjs
|
||||
src/util/abnf/*.js
|
||||
|
|
|
|||
|
|
@ -54,9 +54,12 @@ function do_build_abnf() {
|
|||
base=$(basename "$file" .abnf)
|
||||
peg="$base.pegjs"
|
||||
outfile="./src/util/abnf/$peg"
|
||||
outjs="./src/util/abnf/$base.js"
|
||||
if [ ! -f "$outfile" ]; then
|
||||
printf "${COLOR_GREY}abnf_gen ${COLOR_PURPLE}${base}.abnf -> ${peg}${COLOR_RESET}"
|
||||
npx -p abnf abnf_gen "$file" -o "$outfile"
|
||||
printf "${COLOR_GREY}abnf_gen ${COLOR_PURPLE}${peg} -> ${base}.js${COLOR_RESET}"
|
||||
npx peggy "$outfile" -o "$outjs" --format es --dts
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@
|
|||
"@keymanapp/keyman-version": "*",
|
||||
"@keymanapp/kmc-kmn": "*",
|
||||
"@keymanapp/ldml-keyboard-constants": "*",
|
||||
"peggy": "^4.2.0",
|
||||
"semver": "^7.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
@ -44,6 +43,7 @@
|
|||
"chalk": "^2.4.2",
|
||||
"common-tags": "^1.8.2",
|
||||
"mocha": "^8.4.0",
|
||||
"peggy": "^4.2.0",
|
||||
"typescript": "^5.4.5"
|
||||
},
|
||||
"mocha": {
|
||||
|
|
|
|||
|
|
@ -258,4 +258,9 @@ export class LdmlCompilerMessages {
|
|||
\`<transform from="($[fromSet])" to="$[1:toSet]"/>\`.
|
||||
`);
|
||||
|
||||
static ERROR_UnparseableTransformTo = SevErrorTransform | 0x06;
|
||||
static Error_UnparseableTransformTo = (o: { to: string, message: string }) =>
|
||||
m(this.ERROR_UnparseableTransformTo, `Invalid transform to="${def(o.to)}": "${def(o.message)}"`);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import LKTransforms = LDMLKeyboard.LKTransforms;
|
|||
import { verifyValidAndUnique } from "../util/util.js";
|
||||
import { LdmlCompilerMessages } from "./ldml-compiler-messages.js";
|
||||
import { Substitutions, SubstitutionUse } from "./substitution-tracker.js";
|
||||
import { transform_from_parse, transform_to_parse } from "../util/abnf/abnf.js";
|
||||
|
||||
type TransformCompilerType = 'simple' | 'backspace';
|
||||
|
||||
|
|
@ -144,8 +145,24 @@ export abstract class TransformCompiler<T extends TransformCompilerType, TranBas
|
|||
let cookedFrom = transform.from;
|
||||
|
||||
// check for incorrect \uXXXX escapes. Do this before substituting markers or sets.
|
||||
// We run this first because it's more helpful than the ABNF.
|
||||
cookedFrom = this.checkEscapes(cookedFrom); // check for \uXXXX escapes before normalizing
|
||||
|
||||
// run the parser here next
|
||||
try {
|
||||
if (cookedFrom != null) {
|
||||
transform_from_parse(cookedFrom);
|
||||
}
|
||||
} catch (e) {
|
||||
this.callbacks.reportMessage(LdmlCompilerMessages.Error_UnparseableTransformFrom({ from: cookedFrom, message: e.toString() }));
|
||||
}
|
||||
|
||||
try {
|
||||
transform_to_parse(transform.to || '');
|
||||
} catch (e) {
|
||||
this.callbacks.reportMessage(LdmlCompilerMessages.Error_UnparseableTransformTo({ to: transform.to || '', message: e.toString() }));
|
||||
}
|
||||
|
||||
cookedFrom = sections.vars.substituteStrings(cookedFrom, sections, true);
|
||||
const mapFrom = LdmlKeyboardTypes.VariableParser.CAPTURE_SET_REFERENCE.exec(cookedFrom);
|
||||
const mapTo = LdmlKeyboardTypes.VariableParser.MAPPED_SET_REFERENCE.exec(transform.to || '');
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
/**
|
||||
* Re-export the generated parsers.
|
||||
*/
|
||||
|
||||
export { parse as transform_to_parse } from './transform-to-required.js';
|
||||
export { parse as transform_from_parse } from './transform-from-required.js';
|
||||
|
|
@ -7,7 +7,8 @@
|
|||
"baseUrl": ".",
|
||||
},
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
"src/**/*.ts",
|
||||
"src/util/abnf/*.js",
|
||||
],
|
||||
"references": [
|
||||
{ "path": "../../../common/web/keyman-version" },
|
||||
|
|
|
|||
7
package-lock.json
generated
7
package-lock.json
generated
|
|
@ -1281,7 +1281,6 @@
|
|||
"@keymanapp/keyman-version": "*",
|
||||
"@keymanapp/kmc-kmn": "*",
|
||||
"@keymanapp/ldml-keyboard-constants": "*",
|
||||
"peggy": "^4.2.0",
|
||||
"semver": "^7.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
@ -1296,6 +1295,7 @@
|
|||
"chalk": "^2.4.2",
|
||||
"common-tags": "^1.8.2",
|
||||
"mocha": "^8.4.0",
|
||||
"peggy": "^4.2.0",
|
||||
"typescript": "^5.4.5"
|
||||
}
|
||||
},
|
||||
|
|
@ -3664,6 +3664,7 @@
|
|||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/@peggyjs/from-mem/-/from-mem-1.3.5.tgz",
|
||||
"integrity": "sha512-oRyzXE7nirAn+5yYjCdWQHg3EG2XXcYRoYNOK8Quqnmm+9FyK/2YWVunwudlYl++M3xY+gIAdf0vAYS+p0nKfQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"semver": "7.6.3"
|
||||
},
|
||||
|
|
@ -3675,6 +3676,7 @@
|
|||
"version": "7.6.3",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
||||
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
},
|
||||
|
|
@ -12433,6 +12435,7 @@
|
|||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/peggy/-/peggy-4.2.0.tgz",
|
||||
"integrity": "sha512-ZjzyJYY8NqW8JOZr2PbS/J0UH/hnfGALxSDsBUVQg5Y/I+ZaPuGeBJ7EclUX2RvWjhlsi4pnuL1C/K/3u+cDeg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@peggyjs/from-mem": "1.3.5",
|
||||
|
|
@ -12450,6 +12453,7 @@
|
|||
"version": "12.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
|
||||
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
|
|
@ -13615,6 +13619,7 @@
|
|||
"version": "0.8.0",
|
||||
"resolved": "https://registry.npmjs.org/source-map-generator/-/source-map-generator-0.8.0.tgz",
|
||||
"integrity": "sha512-psgxdGMwl5MZM9S3FWee4EgsEaIjahYV5AzGnwUvPhWeITz/j6rKpysQHlQ4USdxvINlb8lKfWGIXwfkrgtqkA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue