chaffjs 0.19.0 → 0.20.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 +86 -8
- package/dist/baseline.d.ts +11 -2
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +13 -4
- package/dist/baseline.js.map +1 -1
- package/dist/check-source.d.ts +32 -0
- package/dist/check-source.d.ts.map +1 -0
- package/dist/check-source.js +50 -0
- package/dist/check-source.js.map +1 -0
- package/dist/checks.js +3 -3
- package/dist/checks.js.map +1 -1
- package/dist/cli-args.d.ts +4 -0
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +6 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-text.d.ts +3 -2
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +21 -4
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -44
- package/dist/cli.js.map +1 -1
- package/dist/commands/compare.d.ts +3 -0
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +7 -5
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/eval.js +2 -2
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/fix-plan.d.ts +1 -1
- package/dist/commands/fix-plan.d.ts.map +1 -1
- package/dist/commands/fix-plan.js +3 -1
- package/dist/commands/fix-plan.js.map +1 -1
- package/dist/commands/grade-baseline.d.ts +15 -0
- package/dist/commands/grade-baseline.d.ts.map +1 -0
- package/dist/commands/grade-baseline.js +38 -0
- package/dist/commands/grade-baseline.js.map +1 -0
- package/dist/commands/grade.d.ts +19 -0
- package/dist/commands/grade.d.ts.map +1 -0
- package/dist/commands/grade.js +160 -0
- package/dist/commands/grade.js.map +1 -0
- package/dist/commands/outline.d.ts +2 -2
- package/dist/commands/outline.d.ts.map +1 -1
- package/dist/commands/outline.js +4 -3
- package/dist/commands/outline.js.map +1 -1
- package/dist/commands/read-document.d.ts +7 -4
- package/dist/commands/read-document.d.ts.map +1 -1
- package/dist/commands/read-document.js +9 -8
- package/dist/commands/read-document.js.map +1 -1
- package/dist/commands/suppressions.d.ts +2 -2
- package/dist/commands/suppressions.d.ts.map +1 -1
- package/dist/commands/suppressions.js +2 -2
- package/dist/commands/suppressions.js.map +1 -1
- package/dist/commands/test.js +2 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/tree.d.ts +2 -0
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +19 -12
- package/dist/commands/tree.js.map +1 -1
- package/dist/compare/distinct.d.ts.map +1 -1
- package/dist/compare/distinct.js +8 -2
- package/dist/compare/distinct.js.map +1 -1
- package/dist/compare/proper-nouns.d.ts +2 -0
- package/dist/compare/proper-nouns.d.ts.map +1 -1
- package/dist/compare/proper-nouns.js +9 -6
- package/dist/compare/proper-nouns.js.map +1 -1
- package/dist/config/load.d.ts +4 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +4 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/yaml-file.d.ts +22 -0
- package/dist/config/yaml-file.d.ts.map +1 -0
- package/dist/config/yaml-file.js +59 -0
- package/dist/config/yaml-file.js.map +1 -0
- package/dist/correction-edit.d.ts +20 -0
- package/dist/correction-edit.d.ts.map +1 -0
- package/dist/correction-edit.js +34 -0
- package/dist/correction-edit.js.map +1 -0
- package/dist/cross-run.d.ts +15 -0
- package/dist/cross-run.d.ts.map +1 -0
- package/dist/cross-run.js +73 -0
- package/dist/cross-run.js.map +1 -0
- package/dist/cross-variants.d.ts +26 -0
- package/dist/cross-variants.d.ts.map +1 -0
- package/dist/cross-variants.js +40 -0
- package/dist/cross-variants.js.map +1 -0
- package/dist/cross-votes.d.ts +17 -0
- package/dist/cross-votes.d.ts.map +1 -0
- package/dist/cross-votes.js +24 -0
- package/dist/cross-votes.js.map +1 -0
- package/dist/date-format.d.ts +33 -0
- package/dist/date-format.d.ts.map +1 -0
- package/dist/date-format.js +87 -0
- package/dist/date-format.js.map +1 -0
- package/dist/derived/date-arithmetic.d.ts +22 -0
- package/dist/derived/date-arithmetic.d.ts.map +1 -0
- package/dist/derived/date-arithmetic.js +48 -0
- package/dist/derived/date-arithmetic.js.map +1 -0
- package/dist/derived/durations.d.ts +25 -0
- package/dist/derived/durations.d.ts.map +1 -0
- package/dist/derived/durations.js +38 -0
- package/dist/derived/durations.js.map +1 -0
- package/dist/derived/elapsed.d.ts +41 -0
- package/dist/derived/elapsed.d.ts.map +1 -0
- package/dist/derived/elapsed.js +66 -0
- package/dist/derived/elapsed.js.map +1 -0
- package/dist/derived/relative-dates.d.ts +35 -0
- package/dist/derived/relative-dates.d.ts.map +1 -0
- package/dist/derived/relative-dates.js +65 -0
- package/dist/derived/relative-dates.js.map +1 -0
- package/dist/derived/sentence-buckets.d.ts +4 -0
- package/dist/derived/sentence-buckets.d.ts.map +1 -0
- package/dist/derived/sentence-buckets.js +34 -0
- package/dist/derived/sentence-buckets.js.map +1 -0
- package/dist/detectors/absolute-exception.d.ts +4 -0
- package/dist/detectors/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/absolute-exception.js +86 -0
- package/dist/detectors/absolute-exception.js.map +1 -0
- package/dist/detectors/abstract-length.d.ts +24 -0
- package/dist/detectors/abstract-length.d.ts.map +1 -0
- package/dist/detectors/abstract-length.js +108 -0
- package/dist/detectors/abstract-length.js.map +1 -0
- package/dist/detectors/ai-phrasing.d.ts +11 -2
- package/dist/detectors/ai-phrasing.d.ts.map +1 -1
- package/dist/detectors/ai-phrasing.js +9 -13
- package/dist/detectors/ai-phrasing.js.map +1 -1
- package/dist/detectors/ai-structure.d.ts +7 -0
- package/dist/detectors/ai-structure.d.ts.map +1 -0
- package/dist/detectors/ai-structure.js +26 -0
- package/dist/detectors/ai-structure.js.map +1 -0
- package/dist/detectors/blank-structure.d.ts +13 -0
- package/dist/detectors/blank-structure.d.ts.map +1 -0
- package/dist/detectors/blank-structure.js +124 -0
- package/dist/detectors/blank-structure.js.map +1 -0
- package/dist/detectors/chat-citation.d.ts +18 -0
- package/dist/detectors/chat-citation.d.ts.map +1 -0
- package/dist/detectors/chat-citation.js +41 -0
- package/dist/detectors/chat-citation.js.map +1 -0
- package/dist/detectors/citation-entry.d.ts +32 -0
- package/dist/detectors/citation-entry.d.ts.map +1 -0
- package/dist/detectors/citation-entry.js +62 -0
- package/dist/detectors/citation-entry.js.map +1 -0
- package/dist/detectors/citation-marks.d.ts +43 -0
- package/dist/detectors/citation-marks.d.ts.map +1 -0
- package/dist/detectors/citation-marks.js +151 -0
- package/dist/detectors/citation-marks.js.map +1 -0
- package/dist/detectors/citation-style.d.ts +16 -0
- package/dist/detectors/citation-style.d.ts.map +1 -0
- package/dist/detectors/citation-style.js +39 -0
- package/dist/detectors/citation-style.js.map +1 -0
- package/dist/detectors/cross-link.d.ts +15 -0
- package/dist/detectors/cross-link.d.ts.map +1 -0
- package/dist/detectors/cross-link.js +74 -0
- package/dist/detectors/cross-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-broken-link.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-term-variant.js.map +1 -0
- package/dist/detectors/cross-variant.d.ts +4 -0
- package/dist/detectors/cross-variant.d.ts.map +1 -0
- package/dist/detectors/cross-variant.js +62 -0
- package/dist/detectors/cross-variant.js.map +1 -0
- package/dist/detectors/date-format.d.ts +3 -0
- package/dist/detectors/date-format.d.ts.map +1 -0
- package/dist/detectors/date-format.js +26 -0
- package/dist/detectors/date-format.js.map +1 -0
- package/dist/detectors/date-year.d.ts +23 -0
- package/dist/detectors/date-year.d.ts.map +1 -0
- package/dist/detectors/date-year.js +71 -0
- package/dist/detectors/date-year.js.map +1 -0
- package/dist/detectors/derived-numbers.d.ts +6 -0
- package/dist/detectors/derived-numbers.d.ts.map +1 -0
- package/dist/detectors/derived-numbers.js +155 -0
- package/dist/detectors/derived-numbers.js.map +1 -0
- package/dist/detectors/document-shape.d.ts +18 -0
- package/dist/detectors/document-shape.d.ts.map +1 -0
- package/dist/detectors/document-shape.js +94 -0
- package/dist/detectors/document-shape.js.map +1 -0
- package/dist/detectors/emoji-heading.d.ts +7 -0
- package/dist/detectors/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/emoji-heading.js +14 -0
- package/dist/detectors/emoji-heading.js.map +1 -0
- package/dist/detectors/fact-consistency.d.ts +8 -0
- package/dist/detectors/fact-consistency.d.ts.map +1 -0
- package/dist/detectors/fact-consistency.js +44 -0
- package/dist/detectors/fact-consistency.js.map +1 -0
- package/dist/detectors/figure-order.d.ts +28 -0
- package/dist/detectors/figure-order.d.ts.map +1 -0
- package/dist/detectors/figure-order.js +65 -0
- package/dist/detectors/figure-order.js.map +1 -0
- package/dist/detectors/heading-numbering.d.ts +7 -0
- package/dist/detectors/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/heading-numbering.js +34 -0
- package/dist/detectors/heading-numbering.js.map +1 -0
- package/dist/detectors/index.d.ts +3 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +9 -140
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/invisible-character.js +3 -3
- package/dist/detectors/invisible-character.js.map +1 -1
- package/dist/detectors/katakana-density.d.ts +11 -0
- package/dist/detectors/katakana-density.d.ts.map +1 -0
- package/dist/detectors/katakana-density.js +47 -0
- package/dist/detectors/katakana-density.js.map +1 -0
- package/dist/detectors/known-correction.d.ts +7 -0
- package/dist/detectors/known-correction.d.ts.map +1 -0
- package/dist/detectors/known-correction.js +63 -0
- package/dist/detectors/known-correction.js.map +1 -0
- package/dist/detectors/lexicon-match.js +1 -1
- package/dist/detectors/lexicon-match.js.map +1 -1
- package/dist/detectors/lexicon.d.ts +3 -0
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +3 -0
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/list-parallel.d.ts +12 -0
- package/dist/detectors/list-parallel.d.ts.map +1 -0
- package/dist/detectors/list-parallel.js +135 -0
- package/dist/detectors/list-parallel.js.map +1 -0
- package/dist/detectors/long-vowel.d.ts +17 -1
- package/dist/detectors/long-vowel.d.ts.map +1 -1
- package/dist/detectors/long-vowel.js +4 -4
- package/dist/detectors/long-vowel.js.map +1 -1
- package/dist/detectors/misuse-match.d.ts +7 -0
- package/dist/detectors/misuse-match.d.ts.map +1 -0
- package/dist/detectors/misuse-match.js +23 -0
- package/dist/detectors/misuse-match.js.map +1 -0
- package/dist/detectors/modal-conflict.d.ts +3 -1
- package/dist/detectors/modal-conflict.d.ts.map +1 -1
- package/dist/detectors/modal-conflict.js +1 -1
- package/dist/detectors/modal-conflict.js.map +1 -1
- package/dist/detectors/next-word.d.ts +22 -0
- package/dist/detectors/next-word.d.ts.map +1 -0
- package/dist/detectors/next-word.js +125 -0
- package/dist/detectors/next-word.js.map +1 -0
- package/dist/detectors/number-style.d.ts +31 -0
- package/dist/detectors/number-style.d.ts.map +1 -0
- package/dist/detectors/number-style.js +182 -0
- package/dist/detectors/number-style.js.map +1 -0
- package/dist/detectors/number-unit.d.ts +35 -0
- package/dist/detectors/number-unit.d.ts.map +1 -0
- package/dist/detectors/number-unit.js +121 -0
- package/dist/detectors/number-unit.js.map +1 -0
- package/dist/detectors/orthographic-variant.d.ts +8 -0
- package/dist/detectors/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/orthographic-variant.js +130 -0
- package/dist/detectors/orthographic-variant.js.map +1 -0
- package/dist/detectors/paragraph-restatement.d.ts +11 -0
- package/dist/detectors/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/paragraph-restatement.js +61 -0
- package/dist/detectors/paragraph-restatement.js.map +1 -0
- package/dist/detectors/paragraph-run.d.ts +7 -0
- package/dist/detectors/paragraph-run.d.ts.map +1 -0
- package/dist/detectors/paragraph-run.js +25 -0
- package/dist/detectors/paragraph-run.js.map +1 -0
- package/dist/detectors/person-consistency.d.ts +7 -0
- package/dist/detectors/person-consistency.d.ts.map +1 -0
- package/dist/detectors/person-consistency.js +25 -0
- package/dist/detectors/person-consistency.js.map +1 -0
- package/dist/detectors/placeholder-text.d.ts +1 -1
- package/dist/detectors/placeholder-text.d.ts.map +1 -1
- package/dist/detectors/placeholder-text.js +54 -4
- package/dist/detectors/placeholder-text.js.map +1 -1
- package/dist/detectors/reference-text.d.ts +6 -0
- package/dist/detectors/reference-text.d.ts.map +1 -0
- package/dist/detectors/reference-text.js +38 -0
- package/dist/detectors/reference-text.js.map +1 -0
- package/dist/detectors/registry/absolute-exception.d.ts +3 -0
- package/dist/detectors/registry/absolute-exception.d.ts.map +1 -0
- package/dist/detectors/registry/absolute-exception.js +3 -0
- package/dist/detectors/registry/absolute-exception.js.map +1 -0
- package/dist/detectors/registry/abstract-length.d.ts +3 -0
- package/dist/detectors/registry/abstract-length.d.ts.map +1 -0
- package/dist/detectors/registry/abstract-length.js +3 -0
- package/dist/detectors/registry/abstract-length.js.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js +3 -0
- package/dist/detectors/registry/acronym-expansion-conflict.js.map +1 -0
- package/dist/detectors/registry/adverb-density.d.ts +3 -0
- package/dist/detectors/registry/adverb-density.d.ts.map +1 -0
- package/dist/detectors/registry/adverb-density.js +3 -0
- package/dist/detectors/registry/adverb-density.js.map +1 -0
- package/dist/detectors/registry/agentless-passive.d.ts +3 -0
- package/dist/detectors/registry/agentless-passive.d.ts.map +1 -0
- package/dist/detectors/registry/agentless-passive.js +3 -0
- package/dist/detectors/registry/agentless-passive.js.map +1 -0
- package/dist/detectors/registry/agreement-slip.d.ts +3 -0
- package/dist/detectors/registry/agreement-slip.d.ts.map +1 -0
- package/dist/detectors/registry/agreement-slip.js +3 -0
- package/dist/detectors/registry/agreement-slip.js.map +1 -0
- package/dist/detectors/registry/ai-structure.d.ts +3 -0
- package/dist/detectors/registry/ai-structure.d.ts.map +1 -0
- package/dist/detectors/registry/ai-structure.js +3 -0
- package/dist/detectors/registry/ai-structure.js.map +1 -0
- package/dist/detectors/registry/ai-tell.d.ts +3 -0
- package/dist/detectors/registry/ai-tell.d.ts.map +1 -0
- package/dist/detectors/registry/ai-tell.js +3 -0
- package/dist/detectors/registry/ai-tell.js.map +1 -0
- package/dist/detectors/registry/announced-count.d.ts +3 -0
- package/dist/detectors/registry/announced-count.d.ts.map +1 -0
- package/dist/detectors/registry/announced-count.js +3 -0
- package/dist/detectors/registry/announced-count.js.map +1 -0
- package/dist/detectors/registry/article-sound.d.ts +3 -0
- package/dist/detectors/registry/article-sound.d.ts.map +1 -0
- package/dist/detectors/registry/article-sound.js +3 -0
- package/dist/detectors/registry/article-sound.js.map +1 -0
- package/dist/detectors/registry/assistant-residue.d.ts +3 -0
- package/dist/detectors/registry/assistant-residue.d.ts.map +1 -0
- package/dist/detectors/registry/assistant-residue.js +3 -0
- package/dist/detectors/registry/assistant-residue.js.map +1 -0
- package/dist/detectors/registry/bold-label-list.d.ts +3 -0
- package/dist/detectors/registry/bold-label-list.d.ts.map +1 -0
- package/dist/detectors/registry/bold-label-list.js +3 -0
- package/dist/detectors/registry/bold-label-list.js.map +1 -0
- package/dist/detectors/registry/bracket-nesting.d.ts +3 -0
- package/dist/detectors/registry/bracket-nesting.d.ts.map +1 -0
- package/dist/detectors/registry/bracket-nesting.js +3 -0
- package/dist/detectors/registry/bracket-nesting.js.map +1 -0
- package/dist/detectors/registry/broken-link.d.ts +3 -0
- package/dist/detectors/registry/broken-link.d.ts.map +1 -0
- package/dist/detectors/registry/broken-link.js +3 -0
- package/dist/detectors/registry/broken-link.js.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts +3 -0
- package/dist/detectors/registry/chat-citation-residue.d.ts.map +1 -0
- package/dist/detectors/registry/chat-citation-residue.js +3 -0
- package/dist/detectors/registry/chat-citation-residue.js.map +1 -0
- package/dist/detectors/registry/citation-entry.d.ts +3 -0
- package/dist/detectors/registry/citation-entry.d.ts.map +1 -0
- package/dist/detectors/registry/citation-entry.js +3 -0
- package/dist/detectors/registry/citation-entry.js.map +1 -0
- package/dist/detectors/registry/citation-style.d.ts +3 -0
- package/dist/detectors/registry/citation-style.d.ts.map +1 -0
- package/dist/detectors/registry/citation-style.js +3 -0
- package/dist/detectors/registry/citation-style.js.map +1 -0
- package/dist/detectors/registry/clause-chain.d.ts +3 -0
- package/dist/detectors/registry/clause-chain.d.ts.map +1 -0
- package/dist/detectors/registry/clause-chain.js +3 -0
- package/dist/detectors/registry/clause-chain.js.map +1 -0
- package/dist/detectors/registry/colon-lead-in.d.ts +3 -0
- package/dist/detectors/registry/colon-lead-in.d.ts.map +1 -0
- package/dist/detectors/registry/colon-lead-in.js +3 -0
- package/dist/detectors/registry/colon-lead-in.js.map +1 -0
- package/dist/detectors/registry/concrete-evidence.d.ts +3 -0
- package/dist/detectors/registry/concrete-evidence.d.ts.map +1 -0
- package/dist/detectors/registry/concrete-evidence.js +3 -0
- package/dist/detectors/registry/concrete-evidence.js.map +1 -0
- package/dist/detectors/registry/conjunction-run.d.ts +3 -0
- package/dist/detectors/registry/conjunction-run.d.ts.map +1 -0
- package/dist/detectors/registry/conjunction-run.js +3 -0
- package/dist/detectors/registry/conjunction-run.js.map +1 -0
- package/dist/detectors/registry/contraction-mix.d.ts +3 -0
- package/dist/detectors/registry/contraction-mix.d.ts.map +1 -0
- package/dist/detectors/registry/contraction-mix.js +3 -0
- package/dist/detectors/registry/contraction-mix.js.map +1 -0
- package/dist/detectors/registry/contrast-framing.d.ts +3 -0
- package/dist/detectors/registry/contrast-framing.d.ts.map +1 -0
- package/dist/detectors/registry/contrast-framing.js +3 -0
- package/dist/detectors/registry/contrast-framing.js.map +1 -0
- package/dist/detectors/registry/count-per-section.d.ts +3 -0
- package/dist/detectors/registry/count-per-section.d.ts.map +1 -0
- package/dist/detectors/registry/count-per-section.js +3 -0
- package/dist/detectors/registry/count-per-section.js.map +1 -0
- package/dist/detectors/registry/cushion-density.d.ts +3 -0
- package/dist/detectors/registry/cushion-density.d.ts.map +1 -0
- package/dist/detectors/registry/cushion-density.js +3 -0
- package/dist/detectors/registry/cushion-density.js.map +1 -0
- package/dist/detectors/registry/custom-pattern.d.ts +3 -0
- package/dist/detectors/registry/custom-pattern.d.ts.map +1 -0
- package/dist/detectors/registry/custom-pattern.js +3 -0
- package/dist/detectors/registry/custom-pattern.js.map +1 -0
- package/dist/detectors/registry/custom-tokens.d.ts +3 -0
- package/dist/detectors/registry/custom-tokens.d.ts.map +1 -0
- package/dist/detectors/registry/custom-tokens.js +3 -0
- package/dist/detectors/registry/custom-tokens.js.map +1 -0
- package/dist/detectors/registry/custom-words.d.ts +3 -0
- package/dist/detectors/registry/custom-words.d.ts.map +1 -0
- package/dist/detectors/registry/custom-words.js +3 -0
- package/dist/detectors/registry/custom-words.js.map +1 -0
- package/dist/detectors/registry/dangling-figure.d.ts +3 -0
- package/dist/detectors/registry/dangling-figure.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-figure.js +3 -0
- package/dist/detectors/registry/dangling-figure.js.map +1 -0
- package/dist/detectors/registry/dangling-reference.d.ts +3 -0
- package/dist/detectors/registry/dangling-reference.d.ts.map +1 -0
- package/dist/detectors/registry/dangling-reference.js +3 -0
- package/dist/detectors/registry/dangling-reference.js.map +1 -0
- package/dist/detectors/registry/dash-density.d.ts +3 -0
- package/dist/detectors/registry/dash-density.d.ts.map +1 -0
- package/dist/detectors/registry/dash-density.js +3 -0
- package/dist/detectors/registry/dash-density.js.map +1 -0
- package/dist/detectors/registry/date-format.d.ts +3 -0
- package/dist/detectors/registry/date-format.d.ts.map +1 -0
- package/dist/detectors/registry/date-format.js +3 -0
- package/dist/detectors/registry/date-format.js.map +1 -0
- package/dist/detectors/registry/date-order.d.ts +3 -0
- package/dist/detectors/registry/date-order.d.ts.map +1 -0
- package/dist/detectors/registry/date-order.js +3 -0
- package/dist/detectors/registry/date-order.js.map +1 -0
- package/dist/detectors/registry/date-range-reversed.d.ts +3 -0
- package/dist/detectors/registry/date-range-reversed.d.ts.map +1 -0
- package/dist/detectors/registry/date-range-reversed.js +3 -0
- package/dist/detectors/registry/date-range-reversed.js.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/date-weekday-mismatch.js +3 -0
- package/dist/detectors/registry/date-weekday-mismatch.js.map +1 -0
- package/dist/detectors/registry/date-without-year.d.ts +3 -0
- package/dist/detectors/registry/date-without-year.d.ts.map +1 -0
- package/dist/detectors/registry/date-without-year.js +3 -0
- package/dist/detectors/registry/date-without-year.js.map +1 -0
- package/dist/detectors/registry/doubled-particle.d.ts +3 -0
- package/dist/detectors/registry/doubled-particle.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-particle.js +3 -0
- package/dist/detectors/registry/doubled-particle.js.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts +3 -0
- package/dist/detectors/registry/doubled-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-punctuation.js +3 -0
- package/dist/detectors/registry/doubled-punctuation.js.map +1 -0
- package/dist/detectors/registry/doubled-word.d.ts +3 -0
- package/dist/detectors/registry/doubled-word.d.ts.map +1 -0
- package/dist/detectors/registry/doubled-word.js +3 -0
- package/dist/detectors/registry/doubled-word.js.map +1 -0
- package/dist/detectors/registry/duplicate-definition.d.ts +3 -0
- package/dist/detectors/registry/duplicate-definition.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-definition.js +3 -0
- package/dist/detectors/registry/duplicate-definition.js.map +1 -0
- package/dist/detectors/registry/duplicate-heading.d.ts +3 -0
- package/dist/detectors/registry/duplicate-heading.d.ts.map +1 -0
- package/dist/detectors/registry/duplicate-heading.js +3 -0
- package/dist/detectors/registry/duplicate-heading.js.map +1 -0
- package/dist/detectors/registry/duration-mismatch.d.ts +3 -0
- package/dist/detectors/registry/duration-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/duration-mismatch.js +3 -0
- package/dist/detectors/registry/duration-mismatch.js.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js +3 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js.map +1 -0
- package/dist/detectors/registry/emoji-density.d.ts +3 -0
- package/dist/detectors/registry/emoji-density.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-density.js +3 -0
- package/dist/detectors/registry/emoji-density.js.map +1 -0
- package/dist/detectors/registry/emoji-heading.d.ts +3 -0
- package/dist/detectors/registry/emoji-heading.d.ts.map +1 -0
- package/dist/detectors/registry/emoji-heading.js +3 -0
- package/dist/detectors/registry/emoji-heading.js.map +1 -0
- package/dist/detectors/registry/empty-list-item.d.ts +3 -0
- package/dist/detectors/registry/empty-list-item.d.ts.map +1 -0
- package/dist/detectors/registry/empty-list-item.js +3 -0
- package/dist/detectors/registry/empty-list-item.js.map +1 -0
- package/dist/detectors/registry/empty-section.d.ts +3 -0
- package/dist/detectors/registry/empty-section.d.ts.map +1 -0
- package/dist/detectors/registry/empty-section.js +3 -0
- package/dist/detectors/registry/empty-section.js.map +1 -0
- package/dist/detectors/registry/empty-table-cell.d.ts +3 -0
- package/dist/detectors/registry/empty-table-cell.d.ts.map +1 -0
- package/dist/detectors/registry/empty-table-cell.js +3 -0
- package/dist/detectors/registry/empty-table-cell.js.map +1 -0
- package/dist/detectors/registry/expletive.d.ts +3 -0
- package/dist/detectors/registry/expletive.d.ts.map +1 -0
- package/dist/detectors/registry/expletive.js +3 -0
- package/dist/detectors/registry/expletive.js.map +1 -0
- package/dist/detectors/registry/fact-conflict.d.ts +3 -0
- package/dist/detectors/registry/fact-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/fact-conflict.js +3 -0
- package/dist/detectors/registry/fact-conflict.js.map +1 -0
- package/dist/detectors/registry/figure-order.d.ts +3 -0
- package/dist/detectors/registry/figure-order.d.ts.map +1 -0
- package/dist/detectors/registry/figure-order.js +3 -0
- package/dist/detectors/registry/figure-order.js.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts +3 -0
- package/dist/detectors/registry/fullwidth-alnum.d.ts.map +1 -0
- package/dist/detectors/registry/fullwidth-alnum.js +3 -0
- package/dist/detectors/registry/fullwidth-alnum.js.map +1 -0
- package/dist/detectors/registry/hankaku-kana.d.ts +3 -0
- package/dist/detectors/registry/hankaku-kana.d.ts.map +1 -0
- package/dist/detectors/registry/hankaku-kana.js +3 -0
- package/dist/detectors/registry/hankaku-kana.js.map +1 -0
- package/dist/detectors/registry/heading-echo.d.ts +3 -0
- package/dist/detectors/registry/heading-echo.d.ts.map +1 -0
- package/dist/detectors/registry/heading-echo.js +3 -0
- package/dist/detectors/registry/heading-echo.js.map +1 -0
- package/dist/detectors/registry/heading-level-skip.d.ts +3 -0
- package/dist/detectors/registry/heading-level-skip.d.ts.map +1 -0
- package/dist/detectors/registry/heading-level-skip.js +3 -0
- package/dist/detectors/registry/heading-level-skip.js.map +1 -0
- package/dist/detectors/registry/heading-numbering.d.ts +3 -0
- package/dist/detectors/registry/heading-numbering.d.ts.map +1 -0
- package/dist/detectors/registry/heading-numbering.js +3 -0
- package/dist/detectors/registry/heading-numbering.js.map +1 -0
- package/dist/detectors/registry/hedging.d.ts +3 -0
- package/dist/detectors/registry/hedging.d.ts.map +1 -0
- package/dist/detectors/registry/hedging.js +3 -0
- package/dist/detectors/registry/hedging.js.map +1 -0
- package/dist/detectors/registry/image-alt-text.d.ts +3 -0
- package/dist/detectors/registry/image-alt-text.d.ts.map +1 -0
- package/dist/detectors/registry/image-alt-text.js +3 -0
- package/dist/detectors/registry/image-alt-text.js.map +1 -0
- package/dist/detectors/registry/intensified-adjective.d.ts +3 -0
- package/dist/detectors/registry/intensified-adjective.d.ts.map +1 -0
- package/dist/detectors/registry/intensified-adjective.js +3 -0
- package/dist/detectors/registry/intensified-adjective.js.map +1 -0
- package/dist/detectors/registry/internal-jargon.d.ts +3 -0
- package/dist/detectors/registry/internal-jargon.d.ts.map +1 -0
- package/dist/detectors/registry/internal-jargon.js +3 -0
- package/dist/detectors/registry/internal-jargon.js.map +1 -0
- package/dist/detectors/registry/invisible-character.d.ts +3 -0
- package/dist/detectors/registry/invisible-character.d.ts.map +1 -0
- package/dist/detectors/registry/invisible-character.js +3 -0
- package/dist/detectors/registry/invisible-character.js.map +1 -0
- package/dist/detectors/registry/kanji-run.d.ts +3 -0
- package/dist/detectors/registry/kanji-run.d.ts.map +1 -0
- package/dist/detectors/registry/kanji-run.js +3 -0
- package/dist/detectors/registry/kanji-run.js.map +1 -0
- package/dist/detectors/registry/katakana-density.d.ts +3 -0
- package/dist/detectors/registry/katakana-density.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-density.js +3 -0
- package/dist/detectors/registry/katakana-density.js.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts +3 -0
- package/dist/detectors/registry/katakana-long-vowel.d.ts.map +1 -0
- package/dist/detectors/registry/katakana-long-vowel.js +3 -0
- package/dist/detectors/registry/katakana-long-vowel.js.map +1 -0
- package/dist/detectors/registry/known-correction.d.ts +3 -0
- package/dist/detectors/registry/known-correction.d.ts.map +1 -0
- package/dist/detectors/registry/known-correction.js +3 -0
- package/dist/detectors/registry/known-correction.js.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts +3 -0
- package/dist/detectors/registry/kutoten-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/kutoten-consistency.js +3 -0
- package/dist/detectors/registry/kutoten-consistency.js.map +1 -0
- package/dist/detectors/registry/latin-spacing.d.ts +3 -0
- package/dist/detectors/registry/latin-spacing.d.ts.map +1 -0
- package/dist/detectors/registry/latin-spacing.js +3 -0
- package/dist/detectors/registry/latin-spacing.js.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts +3 -0
- package/dist/detectors/registry/list-item-form-mix.d.ts.map +1 -0
- package/dist/detectors/registry/list-item-form-mix.js +3 -0
- package/dist/detectors/registry/list-item-form-mix.js.map +1 -0
- package/dist/detectors/registry/middle-dot.d.ts +3 -0
- package/dist/detectors/registry/middle-dot.d.ts.map +1 -0
- package/dist/detectors/registry/middle-dot.js +3 -0
- package/dist/detectors/registry/middle-dot.js.map +1 -0
- package/dist/detectors/registry/misuse-match.d.ts +3 -0
- package/dist/detectors/registry/misuse-match.d.ts.map +1 -0
- package/dist/detectors/registry/misuse-match.js +3 -0
- package/dist/detectors/registry/misuse-match.js.map +1 -0
- package/dist/detectors/registry/modal-conflict.d.ts +3 -0
- package/dist/detectors/registry/modal-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/modal-conflict.js +3 -0
- package/dist/detectors/registry/modal-conflict.js.map +1 -0
- package/dist/detectors/registry/name-variant.d.ts +3 -0
- package/dist/detectors/registry/name-variant.d.ts.map +1 -0
- package/dist/detectors/registry/name-variant.js +3 -0
- package/dist/detectors/registry/name-variant.js.map +1 -0
- package/dist/detectors/registry/ngram-repetition.d.ts +3 -0
- package/dist/detectors/registry/ngram-repetition.d.ts.map +1 -0
- package/dist/detectors/registry/ngram-repetition.js +3 -0
- package/dist/detectors/registry/ngram-repetition.js.map +1 -0
- package/dist/detectors/registry/no-lead.d.ts +3 -0
- package/dist/detectors/registry/no-lead.d.ts.map +1 -0
- package/dist/detectors/registry/no-lead.js +3 -0
- package/dist/detectors/registry/no-lead.js.map +1 -0
- package/dist/detectors/registry/nominalization.d.ts +3 -0
- package/dist/detectors/registry/nominalization.d.ts.map +1 -0
- package/dist/detectors/registry/nominalization.js +3 -0
- package/dist/detectors/registry/nominalization.js.map +1 -0
- package/dist/detectors/registry/noun-ending.d.ts +3 -0
- package/dist/detectors/registry/noun-ending.d.ts.map +1 -0
- package/dist/detectors/registry/noun-ending.js +3 -0
- package/dist/detectors/registry/noun-ending.js.map +1 -0
- package/dist/detectors/registry/number-style-consistency.d.ts +3 -0
- package/dist/detectors/registry/number-style-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/number-style-consistency.js +3 -0
- package/dist/detectors/registry/number-style-consistency.js.map +1 -0
- package/dist/detectors/registry/number-without-unit.d.ts +3 -0
- package/dist/detectors/registry/number-without-unit.d.ts.map +1 -0
- package/dist/detectors/registry/number-without-unit.js +3 -0
- package/dist/detectors/registry/number-without-unit.js.map +1 -0
- package/dist/detectors/registry/numbering-gap.d.ts +3 -0
- package/dist/detectors/registry/numbering-gap.d.ts.map +1 -0
- package/dist/detectors/registry/numbering-gap.js +3 -0
- package/dist/detectors/registry/numbering-gap.js.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.d.ts.map +1 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js +3 -0
- package/dist/detectors/registry/one-sentence-paragraph-run.js.map +1 -0
- package/dist/detectors/registry/opener-pile.d.ts +3 -0
- package/dist/detectors/registry/opener-pile.d.ts.map +1 -0
- package/dist/detectors/registry/opener-pile.js +3 -0
- package/dist/detectors/registry/opener-pile.js.map +1 -0
- package/dist/detectors/registry/opener-run.d.ts +3 -0
- package/dist/detectors/registry/opener-run.d.ts.map +1 -0
- package/dist/detectors/registry/opener-run.js +3 -0
- package/dist/detectors/registry/opener-run.js.map +1 -0
- package/dist/detectors/registry/orthographic-variant.d.ts +3 -0
- package/dist/detectors/registry/orthographic-variant.d.ts.map +1 -0
- package/dist/detectors/registry/orthographic-variant.js +3 -0
- package/dist/detectors/registry/orthographic-variant.js.map +1 -0
- package/dist/detectors/registry/outside-announced-list.d.ts +3 -0
- package/dist/detectors/registry/outside-announced-list.d.ts.map +1 -0
- package/dist/detectors/registry/outside-announced-list.js +3 -0
- package/dist/detectors/registry/outside-announced-list.js.map +1 -0
- package/dist/detectors/registry/oxford-comma.d.ts +3 -0
- package/dist/detectors/registry/oxford-comma.d.ts.map +1 -0
- package/dist/detectors/registry/oxford-comma.js +3 -0
- package/dist/detectors/registry/oxford-comma.js.map +1 -0
- package/dist/detectors/registry/paragraph-length.d.ts +3 -0
- package/dist/detectors/registry/paragraph-length.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-length.js +3 -0
- package/dist/detectors/registry/paragraph-length.js.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts +3 -0
- package/dist/detectors/registry/paragraph-restatement.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-restatement.js +3 -0
- package/dist/detectors/registry/paragraph-restatement.js.map +1 -0
- package/dist/detectors/registry/paragraph-variance.d.ts +3 -0
- package/dist/detectors/registry/paragraph-variance.d.ts.map +1 -0
- package/dist/detectors/registry/paragraph-variance.js +3 -0
- package/dist/detectors/registry/paragraph-variance.js.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/percent-sum-mismatch.js +3 -0
- package/dist/detectors/registry/percent-sum-mismatch.js.map +1 -0
- package/dist/detectors/registry/person-mix.d.ts +3 -0
- package/dist/detectors/registry/person-mix.d.ts.map +1 -0
- package/dist/detectors/registry/person-mix.js +3 -0
- package/dist/detectors/registry/person-mix.js.map +1 -0
- package/dist/detectors/registry/phrase-count.d.ts +3 -0
- package/dist/detectors/registry/phrase-count.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-count.js +3 -0
- package/dist/detectors/registry/phrase-count.js.map +1 -0
- package/dist/detectors/registry/phrase-density.d.ts +3 -0
- package/dist/detectors/registry/phrase-density.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-density.js +3 -0
- package/dist/detectors/registry/phrase-density.js.map +1 -0
- package/dist/detectors/registry/phrase-match.d.ts +3 -0
- package/dist/detectors/registry/phrase-match.d.ts.map +1 -0
- package/dist/detectors/registry/phrase-match.js +3 -0
- package/dist/detectors/registry/phrase-match.js.map +1 -0
- package/dist/detectors/registry/preamble-length.d.ts +3 -0
- package/dist/detectors/registry/preamble-length.d.ts.map +1 -0
- package/dist/detectors/registry/preamble-length.js +3 -0
- package/dist/detectors/registry/preamble-length.js.map +1 -0
- package/dist/detectors/registry/preferred-term.d.ts +3 -0
- package/dist/detectors/registry/preferred-term.d.ts.map +1 -0
- package/dist/detectors/registry/preferred-term.js +3 -0
- package/dist/detectors/registry/preferred-term.js.map +1 -0
- package/dist/detectors/registry/proper-noun-density.d.ts +3 -0
- package/dist/detectors/registry/proper-noun-density.d.ts.map +1 -0
- package/dist/detectors/registry/proper-noun-density.js +3 -0
- package/dist/detectors/registry/proper-noun-density.js.map +1 -0
- package/dist/detectors/registry/ra-nuki.d.ts +3 -0
- package/dist/detectors/registry/ra-nuki.d.ts.map +1 -0
- package/dist/detectors/registry/ra-nuki.js +3 -0
- package/dist/detectors/registry/ra-nuki.js.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts +3 -0
- package/dist/detectors/registry/reference-title-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/reference-title-mismatch.js +3 -0
- package/dist/detectors/registry/reference-title-mismatch.js.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts +3 -0
- package/dist/detectors/registry/reference-topic-missing.d.ts.map +1 -0
- package/dist/detectors/registry/reference-topic-missing.js +3 -0
- package/dist/detectors/registry/reference-topic-missing.js.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts +3 -0
- package/dist/detectors/registry/relative-date-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/relative-date-mismatch.js +3 -0
- package/dist/detectors/registry/relative-date-mismatch.js.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts +3 -0
- package/dist/detectors/registry/repeated-conjunction.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-conjunction.js +3 -0
- package/dist/detectors/registry/repeated-conjunction.js.map +1 -0
- package/dist/detectors/registry/repeated-head.d.ts +3 -0
- package/dist/detectors/registry/repeated-head.d.ts.map +1 -0
- package/dist/detectors/registry/repeated-head.js +3 -0
- package/dist/detectors/registry/repeated-head.js.map +1 -0
- package/dist/detectors/registry/required-sections.d.ts +3 -0
- package/dist/detectors/registry/required-sections.d.ts.map +1 -0
- package/dist/detectors/registry/required-sections.js +3 -0
- package/dist/detectors/registry/required-sections.js.map +1 -0
- package/dist/detectors/registry/requirement-modal.d.ts +3 -0
- package/dist/detectors/registry/requirement-modal.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-modal.js +3 -0
- package/dist/detectors/registry/requirement-modal.js.map +1 -0
- package/dist/detectors/registry/requirement-smell.d.ts +3 -0
- package/dist/detectors/registry/requirement-smell.d.ts.map +1 -0
- package/dist/detectors/registry/requirement-smell.js +3 -0
- package/dist/detectors/registry/requirement-smell.js.map +1 -0
- package/dist/detectors/registry/rule-of-three.d.ts +3 -0
- package/dist/detectors/registry/rule-of-three.d.ts.map +1 -0
- package/dist/detectors/registry/rule-of-three.js +3 -0
- package/dist/detectors/registry/rule-of-three.js.map +1 -0
- package/dist/detectors/registry/section-uniformity.d.ts +3 -0
- package/dist/detectors/registry/section-uniformity.d.ts.map +1 -0
- package/dist/detectors/registry/section-uniformity.js +3 -0
- package/dist/detectors/registry/section-uniformity.js.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-comma-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-comma-count.js +3 -0
- package/dist/detectors/registry/sentence-comma-count.js.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js +3 -0
- package/dist/detectors/registry/sentence-conjunctive-count.js.map +1 -0
- package/dist/detectors/registry/sentence-ending.d.ts +3 -0
- package/dist/detectors/registry/sentence-ending.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-ending.js +3 -0
- package/dist/detectors/registry/sentence-ending.js.map +1 -0
- package/dist/detectors/registry/sentence-length.d.ts +3 -0
- package/dist/detectors/registry/sentence-length.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-length.js +3 -0
- package/dist/detectors/registry/sentence-length.js.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts +3 -0
- package/dist/detectors/registry/sentence-rhythm.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-rhythm.js +3 -0
- package/dist/detectors/registry/sentence-rhythm.js.map +1 -0
- package/dist/detectors/registry/sentence-word-count.d.ts +3 -0
- package/dist/detectors/registry/sentence-word-count.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-word-count.js +3 -0
- package/dist/detectors/registry/sentence-word-count.js.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts +3 -0
- package/dist/detectors/registry/space-before-punctuation.d.ts.map +1 -0
- package/dist/detectors/registry/space-before-punctuation.js +3 -0
- package/dist/detectors/registry/space-before-punctuation.js.map +1 -0
- package/dist/detectors/registry/spelling-variety.d.ts +3 -0
- package/dist/detectors/registry/spelling-variety.d.ts.map +1 -0
- package/dist/detectors/registry/spelling-variety.js +3 -0
- package/dist/detectors/registry/spelling-variety.js.map +1 -0
- package/dist/detectors/registry/stock-transition.d.ts +3 -0
- package/dist/detectors/registry/stock-transition.d.ts.map +1 -0
- package/dist/detectors/registry/stock-transition.js +3 -0
- package/dist/detectors/registry/stock-transition.js.map +1 -0
- package/dist/detectors/registry/stray-space.d.ts +3 -0
- package/dist/detectors/registry/stray-space.d.ts.map +1 -0
- package/dist/detectors/registry/stray-space.js +3 -0
- package/dist/detectors/registry/stray-space.js.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/summary-fact-mismatch.js +3 -0
- package/dist/detectors/registry/summary-fact-mismatch.js.map +1 -0
- package/dist/detectors/registry/table-header-variant.d.ts +3 -0
- package/dist/detectors/registry/table-header-variant.d.ts.map +1 -0
- package/dist/detectors/registry/table-header-variant.js +3 -0
- package/dist/detectors/registry/table-header-variant.js.map +1 -0
- package/dist/detectors/registry/title-case-mix.d.ts +3 -0
- package/dist/detectors/registry/title-case-mix.d.ts.map +1 -0
- package/dist/detectors/registry/title-case-mix.js +3 -0
- package/dist/detectors/registry/title-case-mix.js.map +1 -0
- package/dist/detectors/registry/title-length.d.ts +3 -0
- package/dist/detectors/registry/title-length.d.ts.map +1 -0
- package/dist/detectors/registry/title-length.js +3 -0
- package/dist/detectors/registry/title-length.js.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts +3 -0
- package/dist/detectors/registry/topic-predicate-distance.d.ts.map +1 -0
- package/dist/detectors/registry/topic-predicate-distance.js +3 -0
- package/dist/detectors/registry/topic-predicate-distance.js.map +1 -0
- package/dist/detectors/registry/total-mismatch.d.ts +3 -0
- package/dist/detectors/registry/total-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/total-mismatch.js +3 -0
- package/dist/detectors/registry/total-mismatch.js.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts +3 -0
- package/dist/detectors/registry/unbalanced-bracket.d.ts.map +1 -0
- package/dist/detectors/registry/unbalanced-bracket.js +3 -0
- package/dist/detectors/registry/unbalanced-bracket.js.map +1 -0
- package/dist/detectors/registry/undefined-acronym.d.ts +3 -0
- package/dist/detectors/registry/undefined-acronym.d.ts.map +1 -0
- package/dist/detectors/registry/undefined-acronym.js +3 -0
- package/dist/detectors/registry/undefined-acronym.js.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts +3 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.js +3 -0
- package/dist/detectors/registry/unfilled-placeholder.js.map +1 -0
- package/dist/detectors/registry/unit-mismatch.d.ts +3 -0
- package/dist/detectors/registry/unit-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/unit-mismatch.js +3 -0
- package/dist/detectors/registry/unit-mismatch.js.map +1 -0
- package/dist/detectors/registry/unknown-word.d.ts +3 -0
- package/dist/detectors/registry/unknown-word.d.ts.map +1 -0
- package/dist/detectors/registry/unknown-word.js +3 -0
- package/dist/detectors/registry/unknown-word.js.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts +3 -0
- package/dist/detectors/registry/unqualified-superlative.d.ts.map +1 -0
- package/dist/detectors/registry/unqualified-superlative.js +3 -0
- package/dist/detectors/registry/unqualified-superlative.js.map +1 -0
- package/dist/detectors/registry/unused-definition.d.ts +3 -0
- package/dist/detectors/registry/unused-definition.d.ts.map +1 -0
- package/dist/detectors/registry/unused-definition.js +3 -0
- package/dist/detectors/registry/unused-definition.js.map +1 -0
- package/dist/detectors/registry/url-run-on.d.ts +3 -0
- package/dist/detectors/registry/url-run-on.d.ts.map +1 -0
- package/dist/detectors/registry/url-run-on.js +3 -0
- package/dist/detectors/registry/url-run-on.js.map +1 -0
- package/dist/detectors/registry/use-before-definition.d.ts +3 -0
- package/dist/detectors/registry/use-before-definition.d.ts.map +1 -0
- package/dist/detectors/registry/use-before-definition.js +3 -0
- package/dist/detectors/registry/use-before-definition.js.map +1 -0
- package/dist/detectors/registry/vague-density.d.ts +3 -0
- package/dist/detectors/registry/vague-density.d.ts.map +1 -0
- package/dist/detectors/registry/vague-density.js +3 -0
- package/dist/detectors/registry/vague-density.js.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts +3 -0
- package/dist/detectors/registry/vague-figure-pointer.d.ts.map +1 -0
- package/dist/detectors/registry/vague-figure-pointer.js +3 -0
- package/dist/detectors/registry/vague-figure-pointer.js.map +1 -0
- package/dist/detectors/registry/vague-link-text.d.ts +3 -0
- package/dist/detectors/registry/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/registry/vague-link-text.js +3 -0
- package/dist/detectors/registry/vague-link-text.js.map +1 -0
- package/dist/detectors/registry-files.d.ts +11 -0
- package/dist/detectors/registry-files.d.ts.map +1 -0
- package/dist/detectors/registry-files.js +9 -0
- package/dist/detectors/registry-files.js.map +1 -0
- package/dist/detectors/registry-load.d.ts +6 -0
- package/dist/detectors/registry-load.d.ts.map +1 -0
- package/dist/detectors/registry-load.js +19 -0
- package/dist/detectors/registry-load.js.map +1 -0
- package/dist/detectors/relative-dates.d.ts +4 -0
- package/dist/detectors/relative-dates.d.ts.map +1 -0
- package/dist/detectors/relative-dates.js +100 -0
- package/dist/detectors/relative-dates.js.map +1 -0
- package/dist/detectors/sentence-counts.d.ts +19 -0
- package/dist/detectors/sentence-counts.d.ts.map +1 -0
- package/dist/detectors/sentence-counts.js +83 -0
- package/dist/detectors/sentence-counts.js.map +1 -0
- package/dist/detectors/sentence-load.d.ts +8 -0
- package/dist/detectors/sentence-load.d.ts.map +1 -0
- package/dist/detectors/sentence-load.js +35 -0
- package/dist/detectors/sentence-load.js.map +1 -0
- package/dist/detectors/spelling-variety.d.ts +4 -3
- package/dist/detectors/spelling-variety.d.ts.map +1 -1
- package/dist/detectors/spelling-variety.js +1 -1
- package/dist/detectors/spelling-variety.js.map +1 -1
- package/dist/detectors/table-header.d.ts +28 -0
- package/dist/detectors/table-header.d.ts.map +1 -0
- package/dist/detectors/table-header.js +148 -0
- package/dist/detectors/table-header.js.map +1 -0
- package/dist/detectors/team.d.ts +3 -1
- package/dist/detectors/team.d.ts.map +1 -1
- package/dist/detectors/team.js +10 -3
- package/dist/detectors/team.js.map +1 -1
- package/dist/detectors/unit-consistency.d.ts +4 -0
- package/dist/detectors/unit-consistency.d.ts.map +1 -0
- package/dist/detectors/unit-consistency.js +53 -0
- package/dist/detectors/unit-consistency.js.map +1 -0
- package/dist/detectors/unknown-word.d.ts +7 -0
- package/dist/detectors/unknown-word.d.ts.map +1 -0
- package/dist/detectors/unknown-word.js +40 -0
- package/dist/detectors/unknown-word.js.map +1 -0
- package/dist/detectors/vague-link-text.d.ts +4 -0
- package/dist/detectors/vague-link-text.d.ts.map +1 -0
- package/dist/detectors/vague-link-text.js +11 -0
- package/dist/detectors/vague-link-text.js.map +1 -0
- package/dist/document-reading.d.ts +15 -0
- package/dist/document-reading.d.ts.map +1 -0
- package/dist/document-reading.js +23 -0
- package/dist/document-reading.js.map +1 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +8 -6
- package/dist/document.js.map +1 -1
- package/dist/experimental-alone.d.ts +13 -0
- package/dist/experimental-alone.d.ts.map +1 -0
- package/dist/experimental-alone.js +11 -0
- package/dist/experimental-alone.js.map +1 -0
- package/dist/facts/fact-conflicts.d.ts +15 -0
- package/dist/facts/fact-conflicts.d.ts.map +1 -0
- package/dist/facts/fact-conflicts.js +50 -0
- package/dist/facts/fact-conflicts.js.map +1 -0
- package/dist/facts/fact-scope.d.ts +17 -0
- package/dist/facts/fact-scope.d.ts.map +1 -0
- package/dist/facts/fact-scope.js +112 -0
- package/dist/facts/fact-scope.js.map +1 -0
- package/dist/facts/fact-values.d.ts +18 -0
- package/dist/facts/fact-values.d.ts.map +1 -0
- package/dist/facts/fact-values.js +98 -0
- package/dist/facts/fact-values.js.map +1 -0
- package/dist/facts/labelled-facts.d.ts +31 -0
- package/dist/facts/labelled-facts.d.ts.map +1 -0
- package/dist/facts/labelled-facts.js +94 -0
- package/dist/facts/labelled-facts.js.map +1 -0
- package/dist/facts/measures.d.ts +20 -0
- package/dist/facts/measures.d.ts.map +1 -0
- package/dist/facts/measures.js +40 -0
- package/dist/facts/measures.js.map +1 -0
- package/dist/facts/table-facts.d.ts +5 -0
- package/dist/facts/table-facts.d.ts.map +1 -0
- package/dist/facts/table-facts.js +55 -0
- package/dist/facts/table-facts.js.map +1 -0
- package/dist/facts/trim-marks.d.ts +7 -0
- package/dist/facts/trim-marks.d.ts.map +1 -0
- package/dist/facts/trim-marks.js +18 -0
- package/dist/facts/trim-marks.js.map +1 -0
- package/dist/facts/unit-conflicts.d.ts +14 -0
- package/dist/facts/unit-conflicts.d.ts.map +1 -0
- package/dist/facts/unit-conflicts.js +36 -0
- package/dist/facts/unit-conflicts.js.map +1 -0
- package/dist/figure-references.d.ts +15 -0
- package/dist/figure-references.d.ts.map +1 -1
- package/dist/figure-references.js +14 -0
- package/dist/figure-references.js.map +1 -1
- package/dist/files.d.ts +3 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +10 -7
- package/dist/files.js.map +1 -1
- package/dist/fix-plan/mode.d.ts +6 -1
- package/dist/fix-plan/mode.d.ts.map +1 -1
- package/dist/fix-plan/mode.js +6 -2
- package/dist/fix-plan/mode.js.map +1 -1
- package/dist/fix-plan/plan.d.ts +13 -1
- package/dist/fix-plan/plan.d.ts.map +1 -1
- package/dist/fix-plan/plan.js +13 -2
- package/dist/fix-plan/plan.js.map +1 -1
- package/dist/fix-plan/render.d.ts.map +1 -1
- package/dist/fix-plan/render.js +17 -0
- package/dist/fix-plan/render.js.map +1 -1
- package/dist/fix-plan/structure-target-text.d.ts +15 -0
- package/dist/fix-plan/structure-target-text.d.ts.map +1 -0
- package/dist/fix-plan/structure-target-text.js +57 -0
- package/dist/fix-plan/structure-target-text.js.map +1 -0
- package/dist/fix-plan/structure-targets.d.ts +24 -0
- package/dist/fix-plan/structure-targets.d.ts.map +1 -0
- package/dist/fix-plan/structure-targets.js +27 -0
- package/dist/fix-plan/structure-targets.js.map +1 -0
- package/dist/fix-plan/text.d.ts.map +1 -1
- package/dist/fix-plan/text.js +2 -0
- package/dist/fix-plan/text.js.map +1 -1
- package/dist/grade/baseline-text.d.ts +27 -0
- package/dist/grade/baseline-text.d.ts.map +1 -0
- package/dist/grade/baseline-text.js +49 -0
- package/dist/grade/baseline-text.js.map +1 -0
- package/dist/grade/baseline.d.ts +51 -0
- package/dist/grade/baseline.d.ts.map +1 -0
- package/dist/grade/baseline.js +84 -0
- package/dist/grade/baseline.js.map +1 -0
- package/dist/grade/checks.d.ts +28 -0
- package/dist/grade/checks.d.ts.map +1 -0
- package/dist/grade/checks.js +50 -0
- package/dist/grade/checks.js.map +1 -0
- package/dist/grade/context-support.d.ts +23 -0
- package/dist/grade/context-support.d.ts.map +1 -0
- package/dist/grade/context-support.js +33 -0
- package/dist/grade/context-support.js.map +1 -0
- package/dist/grade/contexts.d.ts +16 -0
- package/dist/grade/contexts.d.ts.map +1 -0
- package/dist/grade/contexts.js +34 -0
- package/dist/grade/contexts.js.map +1 -0
- package/dist/grade/grade-item.d.ts +12 -0
- package/dist/grade/grade-item.d.ts.map +1 -0
- package/dist/grade/grade-item.js +103 -0
- package/dist/grade/grade-item.js.map +1 -0
- package/dist/grade/item.d.ts +54 -0
- package/dist/grade/item.d.ts.map +1 -0
- package/dist/grade/item.js +155 -0
- package/dist/grade/item.js.map +1 -0
- package/dist/grade/order.d.ts +7 -0
- package/dist/grade/order.d.ts.map +1 -0
- package/dist/grade/order.js +7 -0
- package/dist/grade/order.js.map +1 -0
- package/dist/grade/pairing.d.ts +13 -0
- package/dist/grade/pairing.d.ts.map +1 -0
- package/dist/grade/pairing.js +14 -0
- package/dist/grade/pairing.js.map +1 -0
- package/dist/grade/rates.d.ts +14 -0
- package/dist/grade/rates.d.ts.map +1 -0
- package/dist/grade/rates.js +26 -0
- package/dist/grade/rates.js.map +1 -0
- package/dist/grade/render-baseline.d.ts +7 -0
- package/dist/grade/render-baseline.d.ts.map +1 -0
- package/dist/grade/render-baseline.js +44 -0
- package/dist/grade/render-baseline.js.map +1 -0
- package/dist/grade/render-markdown.d.ts +15 -0
- package/dist/grade/render-markdown.d.ts.map +1 -0
- package/dist/grade/render-markdown.js +41 -0
- package/dist/grade/render-markdown.js.map +1 -0
- package/dist/grade/render-variants.d.ts +12 -0
- package/dist/grade/render-variants.d.ts.map +1 -0
- package/dist/grade/render-variants.js +80 -0
- package/dist/grade/render-variants.js.map +1 -0
- package/dist/grade/render.d.ts +14 -0
- package/dist/grade/render.d.ts.map +1 -0
- package/dist/grade/render.js +52 -0
- package/dist/grade/render.js.map +1 -0
- package/dist/grade/result-name.d.ts +7 -0
- package/dist/grade/result-name.d.ts.map +1 -0
- package/dist/grade/result-name.js +6 -0
- package/dist/grade/result-name.js.map +1 -0
- package/dist/grade/result.d.ts +101 -0
- package/dist/grade/result.d.ts.map +1 -0
- package/dist/grade/result.js +2 -0
- package/dist/grade/result.js.map +1 -0
- package/dist/grade/results-read.d.ts +10 -0
- package/dist/grade/results-read.d.ts.map +1 -0
- package/dist/grade/results-read.js +82 -0
- package/dist/grade/results-read.js.map +1 -0
- package/dist/grade/rubric-verdict.d.ts +19 -0
- package/dist/grade/rubric-verdict.d.ts.map +1 -0
- package/dist/grade/rubric-verdict.js +65 -0
- package/dist/grade/rubric-verdict.js.map +1 -0
- package/dist/grade/rubric.d.ts +52 -0
- package/dist/grade/rubric.d.ts.map +1 -0
- package/dist/grade/rubric.js +149 -0
- package/dist/grade/rubric.js.map +1 -0
- package/dist/grade/scorer.d.ts +13 -0
- package/dist/grade/scorer.d.ts.map +1 -0
- package/dist/grade/scorer.js +15 -0
- package/dist/grade/scorer.js.map +1 -0
- package/dist/grade/setup.d.ts +9 -0
- package/dist/grade/setup.d.ts.map +1 -0
- package/dist/grade/setup.js +31 -0
- package/dist/grade/setup.js.map +1 -0
- package/dist/grade/stamp.d.ts +23 -0
- package/dist/grade/stamp.d.ts.map +1 -0
- package/dist/grade/stamp.js +36 -0
- package/dist/grade/stamp.js.map +1 -0
- package/dist/grade/summary.d.ts +43 -0
- package/dist/grade/summary.d.ts.map +1 -0
- package/dist/grade/summary.js +72 -0
- package/dist/grade/summary.js.map +1 -0
- package/dist/grade/text.d.ts +32 -0
- package/dist/grade/text.d.ts.map +1 -0
- package/dist/grade/text.js +117 -0
- package/dist/grade/text.js.map +1 -0
- package/dist/grade/variants-input.d.ts +12 -0
- package/dist/grade/variants-input.d.ts.map +1 -0
- package/dist/grade/variants-input.js +42 -0
- package/dist/grade/variants-input.js.map +1 -0
- package/dist/grade/variants-text.d.ts +31 -0
- package/dist/grade/variants-text.d.ts.map +1 -0
- package/dist/grade/variants-text.js +57 -0
- package/dist/grade/variants-text.js.map +1 -0
- package/dist/grade/variants.d.ts +63 -0
- package/dist/grade/variants.d.ts.map +1 -0
- package/dist/grade/variants.js +66 -0
- package/dist/grade/variants.js.map +1 -0
- package/dist/grade/verdict.d.ts +18 -0
- package/dist/grade/verdict.d.ts.map +1 -0
- package/dist/grade/verdict.js +17 -0
- package/dist/grade/verdict.js.map +1 -0
- package/dist/grade-api.d.ts +53 -0
- package/dist/grade-api.d.ts.map +1 -0
- package/dist/grade-api.js +140 -0
- package/dist/grade-api.js.map +1 -0
- package/dist/heading-numbering.d.ts +32 -0
- package/dist/heading-numbering.d.ts.map +1 -0
- package/dist/heading-numbering.js +72 -0
- package/dist/heading-numbering.js.map +1 -0
- package/dist/kana-spelling.d.ts +14 -0
- package/dist/kana-spelling.d.ts.map +1 -0
- package/dist/kana-spelling.js +43 -0
- package/dist/kana-spelling.js.map +1 -0
- package/dist/link-text.d.ts +12 -0
- package/dist/link-text.d.ts.map +1 -0
- package/dist/link-text.js +45 -0
- package/dist/link-text.js.map +1 -0
- package/dist/outline/render.d.ts +3 -1
- package/dist/outline/render.d.ts.map +1 -1
- package/dist/outline/render.js +6 -0
- package/dist/outline/render.js.map +1 -1
- package/dist/outline/structure-render.d.ts +15 -0
- package/dist/outline/structure-render.d.ts.map +1 -0
- package/dist/outline/structure-render.js +80 -0
- package/dist/outline/structure-render.js.map +1 -0
- package/dist/outline/structure-text.d.ts +30 -0
- package/dist/outline/structure-text.d.ts.map +1 -0
- package/dist/outline/structure-text.js +87 -0
- package/dist/outline/structure-text.js.map +1 -0
- package/dist/outline/text.d.ts +3 -0
- package/dist/outline/text.d.ts.map +1 -1
- package/dist/outline/text.js +3 -0
- package/dist/outline/text.js.map +1 -1
- package/dist/paragraph-runs.d.ts +7 -0
- package/dist/paragraph-runs.d.ts.map +1 -0
- package/dist/paragraph-runs.js +27 -0
- package/dist/paragraph-runs.js.map +1 -0
- package/dist/person-forms.d.ts +30 -0
- package/dist/person-forms.d.ts.map +1 -0
- package/dist/person-forms.js +96 -0
- package/dist/person-forms.js.map +1 -0
- package/dist/plugin.d.ts +14 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +2 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +2 -0
- package/dist/reasons.js.map +1 -1
- package/dist/render/explain.d.ts +2 -0
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +3 -1
- package/dist/render/explain.js.map +1 -1
- package/dist/render/friendly.d.ts.map +1 -1
- package/dist/render/friendly.js +13 -1
- package/dist/render/friendly.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +8 -4
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/rules-table.d.ts +2 -0
- package/dist/render/rules-table.d.ts.map +1 -1
- package/dist/render/rules-table.js +1 -1
- package/dist/render/rules-table.js.map +1 -1
- package/dist/render/sarif.d.ts +7 -1
- package/dist/render/sarif.d.ts.map +1 -1
- package/dist/render/sarif.js +20 -1
- package/dist/render/sarif.js.map +1 -1
- package/dist/resolve-genre.d.ts +1 -2
- package/dist/resolve-genre.d.ts.map +1 -1
- package/dist/rule-guide.d.ts +2 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +1 -0
- package/dist/rule-guide.js.map +1 -1
- package/dist/run.d.ts +3 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +33 -10
- package/dist/run.js.map +1 -1
- package/dist/sentence-load.d.ts +19 -0
- package/dist/sentence-load.d.ts.map +1 -0
- package/dist/sentence-load.js +70 -0
- package/dist/sentence-load.js.map +1 -0
- package/dist/spelling-variants.d.ts +17 -0
- package/dist/spelling-variants.d.ts.map +1 -0
- package/dist/spelling-variants.js +32 -0
- package/dist/spelling-variants.js.map +1 -0
- package/dist/spelling.d.ts +32 -0
- package/dist/spelling.d.ts.map +1 -0
- package/dist/spelling.js +54 -0
- package/dist/spelling.js.map +1 -0
- package/dist/structure/absolute-exception.d.ts +35 -0
- package/dist/structure/absolute-exception.d.ts.map +1 -0
- package/dist/structure/absolute-exception.js +70 -0
- package/dist/structure/absolute-exception.js.map +1 -0
- package/dist/structure/issues.d.ts +5 -0
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +22 -0
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/modal-conflict.d.ts +1 -0
- package/dist/structure/modal-conflict.d.ts.map +1 -1
- package/dist/structure/modal-conflict.js +1 -1
- package/dist/structure/modal-conflict.js.map +1 -1
- package/dist/structure/reference-text.d.ts +29 -0
- package/dist/structure/reference-text.d.ts.map +1 -0
- package/dist/structure/reference-text.js +79 -0
- package/dist/structure/reference-text.js.map +1 -0
- package/dist/structure-shape/baseline-load.d.ts +4 -0
- package/dist/structure-shape/baseline-load.d.ts.map +1 -0
- package/dist/structure-shape/baseline-load.js +17 -0
- package/dist/structure-shape/baseline-load.js.map +1 -0
- package/dist/structure-shape/baseline.d.ts +19 -0
- package/dist/structure-shape/baseline.d.ts.map +1 -0
- package/dist/structure-shape/baseline.js +44 -0
- package/dist/structure-shape/baseline.js.map +1 -0
- package/dist/structure-shape/features.d.ts +25 -0
- package/dist/structure-shape/features.d.ts.map +1 -0
- package/dist/structure-shape/features.js +149 -0
- package/dist/structure-shape/features.js.map +1 -0
- package/dist/structure-shape/heading-words.d.ts +14 -0
- package/dist/structure-shape/heading-words.d.ts.map +1 -0
- package/dist/structure-shape/heading-words.js +54 -0
- package/dist/structure-shape/heading-words.js.map +1 -0
- package/dist/structure-shape/of-document.d.ts +5 -0
- package/dist/structure-shape/of-document.d.ts.map +1 -0
- package/dist/structure-shape/of-document.js +6 -0
- package/dist/structure-shape/of-document.js.map +1 -0
- package/dist/structure-shape/restatement.d.ts +11 -0
- package/dist/structure-shape/restatement.d.ts.map +1 -0
- package/dist/structure-shape/restatement.js +32 -0
- package/dist/structure-shape/restatement.js.map +1 -0
- package/dist/structure-shape/score.d.ts +30 -0
- package/dist/structure-shape/score.d.ts.map +1 -0
- package/dist/structure-shape/score.js +37 -0
- package/dist/structure-shape/score.js.map +1 -0
- package/dist/yaml-values.d.ts +13 -0
- package/dist/yaml-values.d.ts.map +1 -0
- package/dist/yaml-values.js +58 -0
- package/dist/yaml-values.js.map +1 -0
- package/genres.yaml +103 -1
- package/package.json +8 -3
- package/rules/absolute-exception.yaml +83 -0
- package/rules/abstract-length.yaml +130 -0
- package/rules/adversative-ga-repeat.yaml +58 -0
- package/rules/ai-generated-composite.yaml +2 -1
- package/rules/ai-structure.yaml +202 -0
- package/rules/ai-tell.yaml +1 -1
- package/rules/announcing-opener.yaml +1 -1
- package/rules/article-sound.yaml +58 -0
- package/rules/bold-label-list.yaml +3 -3
- package/rules/bracket-nesting.yaml +74 -0
- package/rules/chat-citation-residue.yaml +77 -0
- package/rules/citation-reference-mismatch.yaml +110 -0
- package/rules/citation-style-mix.yaml +109 -0
- package/rules/clause-chain.yaml +59 -0
- package/rules/colon-lead-in.yaml +3 -3
- package/rules/contrast-framing.yaml +1 -1
- package/rules/cross-doc-broken-link.yaml +83 -0
- package/rules/cross-doc-term-variant.yaml +73 -0
- package/rules/date-format-consistency.yaml +85 -0
- package/rules/date-without-year.yaml +70 -0
- package/rules/demonstrative-opener-run.yaml +59 -0
- package/rules/doubled-nado.yaml +57 -0
- package/rules/duration-mismatch.yaml +73 -0
- package/rules/elapsed-years-mismatch.yaml +79 -0
- package/rules/emoji-heading.yaml +128 -0
- package/rules/empty-list-item.yaml +85 -0
- package/rules/empty-table-cell.yaml +89 -0
- package/rules/fact-conflict.yaml +110 -0
- package/rules/figure-reference-order.yaml +109 -0
- package/rules/heading-numbering-mix.yaml +140 -0
- package/rules/homophone-slip.yaml +58 -0
- package/rules/idiom-misuse.yaml +60 -0
- package/rules/katakana-density.yaml +93 -0
- package/rules/known-misspelling.yaml +76 -0
- package/rules/list-item-form-mix.yaml +134 -0
- package/rules/max-ten.yaml +59 -0
- package/rules/misconversion.yaml +61 -0
- package/rules/no-lead.yaml +95 -0
- package/rules/number-style-consistency.yaml +105 -0
- package/rules/number-without-unit.yaml +96 -0
- package/rules/one-sentence-paragraph-run.yaml +95 -0
- package/rules/orthographic-variant.yaml +87 -0
- package/rules/paragraph-restatement.yaml +96 -0
- package/rules/person-consistency.yaml +59 -0
- package/rules/redundant-expression.yaml +76 -0
- package/rules/reference-title-mismatch.yaml +101 -0
- package/rules/reference-topic-missing.yaml +101 -0
- package/rules/relative-date-mismatch.yaml +71 -0
- package/rules/rule-of-three.yaml +3 -3
- package/rules/section-length-uniformity.yaml +3 -3
- package/rules/sentence-initial-so.yaml +58 -0
- package/rules/sentence-rhythm.yaml +1 -1
- package/rules/stock-transition.yaml +1 -1
- package/rules/summary-fact-mismatch.yaml +122 -0
- package/rules/table-header-variant.yaml +112 -0
- package/rules/teki-overuse.yaml +59 -0
- package/rules/title-length.yaml +120 -0
- package/rules/topic-predicate-distance.yaml +59 -0
- package/rules/translationese-density.yaml +62 -0
- package/rules/unfilled-placeholder.yaml +8 -11
- package/rules/unit-mismatch.yaml +110 -0
- package/rules/unknown-word.yaml +62 -0
- package/rules/vague-link-text.yaml +77 -0
- package/rules/vague-word-density.yaml +89 -0
- package/rules/very-adjective.yaml +61 -0
- package/rules/weasel-word.yaml +60 -0
- package/rules/wordy-phrase.yaml +61 -0
- package/skills/chaff/SKILL.md +14 -6
- package/src/baseline.ts +17 -4
- package/src/check-source.ts +75 -0
- package/src/checks.ts +3 -3
- package/src/cli-args.ts +7 -1
- package/src/cli-text.ts +26 -6
- package/src/cli.ts +54 -48
- package/src/commands/compare.ts +9 -5
- package/src/commands/eval.ts +2 -2
- package/src/commands/fix-plan.ts +3 -1
- package/src/commands/grade-baseline.ts +44 -0
- package/src/commands/grade.ts +191 -0
- package/src/commands/outline.ts +4 -3
- package/src/commands/read-document.ts +17 -8
- package/src/commands/suppressions.ts +3 -2
- package/src/commands/test.ts +2 -2
- package/src/commands/tree.ts +19 -12
- package/src/compare/distinct.ts +9 -2
- package/src/compare/proper-nouns.ts +11 -7
- package/src/config/load.ts +8 -3
- package/src/config/yaml-file.ts +65 -0
- package/src/correction-edit.ts +43 -0
- package/src/cross-run.ts +107 -0
- package/src/cross-variants.ts +55 -0
- package/src/cross-votes.ts +29 -0
- package/src/date-format.ts +123 -0
- package/src/derived/date-arithmetic.ts +63 -0
- package/src/derived/durations.ts +52 -0
- package/src/derived/elapsed.ts +125 -0
- package/src/derived/relative-dates.ts +96 -0
- package/src/derived/sentence-buckets.ts +29 -0
- package/src/detectors/absolute-exception.ts +102 -0
- package/src/detectors/abstract-length.ts +126 -0
- package/src/detectors/ai-phrasing.ts +12 -14
- package/src/detectors/ai-structure.ts +26 -0
- package/src/detectors/blank-structure.ts +147 -0
- package/src/detectors/chat-citation.ts +50 -0
- package/src/detectors/citation-entry.ts +94 -0
- package/src/detectors/citation-marks.ts +205 -0
- package/src/detectors/citation-style.ts +46 -0
- package/src/detectors/cross-link.ts +82 -0
- package/src/detectors/cross-registry/cross-doc-broken-link.ts +4 -0
- package/src/detectors/cross-registry/cross-doc-term-variant.ts +4 -0
- package/src/detectors/cross-variant.ts +77 -0
- package/src/detectors/date-format.ts +29 -0
- package/src/detectors/date-year.ts +91 -0
- package/src/detectors/derived-numbers.ts +191 -0
- package/src/detectors/document-shape.ts +107 -0
- package/src/detectors/emoji-heading.ts +17 -0
- package/src/detectors/fact-consistency.ts +54 -0
- package/src/detectors/figure-order.ts +81 -0
- package/src/detectors/heading-numbering.ts +38 -0
- package/src/detectors/index.ts +18 -150
- package/src/detectors/invisible-character.ts +3 -3
- package/src/detectors/katakana-density.ts +62 -0
- package/src/detectors/known-correction.ts +89 -0
- package/src/detectors/lexicon-match.ts +1 -1
- package/src/detectors/lexicon.ts +3 -0
- package/src/detectors/list-parallel.ts +155 -0
- package/src/detectors/long-vowel.ts +4 -4
- package/src/detectors/misuse-match.ts +28 -0
- package/src/detectors/modal-conflict.ts +1 -1
- package/src/detectors/next-word.ts +156 -0
- package/src/detectors/number-style.ts +230 -0
- package/src/detectors/number-unit.ts +146 -0
- package/src/detectors/orthographic-variant.ts +152 -0
- package/src/detectors/paragraph-restatement.ts +68 -0
- package/src/detectors/paragraph-run.ts +27 -0
- package/src/detectors/person-consistency.ts +29 -0
- package/src/detectors/placeholder-text.ts +62 -5
- package/src/detectors/reference-text.ts +44 -0
- package/src/detectors/registry/absolute-exception.ts +4 -0
- package/src/detectors/registry/abstract-length.ts +4 -0
- package/src/detectors/registry/acronym-expansion-conflict.ts +4 -0
- package/src/detectors/registry/adverb-density.ts +4 -0
- package/src/detectors/registry/agentless-passive.ts +4 -0
- package/src/detectors/registry/agreement-slip.ts +4 -0
- package/src/detectors/registry/ai-structure.ts +4 -0
- package/src/detectors/registry/ai-tell.ts +4 -0
- package/src/detectors/registry/announced-count.ts +4 -0
- package/src/detectors/registry/article-sound.ts +4 -0
- package/src/detectors/registry/assistant-residue.ts +4 -0
- package/src/detectors/registry/bold-label-list.ts +4 -0
- package/src/detectors/registry/bracket-nesting.ts +4 -0
- package/src/detectors/registry/broken-link.ts +4 -0
- package/src/detectors/registry/chat-citation-residue.ts +4 -0
- package/src/detectors/registry/citation-entry.ts +4 -0
- package/src/detectors/registry/citation-style.ts +4 -0
- package/src/detectors/registry/clause-chain.ts +4 -0
- package/src/detectors/registry/colon-lead-in.ts +4 -0
- package/src/detectors/registry/concrete-evidence.ts +4 -0
- package/src/detectors/registry/conjunction-run.ts +4 -0
- package/src/detectors/registry/contraction-mix.ts +4 -0
- package/src/detectors/registry/contrast-framing.ts +4 -0
- package/src/detectors/registry/count-per-section.ts +4 -0
- package/src/detectors/registry/cushion-density.ts +4 -0
- package/src/detectors/registry/custom-pattern.ts +4 -0
- package/src/detectors/registry/custom-tokens.ts +4 -0
- package/src/detectors/registry/custom-words.ts +4 -0
- package/src/detectors/registry/dangling-figure.ts +4 -0
- package/src/detectors/registry/dangling-reference.ts +4 -0
- package/src/detectors/registry/dash-density.ts +4 -0
- package/src/detectors/registry/date-format.ts +4 -0
- package/src/detectors/registry/date-order.ts +4 -0
- package/src/detectors/registry/date-range-reversed.ts +4 -0
- package/src/detectors/registry/date-weekday-mismatch.ts +4 -0
- package/src/detectors/registry/date-without-year.ts +4 -0
- package/src/detectors/registry/doubled-particle.ts +4 -0
- package/src/detectors/registry/doubled-punctuation.ts +4 -0
- package/src/detectors/registry/doubled-word.ts +4 -0
- package/src/detectors/registry/duplicate-definition.ts +4 -0
- package/src/detectors/registry/duplicate-heading.ts +4 -0
- package/src/detectors/registry/duration-mismatch.ts +4 -0
- package/src/detectors/registry/elapsed-years-mismatch.ts +4 -0
- package/src/detectors/registry/emoji-density.ts +4 -0
- package/src/detectors/registry/emoji-heading.ts +4 -0
- package/src/detectors/registry/empty-list-item.ts +4 -0
- package/src/detectors/registry/empty-section.ts +4 -0
- package/src/detectors/registry/empty-table-cell.ts +4 -0
- package/src/detectors/registry/expletive.ts +4 -0
- package/src/detectors/registry/fact-conflict.ts +4 -0
- package/src/detectors/registry/figure-order.ts +4 -0
- package/src/detectors/registry/fullwidth-alnum.ts +4 -0
- package/src/detectors/registry/hankaku-kana.ts +4 -0
- package/src/detectors/registry/heading-echo.ts +4 -0
- package/src/detectors/registry/heading-level-skip.ts +4 -0
- package/src/detectors/registry/heading-numbering.ts +4 -0
- package/src/detectors/registry/hedging.ts +4 -0
- package/src/detectors/registry/image-alt-text.ts +4 -0
- package/src/detectors/registry/intensified-adjective.ts +4 -0
- package/src/detectors/registry/internal-jargon.ts +4 -0
- package/src/detectors/registry/invisible-character.ts +4 -0
- package/src/detectors/registry/kanji-run.ts +4 -0
- package/src/detectors/registry/katakana-density.ts +4 -0
- package/src/detectors/registry/katakana-long-vowel.ts +4 -0
- package/src/detectors/registry/known-correction.ts +4 -0
- package/src/detectors/registry/kutoten-consistency.ts +4 -0
- package/src/detectors/registry/latin-spacing.ts +4 -0
- package/src/detectors/registry/list-item-form-mix.ts +4 -0
- package/src/detectors/registry/middle-dot.ts +4 -0
- package/src/detectors/registry/misuse-match.ts +4 -0
- package/src/detectors/registry/modal-conflict.ts +4 -0
- package/src/detectors/registry/name-variant.ts +4 -0
- package/src/detectors/registry/ngram-repetition.ts +4 -0
- package/src/detectors/registry/no-lead.ts +4 -0
- package/src/detectors/registry/nominalization.ts +4 -0
- package/src/detectors/registry/noun-ending.ts +4 -0
- package/src/detectors/registry/number-style-consistency.ts +4 -0
- package/src/detectors/registry/number-without-unit.ts +4 -0
- package/src/detectors/registry/numbering-gap.ts +4 -0
- package/src/detectors/registry/one-sentence-paragraph-run.ts +4 -0
- package/src/detectors/registry/opener-pile.ts +4 -0
- package/src/detectors/registry/opener-run.ts +4 -0
- package/src/detectors/registry/orthographic-variant.ts +4 -0
- package/src/detectors/registry/outside-announced-list.ts +4 -0
- package/src/detectors/registry/oxford-comma.ts +4 -0
- package/src/detectors/registry/paragraph-length.ts +4 -0
- package/src/detectors/registry/paragraph-restatement.ts +4 -0
- package/src/detectors/registry/paragraph-variance.ts +4 -0
- package/src/detectors/registry/percent-sum-mismatch.ts +4 -0
- package/src/detectors/registry/person-mix.ts +4 -0
- package/src/detectors/registry/phrase-count.ts +4 -0
- package/src/detectors/registry/phrase-density.ts +4 -0
- package/src/detectors/registry/phrase-match.ts +4 -0
- package/src/detectors/registry/preamble-length.ts +4 -0
- package/src/detectors/registry/preferred-term.ts +4 -0
- package/src/detectors/registry/proper-noun-density.ts +4 -0
- package/src/detectors/registry/ra-nuki.ts +4 -0
- package/src/detectors/registry/reference-title-mismatch.ts +4 -0
- package/src/detectors/registry/reference-topic-missing.ts +4 -0
- package/src/detectors/registry/relative-date-mismatch.ts +4 -0
- package/src/detectors/registry/repeated-conjunction.ts +4 -0
- package/src/detectors/registry/repeated-head.ts +4 -0
- package/src/detectors/registry/required-sections.ts +4 -0
- package/src/detectors/registry/requirement-modal.ts +4 -0
- package/src/detectors/registry/requirement-smell.ts +4 -0
- package/src/detectors/registry/rule-of-three.ts +4 -0
- package/src/detectors/registry/section-uniformity.ts +4 -0
- package/src/detectors/registry/sentence-comma-count.ts +4 -0
- package/src/detectors/registry/sentence-conjunctive-count.ts +4 -0
- package/src/detectors/registry/sentence-ending.ts +4 -0
- package/src/detectors/registry/sentence-length.ts +4 -0
- package/src/detectors/registry/sentence-rhythm.ts +4 -0
- package/src/detectors/registry/sentence-word-count.ts +4 -0
- package/src/detectors/registry/space-before-punctuation.ts +4 -0
- package/src/detectors/registry/spelling-variety.ts +4 -0
- package/src/detectors/registry/stock-transition.ts +4 -0
- package/src/detectors/registry/stray-space.ts +4 -0
- package/src/detectors/registry/summary-fact-mismatch.ts +4 -0
- package/src/detectors/registry/table-header-variant.ts +4 -0
- package/src/detectors/registry/title-case-mix.ts +4 -0
- package/src/detectors/registry/title-length.ts +4 -0
- package/src/detectors/registry/topic-predicate-distance.ts +4 -0
- package/src/detectors/registry/total-mismatch.ts +4 -0
- package/src/detectors/registry/unbalanced-bracket.ts +4 -0
- package/src/detectors/registry/undefined-acronym.ts +4 -0
- package/src/detectors/registry/unfilled-placeholder.ts +4 -0
- package/src/detectors/registry/unit-mismatch.ts +4 -0
- package/src/detectors/registry/unknown-word.ts +4 -0
- package/src/detectors/registry/unqualified-superlative.ts +4 -0
- package/src/detectors/registry/unused-definition.ts +4 -0
- package/src/detectors/registry/url-run-on.ts +4 -0
- package/src/detectors/registry/use-before-definition.ts +4 -0
- package/src/detectors/registry/vague-density.ts +4 -0
- package/src/detectors/registry/vague-figure-pointer.ts +4 -0
- package/src/detectors/registry/vague-link-text.ts +4 -0
- package/src/detectors/registry-files.ts +12 -0
- package/src/detectors/registry-load.ts +23 -0
- package/src/detectors/relative-dates.ts +113 -0
- package/src/detectors/sentence-counts.ts +112 -0
- package/src/detectors/sentence-load.ts +45 -0
- package/src/detectors/spelling-variety.ts +2 -2
- package/src/detectors/table-header.ts +174 -0
- package/src/detectors/team.ts +12 -4
- package/src/detectors/unit-consistency.ts +55 -0
- package/src/detectors/unknown-word.ts +43 -0
- package/src/detectors/vague-link-text.ts +12 -0
- package/src/document-reading.ts +25 -0
- package/src/document.ts +8 -6
- package/src/experimental-alone.ts +21 -0
- package/src/facts/fact-conflicts.ts +64 -0
- package/src/facts/fact-scope.ts +141 -0
- package/src/facts/fact-values.ts +110 -0
- package/src/facts/labelled-facts.ts +131 -0
- package/src/facts/measures.ts +54 -0
- package/src/facts/table-facts.ts +71 -0
- package/src/facts/trim-marks.ts +18 -0
- package/src/facts/unit-conflicts.ts +45 -0
- package/src/figure-references.ts +20 -1
- package/src/files.ts +16 -10
- package/src/fix-plan/mode.ts +8 -2
- package/src/fix-plan/plan.ts +23 -2
- package/src/fix-plan/render.ts +18 -0
- package/src/fix-plan/structure-target-text.ts +90 -0
- package/src/fix-plan/structure-targets.ts +46 -0
- package/src/fix-plan/text.ts +3 -0
- package/src/grade/baseline-text.ts +80 -0
- package/src/grade/baseline.ts +140 -0
- package/src/grade/checks.ts +73 -0
- package/src/grade/context-support.ts +60 -0
- package/src/grade/contexts.ts +53 -0
- package/src/grade/grade-item.ts +133 -0
- package/src/grade/item.ts +208 -0
- package/src/grade/order.ts +10 -0
- package/src/grade/pairing.ts +22 -0
- package/src/grade/rates.ts +39 -0
- package/src/grade/render-baseline.ts +74 -0
- package/src/grade/render-markdown.ts +62 -0
- package/src/grade/render-variants.ts +115 -0
- package/src/grade/render.ts +84 -0
- package/src/grade/result-name.ts +9 -0
- package/src/grade/result.ts +82 -0
- package/src/grade/results-read.ts +111 -0
- package/src/grade/rubric-verdict.ts +86 -0
- package/src/grade/rubric.ts +192 -0
- package/src/grade/scorer.ts +33 -0
- package/src/grade/setup.ts +43 -0
- package/src/grade/stamp.ts +60 -0
- package/src/grade/summary.ts +112 -0
- package/src/grade/text.ts +164 -0
- package/src/grade/variants-input.ts +54 -0
- package/src/grade/variants-text.ts +88 -0
- package/src/grade/variants.ts +118 -0
- package/src/grade/verdict.ts +27 -0
- package/src/grade-api.ts +184 -0
- package/src/heading-numbering.ts +106 -0
- package/src/kana-spelling.ts +49 -0
- package/src/link-text.ts +46 -0
- package/src/outline/render.ts +9 -2
- package/src/outline/structure-render.ts +101 -0
- package/src/outline/structure-text.ts +124 -0
- package/src/outline/text.ts +5 -0
- package/src/paragraph-runs.ts +30 -0
- package/src/person-forms.ts +119 -0
- package/src/plugin.ts +13 -0
- package/src/reasons.ts +4 -0
- package/src/render/explain.ts +7 -1
- package/src/render/friendly.ts +17 -1
- package/src/render/rules-json.ts +8 -4
- package/src/render/rules-table.ts +1 -1
- package/src/render/sarif.ts +31 -1
- package/src/resolve-genre.ts +1 -1
- package/src/rule-guide.ts +3 -0
- package/src/run.ts +74 -49
- package/src/sentence-load.ts +77 -0
- package/src/spelling-variants.ts +42 -0
- package/src/spelling.ts +81 -0
- package/src/structure/absolute-exception.ts +104 -0
- package/src/structure/issues.ts +22 -0
- package/src/structure/modal-conflict.ts +1 -1
- package/src/structure/reference-text.ts +114 -0
- package/src/structure-shape/baseline-load.ts +18 -0
- package/src/structure-shape/baseline.ts +62 -0
- package/src/structure-shape/features.ts +189 -0
- package/src/structure-shape/heading-words.ts +71 -0
- package/src/structure-shape/of-document.ts +7 -0
- package/src/structure-shape/restatement.ts +41 -0
- package/src/structure-shape/score.ts +65 -0
- package/src/yaml-values.ts +61 -0
- package/structure-baseline.yaml +289 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { densityFindings } from "./ai-phrasing.js";
|
|
2
|
+
/**
|
|
3
|
+
* The word kinds an article can stand before. A conjunction, a preposition or a verb after "a" is the letter a ("option A
|
|
4
|
+
* or B", "a is the length").
|
|
5
|
+
*/
|
|
6
|
+
const CONTENT = new Set(["NOUN", "PROPN", "ADJ", "ADV", "NUM"]);
|
|
7
|
+
const LETTER_START = /^\p{L}/u;
|
|
8
|
+
const HAS_LOWER = /\p{Ll}/u;
|
|
9
|
+
/** A lower-case letter before capitals (mRNA, pH is not): the first letter is said by its name. */
|
|
10
|
+
const LETTER_BEFORE_CAPITALS = /^\p{Ll}\p{Lu}{2}/u;
|
|
11
|
+
/** Two tokens with nothing but whitespace between them in the source. Code and markup are hidden from the tokens. */
|
|
12
|
+
const adjacent = (source, left, right) => source.slice(left.span.end, right.span.start).trim() === "";
|
|
13
|
+
const ofGroup = (lexicon, group) => lexicon.filter((entry) => entry.group === group).map((entry) => entry.pattern);
|
|
14
|
+
export const articleSoundsOf = (lexicon) => ({
|
|
15
|
+
vowelLetters: new Set(ofGroup(lexicon, "vowel-letter")),
|
|
16
|
+
vowelLetterNames: new Set(ofGroup(lexicon, "letter-name-vowel")),
|
|
17
|
+
eitherLetterNames: new Set(ofGroup(lexicon, "letter-name-either")),
|
|
18
|
+
consonant: ofGroup(lexicon, "consonant"),
|
|
19
|
+
vowel: ofGroup(lexicon, "vowel"),
|
|
20
|
+
word: new Set(ofGroup(lexicon, "word")),
|
|
21
|
+
either: ofGroup(lexicon, "either"),
|
|
22
|
+
});
|
|
23
|
+
const startsWithAny = (word, starts) => starts.some((start) => word.startsWith(start));
|
|
24
|
+
/** Whether a word in lower or mixed case starts with a vowel sound; undefined when it is said both ways. */
|
|
25
|
+
const wordSound = (word, sounds) => {
|
|
26
|
+
const lower = word.toLowerCase();
|
|
27
|
+
if (startsWithAny(lower, sounds.either))
|
|
28
|
+
return undefined;
|
|
29
|
+
if (startsWithAny(lower, sounds.vowel))
|
|
30
|
+
return true;
|
|
31
|
+
if (startsWithAny(lower, sounds.consonant))
|
|
32
|
+
return false;
|
|
33
|
+
return sounds.vowelLetters.has(lower.charAt(0));
|
|
34
|
+
};
|
|
35
|
+
/** Capitals longer than this that hold a vowel may be said as a word (SALT, GIF), so only the lexicon decides them. */
|
|
36
|
+
const SPELLED_OUT_LENGTH = 3;
|
|
37
|
+
/** Whether capitals not in the lexicon are surely said letter by letter: short (MBA), or with no vowel to say (HTTP). */
|
|
38
|
+
const isSpelledOut = (word, sounds) => word.length <= SPELLED_OUT_LENGTH || ![...word.toLowerCase()].some((letter) => sounds.vowelLetters.has(letter));
|
|
39
|
+
/**
|
|
40
|
+
* Whether a word starts with a vowel sound. Capitals are read as the lexicon says (a NASA probe), else letter by letter when
|
|
41
|
+
* surely spelled out (an MBA). undefined when the word may be said both ways (a SQL, an SQL; a or an HTTP) or nothing says how.
|
|
42
|
+
*/
|
|
43
|
+
export const startsWithVowelSound = (word, sounds) => {
|
|
44
|
+
if (LETTER_BEFORE_CAPITALS.test(word))
|
|
45
|
+
return sounds.vowelLetterNames.has(word.charAt(0).toUpperCase());
|
|
46
|
+
if (HAS_LOWER.test(word))
|
|
47
|
+
return wordSound(word, sounds);
|
|
48
|
+
if (sounds.either.includes(word) || sounds.eitherLetterNames.has(word.charAt(0)))
|
|
49
|
+
return undefined;
|
|
50
|
+
if (sounds.word.has(word))
|
|
51
|
+
return wordSound(word, sounds);
|
|
52
|
+
return isSpelledOut(word, sounds) ? sounds.vowelLetterNames.has(word.charAt(0)) : undefined;
|
|
53
|
+
};
|
|
54
|
+
const ARTICLES = { a: false, an: true };
|
|
55
|
+
/** The article the next word takes, written in the case of the one written ("A apple" → "An"). */
|
|
56
|
+
const fitting = (written, vowel) => {
|
|
57
|
+
const article = vowel ? "an" : "a";
|
|
58
|
+
return written.charAt(0) === written.charAt(0).toUpperCase() ? `${article.charAt(0).toUpperCase()}${article.slice(1)}` : article;
|
|
59
|
+
};
|
|
60
|
+
/** An article that does not fit the sound of the word after it. */
|
|
61
|
+
const WORD = /\p{L}/u;
|
|
62
|
+
/**
|
|
63
|
+
* Whether a token is the article "a" or "an": lower case, or capitalised as the first word of the sentence. A capital A
|
|
64
|
+
* inside a sentence is a letter ("grade A eggs", "vitamin A intake").
|
|
65
|
+
*/
|
|
66
|
+
const isArticle = (token, at, tokens) => {
|
|
67
|
+
const first = tokens.findIndex((candidate) => WORD.test(candidate.surface));
|
|
68
|
+
return token.surface === token.surface.toLowerCase() || at === first;
|
|
69
|
+
};
|
|
70
|
+
const slipAt = (source, tokens, at, sounds) => {
|
|
71
|
+
const article = tokens[at];
|
|
72
|
+
const next = tokens[at + 1];
|
|
73
|
+
const takesAn = ARTICLES[article?.surface.toLowerCase() ?? ""];
|
|
74
|
+
if (article === undefined || next === undefined || takesAn === undefined || !isArticle(article, at, tokens))
|
|
75
|
+
return undefined;
|
|
76
|
+
if (!CONTENT.has(next.pos) || !LETTER_START.test(next.surface))
|
|
77
|
+
return undefined;
|
|
78
|
+
if (!adjacent(source, article, next))
|
|
79
|
+
return undefined;
|
|
80
|
+
const vowel = startsWithVowelSound(next.surface, sounds);
|
|
81
|
+
return vowel === undefined || vowel === takesAn ? undefined : { article, next, fits: fitting(article.surface, vowel) };
|
|
82
|
+
};
|
|
83
|
+
const slipFinding = (sentence, slip) => ({
|
|
84
|
+
rule: "",
|
|
85
|
+
severity: "warning",
|
|
86
|
+
line: 0,
|
|
87
|
+
column: 0,
|
|
88
|
+
quote: sentence.text.trim(),
|
|
89
|
+
values: { matched: `${slip.article.surface} ${slip.next.surface}`, article: slip.fits, offset: slip.article.span.start },
|
|
90
|
+
});
|
|
91
|
+
/** "a" before a vowel sound or "an" before a consonant sound (a apple, an user), by the sound knowledge in the lexicon. */
|
|
92
|
+
export const articleSound = (doc, options) => {
|
|
93
|
+
const sounds = articleSoundsOf(options.lexicon ?? []);
|
|
94
|
+
const findings = doc.sentences.flatMap((sentence) => {
|
|
95
|
+
const tokens = sentence.tokens ?? [];
|
|
96
|
+
return tokens.flatMap((_token, at) => {
|
|
97
|
+
const slip = slipAt(doc.source, tokens, at, sounds);
|
|
98
|
+
return slip === undefined ? [] : [slipFinding(sentence, slip)];
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
return findings.length < options.limit ? [] : findings;
|
|
102
|
+
};
|
|
103
|
+
const ADJECTIVE = "ADJ";
|
|
104
|
+
/** The lexicon's intensifier right before an adjective ("very important"), not before an excepted word ("the very first"). */
|
|
105
|
+
const intensifiedIn = (source, sentence, words) => {
|
|
106
|
+
const tokens = sentence.tokens ?? [];
|
|
107
|
+
return tokens.flatMap((token, at) => {
|
|
108
|
+
const next = tokens[at + 1];
|
|
109
|
+
if (next === undefined || !words.intensifiers.has(token.surface.toLowerCase()) || next.pos !== ADJECTIVE)
|
|
110
|
+
return [];
|
|
111
|
+
if (!adjacent(source, token, next))
|
|
112
|
+
return [];
|
|
113
|
+
return words.exceptions.has(next.surface.toLowerCase()) ? [] : [{ sentence, matched: `${token.surface} ${next.surface}`, offset: token.span.start }];
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
const EXCEPTIONS = "very-exception";
|
|
117
|
+
/** "very" + adjective, dense for the document's length: each one leans on "very" instead of a stronger word. */
|
|
118
|
+
export const intensifiedAdjective = (doc, options) => {
|
|
119
|
+
const words = {
|
|
120
|
+
intensifiers: new Set((options.lexicon ?? []).map((entry) => entry.pattern)),
|
|
121
|
+
exceptions: new Set((doc.lexicons[EXCEPTIONS] ?? []).map((entry) => entry.pattern)),
|
|
122
|
+
};
|
|
123
|
+
return densityFindings(doc, doc.sentences.flatMap((sentence) => intensifiedIn(doc.source, sentence, words)), options.limit);
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=next-word.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-word.js","sourceRoot":"","sources":["../../src/detectors/next-word.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhE,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,SAAS,GAAG,SAAS,CAAC;AAC5B,mGAAmG;AACnG,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEnD,qHAAqH;AACrH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,IAAW,EAAE,KAAY,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAarI,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,KAAa,EAAY,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9I,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAiB,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,gBAAgB,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAChE,iBAAiB,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;IAClE,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;IACxC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;IAChC,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,MAAyB,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAE3H,4GAA4G;AAC5G,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAuB,EAAE;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,uHAAuH;AACvH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,yHAAyH;AACzH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAW,EAAE,CACpE,IAAI,CAAC,MAAM,IAAI,kBAAkB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAElH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAuB,EAAE;IAC/F,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACxG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAsC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAE3E,kGAAkG;AAClG,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,KAAc,EAAU,EAAE;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACnC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACnI,CAAC,CAAC;AAIF,mEAAmE;AACnE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAU,EAAE,MAAwB,EAAW,EAAE;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,MAAwB,EAAE,EAAU,EAAE,MAAqB,EAAoB,EAAE;IAC/G,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9H,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IACjF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;AACzH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAkB,EAAE,IAAU,EAAW,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;IAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;CACzH,CAAC,CAAC;AAEH,2HAA2H;AAC3H,MAAM,CAAC,MAAM,YAAY,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IAChE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,CAAC;AAMxB,8HAA8H;AAC9H,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,QAAkB,EAAE,KAAuB,EAAiB,EAAE;IACnG,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACpH,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACvJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,gHAAgH;AAChH,MAAM,CAAC,MAAM,oBAAoB,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IACxE,MAAM,KAAK,GAAG;QACZ,YAAY,EAAE,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5E,UAAU,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACpF,CAAC;IACF,OAAO,eAAe,CACpB,GAAG,EACH,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAC/E,OAAO,CAAC,KAAK,CACd,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Detector, Sentence } from "../plugin.ts";
|
|
2
|
+
export type NumberKind = "count" | "grouping" | "percent" | "count-small" | "count-large";
|
|
3
|
+
/** One number as written: its kind, the style it is written in, the text, and where it starts in the document. */
|
|
4
|
+
export type NumberMark = {
|
|
5
|
+
readonly kind: NumberKind;
|
|
6
|
+
readonly style: string;
|
|
7
|
+
readonly written: string;
|
|
8
|
+
readonly offset: number;
|
|
9
|
+
};
|
|
10
|
+
/** The language's words for numbers. countWords is in order from one (the position is the value). */
|
|
11
|
+
export type NumberWords = {
|
|
12
|
+
readonly counters: readonly string[];
|
|
13
|
+
readonly kanji: readonly string[];
|
|
14
|
+
readonly percentUnits: readonly string[];
|
|
15
|
+
readonly countWords: readonly string[];
|
|
16
|
+
/** Plural nouns of measure (days, miles) that take figures in every style: a number before one is not a count. */
|
|
17
|
+
readonly figureNouns: readonly string[];
|
|
18
|
+
};
|
|
19
|
+
/** Every number mark in a sentence, less those inside a quotation. */
|
|
20
|
+
export declare const numberMarksIn: (sentence: Sentence, words: NumberWords, language: string, source: string) => NumberMark[];
|
|
21
|
+
/**
|
|
22
|
+
* The marks not in the document's usual style, when they are few enough to be slips: at most limitPercent of the kind.
|
|
23
|
+
* The usual style is the most common one; on a tie, the one the document used first.
|
|
24
|
+
*/
|
|
25
|
+
export declare const minorityStyles: (marks: readonly NumberMark[], limitPercent: number) => {
|
|
26
|
+
readonly odd: NumberMark[];
|
|
27
|
+
readonly usual: NumberMark | undefined;
|
|
28
|
+
};
|
|
29
|
+
/** For each kind of number, the marks written in the document's less common style. */
|
|
30
|
+
export declare const numberStyleConsistency: Detector;
|
|
31
|
+
//# sourceMappingURL=number-style.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-style.d.ts","sourceRoot":"","sources":["../../src/detectors/number-style.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAA0B,QAAQ,EAAe,MAAM,cAAc,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAAC;AAE1F,kHAAkH;AAClH,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElI,qGAAqG;AACrG,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,kHAAkH;IAClH,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,CAAC;AAiJF,sEAAsE;AACtE,eAAO,MAAM,aAAa,GAAI,UAAU,QAAQ,EAAE,OAAO,WAAW,EAAE,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,UAAU,EAUlH,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,UAAU,EAAE,EAAE,cAAc,MAAM,KAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAA;CAQvJ,CAAC;AAyBF,sFAAsF;AACtF,eAAO,MAAM,sBAAsB,EAAE,QAUpC,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// How a document writes its numbers: 3件 or 三件, 1,000 or 1000, 10% or 10% or 10パーセント, three files or 3 files.
|
|
2
|
+
// Each kind is compared within the document and the less common style is reported; neither is called right. Pure; the
|
|
3
|
+
// words (counters, kanji numerals, percent units, number words) come from the language's lexicons.
|
|
4
|
+
import { escapeRegExp } from "../orthography.js";
|
|
5
|
+
import { QUOTATION_MARKS, isWithinAny, quotedSpans } from "../quoted-span.js";
|
|
6
|
+
import { isCitation } from "./kutoten-consistency.js";
|
|
7
|
+
const alternation = (words) => words
|
|
8
|
+
.toSorted((left, right) => right.length - left.length)
|
|
9
|
+
.map(escapeRegExp)
|
|
10
|
+
.join("|");
|
|
11
|
+
const DIGIT_RUN = "[0-90-9]+(?:[,,..][0-90-9]+)*";
|
|
12
|
+
// ───────── counts in Japanese: 3件 or 三件 ─────────
|
|
13
|
+
/**
|
|
14
|
+
* A number right before a counter. Not after a kanji, a kana prolonged mark or 第 (統一, 唯一, 第三回 are words or ordinals),
|
|
15
|
+
* nor after a letter or digit (part of a code).
|
|
16
|
+
*/
|
|
17
|
+
const countPattern = (words) => {
|
|
18
|
+
if (words.counters.length === 0 || words.kanji.length === 0)
|
|
19
|
+
return undefined;
|
|
20
|
+
const kanji = `[${words.kanji.map(escapeRegExp).join("")}]+`;
|
|
21
|
+
return new RegExp(`(?<![\\p{Script=Han}A-Za-z0-90-9..])(?:(${DIGIT_RUN}[万億]?)|(${kanji}))\\s?(?:${alternation(words.counters)})`, "gu");
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* 一 alone is the idiom (一つ, 一人, 一回) a document writes in kanji whatever its style for counts. A run of magnitudes only
|
|
25
|
+
* (万人, 百人一首, 千人) is as often a word as a number.
|
|
26
|
+
*/
|
|
27
|
+
const MAGNITUDES = /^[一百千万億]+$/u;
|
|
28
|
+
const isIdiomNumeral = (numeral) => MAGNITUDES.test(numeral);
|
|
29
|
+
const countMarks = (text, base, words) => {
|
|
30
|
+
const pattern = countPattern(words);
|
|
31
|
+
if (pattern === undefined)
|
|
32
|
+
return [];
|
|
33
|
+
return [...text.matchAll(pattern)].flatMap((match) => {
|
|
34
|
+
const [written, digits, kanji] = match;
|
|
35
|
+
if (kanji !== undefined && isIdiomNumeral(kanji))
|
|
36
|
+
return [];
|
|
37
|
+
return [{ kind: "count", style: digits === undefined ? "kanji" : "digits", written, offset: base + match.index }];
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
// ───────── digit grouping: 1,000 or 1000 ─────────
|
|
41
|
+
const GROUPED = /^[0-90-9]{1,3}(?:[,,][0-90-9]{3})+$/u;
|
|
42
|
+
const DIGITS_AND_COMMAS = /[0-90-9]+(?:[,,][0-90-9]+)*/gu;
|
|
43
|
+
const PLAIN_BIG = /^[1-91-9][0-90-9]{3,}$/u;
|
|
44
|
+
/** Next to one of these, a run of digits is part of a code, a version, a date, a time, a phone number or a decimal. */
|
|
45
|
+
const NOT_BEFORE = /[\p{L}\p{N}.,,.##/::\--_]/u;
|
|
46
|
+
const NOT_AFTER = /[\p{N}.,,.::\--/]/u;
|
|
47
|
+
/** Each number of four digits or more standing alone, grouped (1,000) or not (1000). */
|
|
48
|
+
const bigNumbers = (text) => [...text.matchAll(DIGITS_AND_COMMAS)].flatMap((match) => {
|
|
49
|
+
const written = match[0];
|
|
50
|
+
const standsAlone = !NOT_BEFORE.test(text.charAt(match.index - 1)) && !NOT_AFTER.test(text.charAt(match.index + written.length));
|
|
51
|
+
return standsAlone && (GROUPED.test(written) || PLAIN_BIG.test(written)) ? [{ written, index: match.index }] : [];
|
|
52
|
+
});
|
|
53
|
+
const CURRENCY_BEFORE = /[$¥¥€£]\s?$/u;
|
|
54
|
+
/** A capitalised word or abbreviation right before (H.R. 5376, Form 1040, No. 12345): the number is a label, never grouped. */
|
|
55
|
+
const isLabelBefore = (before) => /\s$/u.test(before) && /^\p{Lu}/u.test(before.trimEnd().split(/\s/u).at(-1) ?? "");
|
|
56
|
+
/** A four-digit number in this range is most often a year (2019 annual report), which is never grouped. */
|
|
57
|
+
const YEAR_LIKE = { from: 1000, to: 2199 };
|
|
58
|
+
const FOUR_DIGITS = 4;
|
|
59
|
+
const isYearLike = (digits) => {
|
|
60
|
+
const value = Number(digits.normalize("NFKC"));
|
|
61
|
+
return digits.length === FOUR_DIGITS && value >= YEAR_LIKE.from && value <= YEAR_LIKE.to;
|
|
62
|
+
};
|
|
63
|
+
/** What follows a quantity: a counter or 円 / 万 (Japanese), or a word in lower case (10000 users). */
|
|
64
|
+
/** A counter or 円 / 万 / 億 right after (with at most one space): the number counts something in Japanese. */
|
|
65
|
+
const countedAfter = (after, words) => {
|
|
66
|
+
const next = after.replace(/^\s/u, "");
|
|
67
|
+
return /^[万億円]/u.test(next) || words.counters.some((counter) => next.startsWith(counter));
|
|
68
|
+
};
|
|
69
|
+
/** What follows a quantity: a Japanese counter, or a word in lower case (10000 users). */
|
|
70
|
+
const quantityAfter = (after, words) => /^\s?[a-z]/u.test(after) || countedAfter(after, words);
|
|
71
|
+
/** How far back to look for a currency sign or a label word. The sentence may start right after one (H.R. ends a sentence). */
|
|
72
|
+
const BEFORE_REACH = 16;
|
|
73
|
+
const groupingMarks = (text, base, words, source) => bigNumbers(text).flatMap(({ written, index }) => {
|
|
74
|
+
const grouped = GROUPED.test(written);
|
|
75
|
+
const before = source.slice(Math.max(0, base + index - BEFORE_REACH), base + index);
|
|
76
|
+
const after = text.slice(index + written.length);
|
|
77
|
+
const currency = CURRENCY_BEFORE.test(before);
|
|
78
|
+
if (!currency && !quantityAfter(after, words))
|
|
79
|
+
return [];
|
|
80
|
+
if (!grouped && isLabelBefore(before))
|
|
81
|
+
return [];
|
|
82
|
+
if (!grouped && !currency && isYearLike(written) && !countedAfter(after, words))
|
|
83
|
+
return [];
|
|
84
|
+
return [{ kind: "grouping", style: grouped ? "grouped" : "plain", written, offset: base + index }];
|
|
85
|
+
});
|
|
86
|
+
// ───────── percent: 10% or 10% or 10パーセント, 10% or 10 percent ─────────
|
|
87
|
+
const percentMarks = (text, base, words) => {
|
|
88
|
+
if (words.percentUnits.length === 0)
|
|
89
|
+
return [];
|
|
90
|
+
const pattern = new RegExp(`(?<![\\p{L}\\p{N}..,,])(${DIGIT_RUN})\\s?(${alternation(words.percentUnits)})(?![A-Za-z])`, "gu");
|
|
91
|
+
return [...text.matchAll(pattern)].map((match) => ({
|
|
92
|
+
kind: "percent",
|
|
93
|
+
style: (match[2] ?? "").toLowerCase(),
|
|
94
|
+
written: match[0],
|
|
95
|
+
offset: base + match.index,
|
|
96
|
+
}));
|
|
97
|
+
};
|
|
98
|
+
// ───────── counts in English: three files or 3 files ─────────
|
|
99
|
+
const SMALL_FROM = 2;
|
|
100
|
+
const LARGE_FROM = 10;
|
|
101
|
+
const valueOf = (surface, words) => {
|
|
102
|
+
if (/^\d+$/u.test(surface))
|
|
103
|
+
return Number(surface);
|
|
104
|
+
const at = words.indexOf(surface.toLowerCase());
|
|
105
|
+
return at === -1 ? undefined : at + 1;
|
|
106
|
+
};
|
|
107
|
+
const isCountedNoun = (token, figureNouns) => token?.pos === "NOUN" && token.features?.["Number"] === "Plur" && !figureNouns.includes(token.surface.toLowerCase());
|
|
108
|
+
/**
|
|
109
|
+
* A number before a plural noun (three files, 3 files), from two to the last number word the language lists. One is a
|
|
110
|
+
* pronoun as often as a count. A number word that opens the sentence is spelt out by every style, so it is not counted.
|
|
111
|
+
*/
|
|
112
|
+
const englishCountMarks = (sentence, words) => {
|
|
113
|
+
const tokens = sentence.tokens ?? [];
|
|
114
|
+
return tokens.flatMap((token, index) => {
|
|
115
|
+
const value = valueOf(token.surface, words.countWords);
|
|
116
|
+
if (value === undefined || value < SMALL_FROM || value > words.countWords.length || index === 0 || !isCountedNoun(tokens[index + 1], words.figureNouns))
|
|
117
|
+
return [];
|
|
118
|
+
const style = /^\d+$/u.test(token.surface) ? "digits" : "words";
|
|
119
|
+
return [{ kind: value < LARGE_FROM ? "count-small" : "count-large", style, written: token.surface, offset: sentence.span.start + token.span.start }];
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
// ───────── the document ─────────
|
|
123
|
+
/** Every number mark in a sentence, less those inside a quotation. */
|
|
124
|
+
export const numberMarksIn = (sentence, words, language, source) => {
|
|
125
|
+
const base = sentence.span.start;
|
|
126
|
+
const marks = [
|
|
127
|
+
...countMarks(sentence.text, base, words),
|
|
128
|
+
...groupingMarks(sentence.text, base, words, source),
|
|
129
|
+
...percentMarks(sentence.text, base, words),
|
|
130
|
+
...(language === "ja" ? [] : englishCountMarks(sentence, words)),
|
|
131
|
+
];
|
|
132
|
+
const quoted = quotedSpans(sentence.text, QUOTATION_MARKS);
|
|
133
|
+
return marks.filter((mark) => !isWithinAny(quoted, { start: mark.offset - base, end: mark.offset - base + mark.written.length }));
|
|
134
|
+
};
|
|
135
|
+
const PERCENT = 100;
|
|
136
|
+
/**
|
|
137
|
+
* The marks not in the document's usual style, when they are few enough to be slips: at most limitPercent of the kind.
|
|
138
|
+
* The usual style is the most common one; on a tie, the one the document used first.
|
|
139
|
+
*/
|
|
140
|
+
export const minorityStyles = (marks, limitPercent) => {
|
|
141
|
+
const counts = new Map();
|
|
142
|
+
marks.forEach((mark) => counts.set(mark.style, (counts.get(mark.style) ?? 0) + 1));
|
|
143
|
+
if (counts.size < 2)
|
|
144
|
+
return { odd: [], usual: undefined };
|
|
145
|
+
const most = Math.max(...counts.values());
|
|
146
|
+
const usual = marks.find((mark) => counts.get(mark.style) === most);
|
|
147
|
+
const odd = marks.filter((mark) => mark.style !== usual?.style);
|
|
148
|
+
return odd.length * PERCENT > limitPercent * marks.length ? { odd: [], usual } : { odd, usual };
|
|
149
|
+
};
|
|
150
|
+
const wordsOf = (doc) => {
|
|
151
|
+
const patterns = (id) => (doc.lexicons[id] ?? []).map((entry) => entry.pattern);
|
|
152
|
+
return {
|
|
153
|
+
counters: patterns("numeral-counter"),
|
|
154
|
+
kanji: patterns("numeral-kanji"),
|
|
155
|
+
percentUnits: patterns("percent-unit"),
|
|
156
|
+
countWords: patterns("count-number"),
|
|
157
|
+
figureNouns: patterns("figure-noun"),
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
const KINDS = ["count", "grouping", "percent", "count-small", "count-large"];
|
|
161
|
+
const findingOf = (mark, usual, count, of, limit) => ({
|
|
162
|
+
rule: "number-style-consistency",
|
|
163
|
+
severity: "info",
|
|
164
|
+
line: 0,
|
|
165
|
+
column: 0,
|
|
166
|
+
quote: mark.written,
|
|
167
|
+
values: { written: mark.written, usual: usual.written, count, of, limit, offset: mark.offset },
|
|
168
|
+
variant: mark.kind,
|
|
169
|
+
});
|
|
170
|
+
/** For each kind of number, the marks written in the document's less common style. */
|
|
171
|
+
export const numberStyleConsistency = (doc, options) => {
|
|
172
|
+
const words = wordsOf(doc);
|
|
173
|
+
const marks = doc.sentences
|
|
174
|
+
.filter((sentence) => sentence.embeddedLanguage === undefined && !isCitation(sentence, doc.source))
|
|
175
|
+
.flatMap((sentence) => numberMarksIn(sentence, words, doc.language, doc.source));
|
|
176
|
+
return KINDS.flatMap((kind) => {
|
|
177
|
+
const ofKind = marks.filter((mark) => mark.kind === kind);
|
|
178
|
+
const { odd, usual } = minorityStyles(ofKind, options.limit);
|
|
179
|
+
return usual === undefined ? [] : odd.map((mark) => findingOf(mark, usual, odd.length, ofKind.length, options.limit));
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=number-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-style.js","sourceRoot":"","sources":["../../src/detectors/number-style.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Detector } from "../plugin.ts";
|
|
2
|
+
/** One value of a kind: where its number starts, as written, and its unit ("" when bare). */
|
|
3
|
+
export type Measured = {
|
|
4
|
+
readonly kind: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly offset: number;
|
|
7
|
+
readonly written: string;
|
|
8
|
+
readonly unit: string;
|
|
9
|
+
};
|
|
10
|
+
export type UnitGap = {
|
|
11
|
+
readonly value: Measured;
|
|
12
|
+
readonly unit: string;
|
|
13
|
+
};
|
|
14
|
+
/** The lexicons that name units. */
|
|
15
|
+
export declare const UNIT_LEXICONS: readonly ["value-unit", "measure-unit", "percent-unit", "currency-code"];
|
|
16
|
+
/**
|
|
17
|
+
* The unit of a lone number, signed or not, with a currency mark before it or a unit after it (¥300, 1,200円, -3kg, 45%,
|
|
18
|
+
* 3 kg): the mark or the unit, "" when the number is bare, undefined when the text is not one number. Read after NFKC, so
|
|
19
|
+
* full-width digits count. A word after the number is a unit only if a unit lexicon lists it: "3 fixed" is not a value.
|
|
20
|
+
*/
|
|
21
|
+
export declare const unitOf: (text: string, units: ReadonlySet<string>) => string | undefined;
|
|
22
|
+
type LabelLine = {
|
|
23
|
+
readonly label: string;
|
|
24
|
+
readonly value: string;
|
|
25
|
+
readonly at: number;
|
|
26
|
+
};
|
|
27
|
+
/** A line that names a field and gives its value (「予算:300万円」 "**Budget:** $300"), list marker and bold allowed. */
|
|
28
|
+
export declare const labelLine: (line: string, start: number) => LabelLine | undefined;
|
|
29
|
+
/** Every number a table cell or label line gives, by kind. */
|
|
30
|
+
export declare const measuredValues: (source: string, prose: string, units: ReadonlySet<string>) => Measured[];
|
|
31
|
+
/** Bare numbers among values of one kind that otherwise all carry one unit, in document order. */
|
|
32
|
+
export declare const unitGaps: (values: readonly Measured[]) => UnitGap[];
|
|
33
|
+
export declare const numberWithoutUnit: Detector;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=number-unit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-unit.d.ts","sourceRoot":"","sources":["../../src/detectors/number-unit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AAMrE,6FAA6F;AAC7F,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAElJ,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,oCAAoC;AACpC,eAAO,MAAM,aAAa,0EAA2E,CAAC;AAmBtG;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,MAAM,MAAM,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,MAAM,GAAG,SAS1E,CAAC;AAQF,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF,mHAAmH;AACnH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,SAAS,GAAG,SAUnE,CAAC;AA2CF,8DAA8D;AAC9D,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,QAAQ,EAGlG,CAAC;AAYF,kGAAkG;AAClG,eAAO,MAAM,QAAQ,GAAI,QAAQ,SAAS,QAAQ,EAAE,KAAG,OAAO,EAG7D,CAAC;AAKF,eAAO,MAAM,iBAAiB,EAAE,QAQ3B,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { readMarkdown } from "../markdown-read.js";
|
|
2
|
+
import { spanOf } from "../markdown-node.js";
|
|
3
|
+
import { eachPreOrder } from "../tree-walk.js";
|
|
4
|
+
import { quoteAt } from "./structure-tree.js";
|
|
5
|
+
/** The lexicons that name units. */
|
|
6
|
+
export const UNIT_LEXICONS = ["value-unit", "measure-unit", "percent-unit", "currency-code"];
|
|
7
|
+
const CURRENCY = new Set(["$", "¥", "€", "£"]);
|
|
8
|
+
const SIGN = new Set(["-", "−"]);
|
|
9
|
+
const MULTIPLIER = new Set(["万", "億", "千"]);
|
|
10
|
+
const NUMBER = /^\d[\d,]*(?:\.\d+)?/u;
|
|
11
|
+
/** What may follow a number as its unit: a short run with no digit, space or separator ("1.2.3" and "2026-10-14" are not values). */
|
|
12
|
+
const UNIT_SHAPE = /^[^\d\s.,:|()[\]-]{1,8}$/u;
|
|
13
|
+
/** A label names something in words: 10:30 is a time, not the label "10". */
|
|
14
|
+
const HAS_LETTER = /\p{L}/u;
|
|
15
|
+
const LIST_MARKER = /^\s*(?:[-*+]|\d+[.)])\s+/u;
|
|
16
|
+
const COLON = /[::]/u;
|
|
17
|
+
const MAX_LABEL = 20;
|
|
18
|
+
const isUnit = (word, units) => units.has(word) || units.has(word.toLowerCase());
|
|
19
|
+
const withoutFirst = (text, marks) => (marks.has(text.charAt(0)) ? text.slice(1).trimStart() : text);
|
|
20
|
+
/**
|
|
21
|
+
* The unit of a lone number, signed or not, with a currency mark before it or a unit after it (¥300, 1,200円, -3kg, 45%,
|
|
22
|
+
* 3 kg): the mark or the unit, "" when the number is bare, undefined when the text is not one number. Read after NFKC, so
|
|
23
|
+
* full-width digits count. A word after the number is a unit only if a unit lexicon lists it: "3 fixed" is not a value.
|
|
24
|
+
*/
|
|
25
|
+
export const unitOf = (text, units) => {
|
|
26
|
+
const value = text.normalize("NFKC").trim();
|
|
27
|
+
const currency = CURRENCY.has(value.charAt(0)) ? value.charAt(0) : "";
|
|
28
|
+
const unsigned = withoutFirst(value.slice(currency.length).trimStart(), SIGN);
|
|
29
|
+
const number = NUMBER.exec(unsigned)?.[0];
|
|
30
|
+
if (number === undefined)
|
|
31
|
+
return undefined;
|
|
32
|
+
const suffix = withoutFirst(unsigned.slice(number.length).trimStart(), MULTIPLIER);
|
|
33
|
+
if (suffix === "")
|
|
34
|
+
return currency;
|
|
35
|
+
return currency === "" && UNIT_SHAPE.test(suffix) && isUnit(suffix, units) ? suffix : undefined;
|
|
36
|
+
};
|
|
37
|
+
const measured = (kind, name, text, offset, units) => {
|
|
38
|
+
const written = text.trim();
|
|
39
|
+
const unit = unitOf(written, units);
|
|
40
|
+
return unit === undefined ? [] : [{ kind, name, offset: offset + Math.max(0, text.indexOf(written)), written, unit }];
|
|
41
|
+
};
|
|
42
|
+
/** A line that names a field and gives its value (「予算:300万円」 "**Budget:** $300"), list marker and bold allowed. */
|
|
43
|
+
export const labelLine = (line, start) => {
|
|
44
|
+
const marker = LIST_MARKER.exec(line)?.[0].length ?? 0;
|
|
45
|
+
const body = line.slice(marker);
|
|
46
|
+
const colon = body.search(COLON);
|
|
47
|
+
if (colon <= 0)
|
|
48
|
+
return undefined;
|
|
49
|
+
const label = body.slice(0, colon).replaceAll("**", "").trim();
|
|
50
|
+
const rest = body.slice(colon + 1).replace(/^\*\*/u, "");
|
|
51
|
+
const value = rest.trim();
|
|
52
|
+
if (label.length > MAX_LABEL || label.includes("|") || !HAS_LETTER.test(label) || value === "")
|
|
53
|
+
return undefined;
|
|
54
|
+
return { label, value, at: start + marker + (body.length - rest.length) + rest.indexOf(value) };
|
|
55
|
+
};
|
|
56
|
+
const cellText = (source, cell) => {
|
|
57
|
+
const span = cell === undefined ? undefined : spanOf(cell);
|
|
58
|
+
if (span === undefined)
|
|
59
|
+
return undefined;
|
|
60
|
+
const raw = source.slice(span.start, span.end);
|
|
61
|
+
const lead = raw.search(/[^|\s]/u);
|
|
62
|
+
return lead === -1 ? undefined : { text: raw.slice(lead).replace(/\|\s*$/u, ""), start: span.start + lead };
|
|
63
|
+
};
|
|
64
|
+
const tableValues = (source, table, index, units) => {
|
|
65
|
+
const [header, ...body] = table.children ?? [];
|
|
66
|
+
return (header?.children ?? []).flatMap((headCell, column) => {
|
|
67
|
+
const name = cellText(source, headCell)?.text.trim() ?? "";
|
|
68
|
+
return body.flatMap((row) => {
|
|
69
|
+
const cell = cellText(source, row.children?.[column]);
|
|
70
|
+
return cell === undefined || name === "" ? [] : measured(`table ${String(index)}: ${name}`, name, cell.text, cell.start, units);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const tablesOf = (source) => {
|
|
75
|
+
const found = [];
|
|
76
|
+
eachPreOrder(readMarkdown(source).root, (node) => {
|
|
77
|
+
if (node.type === "table")
|
|
78
|
+
found.push(node);
|
|
79
|
+
});
|
|
80
|
+
return found;
|
|
81
|
+
};
|
|
82
|
+
/** The lines of a text with where each starts. */
|
|
83
|
+
const linesWithStarts = (text) => text.split("\n").reduce((lines, line) => {
|
|
84
|
+
const last = lines.at(-1);
|
|
85
|
+
return [...lines, { line, start: last === undefined ? 0 : last.start + last.line.length + 1 }];
|
|
86
|
+
}, []);
|
|
87
|
+
/** The label lines of the prose (code masked), keyed by the label as written, so one label is one kind across the document. */
|
|
88
|
+
const labelValues = (prose, units) => linesWithStarts(prose).flatMap(({ line, start }) => {
|
|
89
|
+
const found = labelLine(line, start);
|
|
90
|
+
return found === undefined ? [] : measured(`label: ${found.label}`, found.label, found.value, found.at, units);
|
|
91
|
+
});
|
|
92
|
+
/** Every number a table cell or label line gives, by kind. */
|
|
93
|
+
export const measuredValues = (source, prose, units) => [
|
|
94
|
+
...tablesOf(source).flatMap((table, index) => tableValues(source, table, index, units)),
|
|
95
|
+
...labelValues(prose, units),
|
|
96
|
+
];
|
|
97
|
+
/** Bare values must be fewer than those with the unit, so at least two carry it before a bare one reads as missing it. */
|
|
98
|
+
const gapsOfKind = (values) => {
|
|
99
|
+
const withUnit = values.filter((value) => value.unit !== "");
|
|
100
|
+
const bare = values.filter((value) => value.unit === "");
|
|
101
|
+
const units = new Set(withUnit.map((value) => value.unit));
|
|
102
|
+
const unit = [...units][0];
|
|
103
|
+
if (unit === undefined || units.size !== 1 || bare.length >= withUnit.length)
|
|
104
|
+
return [];
|
|
105
|
+
return bare.map((value) => ({ value, unit }));
|
|
106
|
+
};
|
|
107
|
+
/** Bare numbers among values of one kind that otherwise all carry one unit, in document order. */
|
|
108
|
+
export const unitGaps = (values) => {
|
|
109
|
+
const kinds = values.reduce((groups, value) => groups.set(value.kind, [...(groups.get(value.kind) ?? []), value]), new Map());
|
|
110
|
+
return [...kinds.values()].flatMap(gapsOfKind).toSorted((left, right) => left.value.offset - right.value.offset);
|
|
111
|
+
};
|
|
112
|
+
const unitsOf = (doc) => new Set(UNIT_LEXICONS.flatMap((name) => (doc.lexicons[name] ?? []).flatMap((entry) => [entry.pattern, entry.pattern.toLowerCase()])));
|
|
113
|
+
export const numberWithoutUnit = (doc) => unitGaps(measuredValues(doc.source, doc.prose ?? doc.source, unitsOf(doc))).map((gap) => ({
|
|
114
|
+
rule: "number-without-unit",
|
|
115
|
+
severity: "warning",
|
|
116
|
+
line: 0,
|
|
117
|
+
column: 0,
|
|
118
|
+
quote: quoteAt(doc.source, gap.value.offset),
|
|
119
|
+
values: { value: gap.value.written, name: gap.value.name, unit: gap.unit, offset: gap.value.offset },
|
|
120
|
+
}));
|
|
121
|
+
//# sourceMappingURL=number-unit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-unit.js","sourceRoot":"","sources":["../../src/detectors/number-unit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Detector } from "../plugin.ts";
|
|
2
|
+
/**
|
|
3
|
+
* One word written two ways in one document (出来る and できる, 引っ越し and 引越し, ウィンドウ and ウインドウ, e-mail and email),
|
|
4
|
+
* found without a list of words: the document's own words are grouped by reading or by an evened-out spelling, and the way the
|
|
5
|
+
* document writes less is pointed at. No way is called right; limit is the largest share, in percent, the minority may have.
|
|
6
|
+
*/
|
|
7
|
+
export declare const orthographicVariant: Detector;
|
|
8
|
+
//# sourceMappingURL=orthographic-variant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orthographic-variant.d.ts","sourceRoot":"","sources":["../../src/detectors/orthographic-variant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA2C,MAAM,cAAc,CAAC;AAwItF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAUjC,CAAC"}
|