marlarky 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/README.md +489 -0
- package/dist/adapters/faker-js-adapter.d.ts +44 -0
- package/dist/adapters/faker-js-adapter.d.ts.map +1 -0
- package/dist/adapters/faker-js-adapter.js +46 -0
- package/dist/adapters/faker-js-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/simple-faker-adapter.d.ts +22 -0
- package/dist/adapters/simple-faker-adapter.d.ts.map +1 -0
- package/dist/adapters/simple-faker-adapter.js +54 -0
- package/dist/adapters/simple-faker-adapter.js.map +1 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +588 -0
- package/dist/cli.js.map +1 -0
- package/dist/defaults/index.d.ts +2 -0
- package/dist/defaults/index.d.ts.map +1 -0
- package/dist/defaults/index.js +2 -0
- package/dist/defaults/index.js.map +1 -0
- package/dist/defaults/word-lists.d.ts +22 -0
- package/dist/defaults/word-lists.d.ts.map +1 -0
- package/dist/defaults/word-lists.js +124 -0
- package/dist/defaults/word-lists.js.map +1 -0
- package/dist/generator/index.d.ts +2 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +2 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/text-generator.d.ts +93 -0
- package/dist/generator/text-generator.d.ts.map +1 -0
- package/dist/generator/text-generator.js +411 -0
- package/dist/generator/text-generator.js.map +1 -0
- package/dist/generator/text-generator.test.d.ts +2 -0
- package/dist/generator/text-generator.test.d.ts.map +1 -0
- package/dist/generator/text-generator.test.js +151 -0
- package/dist/generator/text-generator.test.js.map +1 -0
- package/dist/grammar/index.d.ts +5 -0
- package/dist/grammar/index.d.ts.map +1 -0
- package/dist/grammar/index.js +3 -0
- package/dist/grammar/index.js.map +1 -0
- package/dist/grammar/phrase-builders.d.ts +72 -0
- package/dist/grammar/phrase-builders.d.ts.map +1 -0
- package/dist/grammar/phrase-builders.js +241 -0
- package/dist/grammar/phrase-builders.js.map +1 -0
- package/dist/grammar/sentence-templates.d.ts +67 -0
- package/dist/grammar/sentence-templates.d.ts.map +1 -0
- package/dist/grammar/sentence-templates.js +272 -0
- package/dist/grammar/sentence-templates.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/faker-adapter.d.ts +25 -0
- package/dist/interfaces/faker-adapter.d.ts.map +1 -0
- package/dist/interfaces/faker-adapter.js +2 -0
- package/dist/interfaces/faker-adapter.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +2 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/lexicon-store.d.ts +39 -0
- package/dist/interfaces/lexicon-store.d.ts.map +1 -0
- package/dist/interfaces/lexicon-store.js +2 -0
- package/dist/interfaces/lexicon-store.js.map +1 -0
- package/dist/interfaces/rng.d.ts +25 -0
- package/dist/interfaces/rng.d.ts.map +1 -0
- package/dist/interfaces/rng.js +2 -0
- package/dist/interfaces/rng.js.map +1 -0
- package/dist/lexicon/index.d.ts +4 -0
- package/dist/lexicon/index.d.ts.map +1 -0
- package/dist/lexicon/index.js +4 -0
- package/dist/lexicon/index.js.map +1 -0
- package/dist/lexicon/loader.d.ts +24 -0
- package/dist/lexicon/loader.d.ts.map +1 -0
- package/dist/lexicon/loader.js +47 -0
- package/dist/lexicon/loader.js.map +1 -0
- package/dist/lexicon/store.d.ts +39 -0
- package/dist/lexicon/store.d.ts.map +1 -0
- package/dist/lexicon/store.js +291 -0
- package/dist/lexicon/store.js.map +1 -0
- package/dist/lexicon/validator.d.ts +10 -0
- package/dist/lexicon/validator.d.ts.map +1 -0
- package/dist/lexicon/validator.js +273 -0
- package/dist/lexicon/validator.js.map +1 -0
- package/dist/morphology/articles.d.ts +17 -0
- package/dist/morphology/articles.d.ts.map +1 -0
- package/dist/morphology/articles.js +66 -0
- package/dist/morphology/articles.js.map +1 -0
- package/dist/morphology/articles.test.d.ts +2 -0
- package/dist/morphology/articles.test.d.ts.map +1 -0
- package/dist/morphology/articles.test.js +56 -0
- package/dist/morphology/articles.test.js.map +1 -0
- package/dist/morphology/conjugate.d.ts +46 -0
- package/dist/morphology/conjugate.d.ts.map +1 -0
- package/dist/morphology/conjugate.js +337 -0
- package/dist/morphology/conjugate.js.map +1 -0
- package/dist/morphology/conjugate.test.d.ts +2 -0
- package/dist/morphology/conjugate.test.d.ts.map +1 -0
- package/dist/morphology/conjugate.test.js +168 -0
- package/dist/morphology/conjugate.test.js.map +1 -0
- package/dist/morphology/index.d.ts +6 -0
- package/dist/morphology/index.d.ts.map +1 -0
- package/dist/morphology/index.js +9 -0
- package/dist/morphology/index.js.map +1 -0
- package/dist/morphology/normalize.d.ts +52 -0
- package/dist/morphology/normalize.d.ts.map +1 -0
- package/dist/morphology/normalize.js +127 -0
- package/dist/morphology/normalize.js.map +1 -0
- package/dist/morphology/pluralize.d.ts +17 -0
- package/dist/morphology/pluralize.d.ts.map +1 -0
- package/dist/morphology/pluralize.js +186 -0
- package/dist/morphology/pluralize.js.map +1 -0
- package/dist/morphology/pluralize.test.d.ts +2 -0
- package/dist/morphology/pluralize.test.d.ts.map +1 -0
- package/dist/morphology/pluralize.test.js +86 -0
- package/dist/morphology/pluralize.test.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/word-provider.d.ts +125 -0
- package/dist/providers/word-provider.d.ts.map +1 -0
- package/dist/providers/word-provider.js +266 -0
- package/dist/providers/word-provider.js.map +1 -0
- package/dist/rng/index.d.ts +2 -0
- package/dist/rng/index.d.ts.map +1 -0
- package/dist/rng/index.js +2 -0
- package/dist/rng/index.js.map +1 -0
- package/dist/rng/seedable-rng.d.ts +19 -0
- package/dist/rng/seedable-rng.d.ts.map +1 -0
- package/dist/rng/seedable-rng.js +77 -0
- package/dist/rng/seedable-rng.js.map +1 -0
- package/dist/rng/seedable-rng.test.d.ts +2 -0
- package/dist/rng/seedable-rng.test.d.ts.map +1 -0
- package/dist/rng/seedable-rng.test.js +165 -0
- package/dist/rng/seedable-rng.test.js.map +1 -0
- package/dist/rules/index.d.ts +3 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +2 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/rule-engine.d.ts +78 -0
- package/dist/rules/rule-engine.d.ts.map +1 -0
- package/dist/rules/rule-engine.js +271 -0
- package/dist/rules/rule-engine.js.map +1 -0
- package/dist/transforms/config-merge.d.ts +19 -0
- package/dist/transforms/config-merge.d.ts.map +1 -0
- package/dist/transforms/config-merge.js +88 -0
- package/dist/transforms/config-merge.js.map +1 -0
- package/dist/transforms/config-merge.test.d.ts +2 -0
- package/dist/transforms/config-merge.test.d.ts.map +1 -0
- package/dist/transforms/config-merge.test.js +91 -0
- package/dist/transforms/config-merge.test.js.map +1 -0
- package/dist/transforms/default-registry.d.ts +10 -0
- package/dist/transforms/default-registry.d.ts.map +1 -0
- package/dist/transforms/default-registry.js +17 -0
- package/dist/transforms/default-registry.js.map +1 -0
- package/dist/transforms/index.d.ts +15 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +20 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/pipeline.d.ts +28 -0
- package/dist/transforms/pipeline.d.ts.map +1 -0
- package/dist/transforms/pipeline.js +176 -0
- package/dist/transforms/pipeline.js.map +1 -0
- package/dist/transforms/pipeline.test.d.ts +2 -0
- package/dist/transforms/pipeline.test.d.ts.map +1 -0
- package/dist/transforms/pipeline.test.js +175 -0
- package/dist/transforms/pipeline.test.js.map +1 -0
- package/dist/transforms/protection.d.ts +16 -0
- package/dist/transforms/protection.d.ts.map +1 -0
- package/dist/transforms/protection.js +97 -0
- package/dist/transforms/protection.js.map +1 -0
- package/dist/transforms/protection.test.d.ts +2 -0
- package/dist/transforms/protection.test.d.ts.map +1 -0
- package/dist/transforms/protection.test.js +79 -0
- package/dist/transforms/protection.test.js.map +1 -0
- package/dist/transforms/registry.d.ts +25 -0
- package/dist/transforms/registry.d.ts.map +1 -0
- package/dist/transforms/registry.js +32 -0
- package/dist/transforms/registry.js.map +1 -0
- package/dist/transforms/registry.test.d.ts +2 -0
- package/dist/transforms/registry.test.d.ts.map +1 -0
- package/dist/transforms/registry.test.js +64 -0
- package/dist/transforms/registry.test.js.map +1 -0
- package/dist/transforms/tokenizer.d.ts +26 -0
- package/dist/transforms/tokenizer.d.ts.map +1 -0
- package/dist/transforms/tokenizer.js +137 -0
- package/dist/transforms/tokenizer.js.map +1 -0
- package/dist/transforms/tokenizer.test.d.ts +2 -0
- package/dist/transforms/tokenizer.test.d.ts.map +1 -0
- package/dist/transforms/tokenizer.test.js +85 -0
- package/dist/transforms/tokenizer.test.js.map +1 -0
- package/dist/transforms/transforms/biz-jargon.d.ts +7 -0
- package/dist/transforms/transforms/biz-jargon.d.ts.map +1 -0
- package/dist/transforms/transforms/biz-jargon.js +117 -0
- package/dist/transforms/transforms/biz-jargon.js.map +1 -0
- package/dist/transforms/transforms/emoji.d.ts +7 -0
- package/dist/transforms/transforms/emoji.d.ts.map +1 -0
- package/dist/transforms/transforms/emoji.js +127 -0
- package/dist/transforms/transforms/emoji.js.map +1 -0
- package/dist/transforms/transforms/index.d.ts +17 -0
- package/dist/transforms/transforms/index.d.ts.map +1 -0
- package/dist/transforms/transforms/index.js +37 -0
- package/dist/transforms/transforms/index.js.map +1 -0
- package/dist/transforms/transforms/leet.d.ts +7 -0
- package/dist/transforms/transforms/leet.d.ts.map +1 -0
- package/dist/transforms/transforms/leet.js +109 -0
- package/dist/transforms/transforms/leet.js.map +1 -0
- package/dist/transforms/transforms/mock-case.d.ts +7 -0
- package/dist/transforms/transforms/mock-case.d.ts.map +1 -0
- package/dist/transforms/transforms/mock-case.js +116 -0
- package/dist/transforms/transforms/mock-case.js.map +1 -0
- package/dist/transforms/transforms/pig-latin.d.ts +7 -0
- package/dist/transforms/transforms/pig-latin.d.ts.map +1 -0
- package/dist/transforms/transforms/pig-latin.js +132 -0
- package/dist/transforms/transforms/pig-latin.js.map +1 -0
- package/dist/transforms/transforms/pig-latin.test.d.ts +2 -0
- package/dist/transforms/transforms/pig-latin.test.d.ts.map +1 -0
- package/dist/transforms/transforms/pig-latin.test.js +77 -0
- package/dist/transforms/transforms/pig-latin.test.js.map +1 -0
- package/dist/transforms/transforms/pirate.d.ts +7 -0
- package/dist/transforms/transforms/pirate.d.ts.map +1 -0
- package/dist/transforms/transforms/pirate.js +150 -0
- package/dist/transforms/transforms/pirate.js.map +1 -0
- package/dist/transforms/transforms/redact.d.ts +7 -0
- package/dist/transforms/transforms/redact.d.ts.map +1 -0
- package/dist/transforms/transforms/redact.js +109 -0
- package/dist/transforms/transforms/redact.js.map +1 -0
- package/dist/transforms/transforms/reverse-words.d.ts +7 -0
- package/dist/transforms/transforms/reverse-words.d.ts.map +1 -0
- package/dist/transforms/transforms/reverse-words.js +88 -0
- package/dist/transforms/transforms/reverse-words.js.map +1 -0
- package/dist/transforms/transforms/transforms.test.d.ts +11 -0
- package/dist/transforms/transforms/transforms.test.d.ts.map +1 -0
- package/dist/transforms/transforms/transforms.test.js +489 -0
- package/dist/transforms/transforms/transforms.test.js.map +1 -0
- package/dist/transforms/transforms/ubbi-dubbi.d.ts +7 -0
- package/dist/transforms/transforms/ubbi-dubbi.d.ts.map +1 -0
- package/dist/transforms/transforms/ubbi-dubbi.js +120 -0
- package/dist/transforms/transforms/ubbi-dubbi.js.map +1 -0
- package/dist/transforms/transforms/uwu.d.ts +7 -0
- package/dist/transforms/transforms/uwu.d.ts.map +1 -0
- package/dist/transforms/transforms/uwu.js +106 -0
- package/dist/transforms/transforms/uwu.js.map +1 -0
- package/dist/transforms/types.d.ts +159 -0
- package/dist/transforms/types.d.ts.map +1 -0
- package/dist/transforms/types.js +22 -0
- package/dist/transforms/types.js.map +1 -0
- package/dist/types/api.d.ts +158 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +6 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +86 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +66 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/context.d.ts +74 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +83 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/lexicon.d.ts +247 -0
- package/dist/types/lexicon.d.ts.map +1 -0
- package/dist/types/lexicon.js +6 -0
- package/dist/types/lexicon.js.map +1 -0
- package/examples/basic-usage.ts +48 -0
- package/examples/corporate-lexicon.ts +71 -0
- package/examples/lexicons/corporate-min.json +200 -0
- package/examples/with-tracing.ts +85 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-generator.js","sourceRoot":"","sources":["../../src/generator/text-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,MAAM,OAAO,aAAa;IAChB,MAAM,CAAkB;IACxB,GAAG,CAAO;IACV,YAAY,CAAe;IAC3B,YAAY,CAAe;IAC3B,cAAc,CAAiB;IAC/B,iBAAiB,CAAoB;IACrC,UAAU,CAAa;IACvB,YAAY,CAAgB;IAC5B,WAAW,CAAU;IACrB,gBAAgB,GAAW,SAAS,CAAC;IACrC,WAAW,CAAS;IACpB,iBAAiB,CAAoB;IACrC,cAAc,CAAW;IAEjC,YAAY,OAA6B;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAElE,iBAAiB;QACjB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;QAEtC,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAErF,gCAAgC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACnF,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3F,yBAAyB;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE9C,iDAAiD;QACjD,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,EAAE,CAAC;QAEjD,mCAAmC;QACnC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAsB;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEtD,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAI,EAAE,IAAI,CAAC;QAEhC,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAEjE,0BAA0B;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAEhF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1D,KAAK,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;YACjD,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,eAAe,CAAC;YACvD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK;gBACL,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,OAAO,EAAE;oBACjB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAC5D,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;iBACjD;aACF,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAuB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnG,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;QACnG,MAAM,YAAY,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAEjF,MAAM,SAAS,GAAqB,EAAE,CAAC;QACvC,MAAM,cAAc,GAAoB,EAAE,CAAC;QAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;YACtB,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAExB,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5D,0BAA0B;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,KAAK,GAAoB;gBAC7B,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;gBAC3C,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;gBACrD,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;gBAClD,YAAY,EAAE,cAAc,CAAC,YAAY;gBACzC,eAAe,EAAE,cAAc,CAAC,eAAe;aAChD,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK;gBACL,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,OAAO,EAAE;oBACjB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAC5D,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;iBACjD;aACF,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAuB;QAC/B,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,IAAI,EAAE,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QAErF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,eAAe,GAAqB,EAAE,CAAC;QAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;YAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAE9D,MAAM,SAAS,GAAqB,EAAE,CAAC;YACvC,MAAM,cAAc,GAAoB,EAAE,CAAC;YAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;gBACtB,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAExB,MAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;gBACnD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEvB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;YACtD,CAAC;YAED,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC;YAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAE5E,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC;QAEtC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,GAAoB;gBAC7B,UAAU,EAAE,eAAe;gBAC3B,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;gBACrD,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;gBAClD,YAAY,EAAE,cAAc,CAAC,YAAY;gBACzC,eAAe,EAAE,cAAc,CAAC,eAAe;aAChD,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK;gBACL,IAAI,EAAE;oBACJ,GAAG,IAAI,CAAC,OAAO,EAAE;oBACjB,iBAAiB,EAAE,cAAc,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;wBAC5D,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;iBACjD;aACF,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAC3B,IAAY,EACZ,eAA0G;QAE1G,6BAA6B;QAC7B,MAAM,eAAe,GAAwC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAEnG,iCAAiC;QACjC,IAAI,mBAA0D,CAAC;QAC/D,IAAI,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7D,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAE,CAAC,gBAAgB,CAAC;QAChG,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,2BAA2B,CAC7C,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,eAAe,EACf,mBAAmB,EACnB,eAAe,CAAC,CAAC,CAAC;YAChB,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;YAClD,SAAS,EAAE,eAAe,CAAC,SAAS;SACrC,CAAC,CAAC,CAAC,SAAS,CACd,CAAC;QAEF,mBAAmB;QACnB,OAAO,eAAe,CACpB,IAAI,EACJ,WAAW,EACX,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,CACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,KAAgB;QAC9C,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEnE,2BAA2B;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9C,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,GAAsB,EAAE,IAAmB;QAC3E,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAsC,CAAC;QAC3C,IAAI,SAA4B,CAAC;QAEjC,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YAClD,QAAQ,EAAE,CAAC;YACX,GAAG,CAAC,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAE/D,WAAW;gBACX,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CACzC,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,UAAU,EACd,GAAG,EACH,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,EACb,UAAU,CACX,CAAC;gBAEF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,UAAU,GAAG,MAAM,CAAC;gBAEpB,mDAAmD;gBACnD,IAAI,UAAU,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9F,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,oDAAoD;gBACpD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;oBACjB,+CAA+C;oBAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBACnE,CAAC;gBAED,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;oBAClB,2BAA2B;oBAC3B,IAAI,GAAG,mBAAmB,CAAC;gBAC7B,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,SAAS,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACpE,CAAC;QAED,gDAAgD;QAChD,OAAO,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,QAAQ,CAAC;QAE3B,2CAA2C;QAC3C,2BAA2B;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;QAExD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;YAClC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,0CAA0C;QAC1C,2BAA2B;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,OAAO;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAChD,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,cAAc,EAAE,WAAW,EAAE,OAAO;YACpC,SAAS,EAAE,WAAW,EAAE,EAAE;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,MAAsB,EAAE,GAAsB;QAC9E,OAAO;YACL,UAAU,EAAE;gBACV;oBACE,SAAS,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;iBACnD;aACF;YACD,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC;YACrD,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;SACrD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,MAAsB,EAAE,GAAsB;QACxE,MAAM,WAAW,GAAiB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC1D,gDAAgD;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAK,CAAC,CAAC,IAA2B,CAAC,KAAK,KAAK,KAAK,CACzE,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAExC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS;gBACrC,GAAG,EAAE,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,IAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aAC/E,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CACzC,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,UAAU,EACd,GAAG,EACH,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,EACb,UAAU,CACX,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,MAAM,EAAE,WAAW;YACnB,oBAAoB,EAAE,UAAU,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3D,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,GAAsB;QACnD,6CAA6C;QAC7C,2CAA2C;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAY;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;QAC1D,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-generator.test.d.ts","sourceRoot":"","sources":["../../src/generator/text-generator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { TextGenerator } from './text-generator.js';
|
|
3
|
+
import { SimpleFakerAdapter } from '../adapters/index.js';
|
|
4
|
+
import { isCapitalized, endsWithPunctuation, hasNoDoubleSpaces } from '../morphology/index.js';
|
|
5
|
+
describe('TextGenerator', () => {
|
|
6
|
+
const createGenerator = (seed = 12345) => {
|
|
7
|
+
const generator = new TextGenerator({
|
|
8
|
+
fakerAdapter: new SimpleFakerAdapter(),
|
|
9
|
+
});
|
|
10
|
+
generator.setSeed(seed);
|
|
11
|
+
return generator;
|
|
12
|
+
};
|
|
13
|
+
describe('determinism', () => {
|
|
14
|
+
it('produces same output for same seed', () => {
|
|
15
|
+
const gen1 = createGenerator(12345);
|
|
16
|
+
const gen2 = createGenerator(12345);
|
|
17
|
+
const text1 = gen1.sentence();
|
|
18
|
+
const text2 = gen2.sentence();
|
|
19
|
+
expect(text1).toBe(text2);
|
|
20
|
+
});
|
|
21
|
+
it('produces different output for different seeds', () => {
|
|
22
|
+
const gen1 = createGenerator(12345);
|
|
23
|
+
const gen2 = createGenerator(54321);
|
|
24
|
+
const text1 = gen1.sentence();
|
|
25
|
+
const text2 = gen2.sentence();
|
|
26
|
+
expect(text1).not.toBe(text2);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('sentence', () => {
|
|
30
|
+
it('generates a sentence', () => {
|
|
31
|
+
const generator = createGenerator();
|
|
32
|
+
const text = generator.sentence();
|
|
33
|
+
expect(typeof text).toBe('string');
|
|
34
|
+
expect(text.length).toBeGreaterThan(0);
|
|
35
|
+
});
|
|
36
|
+
it('sentence starts with capital letter', () => {
|
|
37
|
+
const generator = createGenerator();
|
|
38
|
+
for (let i = 0; i < 20; i++) {
|
|
39
|
+
const text = generator.sentence();
|
|
40
|
+
expect(isCapitalized(text)).toBe(true);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
it('sentence ends with punctuation', () => {
|
|
44
|
+
const generator = createGenerator();
|
|
45
|
+
for (let i = 0; i < 20; i++) {
|
|
46
|
+
const text = generator.sentence();
|
|
47
|
+
expect(endsWithPunctuation(text)).toBe(true);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
it('sentence has no double spaces', () => {
|
|
51
|
+
const generator = createGenerator();
|
|
52
|
+
for (let i = 0; i < 20; i++) {
|
|
53
|
+
const text = generator.sentence();
|
|
54
|
+
expect(hasNoDoubleSpaces(text)).toBe(true);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
it('can generate specific sentence types', () => {
|
|
58
|
+
const generator = createGenerator();
|
|
59
|
+
const question = generator.sentence({ type: 'question' });
|
|
60
|
+
expect(question.endsWith('?')).toBe(true);
|
|
61
|
+
const declarative = generator.sentence({ type: 'simpleDeclarative' });
|
|
62
|
+
expect(declarative.endsWith('.')).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('paragraph', () => {
|
|
66
|
+
it('generates a paragraph', () => {
|
|
67
|
+
const generator = createGenerator();
|
|
68
|
+
const text = generator.paragraph();
|
|
69
|
+
expect(typeof text).toBe('string');
|
|
70
|
+
expect(text.length).toBeGreaterThan(0);
|
|
71
|
+
});
|
|
72
|
+
it('paragraph contains multiple sentences', () => {
|
|
73
|
+
const generator = createGenerator();
|
|
74
|
+
const text = generator.paragraph({ sentences: 3 });
|
|
75
|
+
// Count sentence-ending punctuation
|
|
76
|
+
const sentenceCount = (text.match(/[.!?]/g) || []).length;
|
|
77
|
+
expect(sentenceCount).toBeGreaterThanOrEqual(3);
|
|
78
|
+
});
|
|
79
|
+
it('respects sentence count option', () => {
|
|
80
|
+
const generator = createGenerator();
|
|
81
|
+
const text = generator.paragraph({ sentences: 5 });
|
|
82
|
+
const sentenceCount = (text.match(/[.!?]/g) || []).length;
|
|
83
|
+
expect(sentenceCount).toBe(5);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
describe('textBlock', () => {
|
|
87
|
+
it('generates multiple paragraphs', () => {
|
|
88
|
+
const generator = createGenerator();
|
|
89
|
+
const text = generator.textBlock({ paragraphs: 3 });
|
|
90
|
+
// Paragraphs are separated by double newlines
|
|
91
|
+
const paragraphCount = text.split('\n\n').length;
|
|
92
|
+
expect(paragraphCount).toBe(3);
|
|
93
|
+
});
|
|
94
|
+
it('each paragraph is valid', () => {
|
|
95
|
+
const generator = createGenerator();
|
|
96
|
+
const text = generator.textBlock({ paragraphs: 2 });
|
|
97
|
+
const paragraphs = text.split('\n\n');
|
|
98
|
+
for (const paragraph of paragraphs) {
|
|
99
|
+
expect(isCapitalized(paragraph)).toBe(true);
|
|
100
|
+
expect(endsWithPunctuation(paragraph)).toBe(true);
|
|
101
|
+
expect(hasNoDoubleSpaces(paragraph)).toBe(true);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('tracing', () => {
|
|
106
|
+
it('returns trace when enabled', () => {
|
|
107
|
+
const generator = new TextGenerator({
|
|
108
|
+
fakerAdapter: new SimpleFakerAdapter(),
|
|
109
|
+
enableTrace: true,
|
|
110
|
+
});
|
|
111
|
+
generator.setSeed(12345);
|
|
112
|
+
const result = generator.sentence();
|
|
113
|
+
expect(typeof result).toBe('object');
|
|
114
|
+
expect(result).toHaveProperty('text');
|
|
115
|
+
expect(result).toHaveProperty('trace');
|
|
116
|
+
expect(result).toHaveProperty('meta');
|
|
117
|
+
});
|
|
118
|
+
it('trace contains expected fields', () => {
|
|
119
|
+
const generator = new TextGenerator({
|
|
120
|
+
fakerAdapter: new SimpleFakerAdapter(),
|
|
121
|
+
enableTrace: true,
|
|
122
|
+
});
|
|
123
|
+
generator.setSeed(12345);
|
|
124
|
+
const result = generator.sentence();
|
|
125
|
+
expect(result.trace.paragraphs).toHaveLength(1);
|
|
126
|
+
expect(result.trace.paragraphs[0].sentences).toHaveLength(1);
|
|
127
|
+
expect(result.trace.paragraphs[0].sentences[0]).toHaveProperty('template');
|
|
128
|
+
expect(result.trace.paragraphs[0].sentences[0]).toHaveProperty('tokens');
|
|
129
|
+
expect(result.meta.archetype).toBe('default');
|
|
130
|
+
expect(result.meta.seed).toBe(12345);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('invariants (property tests)', () => {
|
|
134
|
+
it('all generated text passes invariants across many seeds', () => {
|
|
135
|
+
for (let seed = 0; seed < 100; seed++) {
|
|
136
|
+
const generator = createGenerator(seed);
|
|
137
|
+
// Test sentence
|
|
138
|
+
const sentence = generator.sentence();
|
|
139
|
+
expect(isCapitalized(sentence)).toBe(true);
|
|
140
|
+
expect(endsWithPunctuation(sentence)).toBe(true);
|
|
141
|
+
expect(hasNoDoubleSpaces(sentence)).toBe(true);
|
|
142
|
+
// Test paragraph
|
|
143
|
+
const paragraph = generator.paragraph();
|
|
144
|
+
expect(isCapitalized(paragraph)).toBe(true);
|
|
145
|
+
expect(endsWithPunctuation(paragraph)).toBe(true);
|
|
146
|
+
expect(hasNoDoubleSpaces(paragraph)).toBe(true);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
//# sourceMappingURL=text-generator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-generator.test.js","sourceRoot":"","sources":["../../src/generator/text-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE/F,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,eAAe,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,EAAE;QACvC,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;YAClC,YAAY,EAAE,IAAI,kBAAkB,EAAE;SACvC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAY,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAY,CAAC;YAExC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAY,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAY,CAAC;YAExC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAY,CAAC;YAE5C,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAY,CAAC;gBAC5C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAY,CAAC;gBAC5C,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAY,CAAC;gBAC5C,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YAEpC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAW,CAAC;YACpE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE1C,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAW,CAAC;YAChF,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,EAAY,CAAC;YAE7C,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAW,CAAC;YAE7D,oCAAoC;YACpC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC1D,MAAM,CAAC,aAAa,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAW,CAAC;YAE7D,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC1D,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAW,CAAC;YAE9D,8CAA8C;YAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;YACjD,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAW,CAAC;YAE9D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;gBAClC,YAAY,EAAE,IAAI,kBAAkB,EAAE;gBACtC,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEzB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;YAEpC,MAAM,CAAC,OAAO,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC;gBAClC,YAAY,EAAE,IAAI,kBAAkB,EAAE;gBACtC,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAEzB,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAYhC,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;YAC5E,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAE1E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBAExC,gBAAgB;gBAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAY,CAAC;gBAChD,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/C,iBAAiB;gBACjB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,EAAY,CAAC;gBAClD,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PhraseBuilders } from './phrase-builders.js';
|
|
2
|
+
export type { PhraseResult } from './phrase-builders.js';
|
|
3
|
+
export { SentenceTemplates } from './sentence-templates.js';
|
|
4
|
+
export type { SentenceType, SentenceResult } from './sentence-templates.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/grammar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/grammar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phrase Builders
|
|
3
|
+
* Builds NP, VP, PP, ADJP, ADVP phrases
|
|
4
|
+
*/
|
|
5
|
+
import type { IRng } from '../interfaces/rng.js';
|
|
6
|
+
import type { GeneratorConfig } from '../types/config.js';
|
|
7
|
+
import type { GenerationContext, PhraseFeatures } from '../types/context.js';
|
|
8
|
+
import { WordProvider } from '../providers/word-provider.js';
|
|
9
|
+
export interface PhraseResult {
|
|
10
|
+
tokens: string[];
|
|
11
|
+
features?: PhraseFeatures;
|
|
12
|
+
}
|
|
13
|
+
export declare class PhraseBuilders {
|
|
14
|
+
private wordProvider;
|
|
15
|
+
private rng;
|
|
16
|
+
private config;
|
|
17
|
+
constructor(wordProvider: WordProvider, rng: IRng, config: GeneratorConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Build a Noun Phrase (NP)
|
|
20
|
+
* Structure: [DET] [ADJP?] NOUN [PP*]
|
|
21
|
+
*/
|
|
22
|
+
buildNP(ctx: GenerationContext, options?: {
|
|
23
|
+
usePronoun?: boolean;
|
|
24
|
+
useProperNoun?: boolean;
|
|
25
|
+
includePP?: boolean;
|
|
26
|
+
maxPP?: number;
|
|
27
|
+
forcePlural?: boolean;
|
|
28
|
+
forceSingular?: boolean;
|
|
29
|
+
useDeterminer?: boolean;
|
|
30
|
+
}): PhraseResult;
|
|
31
|
+
/**
|
|
32
|
+
* Build a Verb Phrase (VP)
|
|
33
|
+
* Structure: [ADVP?] VERB [NP?] [PP?] [ADVP?]
|
|
34
|
+
*/
|
|
35
|
+
buildVP(ctx: GenerationContext, subjectFeatures: PhraseFeatures, options?: {
|
|
36
|
+
includeObject?: boolean;
|
|
37
|
+
includePP?: boolean;
|
|
38
|
+
tense?: 'present' | 'past' | 'progressive';
|
|
39
|
+
useModal?: boolean;
|
|
40
|
+
}): PhraseResult;
|
|
41
|
+
/**
|
|
42
|
+
* Build a Prepositional Phrase (PP)
|
|
43
|
+
* Structure: PREP NP
|
|
44
|
+
*/
|
|
45
|
+
buildPP(ctx: GenerationContext): PhraseResult;
|
|
46
|
+
/**
|
|
47
|
+
* Build an Adjective Phrase (ADJP)
|
|
48
|
+
* Structure: [ADVP?] ADJ
|
|
49
|
+
*/
|
|
50
|
+
buildADJP(ctx: GenerationContext): PhraseResult;
|
|
51
|
+
/**
|
|
52
|
+
* Build an Adverb Phrase (ADVP)
|
|
53
|
+
* Structure: [INTENSIFIER?] ADV
|
|
54
|
+
*/
|
|
55
|
+
buildADVP(ctx: GenerationContext): PhraseResult;
|
|
56
|
+
/**
|
|
57
|
+
* Build a clause (NP VP)
|
|
58
|
+
*/
|
|
59
|
+
buildClause(ctx: GenerationContext, options?: {
|
|
60
|
+
tense?: 'present' | 'past' | 'progressive';
|
|
61
|
+
usePronoun?: boolean;
|
|
62
|
+
}): PhraseResult;
|
|
63
|
+
/**
|
|
64
|
+
* Build a subordinate clause
|
|
65
|
+
*/
|
|
66
|
+
buildSubordinateClause(ctx: GenerationContext): PhraseResult;
|
|
67
|
+
/**
|
|
68
|
+
* Build a relative clause
|
|
69
|
+
*/
|
|
70
|
+
buildRelativeClause(ctx: GenerationContext, antecedentFeatures: PhraseFeatures): PhraseResult;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=phrase-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase-builders.d.ts","sourceRoot":"","sources":["../../src/grammar/phrase-builders.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAU7D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe;IAM1E;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,GAAE;QACvC,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,aAAa,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,YAAY;IAkGrB;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,GAAE;QACxE,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;QAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;KACf,GAAG,YAAY;IA4DrB;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,iBAAiB,GAAG,YAAY;IAa7C;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,YAAY;IAe/C;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,iBAAiB,GAAG,YAAY;IAe/C;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,GAAE;QAC3C,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;QAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,YAAY;IAgBrB;;OAEG;IACH,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,YAAY;IAY5D;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,GAAG,YAAY;CAW9F"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phrase Builders
|
|
3
|
+
* Builds NP, VP, PP, ADJP, ADVP phrases
|
|
4
|
+
*/
|
|
5
|
+
import { getIndefiniteArticle, pluralize, getThirdPersonSingular, getPastTense, getPresentParticiple, conjugateBe, } from '../morphology/index.js';
|
|
6
|
+
export class PhraseBuilders {
|
|
7
|
+
wordProvider;
|
|
8
|
+
rng;
|
|
9
|
+
config;
|
|
10
|
+
constructor(wordProvider, rng, config) {
|
|
11
|
+
this.wordProvider = wordProvider;
|
|
12
|
+
this.rng = rng;
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a Noun Phrase (NP)
|
|
17
|
+
* Structure: [DET] [ADJP?] NOUN [PP*]
|
|
18
|
+
*/
|
|
19
|
+
buildNP(ctx, options = {}) {
|
|
20
|
+
const { usePronoun = false, includePP = false, maxPP = this.config.maxPPChain, forcePlural = false, forceSingular = false, useDeterminer = true, } = options;
|
|
21
|
+
const tokens = [];
|
|
22
|
+
let features = { number: 'singular', person: 3 };
|
|
23
|
+
// Option 1: Use a pronoun
|
|
24
|
+
if (usePronoun && this.rng.chance(0.3)) {
|
|
25
|
+
const pronoun = this.wordProvider.getSubjectPronoun();
|
|
26
|
+
tokens.push(pronoun);
|
|
27
|
+
// Set features based on pronoun
|
|
28
|
+
if (pronoun === 'I') {
|
|
29
|
+
features = { number: 'singular', person: 1 };
|
|
30
|
+
}
|
|
31
|
+
else if (pronoun === 'you') {
|
|
32
|
+
features = { number: 'singular', person: 2 }; // Can be plural too
|
|
33
|
+
}
|
|
34
|
+
else if (pronoun === 'we') {
|
|
35
|
+
features = { number: 'plural', person: 1 };
|
|
36
|
+
}
|
|
37
|
+
else if (pronoun === 'they') {
|
|
38
|
+
features = { number: 'plural', person: 3 };
|
|
39
|
+
}
|
|
40
|
+
else if (['he', 'she', 'it'].includes(pronoun)) {
|
|
41
|
+
features = { number: 'singular', person: 3 };
|
|
42
|
+
}
|
|
43
|
+
return { tokens, features };
|
|
44
|
+
}
|
|
45
|
+
// Get the noun first
|
|
46
|
+
const nounItem = this.wordProvider.getNoun(ctx);
|
|
47
|
+
let noun = nounItem.value;
|
|
48
|
+
// Determine number
|
|
49
|
+
const isPlural = forcePlural || (!forceSingular && this.rng.chance(0.25));
|
|
50
|
+
if (isPlural) {
|
|
51
|
+
noun = pluralize(noun);
|
|
52
|
+
features.number = 'plural';
|
|
53
|
+
}
|
|
54
|
+
// Add determiner
|
|
55
|
+
if (useDeterminer) {
|
|
56
|
+
if (isPlural) {
|
|
57
|
+
// Plural determiners: the, some, many, few, these, those
|
|
58
|
+
const pluralDets = ['the', 'some', 'many', 'few', 'these', 'those', 'several'];
|
|
59
|
+
tokens.push(this.rng.pick(pluralDets));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Singular determiners: the, a/an, this, that
|
|
63
|
+
if (this.rng.chance(0.5)) {
|
|
64
|
+
tokens.push('the');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// Use a/an - need to know what follows
|
|
68
|
+
const willHaveAdj = this.rng.chance(0.4) && this.config.maxAdjectivesPerNoun > 0;
|
|
69
|
+
if (willHaveAdj) {
|
|
70
|
+
// Defer article until we have adjective
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
tokens.push(getIndefiniteArticle(noun));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Optionally add adjective(s)
|
|
79
|
+
const numAdjectives = this.rng.chance(0.4)
|
|
80
|
+
? this.rng.int(1, this.config.maxAdjectivesPerNoun)
|
|
81
|
+
: 0;
|
|
82
|
+
const adjectives = [];
|
|
83
|
+
for (let i = 0; i < numAdjectives; i++) {
|
|
84
|
+
const adjItem = this.wordProvider.getAdjective(ctx);
|
|
85
|
+
adjectives.push(adjItem.value);
|
|
86
|
+
}
|
|
87
|
+
// If we have adjectives and need article, add it now
|
|
88
|
+
if (adjectives.length > 0 && useDeterminer && !isPlural && tokens.length === 0) {
|
|
89
|
+
tokens.push(getIndefiniteArticle(adjectives[0]));
|
|
90
|
+
}
|
|
91
|
+
tokens.push(...adjectives);
|
|
92
|
+
tokens.push(noun);
|
|
93
|
+
// Optionally add PP(s)
|
|
94
|
+
if (includePP && this.rng.chance(0.3)) {
|
|
95
|
+
const numPPs = this.rng.int(1, maxPP);
|
|
96
|
+
for (let i = 0; i < numPPs; i++) {
|
|
97
|
+
const pp = this.buildPP(ctx);
|
|
98
|
+
tokens.push(...pp.tokens);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { tokens, features };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Build a Verb Phrase (VP)
|
|
105
|
+
* Structure: [ADVP?] VERB [NP?] [PP?] [ADVP?]
|
|
106
|
+
*/
|
|
107
|
+
buildVP(ctx, subjectFeatures, options = {}) {
|
|
108
|
+
const { includeObject = true, includePP = false, tense = 'present', useModal = false, } = options;
|
|
109
|
+
const tokens = [];
|
|
110
|
+
// Optionally add leading adverb
|
|
111
|
+
if (this.rng.chance(0.2)) {
|
|
112
|
+
const advItem = this.wordProvider.getAdverb(ctx);
|
|
113
|
+
tokens.push(advItem.value);
|
|
114
|
+
}
|
|
115
|
+
// Get the verb
|
|
116
|
+
const verbItem = this.wordProvider.getVerb(ctx);
|
|
117
|
+
let verb = verbItem.value;
|
|
118
|
+
// Add modal if requested
|
|
119
|
+
if (useModal && this.rng.chance(0.3)) {
|
|
120
|
+
tokens.push(this.wordProvider.getModal());
|
|
121
|
+
// Modal takes base form
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Conjugate based on tense and subject
|
|
125
|
+
if (tense === 'past') {
|
|
126
|
+
verb = getPastTense(verb);
|
|
127
|
+
}
|
|
128
|
+
else if (tense === 'progressive') {
|
|
129
|
+
const beVerb = conjugateBe(subjectFeatures, 'present');
|
|
130
|
+
tokens.push(beVerb);
|
|
131
|
+
verb = getPresentParticiple(verb);
|
|
132
|
+
}
|
|
133
|
+
else if (tense === 'present' && subjectFeatures.number === 'singular' && subjectFeatures.person === 3) {
|
|
134
|
+
verb = getThirdPersonSingular(verb);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
tokens.push(verb);
|
|
138
|
+
// Optionally add object NP
|
|
139
|
+
if (includeObject && this.rng.chance(0.6)) {
|
|
140
|
+
const objectNP = this.buildNP(ctx, { includePP: false });
|
|
141
|
+
tokens.push(...objectNP.tokens);
|
|
142
|
+
}
|
|
143
|
+
// Optionally add PP
|
|
144
|
+
if (includePP && this.rng.chance(0.25)) {
|
|
145
|
+
const pp = this.buildPP(ctx);
|
|
146
|
+
tokens.push(...pp.tokens);
|
|
147
|
+
}
|
|
148
|
+
// Optionally add trailing adverb
|
|
149
|
+
if (this.rng.chance(0.15)) {
|
|
150
|
+
const advItem = this.wordProvider.getAdverb(ctx);
|
|
151
|
+
tokens.push(advItem.value);
|
|
152
|
+
}
|
|
153
|
+
return { tokens };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Build a Prepositional Phrase (PP)
|
|
157
|
+
* Structure: PREP NP
|
|
158
|
+
*/
|
|
159
|
+
buildPP(ctx) {
|
|
160
|
+
const tokens = [];
|
|
161
|
+
const prepItem = this.wordProvider.getPreposition(ctx);
|
|
162
|
+
tokens.push(prepItem.value);
|
|
163
|
+
// NP after preposition (no nested PP to avoid recursion)
|
|
164
|
+
const np = this.buildNP(ctx, { includePP: false });
|
|
165
|
+
tokens.push(...np.tokens);
|
|
166
|
+
return { tokens };
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Build an Adjective Phrase (ADJP)
|
|
170
|
+
* Structure: [ADVP?] ADJ
|
|
171
|
+
*/
|
|
172
|
+
buildADJP(ctx) {
|
|
173
|
+
const tokens = [];
|
|
174
|
+
// Optionally add intensifying adverb
|
|
175
|
+
if (this.rng.chance(0.3)) {
|
|
176
|
+
const intensifiers = ['very', 'quite', 'rather', 'somewhat', 'extremely', 'incredibly'];
|
|
177
|
+
tokens.push(this.rng.pick(intensifiers));
|
|
178
|
+
}
|
|
179
|
+
const adjItem = this.wordProvider.getAdjective(ctx);
|
|
180
|
+
tokens.push(adjItem.value);
|
|
181
|
+
return { tokens };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Build an Adverb Phrase (ADVP)
|
|
185
|
+
* Structure: [INTENSIFIER?] ADV
|
|
186
|
+
*/
|
|
187
|
+
buildADVP(ctx) {
|
|
188
|
+
const tokens = [];
|
|
189
|
+
// Optionally add intensifying adverb
|
|
190
|
+
if (this.rng.chance(0.2)) {
|
|
191
|
+
const intensifiers = ['very', 'quite', 'rather', 'most'];
|
|
192
|
+
tokens.push(this.rng.pick(intensifiers));
|
|
193
|
+
}
|
|
194
|
+
const advItem = this.wordProvider.getAdverb(ctx);
|
|
195
|
+
tokens.push(advItem.value);
|
|
196
|
+
return { tokens };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Build a clause (NP VP)
|
|
200
|
+
*/
|
|
201
|
+
buildClause(ctx, options = {}) {
|
|
202
|
+
const { tense = 'present', usePronoun = false } = options;
|
|
203
|
+
const subject = this.buildNP(ctx, { usePronoun, includePP: false });
|
|
204
|
+
const predicate = this.buildVP(ctx, subject.features, {
|
|
205
|
+
includeObject: true,
|
|
206
|
+
includePP: this.rng.chance(0.3),
|
|
207
|
+
tense,
|
|
208
|
+
});
|
|
209
|
+
return {
|
|
210
|
+
tokens: [...subject.tokens, ...predicate.tokens],
|
|
211
|
+
features: subject.features,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Build a subordinate clause
|
|
216
|
+
*/
|
|
217
|
+
buildSubordinateClause(ctx) {
|
|
218
|
+
const subordinator = this.wordProvider.getSubordinator();
|
|
219
|
+
const clause = this.buildClause(ctx, {
|
|
220
|
+
tense: this.rng.pick(['present', 'past']),
|
|
221
|
+
usePronoun: this.rng.chance(0.5),
|
|
222
|
+
});
|
|
223
|
+
return {
|
|
224
|
+
tokens: [subordinator, ...clause.tokens],
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Build a relative clause
|
|
229
|
+
*/
|
|
230
|
+
buildRelativeClause(ctx, antecedentFeatures) {
|
|
231
|
+
const relativePronoun = this.wordProvider.getRelativePronoun();
|
|
232
|
+
const vp = this.buildVP(ctx, antecedentFeatures, {
|
|
233
|
+
includeObject: this.rng.chance(0.5),
|
|
234
|
+
tense: 'present',
|
|
235
|
+
});
|
|
236
|
+
return {
|
|
237
|
+
tokens: [relativePronoun, ...vp.tokens],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=phrase-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phrase-builders.js","sourceRoot":"","sources":["../../src/grammar/phrase-builders.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAOhC,MAAM,OAAO,cAAc;IACjB,YAAY,CAAe;IAC3B,GAAG,CAAO;IACV,MAAM,CAAkB;IAEhC,YAAY,YAA0B,EAAE,GAAS,EAAE,MAAuB;QACxE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,GAAsB,EAAE,UAQ5B,EAAE;QACJ,MAAM,EACJ,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAC9B,WAAW,GAAG,KAAK,EACnB,aAAa,GAAG,KAAK,EACrB,aAAa,GAAG,IAAI,GACrB,GAAG,OAAO,CAAC;QAEZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,QAAQ,GAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAEjE,0BAA0B;QAC1B,IAAI,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAErB,gCAAgC;YAChC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;gBACpB,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC;iBAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,oBAAoB;YACpE,CAAC;iBAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5B,QAAQ,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7C,CAAC;iBAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC9B,QAAQ,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC7C,CAAC;iBAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjD,QAAQ,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,qBAAqB;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE1B,mBAAmB;QACnB,MAAM,QAAQ,GAAG,WAAW,IAAI,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACvB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;QAC7B,CAAC;QAED,iBAAiB;QACjB,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,QAAQ,EAAE,CAAC;gBACb,yDAAyD;gBACzD,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC/E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,8CAA8C;gBAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,uCAAuC;oBACvC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBACjF,IAAI,WAAW,EAAE,CAAC;wBAChB,wCAAwC;oBAC1C,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACnD,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACpD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,qDAAqD;QACrD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/E,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElB,uBAAuB;QACvB,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,GAAsB,EAAE,eAA+B,EAAE,UAK7D,EAAE;QACJ,MAAM,EACJ,aAAa,GAAG,IAAI,EACpB,SAAS,GAAG,KAAK,EACjB,KAAK,GAAG,SAAS,EACjB,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,CAAC;QAEZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,gCAAgC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,eAAe;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE1B,yBAAyB;QACzB,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1C,wBAAwB;QAC1B,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACrB,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;gBACnC,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;gBACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,IAAI,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,KAAK,UAAU,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxG,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElB,2BAA2B;QAC3B,IAAI,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,oBAAoB;QACpB,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,GAAsB;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE5B,yDAAyD;QACzD,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAsB;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,qCAAqC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;YACxF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAsB;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,qCAAqC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAsB,EAAE,UAGhC,EAAE;QACJ,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,UAAU,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,QAAS,EAAE;YACrD,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/B,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;YAChD,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,GAAsB;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YACnC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,GAAsB,EAAE,kBAAkC;QAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE;YAC/C,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;YACnC,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;SACxC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sentence Templates
|
|
3
|
+
* Defines and builds various sentence structures
|
|
4
|
+
*/
|
|
5
|
+
import type { IRng } from '../interfaces/rng.js';
|
|
6
|
+
import type { GeneratorConfig } from '../types/config.js';
|
|
7
|
+
import type { GenerationContext } from '../types/context.js';
|
|
8
|
+
import type { PhraseBuilders } from './phrase-builders.js';
|
|
9
|
+
export type SentenceType = 'simpleDeclarative' | 'compound' | 'introAdverbial' | 'subordinate' | 'interjection' | 'question';
|
|
10
|
+
export interface SentenceResult {
|
|
11
|
+
text: string;
|
|
12
|
+
type: SentenceType;
|
|
13
|
+
tokens: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare class SentenceTemplates {
|
|
16
|
+
private phraseBuilders;
|
|
17
|
+
private rng;
|
|
18
|
+
private config;
|
|
19
|
+
constructor(phraseBuilders: PhraseBuilders, rng: IRng, config: GeneratorConfig);
|
|
20
|
+
/**
|
|
21
|
+
* Select a sentence type based on weights
|
|
22
|
+
*/
|
|
23
|
+
selectSentenceType(): SentenceType;
|
|
24
|
+
/**
|
|
25
|
+
* Build a sentence of the given type
|
|
26
|
+
*/
|
|
27
|
+
buildSentence(ctx: GenerationContext, type?: SentenceType): SentenceResult;
|
|
28
|
+
/**
|
|
29
|
+
* Simple declarative: NP VP
|
|
30
|
+
* "The system processes data."
|
|
31
|
+
*/
|
|
32
|
+
buildSimpleDeclarative(ctx: GenerationContext): SentenceResult;
|
|
33
|
+
/**
|
|
34
|
+
* Compound: CLAUSE, CONJ CLAUSE
|
|
35
|
+
* "The team works hard, and the project succeeds."
|
|
36
|
+
*/
|
|
37
|
+
buildCompound(ctx: GenerationContext): SentenceResult;
|
|
38
|
+
/**
|
|
39
|
+
* Intro adverbial: ADVP/PP, CLAUSE
|
|
40
|
+
* "Generally, the system performs well."
|
|
41
|
+
* "In most cases, the results are positive."
|
|
42
|
+
*/
|
|
43
|
+
buildIntroAdverbial(ctx: GenerationContext): SentenceResult;
|
|
44
|
+
/**
|
|
45
|
+
* Subordinate: SUBCLAUSE, CLAUSE or CLAUSE SUBCLAUSE
|
|
46
|
+
* "Because the data is accurate, the results are reliable."
|
|
47
|
+
* "The system works well when conditions are optimal."
|
|
48
|
+
*/
|
|
49
|
+
buildSubordinate(ctx: GenerationContext): SentenceResult;
|
|
50
|
+
/**
|
|
51
|
+
* Interjection: INTJ, CLAUSE
|
|
52
|
+
* "Indeed, the approach is effective."
|
|
53
|
+
*/
|
|
54
|
+
buildInterjection(ctx: GenerationContext): SentenceResult;
|
|
55
|
+
/**
|
|
56
|
+
* Question: Do/Does/Did NP VP? or WH NP VP?
|
|
57
|
+
* "Does the system work efficiently?"
|
|
58
|
+
* "What makes the process effective?"
|
|
59
|
+
*/
|
|
60
|
+
buildQuestion(ctx: GenerationContext): SentenceResult;
|
|
61
|
+
/**
|
|
62
|
+
* Build a sentence with a relative clause
|
|
63
|
+
* "The system that processes data is efficient."
|
|
64
|
+
*/
|
|
65
|
+
buildWithRelativeClause(ctx: GenerationContext): SentenceResult;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=sentence-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentence-templates.d.ts","sourceRoot":"","sources":["../../src/grammar/sentence-templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,cAAc,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe;IAM9E;;OAEG;IACH,kBAAkB,IAAI,YAAY;IA+BlC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,cAAc;IAqB1E;;;OAGG;IACH,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IAe9D;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IAiBrD;;;;OAIG;IACH,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IA4B3D;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IA0BxD;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IAoBzD;;;;OAIG;IACH,aAAa,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;IA2ErD;;;OAGG;IACH,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc;CAqBhE"}
|