@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,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker Resolution Utility
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for resolving role markers from language profiles.
|
|
5
|
+
* Used by pattern-generator to build tokens and extraction rules.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SemanticRole } from '../../types';
|
|
9
|
+
import type { LanguageProfile, RoleMarker } from '../../generators/language-profiles';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Minimum interface for role specs that can have marker resolution.
|
|
13
|
+
* Compatible with the RoleSpec type from command-schemas.
|
|
14
|
+
*/
|
|
15
|
+
export interface RoleSpecWithMarker {
|
|
16
|
+
role: SemanticRole;
|
|
17
|
+
markerOverride?: Record<string, string | undefined>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Resolved marker information for a role.
|
|
22
|
+
*/
|
|
23
|
+
export interface ResolvedMarker {
|
|
24
|
+
/** Primary marker string (may be empty string for no marker) */
|
|
25
|
+
primary: string;
|
|
26
|
+
/** Alternative markers */
|
|
27
|
+
alternatives?: string[];
|
|
28
|
+
/** Position relative to role value */
|
|
29
|
+
position: 'before' | 'after';
|
|
30
|
+
/** Whether this is an override marker */
|
|
31
|
+
isOverride: boolean;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the marker for a role in a specific language.
|
|
36
|
+
*
|
|
37
|
+
* Checks for command-specific marker overrides first,
|
|
38
|
+
* then falls back to the default marker from the language profile.
|
|
39
|
+
*
|
|
40
|
+
* @param roleSpec Role specification with optional override
|
|
41
|
+
* @param profile Language profile with role markers
|
|
42
|
+
* @returns Resolved marker info, or null if no marker
|
|
43
|
+
*/
|
|
44
|
+
export function resolveMarkerForRole(
|
|
45
|
+
roleSpec: RoleSpecWithMarker,
|
|
46
|
+
profile: LanguageProfile
|
|
47
|
+
): ResolvedMarker | null {
|
|
48
|
+
// Check for command-specific marker override first
|
|
49
|
+
const overrideMarker = roleSpec.markerOverride?.[profile.code];
|
|
50
|
+
const defaultMarker = profile.roleMarkers[roleSpec.role];
|
|
51
|
+
|
|
52
|
+
if (overrideMarker !== undefined) {
|
|
53
|
+
// Use override marker (can be empty string to suppress default marker)
|
|
54
|
+
return {
|
|
55
|
+
primary: overrideMarker,
|
|
56
|
+
position: defaultMarker?.position ?? 'before',
|
|
57
|
+
isOverride: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (defaultMarker && defaultMarker.primary) {
|
|
62
|
+
const result: ResolvedMarker = {
|
|
63
|
+
primary: defaultMarker.primary,
|
|
64
|
+
position: defaultMarker.position,
|
|
65
|
+
isOverride: false,
|
|
66
|
+
};
|
|
67
|
+
if (defaultMarker.alternatives) {
|
|
68
|
+
result.alternatives = defaultMarker.alternatives;
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Get all markers (primary + alternatives) for a role.
|
|
78
|
+
*
|
|
79
|
+
* @param roleSpec Role specification
|
|
80
|
+
* @param profile Language profile
|
|
81
|
+
* @returns Array of marker strings, or empty array if no markers
|
|
82
|
+
*/
|
|
83
|
+
export function getAllMarkersForRole(
|
|
84
|
+
roleSpec: RoleSpecWithMarker,
|
|
85
|
+
profile: LanguageProfile
|
|
86
|
+
): string[] {
|
|
87
|
+
const resolved = resolveMarkerForRole(roleSpec, profile);
|
|
88
|
+
if (!resolved || !resolved.primary) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const markers = [resolved.primary];
|
|
93
|
+
if (resolved.alternatives) {
|
|
94
|
+
markers.push(...resolved.alternatives);
|
|
95
|
+
}
|
|
96
|
+
return markers;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Get the default role marker from a language profile.
|
|
101
|
+
*
|
|
102
|
+
* @param profile Language profile
|
|
103
|
+
* @param role Semantic role
|
|
104
|
+
* @returns Role marker or undefined
|
|
105
|
+
*/
|
|
106
|
+
export function getDefaultRoleMarker(
|
|
107
|
+
profile: LanguageProfile,
|
|
108
|
+
role: SemanticRole
|
|
109
|
+
): RoleMarker | undefined {
|
|
110
|
+
return profile.roleMarkers[role];
|
|
111
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Possessive Keywords Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to look up possessive keywords from language profiles.
|
|
5
|
+
* Used by pattern-matcher to recognize possessive expressions like "my value".
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguageProfile } from '../../generators/profiles/types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the reference for a possessive keyword from a language profile.
|
|
12
|
+
*
|
|
13
|
+
* @param profile Language profile
|
|
14
|
+
* @param keyword Possessive keyword (e.g., 'my', 'your', 'its')
|
|
15
|
+
* @returns The reference (e.g., 'me', 'you', 'it') or undefined if not found
|
|
16
|
+
*/
|
|
17
|
+
export function getPossessiveReference(
|
|
18
|
+
profile: LanguageProfile,
|
|
19
|
+
keyword: string
|
|
20
|
+
): string | undefined {
|
|
21
|
+
return profile.possessive?.keywords?.[keyword];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Check if a keyword is a possessive keyword in the given profile.
|
|
26
|
+
*
|
|
27
|
+
* @param profile Language profile
|
|
28
|
+
* @param keyword Keyword to check
|
|
29
|
+
* @returns True if the keyword is a possessive keyword
|
|
30
|
+
*/
|
|
31
|
+
export function isPossessiveKeyword(profile: LanguageProfile, keyword: string): boolean {
|
|
32
|
+
return profile.possessive?.keywords?.[keyword] !== undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get all possessive keywords from a language profile.
|
|
37
|
+
*
|
|
38
|
+
* @param profile Language profile
|
|
39
|
+
* @returns Record of possessive keywords to references, or empty object
|
|
40
|
+
*/
|
|
41
|
+
export function getAllPossessiveKeywords(profile: LanguageProfile): Record<string, string> {
|
|
42
|
+
return profile.possessive?.keywords ?? {};
|
|
43
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Role Positioning Utility
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for sorting and positioning semantic roles based on word order.
|
|
5
|
+
* Used by pattern-generator and pattern-matcher to ensure consistent behavior.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SemanticRole } from '../../types';
|
|
9
|
+
import type { WordOrder } from '../../generators/profiles/types';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Priority order for semantic roles used in pattern matching.
|
|
13
|
+
* Lower number = higher priority (comes first in pattern).
|
|
14
|
+
* Only includes roles commonly used in patterns.
|
|
15
|
+
*/
|
|
16
|
+
export const ROLE_PRIORITY: Partial<Record<SemanticRole, number>> = {
|
|
17
|
+
patient: 1,
|
|
18
|
+
destination: 2,
|
|
19
|
+
source: 3,
|
|
20
|
+
style: 4,
|
|
21
|
+
manner: 5,
|
|
22
|
+
goal: 6,
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Get the priority of a semantic role.
|
|
27
|
+
* Returns 99 for unknown/unlisted roles.
|
|
28
|
+
*/
|
|
29
|
+
export function getRolePriority(role: SemanticRole): number {
|
|
30
|
+
return ROLE_PRIORITY[role] ?? 99;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Sort semantic roles by their priority.
|
|
35
|
+
* Patient comes first, then destination, source, etc.
|
|
36
|
+
*/
|
|
37
|
+
export function sortRolesByPriority(roles: SemanticRole[]): SemanticRole[] {
|
|
38
|
+
return [...roles].sort((a, b) => getRolePriority(a) - getRolePriority(b));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Re-export for convenience
|
|
42
|
+
export type { WordOrder };
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Minimum interface for roles that can be sorted by position.
|
|
46
|
+
*/
|
|
47
|
+
export interface RoleWithPosition {
|
|
48
|
+
role: SemanticRole;
|
|
49
|
+
sovPosition?: number;
|
|
50
|
+
svoPosition?: number;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Sort roles by their position for a given word order.
|
|
55
|
+
*
|
|
56
|
+
* @param roles Array of role specs with position info
|
|
57
|
+
* @param wordOrder The word order to use (SVO, SOV, VSO)
|
|
58
|
+
* @returns Sorted array of roles
|
|
59
|
+
*/
|
|
60
|
+
export function sortRolesByWordOrder<T extends RoleWithPosition>(
|
|
61
|
+
roles: readonly T[],
|
|
62
|
+
wordOrder: WordOrder
|
|
63
|
+
): T[] {
|
|
64
|
+
const sortKey = wordOrder === 'SOV' ? 'sovPosition' : 'svoPosition';
|
|
65
|
+
return [...roles].sort((a, b) => {
|
|
66
|
+
const aPos = a[sortKey] ?? 99;
|
|
67
|
+
const bPos = b[sortKey] ?? 99;
|
|
68
|
+
return aPos - bPos;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Validation Utility
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for validating semantic value types against expected types.
|
|
5
|
+
* Used by pattern-matcher to validate captured role values.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { SemanticValue } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Semantic value type strings.
|
|
12
|
+
*/
|
|
13
|
+
export type SemanticValueType = SemanticValue['type'];
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Check if a value type matches any of the expected types.
|
|
17
|
+
*
|
|
18
|
+
* The 'expression' type is treated as a wildcard that matches any value.
|
|
19
|
+
* The 'property-path' type is compatible with selector, reference, and expression.
|
|
20
|
+
*
|
|
21
|
+
* @param actualType The actual type of the value
|
|
22
|
+
* @param expectedTypes Array of expected types
|
|
23
|
+
* @returns True if the type is compatible
|
|
24
|
+
*/
|
|
25
|
+
export function isTypeCompatible(
|
|
26
|
+
actualType: SemanticValueType | string,
|
|
27
|
+
expectedTypes: (SemanticValueType | string)[]
|
|
28
|
+
): boolean {
|
|
29
|
+
// Empty expected types means any type is valid
|
|
30
|
+
if (!expectedTypes || expectedTypes.length === 0) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Direct match
|
|
35
|
+
if (expectedTypes.includes(actualType)) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 'expression' is always compatible (wildcard)
|
|
40
|
+
if (expectedTypes.includes('expression')) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// 'property-path' is compatible with selector, reference, and expression
|
|
45
|
+
if (actualType === 'property-path') {
|
|
46
|
+
return expectedTypes.some(t => ['selector', 'reference', 'expression'].includes(t));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Validate a semantic value against expected types.
|
|
54
|
+
*
|
|
55
|
+
* @param value The semantic value to validate
|
|
56
|
+
* @param expectedTypes Array of expected types (empty means any type is valid)
|
|
57
|
+
* @returns True if the value type is valid
|
|
58
|
+
*/
|
|
59
|
+
export function validateValueType(
|
|
60
|
+
value: SemanticValue,
|
|
61
|
+
expectedTypes?: (SemanticValueType | string)[]
|
|
62
|
+
): boolean {
|
|
63
|
+
if (!expectedTypes || expectedTypes.length === 0) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return isTypeCompatible(value.type, expectedTypes);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Check if a value is a CSS selector.
|
|
72
|
+
*/
|
|
73
|
+
export function isCSSSelector(value: string): boolean {
|
|
74
|
+
return value.startsWith('.') || value.startsWith('#') || value.startsWith('<');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Check if a value is a class name (starts with .).
|
|
79
|
+
*/
|
|
80
|
+
export function isClassName(value: string): boolean {
|
|
81
|
+
return value.startsWith('.');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Check if a value is an ID selector (starts with #).
|
|
86
|
+
*/
|
|
87
|
+
export function isIdSelector(value: string): boolean {
|
|
88
|
+
return value.startsWith('#');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Check if a value is a CSS property reference (starts with *).
|
|
93
|
+
*/
|
|
94
|
+
export function isCSSPropertyRef(value: string): boolean {
|
|
95
|
+
return value.startsWith('*');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Check if a value is a numeric value.
|
|
100
|
+
*/
|
|
101
|
+
export function isNumericValue(value: string): boolean {
|
|
102
|
+
// Handle duration values (e.g., "100ms", "2s")
|
|
103
|
+
const durationMatch = value.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);
|
|
104
|
+
if (durationMatch) {
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Plain number
|
|
109
|
+
const num = parseFloat(value);
|
|
110
|
+
return !isNaN(num) && isFinite(num);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Check if a value is a property name (identifier-like).
|
|
115
|
+
*/
|
|
116
|
+
export function isPropertyName(value: string): boolean {
|
|
117
|
+
// Property names are identifiers (start with letter or _, contain alphanumeric)
|
|
118
|
+
return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(value);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Check if a value is a variable reference (starts with :).
|
|
123
|
+
*/
|
|
124
|
+
export function isVariableRef(value: string): boolean {
|
|
125
|
+
return value.startsWith(':');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Check if a value is a built-in reference (me, you, it, etc.).
|
|
130
|
+
*/
|
|
131
|
+
export function isBuiltInReference(value: string): boolean {
|
|
132
|
+
const builtIns = new Set(['me', 'you', 'it', 'result', 'event', 'target', 'body']);
|
|
133
|
+
return builtIns.has(value.toLowerCase());
|
|
134
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Arabic Add Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for "add" command.
|
|
5
|
+
* Arabic uses VSO order: أضف {patient} إلى {target}
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { LanguagePattern } from '../../types';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get Arabic add patterns.
|
|
12
|
+
*/
|
|
13
|
+
export function getAddPatternsAr(): LanguagePattern[] {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
id: 'add-ar-full',
|
|
17
|
+
language: 'ar',
|
|
18
|
+
command: 'add',
|
|
19
|
+
priority: 100,
|
|
20
|
+
template: {
|
|
21
|
+
format: 'أضف {patient} إلى {destination}',
|
|
22
|
+
tokens: [
|
|
23
|
+
{ type: 'literal', value: 'أضف', alternatives: ['اضف', 'أضيف', 'اضافة'] },
|
|
24
|
+
{ type: 'role', role: 'patient' },
|
|
25
|
+
{ type: 'literal', value: 'إلى', alternatives: ['الى', 'ل', 'لـ'] },
|
|
26
|
+
{ type: 'role', role: 'destination' },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
extraction: {
|
|
30
|
+
patient: { position: 1 },
|
|
31
|
+
destination: { marker: 'إلى', markerAlternatives: ['الى', 'ل', 'لـ'] },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: 'add-ar-simple',
|
|
36
|
+
language: 'ar',
|
|
37
|
+
command: 'add',
|
|
38
|
+
priority: 90,
|
|
39
|
+
template: {
|
|
40
|
+
format: 'أضف {patient}',
|
|
41
|
+
tokens: [
|
|
42
|
+
{ type: 'literal', value: 'أضف', alternatives: ['اضف', 'أضيف'] },
|
|
43
|
+
{ type: 'role', role: 'patient' },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
extraction: {
|
|
47
|
+
patient: { position: 1 },
|
|
48
|
+
destination: { default: { type: 'reference', value: 'me' } },
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'add-ar-with-على',
|
|
53
|
+
language: 'ar',
|
|
54
|
+
command: 'add',
|
|
55
|
+
priority: 95,
|
|
56
|
+
template: {
|
|
57
|
+
format: 'أضف {patient} على {destination}',
|
|
58
|
+
tokens: [
|
|
59
|
+
{ type: 'literal', value: 'أضف', alternatives: ['اضف'] },
|
|
60
|
+
{ type: 'role', role: 'patient' },
|
|
61
|
+
{ type: 'literal', value: 'على' },
|
|
62
|
+
{ type: 'role', role: 'destination' },
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
extraction: {
|
|
66
|
+
patient: { position: 1 },
|
|
67
|
+
destination: { marker: 'على' },
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bengali Add Patterns
|
|
3
|
+
*
|
|
4
|
+
* Patterns for parsing "add" command in Bengali.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../types';
|
|
8
|
+
|
|
9
|
+
export function getAddPatternsBn(): LanguagePattern[] {
|
|
10
|
+
return [
|
|
11
|
+
// Full pattern: .active কে যোগ করুন
|
|
12
|
+
{
|
|
13
|
+
id: 'add-bn-full',
|
|
14
|
+
language: 'bn',
|
|
15
|
+
command: 'add',
|
|
16
|
+
priority: 100,
|
|
17
|
+
template: {
|
|
18
|
+
format: '{patient} কে যোগ করুন',
|
|
19
|
+
tokens: [
|
|
20
|
+
{ type: 'role', role: 'patient' },
|
|
21
|
+
{ type: 'literal', value: 'কে' },
|
|
22
|
+
{ type: 'literal', value: 'যোগ' },
|
|
23
|
+
{ type: 'literal', value: 'করুন' },
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
extraction: {
|
|
27
|
+
patient: { position: 0 },
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
// Simple pattern: যোগ .active
|
|
31
|
+
{
|
|
32
|
+
id: 'add-bn-simple',
|
|
33
|
+
language: 'bn',
|
|
34
|
+
command: 'add',
|
|
35
|
+
priority: 90,
|
|
36
|
+
template: {
|
|
37
|
+
format: 'যোগ {patient}',
|
|
38
|
+
tokens: [
|
|
39
|
+
{ type: 'literal', value: 'যোগ' },
|
|
40
|
+
{ type: 'role', role: 'patient' },
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
extraction: {
|
|
44
|
+
patient: { position: 1 },
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
// With destination: #button এ .active কে যোগ করুন
|
|
48
|
+
{
|
|
49
|
+
id: 'add-bn-with-dest',
|
|
50
|
+
language: 'bn',
|
|
51
|
+
command: 'add',
|
|
52
|
+
priority: 95,
|
|
53
|
+
template: {
|
|
54
|
+
format: '{destination} এ {patient} কে যোগ করুন',
|
|
55
|
+
tokens: [
|
|
56
|
+
{ type: 'role', role: 'destination' },
|
|
57
|
+
{ type: 'literal', value: 'এ', alternatives: ['তে'] },
|
|
58
|
+
{ type: 'role', role: 'patient' },
|
|
59
|
+
{ type: 'literal', value: 'কে' },
|
|
60
|
+
{ type: 'literal', value: 'যোগ' },
|
|
61
|
+
{ type: 'literal', value: 'করুন' },
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
extraction: {
|
|
65
|
+
destination: { position: 0 },
|
|
66
|
+
patient: { position: 2 },
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
];
|
|
70
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hindi Add Patterns
|
|
3
|
+
*
|
|
4
|
+
* Patterns for parsing "add" command in Hindi.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { LanguagePattern } from '../../types';
|
|
8
|
+
|
|
9
|
+
export function getAddPatternsHi(): LanguagePattern[] {
|
|
10
|
+
return [
|
|
11
|
+
// Full pattern: .class को #element में जोड़ें
|
|
12
|
+
{
|
|
13
|
+
id: 'add-hi-full',
|
|
14
|
+
language: 'hi',
|
|
15
|
+
command: 'add',
|
|
16
|
+
priority: 100,
|
|
17
|
+
template: {
|
|
18
|
+
format: '{patient} को {destination} में जोड़ें',
|
|
19
|
+
tokens: [
|
|
20
|
+
{ type: 'role', role: 'patient' },
|
|
21
|
+
{ type: 'literal', value: 'को' },
|
|
22
|
+
{ type: 'role', role: 'destination' },
|
|
23
|
+
{ type: 'literal', value: 'में' },
|
|
24
|
+
{ type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
extraction: {
|
|
28
|
+
patient: { position: 0 },
|
|
29
|
+
destination: { marker: 'में', position: 3 },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
// Simple pattern: .class जोड़ें
|
|
33
|
+
{
|
|
34
|
+
id: 'add-hi-simple',
|
|
35
|
+
language: 'hi',
|
|
36
|
+
command: 'add',
|
|
37
|
+
priority: 90,
|
|
38
|
+
template: {
|
|
39
|
+
format: '{patient} जोड़ें',
|
|
40
|
+
tokens: [
|
|
41
|
+
{ type: 'role', role: 'patient' },
|
|
42
|
+
{ type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
extraction: {
|
|
46
|
+
patient: { position: 0 },
|
|
47
|
+
destination: { default: { type: 'reference', value: 'me' } },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
// Bare pattern: जोड़ें .class
|
|
51
|
+
{
|
|
52
|
+
id: 'add-hi-bare',
|
|
53
|
+
language: 'hi',
|
|
54
|
+
command: 'add',
|
|
55
|
+
priority: 80,
|
|
56
|
+
template: {
|
|
57
|
+
format: 'जोड़ें {patient}',
|
|
58
|
+
tokens: [
|
|
59
|
+
{ type: 'literal', value: 'जोड़ें', alternatives: ['जोड़'] },
|
|
60
|
+
{ type: 'role', role: 'patient' },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
extraction: {
|
|
64
|
+
patient: { position: 1 },
|
|
65
|
+
destination: { default: { type: 'reference', value: 'me' } },
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add Command Patterns
|
|
3
|
+
*
|
|
4
|
+
* Hand-crafted patterns for "add" command across languages.
|
|
5
|
+
*
|
|
6
|
+
* @generated This file is auto-generated. Do not edit manually.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { LanguagePattern } from '../../types';
|
|
10
|
+
|
|
11
|
+
import { getAddPatternsAr } from './ar';
|
|
12
|
+
import { getAddPatternsBn } from './bn';
|
|
13
|
+
import { getAddPatternsHi } from './hi';
|
|
14
|
+
import { getAddPatternsIt } from './it';
|
|
15
|
+
import { getAddPatternsJa } from './ja';
|
|
16
|
+
import { getAddPatternsKo } from './ko';
|
|
17
|
+
import { getAddPatternsMs } from './ms';
|
|
18
|
+
import { getAddPatternsPl } from './pl';
|
|
19
|
+
import { getAddPatternsRu } from './ru';
|
|
20
|
+
import { getAddPatternsTh } from './th';
|
|
21
|
+
import { getAddPatternsTl } from './tl';
|
|
22
|
+
import { getAddPatternsTr } from './tr';
|
|
23
|
+
import { getAddPatternsUk } from './uk';
|
|
24
|
+
import { getAddPatternsVi } from './vi';
|
|
25
|
+
import { getAddPatternsZh } from './zh';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get add patterns for a specific language.
|
|
29
|
+
*/
|
|
30
|
+
export function getAddPatternsForLanguage(language: string): LanguagePattern[] {
|
|
31
|
+
switch (language) {
|
|
32
|
+
case 'ar':
|
|
33
|
+
return getAddPatternsAr();
|
|
34
|
+
case 'bn':
|
|
35
|
+
return getAddPatternsBn();
|
|
36
|
+
case 'hi':
|
|
37
|
+
return getAddPatternsHi();
|
|
38
|
+
case 'it':
|
|
39
|
+
return getAddPatternsIt();
|
|
40
|
+
case 'ja':
|
|
41
|
+
return getAddPatternsJa();
|
|
42
|
+
case 'ko':
|
|
43
|
+
return getAddPatternsKo();
|
|
44
|
+
case 'ms':
|
|
45
|
+
return getAddPatternsMs();
|
|
46
|
+
case 'pl':
|
|
47
|
+
return getAddPatternsPl();
|
|
48
|
+
case 'ru':
|
|
49
|
+
return getAddPatternsRu();
|
|
50
|
+
case 'th':
|
|
51
|
+
return getAddPatternsTh();
|
|
52
|
+
case 'tl':
|
|
53
|
+
return getAddPatternsTl();
|
|
54
|
+
case 'tr':
|
|
55
|
+
return getAddPatternsTr();
|
|
56
|
+
case 'uk':
|
|
57
|
+
return getAddPatternsUk();
|
|
58
|
+
case 'vi':
|
|
59
|
+
return getAddPatternsVi();
|
|
60
|
+
case 'zh':
|
|
61
|
+
return getAddPatternsZh();
|
|
62
|
+
default:
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Re-export language-specific getters for tree-shaking
|
|
68
|
+
export { getAddPatternsAr } from './ar';
|
|
69
|
+
export { getAddPatternsBn } from './bn';
|
|
70
|
+
export { getAddPatternsHi } from './hi';
|
|
71
|
+
export { getAddPatternsIt } from './it';
|
|
72
|
+
export { getAddPatternsJa } from './ja';
|
|
73
|
+
export { getAddPatternsKo } from './ko';
|
|
74
|
+
export { getAddPatternsMs } from './ms';
|
|
75
|
+
export { getAddPatternsPl } from './pl';
|
|
76
|
+
export { getAddPatternsRu } from './ru';
|
|
77
|
+
export { getAddPatternsTh } from './th';
|
|
78
|
+
export { getAddPatternsTl } from './tl';
|
|
79
|
+
export { getAddPatternsTr } from './tr';
|
|
80
|
+
export { getAddPatternsUk } from './uk';
|
|
81
|
+
export { getAddPatternsVi } from './vi';
|
|
82
|
+
export { getAddPatternsZh } from './zh';
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Languages that have hand-crafted add patterns.
|
|
86
|
+
*/
|
|
87
|
+
export const addPatternLanguages = ['ar', 'bn', 'hi', 'it', 'ja', 'ko', 'ms', 'pl', 'ru', 'th', 'tl', 'tr', 'uk', 'vi', 'zh'];
|