Commit graph

196 commits

Author SHA1 Message Date
Steven R. Loomis
a6dcf4dfce
Apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-07-03 18:20:20 -05:00
Steven R. Loomis
a25d3819d1 Merge remote-tracking branch 'upstream/master' into feat/developer-7377-reorder-uset 2023-07-03 18:09:22 -05:00
Steven R. Loomis
3ecf8da917
Apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-07-03 18:08:25 -05:00
Steven R. Loomis
88650e2085 feat(developer): uset in element string 🙀
- fix uset builder and other missing uset parts
- basic.xml passes
- update to constants

Fixes: #7377
2023-06-30 17:27:04 -05:00
Steven R. Loomis
5d5b61cd0a feat(developer): uset in element string 🙀
- update element string constructors to support UnicodeString and the segmented array from ElementParser
- update compiler machinery to pass USetParser in the DependencySections
- test cases

#7377
2023-06-30 15:56:45 -05:00
Steven R. Loomis
067c0b2f67 feat(common): unescaper / element updates for uset 🙀
- add unescaper for quad string (\u0127)

#7377
2023-06-30 15:50:38 -05:00
Steven R. Loomis
3d6af245de feat(common): add segmenter for element strings 🙀
- detect and reject nested square brackets, for now
- implement segmentation of reorder element strings,
  including type identification (escape, codepoint, uset)
- tests

For #7377
2023-06-30 08:49:07 -05:00
Steven R. Loomis
fbf6005bc4
Merge pull request #9084 from keymanapp/feat/developer-9050-utf32-epic-ldml
feat(developer,common,core): ldml UTF-32 literals in binary 🙀
2023-06-26 20:33:27 -05:00
Steven R. Loomis
30c4a89149 feat(developer): improve fix for UTF-32 single chars 🙀
- add some asserts

