Commit graph

7 commits

Author SHA1 Message Date
Marc Durdin
702db90a71 feat(core): add version field to meta
Also adds semver package for validating the version field.
2022-09-02 14:13:10 +10:00
Marc Durdin
25b2d255aa feat(developer): use json schema to verify source file
As we do not appear to have access to a good DTD validation library in
Node.js, we will instead convert the DTD to a JSON schema file and use
that for validation.

I have not verified every aspect of the JSON schema at this point, but
will incrementally do so as I implement further aspects of the compiler.

This updates all the testing to use the schema. As the schema validation
is slow, I have increased the 'normal' time for tests.
2022-09-01 16:56:50 +10:00
Marc Durdin
a72146e42d feat(developer): unit test framework for kmldmlc 2022-08-29 17:21:05 +10:00
Marc Durdin
a3e672e808 feat(developer): LDML compiler kmx-builder
Generates a valid .kmx file (legacy structures only) from an
intermediate in-memory structure. Included for completeness, although it
is anticipated that LDML keyboards will not have any groups, though they
will probably have some metadata stores.
2022-08-24 13:43:09 +10:00
Marc Durdin
4018e528d9 feat(developer): groundwork - kmx file structures
Defines kmx binary structures and wireframe builder to emit a .kmx file.

Currently the builder will emit a roughly correct header. Next steps are
to build a .kmx file with stores, groups and keys, to match existing KMX
compiler behaviour. Once that is done, will return to generation of
KMXPlus data structures.

Compiler is designed to work independent of file system so it should run
inside browser or node environment. kmldmlc.ts is node-specific, but all
other modules should be multi-platform.
2022-08-24 09:32:30 +10:00
Marc Durdin
8cba43f989
chore: Apply suggestions from code review
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Co-authored-by: Steven R. Loomis <srl295@gmail.com>
2022-08-24 09:29:03 +10:00
Marc Durdin
1a0b67a242 feat(developer): LDML keyboard compiler - infrastructure 2022-08-23 10:27:34 +10:00