@lokascript/semantic 1.0.0
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/LICENSE +21 -0
- package/README.md +686 -0
- package/dist/browser-ar.ar.global.js +2 -0
- package/dist/browser-core.core.global.js +2 -0
- package/dist/browser-de.de.global.js +2 -0
- package/dist/browser-east-asian.east-asian.global.js +2 -0
- package/dist/browser-en-tr.en-tr.global.js +2 -0
- package/dist/browser-en.en.global.js +2 -0
- package/dist/browser-es-en.es-en.global.js +2 -0
- package/dist/browser-es.es.global.js +2 -0
- package/dist/browser-fr.fr.global.js +2 -0
- package/dist/browser-id.id.global.js +2 -0
- package/dist/browser-ja.ja.global.js +2 -0
- package/dist/browser-ko.ko.global.js +2 -0
- package/dist/browser-lazy.lazy.global.js +2 -0
- package/dist/browser-priority.priority.global.js +2 -0
- package/dist/browser-pt.pt.global.js +2 -0
- package/dist/browser-qu.qu.global.js +2 -0
- package/dist/browser-sw.sw.global.js +2 -0
- package/dist/browser-tr.tr.global.js +2 -0
- package/dist/browser-western.western.global.js +2 -0
- package/dist/browser-zh.zh.global.js +2 -0
- package/dist/browser.global.js +3 -0
- package/dist/browser.global.js.map +1 -0
- package/dist/index.cjs +35051 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3426 -0
- package/dist/index.d.ts +3426 -0
- package/dist/index.js +34890 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/ar.d.ts +78 -0
- package/dist/languages/ar.js +1622 -0
- package/dist/languages/ar.js.map +1 -0
- package/dist/languages/de.d.ts +38 -0
- package/dist/languages/de.js +1168 -0
- package/dist/languages/de.js.map +1 -0
- package/dist/languages/en.d.ts +44 -0
- package/dist/languages/en.js +3491 -0
- package/dist/languages/en.js.map +1 -0
- package/dist/languages/es.d.ts +52 -0
- package/dist/languages/es.js +1493 -0
- package/dist/languages/es.js.map +1 -0
- package/dist/languages/fr.d.ts +37 -0
- package/dist/languages/fr.js +1159 -0
- package/dist/languages/fr.js.map +1 -0
- package/dist/languages/id.d.ts +35 -0
- package/dist/languages/id.js +1152 -0
- package/dist/languages/id.js.map +1 -0
- package/dist/languages/ja.d.ts +53 -0
- package/dist/languages/ja.js +1430 -0
- package/dist/languages/ja.js.map +1 -0
- package/dist/languages/ko.d.ts +51 -0
- package/dist/languages/ko.js +1729 -0
- package/dist/languages/ko.js.map +1 -0
- package/dist/languages/pt.d.ts +37 -0
- package/dist/languages/pt.js +1127 -0
- package/dist/languages/pt.js.map +1 -0
- package/dist/languages/qu.d.ts +36 -0
- package/dist/languages/qu.js +1143 -0
- package/dist/languages/qu.js.map +1 -0
- package/dist/languages/sw.d.ts +35 -0
- package/dist/languages/sw.js +1147 -0
- package/dist/languages/sw.js.map +1 -0
- package/dist/languages/tr.d.ts +45 -0
- package/dist/languages/tr.js +1529 -0
- package/dist/languages/tr.js.map +1 -0
- package/dist/languages/zh.d.ts +58 -0
- package/dist/languages/zh.js +1257 -0
- package/dist/languages/zh.js.map +1 -0
- package/dist/types-C4dcj53L.d.ts +600 -0
- package/package.json +202 -0
- package/src/__test-utils__/index.ts +7 -0
- package/src/__test-utils__/test-helpers.ts +8 -0
- package/src/__types__/test-helpers.ts +122 -0
- package/src/analysis/index.ts +479 -0
- package/src/ast-builder/command-mappers.ts +1133 -0
- package/src/ast-builder/expression-parser/index.ts +41 -0
- package/src/ast-builder/expression-parser/parser.ts +563 -0
- package/src/ast-builder/expression-parser/tokenizer.ts +394 -0
- package/src/ast-builder/expression-parser/types.ts +208 -0
- package/src/ast-builder/index.ts +536 -0
- package/src/ast-builder/value-converters.ts +172 -0
- package/src/bridge.ts +275 -0
- package/src/browser-ar.ts +162 -0
- package/src/browser-core.ts +231 -0
- package/src/browser-de.ts +162 -0
- package/src/browser-east-asian.ts +173 -0
- package/src/browser-en-tr.ts +165 -0
- package/src/browser-en.ts +157 -0
- package/src/browser-es-en.ts +200 -0
- package/src/browser-es.ts +170 -0
- package/src/browser-fr.ts +162 -0
- package/src/browser-id.ts +162 -0
- package/src/browser-ja.ts +162 -0
- package/src/browser-ko.ts +162 -0
- package/src/browser-lazy.ts +189 -0
- package/src/browser-priority.ts +214 -0
- package/src/browser-pt.ts +162 -0
- package/src/browser-qu.ts +162 -0
- package/src/browser-sw.ts +162 -0
- package/src/browser-tr.ts +162 -0
- package/src/browser-western.ts +181 -0
- package/src/browser-zh.ts +162 -0
- package/src/browser.ts +268 -0
- package/src/cache/index.ts +14 -0
- package/src/cache/semantic-cache.ts +344 -0
- package/src/core-bridge.ts +372 -0
- package/src/explicit/converter.ts +258 -0
- package/src/explicit/index.ts +18 -0
- package/src/explicit/parser.ts +236 -0
- package/src/explicit/renderer.ts +424 -0
- package/src/generators/command-schemas.ts +1636 -0
- package/src/generators/event-handler-generator.ts +109 -0
- package/src/generators/index.ts +117 -0
- package/src/generators/language-profiles.ts +139 -0
- package/src/generators/pattern-generator.ts +537 -0
- package/src/generators/profiles/arabic.ts +131 -0
- package/src/generators/profiles/bengali.ts +132 -0
- package/src/generators/profiles/chinese.ts +124 -0
- package/src/generators/profiles/english.ts +113 -0
- package/src/generators/profiles/french.ts +125 -0
- package/src/generators/profiles/german.ts +126 -0
- package/src/generators/profiles/hindi.ts +146 -0
- package/src/generators/profiles/index.ts +46 -0
- package/src/generators/profiles/indonesian.ts +125 -0
- package/src/generators/profiles/italian.ts +139 -0
- package/src/generators/profiles/japanese.ts +149 -0
- package/src/generators/profiles/korean.ts +127 -0
- package/src/generators/profiles/marker-templates.ts +288 -0
- package/src/generators/profiles/ms.ts +130 -0
- package/src/generators/profiles/polish.ts +249 -0
- package/src/generators/profiles/portuguese.ts +115 -0
- package/src/generators/profiles/quechua.ts +113 -0
- package/src/generators/profiles/russian.ts +260 -0
- package/src/generators/profiles/spanish.ts +130 -0
- package/src/generators/profiles/swahili.ts +129 -0
- package/src/generators/profiles/thai.ts +132 -0
- package/src/generators/profiles/tl.ts +128 -0
- package/src/generators/profiles/turkish.ts +124 -0
- package/src/generators/profiles/types.ts +165 -0
- package/src/generators/profiles/ukrainian.ts +270 -0
- package/src/generators/profiles/vietnamese.ts +133 -0
- package/src/generators/schema-error-codes.ts +160 -0
- package/src/generators/schema-validator.ts +391 -0
- package/src/index.ts +429 -0
- package/src/language-building-schema.ts +3170 -0
- package/src/language-loader.ts +394 -0
- package/src/languages/_all.ts +65 -0
- package/src/languages/ar.ts +15 -0
- package/src/languages/bn.ts +16 -0
- package/src/languages/de.ts +15 -0
- package/src/languages/en.ts +29 -0
- package/src/languages/es.ts +15 -0
- package/src/languages/fr.ts +15 -0
- package/src/languages/hi.ts +26 -0
- package/src/languages/id.ts +15 -0
- package/src/languages/index.ts +18 -0
- package/src/languages/it.ts +15 -0
- package/src/languages/ja.ts +15 -0
- package/src/languages/ko.ts +15 -0
- package/src/languages/ms.ts +16 -0
- package/src/languages/pl.ts +18 -0
- package/src/languages/pt.ts +15 -0
- package/src/languages/qu.ts +15 -0
- package/src/languages/ru.ts +26 -0
- package/src/languages/sw.ts +15 -0
- package/src/languages/th.ts +16 -0
- package/src/languages/tl.ts +16 -0
- package/src/languages/tr.ts +15 -0
- package/src/languages/uk.ts +26 -0
- package/src/languages/vi.ts +16 -0
- package/src/languages/zh.ts +15 -0
- package/src/parser/index.ts +15 -0
- package/src/parser/pattern-matcher.ts +1181 -0
- package/src/parser/semantic-parser.ts +573 -0
- package/src/parser/utils/index.ts +35 -0
- package/src/parser/utils/marker-resolution.ts +111 -0
- package/src/parser/utils/possessive-keywords.ts +43 -0
- package/src/parser/utils/role-positioning.ts +70 -0
- package/src/parser/utils/type-validation.ts +134 -0
- package/src/patterns/add/ar.ts +71 -0
- package/src/patterns/add/bn.ts +70 -0
- package/src/patterns/add/hi.ts +69 -0
- package/src/patterns/add/index.ts +87 -0
- package/src/patterns/add/it.ts +61 -0
- package/src/patterns/add/ja.ts +93 -0
- package/src/patterns/add/ko.ts +74 -0
- package/src/patterns/add/ms.ts +30 -0
- package/src/patterns/add/pl.ts +62 -0
- package/src/patterns/add/ru.ts +62 -0
- package/src/patterns/add/th.ts +49 -0
- package/src/patterns/add/tl.ts +30 -0
- package/src/patterns/add/tr.ts +71 -0
- package/src/patterns/add/uk.ts +62 -0
- package/src/patterns/add/vi.ts +61 -0
- package/src/patterns/add/zh.ts +71 -0
- package/src/patterns/builders.ts +207 -0
- package/src/patterns/decrement/bn.ts +70 -0
- package/src/patterns/decrement/de.ts +42 -0
- package/src/patterns/decrement/hi.ts +68 -0
- package/src/patterns/decrement/index.ts +79 -0
- package/src/patterns/decrement/it.ts +69 -0
- package/src/patterns/decrement/ms.ts +30 -0
- package/src/patterns/decrement/pl.ts +58 -0
- package/src/patterns/decrement/ru.ts +58 -0
- package/src/patterns/decrement/th.ts +49 -0
- package/src/patterns/decrement/tl.ts +30 -0
- package/src/patterns/decrement/tr.ts +48 -0
- package/src/patterns/decrement/uk.ts +58 -0
- package/src/patterns/decrement/vi.ts +61 -0
- package/src/patterns/decrement/zh.ts +32 -0
- package/src/patterns/en.ts +302 -0
- package/src/patterns/event-handler/ar.ts +151 -0
- package/src/patterns/event-handler/bn.ts +72 -0
- package/src/patterns/event-handler/de.ts +117 -0
- package/src/patterns/event-handler/en.ts +117 -0
- package/src/patterns/event-handler/es.ts +136 -0
- package/src/patterns/event-handler/fr.ts +117 -0
- package/src/patterns/event-handler/hi.ts +64 -0
- package/src/patterns/event-handler/id.ts +117 -0
- package/src/patterns/event-handler/index.ts +119 -0
- package/src/patterns/event-handler/it.ts +54 -0
- package/src/patterns/event-handler/ja.ts +118 -0
- package/src/patterns/event-handler/ko.ts +133 -0
- package/src/patterns/event-handler/ms.ts +30 -0
- package/src/patterns/event-handler/pl.ts +62 -0
- package/src/patterns/event-handler/pt.ts +117 -0
- package/src/patterns/event-handler/qu.ts +66 -0
- package/src/patterns/event-handler/ru.ts +62 -0
- package/src/patterns/event-handler/shared.ts +270 -0
- package/src/patterns/event-handler/sw.ts +117 -0
- package/src/patterns/event-handler/th.ts +53 -0
- package/src/patterns/event-handler/tl.ts +30 -0
- package/src/patterns/event-handler/tr.ts +170 -0
- package/src/patterns/event-handler/uk.ts +62 -0
- package/src/patterns/event-handler/vi.ts +61 -0
- package/src/patterns/event-handler/zh.ts +150 -0
- package/src/patterns/get/ar.ts +49 -0
- package/src/patterns/get/bn.ts +47 -0
- package/src/patterns/get/de.ts +32 -0
- package/src/patterns/get/hi.ts +52 -0
- package/src/patterns/get/index.ts +83 -0
- package/src/patterns/get/it.ts +56 -0
- package/src/patterns/get/ja.ts +53 -0
- package/src/patterns/get/ko.ts +53 -0
- package/src/patterns/get/ms.ts +30 -0
- package/src/patterns/get/pl.ts +57 -0
- package/src/patterns/get/ru.ts +57 -0
- package/src/patterns/get/th.ts +29 -0
- package/src/patterns/get/tl.ts +30 -0
- package/src/patterns/get/uk.ts +57 -0
- package/src/patterns/get/vi.ts +48 -0
- package/src/patterns/grammar-transformed/index.ts +39 -0
- package/src/patterns/grammar-transformed/ja.ts +1713 -0
- package/src/patterns/grammar-transformed/ko.ts +1311 -0
- package/src/patterns/grammar-transformed/tr.ts +1067 -0
- package/src/patterns/hide/ar.ts +67 -0
- package/src/patterns/hide/bn.ts +47 -0
- package/src/patterns/hide/de.ts +36 -0
- package/src/patterns/hide/hi.ts +61 -0
- package/src/patterns/hide/index.ts +91 -0
- package/src/patterns/hide/it.ts +56 -0
- package/src/patterns/hide/ja.ts +69 -0
- package/src/patterns/hide/ko.ts +69 -0
- package/src/patterns/hide/ms.ts +30 -0
- package/src/patterns/hide/pl.ts +57 -0
- package/src/patterns/hide/ru.ts +57 -0
- package/src/patterns/hide/th.ts +29 -0
- package/src/patterns/hide/tl.ts +30 -0
- package/src/patterns/hide/tr.ts +65 -0
- package/src/patterns/hide/uk.ts +57 -0
- package/src/patterns/hide/vi.ts +56 -0
- package/src/patterns/hide/zh.ts +68 -0
- package/src/patterns/increment/bn.ts +70 -0
- package/src/patterns/increment/de.ts +36 -0
- package/src/patterns/increment/hi.ts +68 -0
- package/src/patterns/increment/index.ts +79 -0
- package/src/patterns/increment/it.ts +69 -0
- package/src/patterns/increment/ms.ts +30 -0
- package/src/patterns/increment/pl.ts +58 -0
- package/src/patterns/increment/ru.ts +58 -0
- package/src/patterns/increment/th.ts +49 -0
- package/src/patterns/increment/tl.ts +30 -0
- package/src/patterns/increment/tr.ts +52 -0
- package/src/patterns/increment/uk.ts +58 -0
- package/src/patterns/increment/vi.ts +61 -0
- package/src/patterns/increment/zh.ts +32 -0
- package/src/patterns/index.ts +84 -0
- package/src/patterns/languages/en/control-flow.ts +93 -0
- package/src/patterns/languages/en/fetch.ts +62 -0
- package/src/patterns/languages/en/index.ts +42 -0
- package/src/patterns/languages/en/repeat.ts +67 -0
- package/src/patterns/languages/en/set.ts +48 -0
- package/src/patterns/languages/en/swap.ts +38 -0
- package/src/patterns/languages/en/temporal.ts +57 -0
- package/src/patterns/put/ar.ts +74 -0
- package/src/patterns/put/bn.ts +53 -0
- package/src/patterns/put/en.ts +74 -0
- package/src/patterns/put/es.ts +74 -0
- package/src/patterns/put/hi.ts +69 -0
- package/src/patterns/put/id.ts +96 -0
- package/src/patterns/put/index.ts +99 -0
- package/src/patterns/put/it.ts +56 -0
- package/src/patterns/put/ja.ts +75 -0
- package/src/patterns/put/ko.ts +67 -0
- package/src/patterns/put/ms.ts +30 -0
- package/src/patterns/put/pl.ts +81 -0
- package/src/patterns/put/ru.ts +85 -0
- package/src/patterns/put/th.ts +32 -0
- package/src/patterns/put/tl.ts +30 -0
- package/src/patterns/put/tr.ts +67 -0
- package/src/patterns/put/uk.ts +85 -0
- package/src/patterns/put/vi.ts +72 -0
- package/src/patterns/put/zh.ts +62 -0
- package/src/patterns/registry.ts +163 -0
- package/src/patterns/remove/ar.ts +71 -0
- package/src/patterns/remove/bn.ts +68 -0
- package/src/patterns/remove/hi.ts +69 -0
- package/src/patterns/remove/index.ts +87 -0
- package/src/patterns/remove/it.ts +69 -0
- package/src/patterns/remove/ja.ts +74 -0
- package/src/patterns/remove/ko.ts +78 -0
- package/src/patterns/remove/ms.ts +30 -0
- package/src/patterns/remove/pl.ts +62 -0
- package/src/patterns/remove/ru.ts +62 -0
- package/src/patterns/remove/th.ts +49 -0
- package/src/patterns/remove/tl.ts +30 -0
- package/src/patterns/remove/tr.ts +78 -0
- package/src/patterns/remove/uk.ts +62 -0
- package/src/patterns/remove/vi.ts +61 -0
- package/src/patterns/remove/zh.ts +72 -0
- package/src/patterns/set/ar.ts +84 -0
- package/src/patterns/set/bn.ts +53 -0
- package/src/patterns/set/de.ts +84 -0
- package/src/patterns/set/es.ts +92 -0
- package/src/patterns/set/fr.ts +88 -0
- package/src/patterns/set/hi.ts +56 -0
- package/src/patterns/set/id.ts +84 -0
- package/src/patterns/set/index.ts +107 -0
- package/src/patterns/set/it.ts +56 -0
- package/src/patterns/set/ja.ts +86 -0
- package/src/patterns/set/ko.ts +85 -0
- package/src/patterns/set/ms.ts +30 -0
- package/src/patterns/set/pl.ts +57 -0
- package/src/patterns/set/pt.ts +84 -0
- package/src/patterns/set/ru.ts +57 -0
- package/src/patterns/set/th.ts +31 -0
- package/src/patterns/set/tl.ts +30 -0
- package/src/patterns/set/tr.ts +107 -0
- package/src/patterns/set/uk.ts +57 -0
- package/src/patterns/set/vi.ts +53 -0
- package/src/patterns/set/zh.ts +84 -0
- package/src/patterns/show/ar.ts +67 -0
- package/src/patterns/show/bn.ts +47 -0
- package/src/patterns/show/de.ts +32 -0
- package/src/patterns/show/fr.ts +32 -0
- package/src/patterns/show/hi.ts +61 -0
- package/src/patterns/show/index.ts +95 -0
- package/src/patterns/show/it.ts +56 -0
- package/src/patterns/show/ja.ts +69 -0
- package/src/patterns/show/ko.ts +73 -0
- package/src/patterns/show/ms.ts +30 -0
- package/src/patterns/show/pl.ts +57 -0
- package/src/patterns/show/ru.ts +57 -0
- package/src/patterns/show/th.ts +29 -0
- package/src/patterns/show/tl.ts +30 -0
- package/src/patterns/show/tr.ts +65 -0
- package/src/patterns/show/uk.ts +57 -0
- package/src/patterns/show/vi.ts +56 -0
- package/src/patterns/show/zh.ts +68 -0
- package/src/patterns/take/ar.ts +51 -0
- package/src/patterns/take/index.ts +31 -0
- package/src/patterns/toggle/ar.ts +61 -0
- package/src/patterns/toggle/bn.ts +70 -0
- package/src/patterns/toggle/en.ts +61 -0
- package/src/patterns/toggle/es.ts +61 -0
- package/src/patterns/toggle/hi.ts +80 -0
- package/src/patterns/toggle/index.ts +95 -0
- package/src/patterns/toggle/it.ts +69 -0
- package/src/patterns/toggle/ja.ts +156 -0
- package/src/patterns/toggle/ko.ts +113 -0
- package/src/patterns/toggle/ms.ts +30 -0
- package/src/patterns/toggle/pl.ts +62 -0
- package/src/patterns/toggle/ru.ts +62 -0
- package/src/patterns/toggle/th.ts +50 -0
- package/src/patterns/toggle/tl.ts +30 -0
- package/src/patterns/toggle/tr.ts +88 -0
- package/src/patterns/toggle/uk.ts +62 -0
- package/src/patterns/toggle/vi.ts +61 -0
- package/src/patterns/toggle/zh.ts +99 -0
- package/src/public-api.ts +286 -0
- package/src/registry.ts +441 -0
- package/src/tokenizers/arabic.ts +723 -0
- package/src/tokenizers/base.ts +1300 -0
- package/src/tokenizers/bengali.ts +289 -0
- package/src/tokenizers/chinese.ts +481 -0
- package/src/tokenizers/english.ts +416 -0
- package/src/tokenizers/french.ts +326 -0
- package/src/tokenizers/german.ts +324 -0
- package/src/tokenizers/hindi.ts +319 -0
- package/src/tokenizers/index.ts +127 -0
- package/src/tokenizers/indonesian.ts +306 -0
- package/src/tokenizers/italian.ts +458 -0
- package/src/tokenizers/japanese.ts +447 -0
- package/src/tokenizers/korean.ts +642 -0
- package/src/tokenizers/morphology/arabic-normalizer.ts +242 -0
- package/src/tokenizers/morphology/french-normalizer.ts +268 -0
- package/src/tokenizers/morphology/german-normalizer.ts +256 -0
- package/src/tokenizers/morphology/index.ts +46 -0
- package/src/tokenizers/morphology/italian-normalizer.ts +329 -0
- package/src/tokenizers/morphology/japanese-normalizer.ts +288 -0
- package/src/tokenizers/morphology/korean-normalizer.ts +428 -0
- package/src/tokenizers/morphology/polish-normalizer.ts +264 -0
- package/src/tokenizers/morphology/portuguese-normalizer.ts +310 -0
- package/src/tokenizers/morphology/spanish-normalizer.ts +327 -0
- package/src/tokenizers/morphology/turkish-normalizer.ts +412 -0
- package/src/tokenizers/morphology/types.ts +211 -0
- package/src/tokenizers/ms.ts +198 -0
- package/src/tokenizers/polish.ts +354 -0
- package/src/tokenizers/portuguese.ts +304 -0
- package/src/tokenizers/quechua.ts +339 -0
- package/src/tokenizers/russian.ts +375 -0
- package/src/tokenizers/spanish.ts +403 -0
- package/src/tokenizers/swahili.ts +303 -0
- package/src/tokenizers/thai.ts +236 -0
- package/src/tokenizers/tl.ts +198 -0
- package/src/tokenizers/turkish.ts +411 -0
- package/src/tokenizers/ukrainian.ts +369 -0
- package/src/tokenizers/vietnamese.ts +410 -0
- package/src/types/grammar-types.ts +617 -0
- package/src/types/unified-profile.ts +267 -0
- package/src/types.ts +709 -0
- package/src/utils/confidence-calculator.ts +147 -0
- package/src/validators/command-validator.ts +380 -0
- package/src/validators/index.ts +15 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Russian Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Tree-shakeable: Only included when Russian is imported.
|
|
5
|
+
* Russian uses infinitive verb forms for commands.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get Russian increment patterns.
|
|
12
|
+
*/
|
|
13
|
+
export function getIncrementPatternsRu(): LanguagePattern[] {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
id: 'increment-ru-full',
|
|
17
|
+
language: 'ru',
|
|
18
|
+
command: 'increment',
|
|
19
|
+
priority: 100,
|
|
20
|
+
template: {
|
|
21
|
+
format: 'увеличить {patient} на {quantity}',
|
|
22
|
+
tokens: [
|
|
23
|
+
{ type: 'literal', value: 'увеличить', alternatives: ['увеличь'] },
|
|
24
|
+
{ type: 'role', role: 'patient' },
|
|
25
|
+
{
|
|
26
|
+
type: 'group',
|
|
27
|
+
optional: true,
|
|
28
|
+
tokens: [
|
|
29
|
+
{ type: 'literal', value: 'на' },
|
|
30
|
+
{ type: 'role', role: 'quantity' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
extraction: {
|
|
36
|
+
patient: { position: 1 },
|
|
37
|
+
quantity: { marker: 'на', default: { type: 'literal', value: 1 } },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'increment-ru-simple',
|
|
42
|
+
language: 'ru',
|
|
43
|
+
command: 'increment',
|
|
44
|
+
priority: 90,
|
|
45
|
+
template: {
|
|
46
|
+
format: 'увеличить {patient}',
|
|
47
|
+
tokens: [
|
|
48
|
+
{ type: 'literal', value: 'увеличить', alternatives: ['увеличь'] },
|
|
49
|
+
{ type: 'role', role: 'patient' },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
extraction: {
|
|
53
|
+
patient: { position: 1 },
|
|
54
|
+
quantity: { default: { type: 'literal', value: 1 } },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thai Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Patterns for parsing "increment" command in Thai.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../types';
|
|
8
|
+
|
|
9
|
+
export function getIncrementPatternsTh(): LanguagePattern[] {
|
|
10
|
+
return [
|
|
11
|
+
// Simple pattern: เพิ่มค่า :counter
|
|
12
|
+
{
|
|
13
|
+
id: 'increment-th-simple',
|
|
14
|
+
language: 'th',
|
|
15
|
+
command: 'increment',
|
|
16
|
+
priority: 100,
|
|
17
|
+
template: {
|
|
18
|
+
format: 'เพิ่มค่า {patient}',
|
|
19
|
+
tokens: [
|
|
20
|
+
{ type: 'literal', value: 'เพิ่มค่า' },
|
|
21
|
+
{ type: 'role', role: 'patient' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
extraction: {
|
|
25
|
+
patient: { position: 1 },
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
// With quantity: เพิ่มค่า :counter ด้วย 5
|
|
29
|
+
{
|
|
30
|
+
id: 'increment-th-with-quantity',
|
|
31
|
+
language: 'th',
|
|
32
|
+
command: 'increment',
|
|
33
|
+
priority: 95,
|
|
34
|
+
template: {
|
|
35
|
+
format: 'เพิ่มค่า {patient} ด้วย {quantity}',
|
|
36
|
+
tokens: [
|
|
37
|
+
{ type: 'literal', value: 'เพิ่มค่า' },
|
|
38
|
+
{ type: 'role', role: 'patient' },
|
|
39
|
+
{ type: 'literal', value: 'ด้วย' },
|
|
40
|
+
{ type: 'role', role: 'quantity' },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
extraction: {
|
|
44
|
+
patient: { position: 1 },
|
|
45
|
+
quantity: { marker: 'ด้วย', position: 3 },
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tagalog Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Patterns for parsing "increment" command in Tagalog.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../types';
|
|
8
|
+
|
|
9
|
+
export function getIncrementPatternsTl(): LanguagePattern[] {
|
|
10
|
+
return [
|
|
11
|
+
// TODO: Add patterns for increment
|
|
12
|
+
// Example:
|
|
13
|
+
// {
|
|
14
|
+
// id: 'increment-tl-simple',
|
|
15
|
+
// language: 'tl',
|
|
16
|
+
// command: 'increment',
|
|
17
|
+
// priority: 100,
|
|
18
|
+
// template: {
|
|
19
|
+
// format: 'TODO {patient}',
|
|
20
|
+
// tokens: [
|
|
21
|
+
// { type: 'literal', value: 'TODO' },
|
|
22
|
+
// { type: 'role', role: 'patient' },
|
|
23
|
+
// ],
|
|
24
|
+
// },
|
|
25
|
+
// extraction: {
|
|
26
|
+
// patient: { position: 1 },
|
|
27
|
+
// },
|
|
28
|
+
// },
|
|
29
|
+
];
|
|
30
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turkish Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for "increment" command.
|
|
5
|
+
* Turkish: counter artır (SOV order)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get Turkish increment patterns.
|
|
12
|
+
*/
|
|
13
|
+
export function getIncrementPatternsTr(): LanguagePattern[] {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
id: 'increment-tr-full',
|
|
17
|
+
language: 'tr',
|
|
18
|
+
command: 'increment',
|
|
19
|
+
priority: 100,
|
|
20
|
+
template: {
|
|
21
|
+
format: '{patient} artır',
|
|
22
|
+
tokens: [
|
|
23
|
+
{ type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
|
|
24
|
+
{
|
|
25
|
+
type: 'literal',
|
|
26
|
+
value: 'artır',
|
|
27
|
+
alternatives: ['artir', 'artırmak', 'artirmak', 'arttır', 'increment'],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
extraction: {
|
|
32
|
+
patient: { position: 0 },
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'increment-tr-svo',
|
|
37
|
+
language: 'tr',
|
|
38
|
+
command: 'increment',
|
|
39
|
+
priority: 90,
|
|
40
|
+
template: {
|
|
41
|
+
format: 'artır {patient}',
|
|
42
|
+
tokens: [
|
|
43
|
+
{ type: 'literal', value: 'artır', alternatives: ['artir', 'artırmak'] },
|
|
44
|
+
{ type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
extraction: {
|
|
48
|
+
patient: { position: 1 },
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ukrainian Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Tree-shakeable: Only included when Ukrainian is imported.
|
|
5
|
+
* Ukrainian uses infinitive verb forms for commands.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get Ukrainian increment patterns.
|
|
12
|
+
*/
|
|
13
|
+
export function getIncrementPatternsUk(): LanguagePattern[] {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
id: 'increment-uk-full',
|
|
17
|
+
language: 'uk',
|
|
18
|
+
command: 'increment',
|
|
19
|
+
priority: 100,
|
|
20
|
+
template: {
|
|
21
|
+
format: 'збільшити {patient} на {quantity}',
|
|
22
|
+
tokens: [
|
|
23
|
+
{ type: 'literal', value: 'збільшити', alternatives: ['збільш'] },
|
|
24
|
+
{ type: 'role', role: 'patient' },
|
|
25
|
+
{
|
|
26
|
+
type: 'group',
|
|
27
|
+
optional: true,
|
|
28
|
+
tokens: [
|
|
29
|
+
{ type: 'literal', value: 'на' },
|
|
30
|
+
{ type: 'role', role: 'quantity' },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
extraction: {
|
|
36
|
+
patient: { position: 1 },
|
|
37
|
+
quantity: { marker: 'на', default: { type: 'literal', value: 1 } },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'increment-uk-simple',
|
|
42
|
+
language: 'uk',
|
|
43
|
+
command: 'increment',
|
|
44
|
+
priority: 90,
|
|
45
|
+
template: {
|
|
46
|
+
format: 'збільшити {patient}',
|
|
47
|
+
tokens: [
|
|
48
|
+
{ type: 'literal', value: 'збільшити', alternatives: ['збільш'] },
|
|
49
|
+
{ type: 'role', role: 'patient' },
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
extraction: {
|
|
53
|
+
patient: { position: 1 },
|
|
54
|
+
quantity: { default: { type: 'literal', value: 1 } },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vietnamese Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Tree-shakeable: Only included when Vietnamese is imported.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Get Vietnamese increment patterns.
|
|
11
|
+
*/
|
|
12
|
+
export function getIncrementPatternsVi(): LanguagePattern[] {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
id: 'increment-vi-full',
|
|
16
|
+
language: 'vi',
|
|
17
|
+
command: 'increment',
|
|
18
|
+
priority: 100,
|
|
19
|
+
template: {
|
|
20
|
+
format: 'tăng {target} thêm {amount}',
|
|
21
|
+
tokens: [
|
|
22
|
+
{ type: 'literal', value: 'tăng', alternatives: ['tăng lên'] },
|
|
23
|
+
{ type: 'role', role: 'patient' },
|
|
24
|
+
{
|
|
25
|
+
type: 'group',
|
|
26
|
+
optional: true,
|
|
27
|
+
tokens: [
|
|
28
|
+
{ type: 'literal', value: 'thêm', alternatives: ['lên'] },
|
|
29
|
+
{ type: 'role', role: 'quantity' },
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
extraction: {
|
|
35
|
+
patient: { position: 1 },
|
|
36
|
+
quantity: {
|
|
37
|
+
marker: 'thêm',
|
|
38
|
+
markerAlternatives: ['lên'],
|
|
39
|
+
default: { type: 'literal', value: '1' },
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'increment-vi-simple',
|
|
45
|
+
language: 'vi',
|
|
46
|
+
command: 'increment',
|
|
47
|
+
priority: 90,
|
|
48
|
+
template: {
|
|
49
|
+
format: 'tăng {target}',
|
|
50
|
+
tokens: [
|
|
51
|
+
{ type: 'literal', value: 'tăng', alternatives: ['tăng lên'] },
|
|
52
|
+
{ type: 'role', role: 'patient' },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
extraction: {
|
|
56
|
+
patient: { position: 1 },
|
|
57
|
+
quantity: { default: { type: 'literal', value: '1' } },
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chinese Increment Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for "increment" command.
|
|
5
|
+
* Chinese: 增加 counter
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get Chinese increment patterns.
|
|
12
|
+
*/
|
|
13
|
+
export function getIncrementPatternsZh(): LanguagePattern[] {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
id: 'increment-zh-full',
|
|
17
|
+
language: 'zh',
|
|
18
|
+
command: 'increment',
|
|
19
|
+
priority: 100,
|
|
20
|
+
template: {
|
|
21
|
+
format: '增加 {patient}',
|
|
22
|
+
tokens: [
|
|
23
|
+
{ type: 'literal', value: '增加', alternatives: ['递增', '加', '增', 'increment'] },
|
|
24
|
+
{ type: 'role', role: 'patient', expectedTypes: ['selector', 'reference', 'expression'] },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
extraction: {
|
|
28
|
+
patient: { position: 1 },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern Registry
|
|
3
|
+
*
|
|
4
|
+
* Central registry for all language patterns.
|
|
5
|
+
* Provides lookup by language and command type.
|
|
6
|
+
*
|
|
7
|
+
* Architecture:
|
|
8
|
+
* - builders.ts: Pattern building and generation logic
|
|
9
|
+
* - registry.ts: Pattern cache and lookup functions
|
|
10
|
+
* - languages/en/: English-only hand-crafted patterns
|
|
11
|
+
* - toggle/, put/, event-handler/: Per-command patterns by language
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import type { LanguagePattern } from '../types';
|
|
15
|
+
import type { LanguageProfile } from '../generators/language-profiles';
|
|
16
|
+
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Re-exports from builders and registry
|
|
19
|
+
// =============================================================================
|
|
20
|
+
|
|
21
|
+
// Pattern building
|
|
22
|
+
export {
|
|
23
|
+
buildPatternsForLanguage,
|
|
24
|
+
buildAllPatterns,
|
|
25
|
+
getGeneratedPatterns,
|
|
26
|
+
getHandcraftedLanguages,
|
|
27
|
+
} from './builders';
|
|
28
|
+
|
|
29
|
+
// Pattern lookup and cache
|
|
30
|
+
export {
|
|
31
|
+
allPatterns,
|
|
32
|
+
getAllPatterns,
|
|
33
|
+
getPatternsForLanguage,
|
|
34
|
+
getPatternsForLanguageAndCommand,
|
|
35
|
+
getSupportedLanguages,
|
|
36
|
+
getSupportedCommands,
|
|
37
|
+
getPatternById,
|
|
38
|
+
getPatternStats,
|
|
39
|
+
clearPatternCache,
|
|
40
|
+
} from './registry';
|
|
41
|
+
|
|
42
|
+
export type { PatternStats } from './registry';
|
|
43
|
+
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// Re-exports from per-command pattern directories
|
|
46
|
+
// =============================================================================
|
|
47
|
+
|
|
48
|
+
// Per-language getter functions (tree-shakeable)
|
|
49
|
+
export { getTogglePatternsForLanguage } from './toggle/index';
|
|
50
|
+
export { getPutPatternsForLanguage } from './put/index';
|
|
51
|
+
export { getEventHandlerPatternsForLanguage } from './event-handler/index';
|
|
52
|
+
export { getGrammarTransformedPatternsForLanguage } from './grammar-transformed/index';
|
|
53
|
+
|
|
54
|
+
// Event handler utilities
|
|
55
|
+
export { eventNameTranslations, normalizeEventName } from './event-handler/shared';
|
|
56
|
+
|
|
57
|
+
// =============================================================================
|
|
58
|
+
// Registry Pattern Generator Setup
|
|
59
|
+
// =============================================================================
|
|
60
|
+
// Set up the pattern generator for the registry so that non-English languages
|
|
61
|
+
// work correctly when using the full bundle. This enables the registry's
|
|
62
|
+
// getPatternsForLanguage to fall back to buildPatternsForLanguage when patterns
|
|
63
|
+
// aren't directly registered.
|
|
64
|
+
|
|
65
|
+
import { setPatternGenerator } from '../registry';
|
|
66
|
+
import { buildPatternsForLanguage } from './builders';
|
|
67
|
+
|
|
68
|
+
// Wrapper to match the registry's expected signature (profile -> patterns)
|
|
69
|
+
function patternGeneratorForProfile(profile: LanguageProfile): LanguagePattern[] {
|
|
70
|
+
return buildPatternsForLanguage(profile.code);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Register the pattern generator with the registry
|
|
74
|
+
// This allows the registry to generate patterns for any registered language
|
|
75
|
+
setPatternGenerator(patternGeneratorForProfile);
|
|
76
|
+
|
|
77
|
+
// =============================================================================
|
|
78
|
+
// Backwards Compatibility Notes
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// NOTE: togglePatterns, putPatterns, eventHandlerPatterns arrays are NOT
|
|
81
|
+
// re-exported from this file to enable tree-shaking. Import them directly:
|
|
82
|
+
// import { togglePatterns } from './patterns/toggle';
|
|
83
|
+
// import { putPatterns } from './patterns/put';
|
|
84
|
+
// import { eventHandlerPatterns } from './patterns/event-handler';
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English Control Flow Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for for, if, and unless commands.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* English: "for {variable} in {collection}"
|
|
11
|
+
* Basic for-each iteration pattern.
|
|
12
|
+
*
|
|
13
|
+
* Examples:
|
|
14
|
+
* - for item in items
|
|
15
|
+
* - for x in .elements
|
|
16
|
+
* - for user in users
|
|
17
|
+
*/
|
|
18
|
+
export const forEnglish: LanguagePattern = {
|
|
19
|
+
id: 'for-en-basic',
|
|
20
|
+
language: 'en',
|
|
21
|
+
command: 'for',
|
|
22
|
+
priority: 100,
|
|
23
|
+
template: {
|
|
24
|
+
format: 'for {patient} in {source}',
|
|
25
|
+
tokens: [
|
|
26
|
+
{ type: 'literal', value: 'for' },
|
|
27
|
+
{ type: 'role', role: 'patient', expectedTypes: ['expression', 'reference'] }, // Loop variable
|
|
28
|
+
{ type: 'literal', value: 'in' },
|
|
29
|
+
{ type: 'role', role: 'source', expectedTypes: ['selector', 'expression', 'reference'] }, // Collection
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
extraction: {
|
|
33
|
+
patient: { position: 1 },
|
|
34
|
+
source: { marker: 'in' },
|
|
35
|
+
loopType: { default: { type: 'literal', value: 'for' } },
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* English: "if {condition}"
|
|
41
|
+
* Basic conditional pattern. Body parsing handled by main parser.
|
|
42
|
+
*
|
|
43
|
+
* Examples:
|
|
44
|
+
* - if active toggle .class
|
|
45
|
+
* - if x > 5 then ... end
|
|
46
|
+
* - if myVar
|
|
47
|
+
*/
|
|
48
|
+
export const ifEnglish: LanguagePattern = {
|
|
49
|
+
id: 'if-en-basic',
|
|
50
|
+
language: 'en',
|
|
51
|
+
command: 'if',
|
|
52
|
+
priority: 100,
|
|
53
|
+
template: {
|
|
54
|
+
format: 'if {condition}',
|
|
55
|
+
tokens: [
|
|
56
|
+
{ type: 'literal', value: 'if' },
|
|
57
|
+
{ type: 'role', role: 'condition', expectedTypes: ['expression', 'reference', 'selector'] },
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
extraction: {
|
|
61
|
+
condition: { position: 1 },
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* English: "unless {condition}"
|
|
67
|
+
* Negated conditional pattern. Body parsing handled by main parser.
|
|
68
|
+
*
|
|
69
|
+
* Examples:
|
|
70
|
+
* - unless disabled submit
|
|
71
|
+
* - unless x == 0 then ... end
|
|
72
|
+
*/
|
|
73
|
+
export const unlessEnglish: LanguagePattern = {
|
|
74
|
+
id: 'unless-en-basic',
|
|
75
|
+
language: 'en',
|
|
76
|
+
command: 'unless',
|
|
77
|
+
priority: 100,
|
|
78
|
+
template: {
|
|
79
|
+
format: 'unless {condition}',
|
|
80
|
+
tokens: [
|
|
81
|
+
{ type: 'literal', value: 'unless' },
|
|
82
|
+
{ type: 'role', role: 'condition', expectedTypes: ['expression', 'reference', 'selector'] },
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
extraction: {
|
|
86
|
+
condition: { position: 1 },
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* All English control flow patterns.
|
|
92
|
+
*/
|
|
93
|
+
export const controlFlowPatternsEn: LanguagePattern[] = [forEnglish, ifEnglish, unlessEnglish];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English Fetch Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for fetch command with response type support.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* English: "fetch /url as json" with response type.
|
|
11
|
+
* This pattern has higher priority to capture the "as json" modifier.
|
|
12
|
+
*/
|
|
13
|
+
export const fetchWithResponseTypeEnglish: LanguagePattern = {
|
|
14
|
+
id: 'fetch-en-with-response-type',
|
|
15
|
+
language: 'en',
|
|
16
|
+
command: 'fetch',
|
|
17
|
+
priority: 90, // Higher than simple pattern (80) to capture "as" modifier first
|
|
18
|
+
template: {
|
|
19
|
+
format: 'fetch {source} as {responseType}',
|
|
20
|
+
tokens: [
|
|
21
|
+
{ type: 'literal', value: 'fetch' },
|
|
22
|
+
{ type: 'role', role: 'source', expectedTypes: ['literal', 'expression'] },
|
|
23
|
+
{ type: 'literal', value: 'as' },
|
|
24
|
+
// json/text/html are identifiers not keywords, so we need to accept 'expression' type
|
|
25
|
+
{ type: 'role', role: 'responseType', expectedTypes: ['literal', 'expression'] },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
extraction: {
|
|
29
|
+
source: { position: 1 },
|
|
30
|
+
responseType: { marker: 'as' },
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* English: "fetch /url" without "from" preposition.
|
|
36
|
+
* Official hyperscript allows bare URL without "from".
|
|
37
|
+
* Lower priority so it's tried after the response type pattern.
|
|
38
|
+
*/
|
|
39
|
+
export const fetchSimpleEnglish: LanguagePattern = {
|
|
40
|
+
id: 'fetch-en-simple',
|
|
41
|
+
language: 'en',
|
|
42
|
+
command: 'fetch',
|
|
43
|
+
priority: 80, // Lower than response type pattern (90) - fallback when "as" not present
|
|
44
|
+
template: {
|
|
45
|
+
format: 'fetch {source}',
|
|
46
|
+
tokens: [
|
|
47
|
+
{ type: 'literal', value: 'fetch' },
|
|
48
|
+
{ type: 'role', role: 'source' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
extraction: {
|
|
52
|
+
source: { position: 1 },
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* All English fetch patterns.
|
|
58
|
+
*/
|
|
59
|
+
export const fetchPatternsEn: LanguagePattern[] = [
|
|
60
|
+
fetchWithResponseTypeEnglish,
|
|
61
|
+
fetchSimpleEnglish,
|
|
62
|
+
];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English-Only Patterns
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all English-specific hand-crafted patterns.
|
|
5
|
+
* These patterns are only included when English is the target language.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../../types';
|
|
9
|
+
|
|
10
|
+
import { fetchPatternsEn } from './fetch';
|
|
11
|
+
import { swapPatternsEn } from './swap';
|
|
12
|
+
import { repeatPatternsEn } from './repeat';
|
|
13
|
+
import { setPatternsEn } from './set';
|
|
14
|
+
import { controlFlowPatternsEn } from './control-flow';
|
|
15
|
+
import { temporalPatternsEn } from './temporal';
|
|
16
|
+
|
|
17
|
+
// Re-export individual pattern arrays for selective imports
|
|
18
|
+
export { fetchPatternsEn } from './fetch';
|
|
19
|
+
export { swapPatternsEn } from './swap';
|
|
20
|
+
export { repeatPatternsEn } from './repeat';
|
|
21
|
+
export { setPatternsEn } from './set';
|
|
22
|
+
export { controlFlowPatternsEn } from './control-flow';
|
|
23
|
+
export { temporalPatternsEn } from './temporal';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* All English-only hand-crafted patterns combined.
|
|
27
|
+
*/
|
|
28
|
+
export const allEnglishOnlyPatterns: LanguagePattern[] = [
|
|
29
|
+
...fetchPatternsEn,
|
|
30
|
+
...swapPatternsEn,
|
|
31
|
+
...repeatPatternsEn,
|
|
32
|
+
...setPatternsEn,
|
|
33
|
+
...controlFlowPatternsEn,
|
|
34
|
+
...temporalPatternsEn,
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Get all English-only hand-crafted patterns.
|
|
39
|
+
*/
|
|
40
|
+
export function getEnglishOnlyPatterns(): LanguagePattern[] {
|
|
41
|
+
return allEnglishOnlyPatterns;
|
|
42
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English Repeat Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for repeat command with event termination.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* English: "repeat until event pointerup from document"
|
|
11
|
+
* Full form with event source specification.
|
|
12
|
+
* Higher priority to capture the complete "until event X from Y" syntax.
|
|
13
|
+
*/
|
|
14
|
+
export const repeatUntilEventFromEnglish: LanguagePattern = {
|
|
15
|
+
id: 'repeat-en-until-event-from',
|
|
16
|
+
language: 'en',
|
|
17
|
+
command: 'repeat',
|
|
18
|
+
priority: 120, // Highest priority - most specific pattern
|
|
19
|
+
template: {
|
|
20
|
+
format: 'repeat until event {event} from {source}',
|
|
21
|
+
tokens: [
|
|
22
|
+
{ type: 'literal', value: 'repeat' },
|
|
23
|
+
{ type: 'literal', value: 'until' },
|
|
24
|
+
{ type: 'literal', value: 'event' },
|
|
25
|
+
{ type: 'role', role: 'event', expectedTypes: ['literal', 'expression'] },
|
|
26
|
+
{ type: 'literal', value: 'from' },
|
|
27
|
+
{ type: 'role', role: 'source', expectedTypes: ['selector', 'reference', 'expression'] },
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
extraction: {
|
|
31
|
+
event: { marker: 'event' },
|
|
32
|
+
source: { marker: 'from' },
|
|
33
|
+
loopType: { default: { type: 'literal', value: 'until-event' } },
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* English: "repeat until event pointerup"
|
|
39
|
+
* Simple event termination without source.
|
|
40
|
+
*/
|
|
41
|
+
export const repeatUntilEventEnglish: LanguagePattern = {
|
|
42
|
+
id: 'repeat-en-until-event',
|
|
43
|
+
language: 'en',
|
|
44
|
+
command: 'repeat',
|
|
45
|
+
priority: 110, // Lower than "from" variant, but higher than quantity-based repeat
|
|
46
|
+
template: {
|
|
47
|
+
format: 'repeat until event {event}',
|
|
48
|
+
tokens: [
|
|
49
|
+
{ type: 'literal', value: 'repeat' },
|
|
50
|
+
{ type: 'literal', value: 'until' },
|
|
51
|
+
{ type: 'literal', value: 'event' },
|
|
52
|
+
{ type: 'role', role: 'event', expectedTypes: ['literal', 'expression'] },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
extraction: {
|
|
56
|
+
event: { marker: 'event' },
|
|
57
|
+
loopType: { default: { type: 'literal', value: 'until-event' } },
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* All English repeat patterns.
|
|
63
|
+
*/
|
|
64
|
+
export const repeatPatternsEn: LanguagePattern[] = [
|
|
65
|
+
repeatUntilEventFromEnglish,
|
|
66
|
+
repeatUntilEventEnglish,
|
|
67
|
+
];
|