Fixes: #9050
2023-06-26 18:56:57 -05:00
Joshua Horton
2ac8a4503b
Merge branch 'master' into feature-esmodule-web-engine 2023-06-26 09:09:43 +07:00
dependabot[bot]
7d08b08fb2
chore(deps): bump semver from 7.3.8 to 7.5.2
Bumps [semver](https://github.com/npm/node-semver) from 7.3.8 to 7.5.2.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.3.8...v7.5.2)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-24 12:37:06 +00:00
Steven R. Loomis
83bb7e6f12
Merge branch 'master' into feat/developer-9050-utf32-epic-ldml 2023-06-23 17:31:43 -05:00
Steven R. Loomis
5cd3447bfd feat(developer): last fix for UTF-32 single chars 🙀
- elem

Fixes: #9050
2023-06-23 17:30:48 -05:00
Steven R. Loomis
de90644d7a feat(core,common,developer): support UTF-32 single chars 🙀
- C++ side now
- updated tests
- refactored escaping code and squashed bugs
- still todo: basic.xml

For: #9050
2023-06-23 16:55:05 -05:00
Steven R. Loomis
8304de4ad9 feat(common): support UTF-32 single chars 🙀
- common and developer side
- needs C++ update and basic.xml

For: #9050
2023-06-23 14:11:26 -05:00
Steven R. Loomis
8a3a08dcf7 feat(core): update documentation and builder for uset 🙀
- pre-sort the uset items instead of copying the patterns and re-finding
- update docs on the uset subtable

#7377
2023-06-23 10:52:34 -05:00
Steven R. Loomis
248d423535 feat(common,developer,core): add uset section 🙀
- not emitted yet, basic scaffolding
- expanded type field in elem:  str/char/set

For: #7377
2023-06-20 18:23:54 -05:00
Marc Durdin
cbc5b13034 fix(developer): keep kmc-kmn messages within namespace
Fixes #8998.

kmc-kmn messages were broken down into sub-namespaces, but the range
overlapped the reserved namespace mask range. Fixed the message values,
added a new test to the verifyCompilerMessagesObject function to verify
that messages don't creep outside their namespace, and defined new
masks (in CompilerErrorSeverity enum... hmm) to help.

I opted to remove the leading `0` in the messages for kmc-kmn as I had
to correct a number of them anyway, but not the messages in remaining
units at this time (it's not an error, but just slightly misleading as
we only have 12 bits, not 16 to play with).

It is safe to reassign these messages as they were only assigned in 17.0
alpha.
2023-06-13 06:22:15 +07:00
Steven R. Loomis
4febfcb451 feat(developer): improve tran/bksp tests, other improvements 🙀
- delete dead code
- share common ID regex for vars
- move bksp/finl/order tests into tran

For: #7377
2023-06-08 18:39:44 -05:00
Steven R. Loomis
26053a5ba3
Apply suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2023-06-08 18:10:11 -05:00
Steven R. Loomis
ad1d4e734c feat(common): fix bug in build-tran 🙀
For: #7377
2023-06-06 18:37:07 -05:00
Steven R. Loomis
8548b0fd33 Merge remote-tracking branch 'upstream/master' into feat/developer-7377-transform-format-epic-ldml3 2023-06-06 09:45:21 -05:00
Joshua A. Horton
718ca50b23 chore(web): Merge branch 'master' into chore/web/feature-esmodule-a17s14-mid-update 2023-06-06 12:37:15 +07:00
Steven R. Loomis
70fcea815a feat(developer): tran support 🙀
- tran builder

For: #7377
2023-06-05 19:18:59 -05:00
Steven R. Loomis
2054eeb703 feat(developer): tran support 🙀
- support regex format for sets and unicodeSets
- support mapFrom and mapTo detection

For: #7377
2023-06-02 18:31:25 -05:00
Steven R. Loomis
4b81137a61 feat(developer): section dependencies 🙀
- fix test helper for dependencies
- moved VariableParser and MarkerParser into common

For: #7377
2023-06-02 16:58:39 -05:00
Steven R. Loomis
9b177b2f00 feat(developer): section dependencies 🙀
- make explicit section dependencies, add a test

For: #7377
2023-06-02 15:19:00 -05:00
Marc Durdin
0ec5c08b26 chore(common): move const url to class prop
We still have cjs modules that rely on the ldml-keyboard-xml-reader, and
this meant that an exported const was being calculated with an invalid
meta url, which crashed the cjs module require() call.
2023-06-02 12:28:13 +07:00
Marc Durdin
4e535832d8 chore: cleanup 2023-06-02 11:45:59 +07:00
Marc Durdin
a281e1ac60 chore(common): remove redundant path 2023-06-02 11:43:25 +07:00
Marc Durdin
b313272250 chore(common): remove url module ref from common/web/types
The url module is a node module. We need to move responsibility for
resolving the path of the LDML XML <import> statements out of
common/web/types, and into the ultimate consumer, so it's now surfaced
as an option, along with a helper constant that reports the
import.meta.url-relative base path of the standard imports that are
compiled into common/web/types.

This hopefully means we can use this module in both browser and node
contexts without trouble.
2023-06-02 11:38:17 +07:00
Marc Durdin
c3458d040c refactor(developer): move filename consistency check to kmc
kmcmplib no longer has any filesystem access, so it cannot verify if a
referenced filename in a source file has the same case as the actual
filename on disk (a risk when moving projects between platforms). So
I opted to move this to the `loadFile` callback in kmc, which is the
only place where filesystem is actually accessed, and added
corresponding unit test.

Small additional fixes here:

1. Move from `Buffer` to `Uint8Array` in all kmc-* modules, so that we
   remove that barrier to running on web.
2. Use `callbacks.loadFile` instead of `callbacks.fs.readFileSync`, so
   that we can be sure to run the filename consistency check.
3. Fixed kps parser silently swallowing xml errors on load.
4. Added silent mode to NodeCompilerCallbacks so we could cleanly test
   the new filename consistency hint.
5. Noted a location where we still have NodeJS deps in kmc-ldml.
2023-06-01 15:11:38 +07:00
Marc Durdin
9d351f4798 chore(developer): verify kvks files and report errors
Fixes #8886.

.kvks compiler now returns helpful errors for xml parse failures and
schema validation errors, and for invalid virtual key codes. Introduces
extra infrastructure for reporting and unit testing messages to kmc-kmn.

This also fixes unhandled xml load exceptions and simplifies the error
reporting coming out of the kvks loader, on the basis that only one type
of error was being reported anyway.
2023-06-01 05:02:26 +07:00
Steven R. Loomis
ca602385b3 feat(developer): vars: hooray for more errors 🙀
For: #7377
2023-05-27 17:01:10 -05:00
Marc Durdin
d1d6dc5d99 refactor(developer): compiler interface part 1 for wasm
This starts the refactor of the .kmn compiler interfaces for WASM,
moving more file writes into typescript and out of the compiler. Adds a
cleaner binding and structures for passing compile metadata back to
typescript for additional build steps (e.g. kvk, js builds).

Will rebase the Typescript-based KMW compiler onto this so it can start
to benefit from the refactoring.

* Fixes a minor issue with loading a .kvks file with an empty flags set.
* Adds a writeFileSync method to the compiler callback interfaces.
* Adds an e2e compiler test to verify that .kmx and .kvk are both
  correctly compiled.
2023-05-23 15:26:28 +07:00
Joshua A. Horton
ca894d0991 chore(web): Merge branch 'master' into chore/web/merge-master-esmodule-a17s13-mid 2023-05-22 13:49:45 +07:00
Steven R. Loomis
518fcd8fc2 feat(developer): tran: compiler path complete 🙀
- still doesn't actually precompile vars or regex

For: #7377
2023-05-19 19:09:44 -05:00
Steven R. Loomis
3165eae0ea feat(developer): tran: verify steps 🙀
- also add function compilerEventFormat() to format an event or array of events

For: #7377
2023-05-19 13:23:05 -05:00
Steven R. Loomis
4a53bd18de feat(developer): tran: group steps 🙀
For: #7377
2023-05-17 17:29:16 -05:00
Steven R. Loomis
d1b55ddee6 Merge remote-tracking branch 'upstream/master' into feat/developer-7377-transform-format-epic-ldml3 2023-05-16 18:10:49 -05:00
Steven R. Loomis
1937552f39 Merge remote-tracking branch 'upstream/master' into feat/developer-234-uset-wasm-epic-ldml 2023-05-12 08:44:19 -05:00
Joshua A. Horton
d9425bb1ff chore: Merge branch 'master' into feature-esmodule-as17s12-end-update 2023-05-12 11:53:12 +07:00
Marc Durdin
7982bd955c
Merge pull request #8729 from keymanapp/chore/developer/move-package-formats-to-common-types
chore(developer): move package formats to common/web/types
2023-05-12 12:25:19 +10:00
Steven R. Loomis
e37e4d0cd3 feat(developer): vars: binary builder 🙀
- no, not basic.txt yet…

For: #7377
2023-05-11 19:54:45 -05:00
Steven R. Loomis
cc09973874 feat(developer): vars: set validation 🙀
For: #7377
2023-05-11 18:47:48 -05:00
Steven R. Loomis
c06726ce0d feat(developer): vars: uset validation 🙀
For: #7377
2023-05-11 13:05:39 -05:00
Steven R. Loomis
7855cdc494 feat(common): add async init() to compiler sections 🙀
- lots of ripples through test and client code code
- passes all but basic.xml (some tests stubbed out still, though)
- update vars test

For: #7377
2023-05-11 10:42:20 -05:00
Steven R. Loomis
c4fe843655 feat(common,developer): remove ordr and finl, add vars 🙀
- vars tests, doesn't pass yet
- tran tests and compilers stubbed out for now

For: #7377
2023-05-11 10:41:37 -05:00
Steven R. Loomis
53d4f22d13 feat(common): initial work on ldml variables 🙀
For: #7377
2023-05-11 10:41:37 -05:00
Steven R. Loomis
6317583528 feat(developer): kmc-kmn: wasm and error message updates 🙀
developer:
- update wasm machinery in kmc-kmn to be more self contained
- improve exception situation in wasm functions

common:
- compilerErrorFormatCode() for formatting the raw code such as for tests
- compilerExceptionToString() for formatting exceptions in messages

for: #7234
2023-05-11 10:37:46 -05:00