chaffjs 0.18.0 → 0.19.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 +52 -56
- package/bin/chaff.js +17 -2
- package/dist/acronym-expansions.d.ts +26 -0
- package/dist/acronym-expansions.d.ts.map +1 -0
- package/dist/acronym-expansions.js +88 -0
- package/dist/acronym-expansions.js.map +1 -0
- package/dist/announced-count.d.ts.map +1 -1
- package/dist/announced-count.js +44 -10
- package/dist/announced-count.js.map +1 -1
- package/dist/announced-list.d.ts +30 -0
- package/dist/announced-list.d.ts.map +1 -0
- package/dist/announced-list.js +95 -0
- package/dist/announced-list.js.map +1 -0
- package/dist/api.d.ts +168 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +10 -0
- package/dist/api.js.map +1 -0
- package/dist/cli-text.d.ts +0 -1
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +6 -14
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +58 -62
- package/dist/cli.js.map +1 -1
- package/dist/closing-paragraph.d.ts +7 -0
- package/dist/closing-paragraph.d.ts.map +1 -0
- package/dist/closing-paragraph.js +22 -0
- package/dist/closing-paragraph.js.map +1 -0
- package/dist/commands/compare.d.ts +8 -1
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +9 -17
- package/dist/commands/compare.js.map +1 -1
- package/dist/commands/document-commands.d.ts +9 -0
- package/dist/commands/document-commands.d.ts.map +1 -0
- package/dist/commands/document-commands.js +17 -0
- package/dist/commands/document-commands.js.map +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +3 -2
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/facts.d.ts +8 -0
- package/dist/commands/facts.d.ts.map +1 -0
- package/dist/commands/facts.js +30 -0
- package/dist/commands/facts.js.map +1 -0
- package/dist/commands/feedback.d.ts +10 -0
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +25 -1
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/fix-plan.d.ts +13 -0
- package/dist/commands/fix-plan.d.ts.map +1 -0
- package/dist/commands/fix-plan.js +44 -0
- package/dist/commands/fix-plan.js.map +1 -0
- package/dist/commands/outline.d.ts +8 -0
- package/dist/commands/outline.d.ts.map +1 -0
- package/dist/commands/outline.js +43 -0
- package/dist/commands/outline.js.map +1 -0
- package/dist/commands/read-document.d.ts +14 -0
- package/dist/commands/read-document.d.ts.map +1 -0
- package/dist/commands/read-document.js +21 -0
- package/dist/commands/read-document.js.map +1 -0
- package/dist/commands/suppressions.d.ts +7 -0
- package/dist/commands/suppressions.d.ts.map +1 -0
- package/dist/commands/suppressions.js +9 -0
- package/dist/commands/suppressions.js.map +1 -0
- package/dist/commands/test.js +1 -1
- package/dist/commands/test.js.map +1 -1
- package/dist/compare/clock-time.d.ts.map +1 -1
- package/dist/compare/clock-time.js +5 -2
- package/dist/compare/clock-time.js.map +1 -1
- package/dist/compare/distinct.d.ts +9 -0
- package/dist/compare/distinct.d.ts.map +1 -0
- package/dist/compare/distinct.js +12 -0
- package/dist/compare/distinct.js.map +1 -0
- package/dist/compare/extract.d.ts.map +1 -1
- package/dist/compare/extract.js +7 -5
- package/dist/compare/extract.js.map +1 -1
- package/dist/compare/fact-key.d.ts +17 -0
- package/dist/compare/fact-key.d.ts.map +1 -0
- package/dist/compare/fact-key.js +25 -0
- package/dist/compare/fact-key.js.map +1 -0
- package/dist/compare/fact-text.d.ts +5 -0
- package/dist/compare/fact-text.d.ts.map +1 -1
- package/dist/compare/fact-text.js +16 -2
- package/dist/compare/fact-text.js.map +1 -1
- package/dist/compare/facts-render.d.ts +17 -0
- package/dist/compare/facts-render.d.ts.map +1 -0
- package/dist/compare/facts-render.js +43 -0
- package/dist/compare/facts-render.js.map +1 -0
- package/dist/compare/facts-text.d.ts +15 -0
- package/dist/compare/facts-text.d.ts.map +1 -0
- package/dist/compare/facts-text.js +27 -0
- package/dist/compare/facts-text.js.map +1 -0
- package/dist/compare/match.d.ts +1 -0
- package/dist/compare/match.d.ts.map +1 -1
- package/dist/compare/match.js +1 -1
- package/dist/compare/match.js.map +1 -1
- package/dist/compare/outcome.d.ts +4 -1
- package/dist/compare/outcome.d.ts.map +1 -1
- package/dist/compare/outcome.js +10 -4
- package/dist/compare/outcome.js.map +1 -1
- package/dist/compare/proper-nouns.d.ts +3 -3
- package/dist/compare/proper-nouns.d.ts.map +1 -1
- package/dist/compare/proper-nouns.js +2 -3
- package/dist/compare/proper-nouns.js.map +1 -1
- package/dist/compare/render.d.ts +4 -0
- package/dist/compare/render.d.ts.map +1 -1
- package/dist/compare/render.js +2 -2
- package/dist/compare/render.js.map +1 -1
- package/dist/compare/text-atoms.d.ts +5 -2
- package/dist/compare/text-atoms.d.ts.map +1 -1
- package/dist/compare/text-atoms.js +7 -5
- package/dist/compare/text-atoms.js.map +1 -1
- package/dist/compare/text.d.ts.map +1 -1
- package/dist/compare/text.js +2 -2
- package/dist/compare/text.js.map +1 -1
- package/dist/config/load.d.ts +8 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +1 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/option-problems.d.ts +3 -2
- package/dist/config/option-problems.d.ts.map +1 -1
- package/dist/config/option-problems.js +4 -3
- package/dist/config/option-problems.js.map +1 -1
- package/dist/config/style.d.ts +5 -0
- package/dist/config/style.d.ts.map +1 -1
- package/dist/config/style.js +13 -1
- package/dist/config/style.js.map +1 -1
- package/dist/custom/load.d.ts +6 -3
- package/dist/custom/load.d.ts.map +1 -1
- package/dist/custom/load.js +10 -2
- package/dist/custom/load.js.map +1 -1
- package/dist/custom/module-path.d.ts +11 -0
- package/dist/custom/module-path.d.ts.map +1 -0
- package/dist/custom/module-path.js +15 -0
- package/dist/custom/module-path.js.map +1 -0
- package/dist/custom/parse.d.ts +17 -3
- package/dist/custom/parse.d.ts.map +1 -1
- package/dist/custom/parse.js +57 -14
- package/dist/custom/parse.js.map +1 -1
- package/dist/custom/problems.d.ts +4 -1
- package/dist/custom/problems.d.ts.map +1 -1
- package/dist/custom/problems.js +56 -39
- package/dist/custom/problems.js.map +1 -1
- package/dist/detect-language.js +1 -1
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +9 -3
- package/dist/detect.js.map +1 -1
- package/dist/detectors/ai-phrasing.d.ts +4 -1
- package/dist/detectors/ai-phrasing.d.ts.map +1 -1
- package/dist/detectors/ai-phrasing.js +6 -2
- package/dist/detectors/ai-phrasing.js.map +1 -1
- package/dist/detectors/bold-label.d.ts +10 -0
- package/dist/detectors/bold-label.d.ts.map +1 -0
- package/dist/detectors/bold-label.js +44 -0
- package/dist/detectors/bold-label.js.map +1 -0
- package/dist/detectors/dangling-figure.d.ts +5 -2
- package/dist/detectors/dangling-figure.d.ts.map +1 -1
- package/dist/detectors/dangling-figure.js +5 -3
- package/dist/detectors/dangling-figure.js.map +1 -1
- package/dist/detectors/definition-use.d.ts +8 -0
- package/dist/detectors/definition-use.d.ts.map +1 -0
- package/dist/detectors/definition-use.js +32 -0
- package/dist/detectors/definition-use.js.map +1 -0
- package/dist/detectors/doubled-punctuation.d.ts.map +1 -1
- package/dist/detectors/doubled-punctuation.js +4 -2
- package/dist/detectors/doubled-punctuation.js.map +1 -1
- package/dist/detectors/duplicate-heading.d.ts +14 -0
- package/dist/detectors/duplicate-heading.d.ts.map +1 -0
- package/dist/detectors/duplicate-heading.js +39 -0
- package/dist/detectors/duplicate-heading.js.map +1 -0
- package/dist/detectors/empty-section.d.ts +8 -0
- package/dist/detectors/empty-section.d.ts.map +1 -0
- package/dist/detectors/empty-section.js +16 -0
- package/dist/detectors/empty-section.js.map +1 -0
- package/dist/detectors/fullwidth-alnum.d.ts +24 -0
- package/dist/detectors/fullwidth-alnum.d.ts.map +1 -0
- package/dist/detectors/fullwidth-alnum.js +88 -0
- package/dist/detectors/fullwidth-alnum.js.map +1 -0
- package/dist/detectors/hankaku-kana.d.ts +9 -0
- package/dist/detectors/hankaku-kana.d.ts.map +1 -0
- package/dist/detectors/hankaku-kana.js +27 -0
- package/dist/detectors/hankaku-kana.js.map +1 -0
- package/dist/detectors/heading-code-words.js +2 -2
- package/dist/detectors/heading-code-words.js.map +1 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +36 -0
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/invisible-character.d.ts +20 -0
- package/dist/detectors/invisible-character.d.ts.map +1 -0
- package/dist/detectors/invisible-character.js +143 -0
- package/dist/detectors/invisible-character.js.map +1 -0
- package/dist/detectors/kutoten-consistency.js +2 -2
- package/dist/detectors/kutoten-consistency.js.map +1 -1
- package/dist/detectors/lexicon-match.d.ts +10 -1
- package/dist/detectors/lexicon-match.d.ts.map +1 -1
- package/dist/detectors/lexicon-match.js +26 -1
- package/dist/detectors/lexicon-match.js.map +1 -1
- package/dist/detectors/lexicon.d.ts +6 -1
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +31 -13
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/list-sentence.d.ts +3 -1
- package/dist/detectors/list-sentence.d.ts.map +1 -1
- package/dist/detectors/list-sentence.js +26 -1
- package/dist/detectors/list-sentence.js.map +1 -1
- package/dist/detectors/long-vowel.d.ts.map +1 -1
- package/dist/detectors/long-vowel.js +18 -4
- package/dist/detectors/long-vowel.js.map +1 -1
- package/dist/detectors/markup-finding.d.ts +3 -1
- package/dist/detectors/markup-finding.d.ts.map +1 -1
- package/dist/detectors/markup-finding.js +10 -0
- package/dist/detectors/markup-finding.js.map +1 -1
- package/dist/detectors/modal-conflict.d.ts +4 -0
- package/dist/detectors/modal-conflict.d.ts.map +1 -0
- package/dist/detectors/modal-conflict.js +22 -0
- package/dist/detectors/modal-conflict.js.map +1 -0
- package/dist/detectors/name-variant.d.ts +4 -0
- package/dist/detectors/name-variant.d.ts.map +1 -0
- package/dist/detectors/name-variant.js +13 -0
- package/dist/detectors/name-variant.js.map +1 -0
- package/dist/detectors/nominalization.d.ts +11 -0
- package/dist/detectors/nominalization.d.ts.map +1 -0
- package/dist/detectors/nominalization.js +56 -0
- package/dist/detectors/nominalization.js.map +1 -0
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +59 -28
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/outside-announced-list.d.ts +4 -0
- package/dist/detectors/outside-announced-list.d.ts.map +1 -0
- package/dist/detectors/outside-announced-list.js +24 -0
- package/dist/detectors/outside-announced-list.js.map +1 -0
- package/dist/detectors/oxford-comma.d.ts.map +1 -1
- package/dist/detectors/oxford-comma.js +1 -0
- package/dist/detectors/oxford-comma.js.map +1 -1
- package/dist/detectors/phrase-match.d.ts +4 -1
- package/dist/detectors/phrase-match.d.ts.map +1 -1
- package/dist/detectors/phrase-match.js +26 -7
- package/dist/detectors/phrase-match.js.map +1 -1
- package/dist/detectors/ra-nuki.d.ts +9 -0
- package/dist/detectors/ra-nuki.d.ts.map +1 -0
- package/dist/detectors/ra-nuki.js +30 -0
- package/dist/detectors/ra-nuki.js.map +1 -0
- package/dist/detectors/requirement-modal.d.ts +5 -0
- package/dist/detectors/requirement-modal.d.ts.map +1 -0
- package/dist/detectors/requirement-modal.js +54 -0
- package/dist/detectors/requirement-modal.js.map +1 -0
- package/dist/detectors/requirement-smell.d.ts +4 -0
- package/dist/detectors/requirement-smell.d.ts.map +1 -0
- package/dist/detectors/requirement-smell.js +41 -0
- package/dist/detectors/requirement-smell.js.map +1 -0
- package/dist/detectors/space-before-punctuation.d.ts +8 -0
- package/dist/detectors/space-before-punctuation.d.ts.map +1 -0
- package/dist/detectors/space-before-punctuation.js +24 -0
- package/dist/detectors/space-before-punctuation.js.map +1 -0
- package/dist/detectors/spelling-variety.d.ts +23 -0
- package/dist/detectors/spelling-variety.d.ts.map +1 -0
- package/dist/detectors/spelling-variety.js +59 -0
- package/dist/detectors/spelling-variety.js.map +1 -0
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +3 -1
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/structure.d.ts.map +1 -1
- package/dist/detectors/structure.js +16 -2
- package/dist/detectors/structure.js.map +1 -1
- package/dist/detectors/superlative-comparison.d.ts +20 -0
- package/dist/detectors/superlative-comparison.d.ts.map +1 -0
- package/dist/detectors/superlative-comparison.js +32 -0
- package/dist/detectors/superlative-comparison.js.map +1 -0
- package/dist/detectors/url-run-on.d.ts.map +1 -1
- package/dist/detectors/url-run-on.js +6 -1
- package/dist/detectors/url-run-on.js.map +1 -1
- package/dist/detectors/vague-figure-pointer.d.ts +10 -0
- package/dist/detectors/vague-figure-pointer.d.ts.map +1 -0
- package/dist/detectors/vague-figure-pointer.js +46 -0
- package/dist/detectors/vague-figure-pointer.js.map +1 -0
- package/dist/detectors/word-list.d.ts +2 -0
- package/dist/detectors/word-list.d.ts.map +1 -1
- package/dist/detectors/word-list.js +4 -1
- package/dist/detectors/word-list.js.map +1 -1
- package/dist/document.d.ts +9 -3
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +55 -32
- package/dist/document.js.map +1 -1
- package/dist/extension/document-view.d.ts +7 -0
- package/dist/extension/document-view.d.ts.map +1 -0
- package/dist/extension/document-view.js +91 -0
- package/dist/extension/document-view.js.map +1 -0
- package/dist/extension/failure-text.d.ts +5 -0
- package/dist/extension/failure-text.d.ts.map +1 -0
- package/dist/extension/failure-text.js +33 -0
- package/dist/extension/failure-text.js.map +1 -0
- package/dist/extension/import-default.d.ts +7 -0
- package/dist/extension/import-default.d.ts.map +1 -0
- package/dist/extension/import-default.js +21 -0
- package/dist/extension/import-default.js.map +1 -0
- package/dist/extension/load.d.ts +28 -0
- package/dist/extension/load.d.ts.map +1 -0
- package/dist/extension/load.js +51 -0
- package/dist/extension/load.js.map +1 -0
- package/dist/extension/module-detector.d.ts +21 -0
- package/dist/extension/module-detector.d.ts.map +1 -0
- package/dist/extension/module-detector.js +49 -0
- package/dist/extension/module-detector.js.map +1 -0
- package/dist/extension/plugin-load.d.ts +9 -0
- package/dist/extension/plugin-load.d.ts.map +1 -0
- package/dist/extension/plugin-load.js +68 -0
- package/dist/extension/plugin-load.js.map +1 -0
- package/dist/extension/plugin-name.d.ts +8 -0
- package/dist/extension/plugin-name.d.ts.map +1 -0
- package/dist/extension/plugin-name.js +22 -0
- package/dist/extension/plugin-name.js.map +1 -0
- package/dist/extension/plugin-parse.d.ts +41 -0
- package/dist/extension/plugin-parse.d.ts.map +1 -0
- package/dist/extension/plugin-parse.js +156 -0
- package/dist/extension/plugin-parse.js.map +1 -0
- package/dist/extension/problem-text.d.ts +5 -0
- package/dist/extension/problem-text.d.ts.map +1 -0
- package/dist/extension/problem-text.js +74 -0
- package/dist/extension/problem-text.js.map +1 -0
- package/dist/extension/real-path.d.ts +3 -0
- package/dist/extension/real-path.d.ts.map +1 -0
- package/dist/extension/real-path.js +8 -0
- package/dist/extension/real-path.js.map +1 -0
- package/dist/extension/returned-findings.d.ts +17 -0
- package/dist/extension/returned-findings.d.ts.map +1 -0
- package/dist/extension/returned-findings.js +48 -0
- package/dist/extension/returned-findings.js.map +1 -0
- package/dist/extension/rule-export.d.ts +13 -0
- package/dist/extension/rule-export.d.ts.map +1 -0
- package/dist/extension/rule-export.js +16 -0
- package/dist/extension/rule-export.js.map +1 -0
- package/dist/feedback/draft.d.ts +2 -0
- package/dist/feedback/draft.d.ts.map +1 -1
- package/dist/feedback/draft.js +3 -0
- package/dist/feedback/draft.js.map +1 -1
- package/dist/figure-references.d.ts +11 -2
- package/dist/figure-references.d.ts.map +1 -1
- package/dist/figure-references.js +50 -13
- package/dist/figure-references.js.map +1 -1
- package/dist/finding-order.d.ts +9 -0
- package/dist/finding-order.d.ts.map +1 -0
- package/dist/finding-order.js +3 -0
- package/dist/finding-order.js.map +1 -0
- package/dist/fix-plan/mode.d.ts +21 -0
- package/dist/fix-plan/mode.d.ts.map +1 -0
- package/dist/fix-plan/mode.js +16 -0
- package/dist/fix-plan/mode.js.map +1 -0
- package/dist/fix-plan/plan.d.ts +77 -0
- package/dist/fix-plan/plan.d.ts.map +1 -0
- package/dist/fix-plan/plan.js +100 -0
- package/dist/fix-plan/plan.js.map +1 -0
- package/dist/fix-plan/render.d.ts +6 -0
- package/dist/fix-plan/render.d.ts.map +1 -0
- package/dist/fix-plan/render.js +101 -0
- package/dist/fix-plan/render.js.map +1 -0
- package/dist/fix-plan/text.d.ts +35 -0
- package/dist/fix-plan/text.d.ts.map +1 -0
- package/dist/fix-plan/text.js +95 -0
- package/dist/fix-plan/text.js.map +1 -0
- package/dist/language-sample.d.ts +2 -0
- package/dist/language-sample.d.ts.map +1 -0
- package/dist/language-sample.js +41 -0
- package/dist/language-sample.js.map +1 -0
- package/dist/link-line.d.ts +8 -0
- package/dist/link-line.d.ts.map +1 -0
- package/dist/link-line.js +12 -0
- package/dist/link-line.js.map +1 -0
- package/dist/long-vowel.d.ts +9 -6
- package/dist/long-vowel.d.ts.map +1 -1
- package/dist/long-vowel.js +15 -8
- package/dist/long-vowel.js.map +1 -1
- package/dist/markup.d.ts.map +1 -1
- package/dist/markup.js +4 -2
- package/dist/markup.js.map +1 -1
- package/dist/name-variants.d.ts +25 -0
- package/dist/name-variants.d.ts.map +1 -0
- package/dist/name-variants.js +181 -0
- package/dist/name-variants.js.map +1 -0
- package/dist/node-version.d.ts +7 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +19 -0
- package/dist/node-version.js.map +1 -0
- package/dist/not-run.d.ts +14 -0
- package/dist/not-run.d.ts.map +1 -0
- package/dist/not-run.js +12 -0
- package/dist/not-run.js.map +1 -0
- package/dist/orthography.d.ts +8 -1
- package/dist/orthography.d.ts.map +1 -1
- package/dist/orthography.js +33 -12
- package/dist/orthography.js.map +1 -1
- package/dist/outline/render.d.ts +18 -0
- package/dist/outline/render.d.ts.map +1 -0
- package/dist/outline/render.js +60 -0
- package/dist/outline/render.js.map +1 -0
- package/dist/outline/shape.d.ts +26 -0
- package/dist/outline/shape.d.ts.map +1 -0
- package/dist/outline/shape.js +37 -0
- package/dist/outline/shape.js.map +1 -0
- package/dist/outline/text.d.ts +21 -0
- package/dist/outline/text.d.ts.map +1 -0
- package/dist/outline/text.js +30 -0
- package/dist/outline/text.js.map +1 -0
- package/dist/plugin.d.ts +24 -2
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +1 -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/compact.d.ts +3 -1
- package/dist/render/compact.d.ts.map +1 -1
- package/dist/render/compact.js +8 -2
- package/dist/render/compact.js.map +1 -1
- package/dist/render/explain.d.ts +3 -1
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +32 -15
- package/dist/render/explain.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +16 -12
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/suppressions.d.ts +3 -0
- package/dist/render/suppressions.d.ts.map +1 -1
- package/dist/render/suppressions.js +20 -1
- package/dist/render/suppressions.js.map +1 -1
- package/dist/rule-guide.d.ts +19 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +14 -0
- package/dist/rule-guide.js.map +1 -1
- package/dist/run-semantic.d.ts.map +1 -1
- package/dist/run-semantic.js +2 -1
- package/dist/run-semantic.js.map +1 -1
- package/dist/run.d.ts +5 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +31 -14
- package/dist/run.js.map +1 -1
- package/dist/setting-problems.d.ts.map +1 -1
- package/dist/setting-problems.js +3 -1
- package/dist/setting-problems.js.map +1 -1
- package/dist/spacing-minority.d.ts +16 -0
- package/dist/spacing-minority.d.ts.map +1 -0
- package/dist/spacing-minority.js +23 -0
- package/dist/spacing-minority.js.map +1 -0
- package/dist/stet-block.d.ts +5 -0
- package/dist/stet-block.d.ts.map +1 -0
- package/dist/stet-block.js +59 -0
- package/dist/stet-block.js.map +1 -0
- package/dist/stet.d.ts +4 -0
- package/dist/stet.d.ts.map +1 -1
- package/dist/stet.js +31 -11
- package/dist/stet.js.map +1 -1
- package/dist/structure/date-range.d.ts +10 -0
- package/dist/structure/date-range.d.ts.map +1 -1
- package/dist/structure/date-range.js +33 -1
- package/dist/structure/date-range.js.map +1 -1
- package/dist/structure/definition-use.d.ts +32 -0
- package/dist/structure/definition-use.d.ts.map +1 -0
- package/dist/structure/definition-use.js +102 -0
- package/dist/structure/definition-use.js.map +1 -0
- package/dist/structure/lazy-tree.d.ts +8 -0
- package/dist/structure/lazy-tree.d.ts.map +1 -0
- package/dist/structure/lazy-tree.js +14 -0
- package/dist/structure/lazy-tree.js.map +1 -0
- package/dist/structure/modal-conflict.d.ts +28 -0
- package/dist/structure/modal-conflict.d.ts.map +1 -0
- package/dist/structure/modal-conflict.js +74 -0
- package/dist/structure/modal-conflict.js.map +1 -0
- package/dist/structure/numbered-clauses.d.ts +4 -0
- package/dist/structure/numbered-clauses.d.ts.map +1 -0
- package/dist/structure/numbered-clauses.js +9 -0
- package/dist/structure/numbered-clauses.js.map +1 -0
- package/dist/structure/universal.d.ts.map +1 -1
- package/dist/structure/universal.js +8 -2
- package/dist/structure/universal.js.map +1 -1
- package/dist/style-parse.d.ts +6 -0
- package/dist/style-parse.d.ts.map +1 -1
- package/dist/style-parse.js +32 -4
- package/dist/style-parse.js.map +1 -1
- package/dist/subheading-line.d.ts +19 -2
- package/dist/subheading-line.d.ts.map +1 -1
- package/dist/subheading-line.js +39 -11
- package/dist/subheading-line.js.map +1 -1
- package/dist/tag-coverage.d.ts +8 -0
- package/dist/tag-coverage.d.ts.map +1 -0
- package/dist/tag-coverage.js +7 -0
- package/dist/tag-coverage.js.map +1 -0
- package/genres.yaml +42 -0
- package/package.json +7 -3
- package/rules/acronym-expansion-conflict.yaml +82 -0
- package/rules/adverb-overuse.yaml +2 -2
- package/rules/agentless-passive.yaml +28 -0
- package/rules/ai-tell.yaml +34 -0
- package/rules/announced-count-mismatch.yaml +2 -2
- package/rules/announcing-opener.yaml +31 -0
- package/rules/assistant-residue.yaml +30 -0
- package/rules/bold-density.yaml +28 -0
- package/rules/bold-label-list.yaml +81 -0
- package/rules/closing-cliche.yaml +27 -2
- package/rules/colon-lead-in.yaml +28 -4
- package/rules/contrast-framing.yaml +33 -2
- package/rules/cushion-phrase-density.yaml +32 -5
- package/rules/dangling-reference.yaml +1 -0
- package/rules/date-order.yaml +1 -0
- package/rules/date-range-reversed.yaml +2 -2
- package/rules/double-negative.yaml +51 -0
- package/rules/doubled-punctuation.yaml +2 -2
- package/rules/doubled-word.yaml +2 -2
- package/rules/duplicate-heading.yaml +78 -0
- package/rules/emoji-density.yaml +5 -4
- package/rules/empty-intensifier.yaml +25 -0
- package/rules/empty-section.yaml +74 -0
- package/rules/excessive-hedging.yaml +32 -4
- package/rules/fullwidth-alnum-consistency.yaml +53 -0
- package/rules/hankaku-kana.yaml +41 -0
- package/rules/image-alt-text.yaml +1 -1
- package/rules/invisible-character.yaml +63 -0
- package/rules/katakana-long-vowel.yaml +10 -9
- package/rules/latin-spacing.yaml +12 -5
- package/rules/max-kanji-continuous.yaml +1 -0
- package/rules/max-paragraph-length.yaml +1 -0
- package/rules/max-sentence-length.yaml +26 -0
- package/rules/modal-conflict.yaml +106 -0
- package/rules/name-variant.yaml +88 -0
- package/rules/no-doubled-joshi.yaml +1 -0
- package/rules/no-em-dash.yaml +26 -2
- package/rules/no-mixed-desumasu.yaml +1 -0
- package/rules/nominalization.yaml +89 -0
- package/rules/outside-announced-list.yaml +80 -0
- package/rules/padded-intro.yaml +25 -0
- package/rules/paragraph-length-variance.yaml +26 -2
- package/rules/preferred-term.yaml +1 -0
- package/rules/proper-noun-density.yaml +14 -5
- package/rules/ra-nuki.yaml +43 -0
- package/rules/requirement-modal.yaml +94 -0
- package/rules/requirement-smell.yaml +70 -0
- package/rules/rule-of-three.yaml +46 -0
- package/rules/section-length-uniformity.yaml +26 -2
- package/rules/sentence-rhythm.yaml +26 -0
- package/rules/space-before-punctuation.yaml +41 -0
- package/rules/spelling-consistency.yaml +47 -0
- package/rules/stock-transition.yaml +33 -2
- package/rules/taigen-dome-in-prose.yaml +14 -0
- package/rules/total-mismatch.yaml +1 -0
- package/rules/undefined-acronym.yaml +1 -0
- package/rules/unqualified-superlative.yaml +5 -4
- package/rules/unused-definition.yaml +75 -0
- package/rules/use-before-definition.yaml +77 -0
- package/rules/vague-figure-reference.yaml +66 -0
- package/skills/chaff/SKILL.md +108 -8
- package/src/acronym-expansions.ts +106 -0
- package/src/announced-count.ts +53 -11
- package/src/announced-list.ts +120 -0
- package/src/api.ts +154 -0
- package/src/cli-text.ts +6 -11
- package/src/cli.ts +64 -63
- package/src/closing-paragraph.ts +24 -0
- package/src/commands/compare.ts +11 -18
- package/src/commands/document-commands.ts +19 -0
- package/src/commands/eval.ts +3 -2
- package/src/commands/facts.ts +33 -0
- package/src/commands/feedback.ts +33 -1
- package/src/commands/fix-plan.ts +53 -0
- package/src/commands/outline.ts +49 -0
- package/src/commands/read-document.ts +24 -0
- package/src/commands/suppressions.ts +19 -0
- package/src/commands/test.ts +1 -1
- package/src/compare/clock-time.ts +5 -2
- package/src/compare/distinct.ts +13 -0
- package/src/compare/extract.ts +7 -5
- package/src/compare/fact-key.ts +31 -0
- package/src/compare/fact-text.ts +21 -2
- package/src/compare/facts-render.ts +63 -0
- package/src/compare/facts-text.ts +41 -0
- package/src/compare/match.ts +1 -1
- package/src/compare/outcome.ts +14 -4
- package/src/compare/proper-nouns.ts +4 -4
- package/src/compare/render.ts +2 -2
- package/src/compare/text-atoms.ts +7 -6
- package/src/compare/text.ts +3 -2
- package/src/config/load.ts +9 -0
- package/src/config/option-problems.ts +6 -4
- package/src/config/style.ts +14 -1
- package/src/custom/load.ts +11 -3
- package/src/custom/module-path.ts +23 -0
- package/src/custom/parse.ts +67 -18
- package/src/custom/problems.ts +63 -41
- package/src/detect-language.ts +1 -1
- package/src/detect.ts +10 -3
- package/src/detectors/ai-phrasing.ts +6 -2
- package/src/detectors/bold-label.ts +55 -0
- package/src/detectors/dangling-figure.ts +8 -4
- package/src/detectors/definition-use.ts +41 -0
- package/src/detectors/doubled-punctuation.ts +5 -2
- package/src/detectors/duplicate-heading.ts +47 -0
- package/src/detectors/empty-section.ts +21 -0
- package/src/detectors/fullwidth-alnum.ts +118 -0
- package/src/detectors/hankaku-kana.ts +38 -0
- package/src/detectors/heading-code-words.ts +2 -2
- package/src/detectors/index.ts +36 -0
- package/src/detectors/invisible-character.ts +190 -0
- package/src/detectors/kutoten-consistency.ts +2 -2
- package/src/detectors/lexicon-match.ts +33 -1
- package/src/detectors/lexicon.ts +40 -13
- package/src/detectors/list-sentence.ts +45 -4
- package/src/detectors/long-vowel.ts +20 -4
- package/src/detectors/markup-finding.ts +16 -1
- package/src/detectors/modal-conflict.ts +26 -0
- package/src/detectors/name-variant.ts +15 -0
- package/src/detectors/nominalization.ts +73 -0
- package/src/detectors/orthography.ts +77 -27
- package/src/detectors/outside-announced-list.ts +25 -0
- package/src/detectors/oxford-comma.ts +1 -0
- package/src/detectors/phrase-match.ts +27 -7
- package/src/detectors/ra-nuki.ts +38 -0
- package/src/detectors/requirement-modal.ts +67 -0
- package/src/detectors/requirement-smell.ts +52 -0
- package/src/detectors/space-before-punctuation.ts +32 -0
- package/src/detectors/spelling-variety.ts +81 -0
- package/src/detectors/structure-tree.ts +3 -1
- package/src/detectors/structure.ts +17 -3
- package/src/detectors/superlative-comparison.ts +47 -0
- package/src/detectors/url-run-on.ts +7 -1
- package/src/detectors/vague-figure-pointer.ts +58 -0
- package/src/detectors/word-list.ts +6 -1
- package/src/document.ts +88 -41
- package/src/extension/document-view.ts +109 -0
- package/src/extension/failure-text.ts +46 -0
- package/src/extension/import-default.ts +13 -0
- package/src/extension/load.ts +97 -0
- package/src/extension/module-detector.ts +61 -0
- package/src/extension/plugin-load.ts +82 -0
- package/src/extension/plugin-name.ts +26 -0
- package/src/extension/plugin-parse.ts +229 -0
- package/src/extension/problem-text.ts +103 -0
- package/src/extension/real-path.ts +10 -0
- package/src/extension/returned-findings.ts +62 -0
- package/src/extension/rule-export.ts +23 -0
- package/src/feedback/draft.ts +6 -0
- package/src/figure-references.ts +73 -12
- package/src/finding-order.ts +3 -0
- package/src/fix-plan/mode.ts +34 -0
- package/src/fix-plan/plan.ts +181 -0
- package/src/fix-plan/render.ts +128 -0
- package/src/fix-plan/text.ts +133 -0
- package/src/language-sample.ts +48 -0
- package/src/link-line.ts +13 -0
- package/src/long-vowel.ts +18 -8
- package/src/markup.ts +4 -2
- package/src/name-variants.ts +217 -0
- package/src/node-version.ts +22 -0
- package/src/not-run.ts +16 -0
- package/src/orthography.ts +40 -11
- package/src/outline/render.ts +85 -0
- package/src/outline/shape.ts +72 -0
- package/src/outline/text.ts +50 -0
- package/src/plugin.ts +21 -4
- package/src/reasons.ts +3 -0
- package/src/render/compact.ts +13 -3
- package/src/render/explain.ts +47 -20
- package/src/render/rules-json.ts +18 -12
- package/src/render/suppressions.ts +30 -2
- package/src/rule-guide.ts +38 -0
- package/src/run-semantic.ts +2 -1
- package/src/run.ts +37 -17
- package/src/setting-problems.ts +3 -1
- package/src/spacing-minority.ts +27 -0
- package/src/stet-block.ts +60 -0
- package/src/stet.ts +41 -15
- package/src/structure/date-range.ts +49 -1
- package/src/structure/definition-use.ts +130 -0
- package/src/structure/lazy-tree.ts +15 -0
- package/src/structure/modal-conflict.ts +86 -0
- package/src/structure/numbered-clauses.ts +11 -0
- package/src/structure/universal.ts +10 -2
- package/src/style-parse.ts +38 -3
- package/src/subheading-line.ts +51 -13
- package/src/tag-coverage.ts +13 -0
- package/styles/ieice.yaml +5 -4
- package/styles/jis-z8301-2011.yaml +5 -2
- package/styles/jis-z8301-2019.yaml +31 -0
- package/styles/koyobun.yaml +35 -0
- package/dist/legal-address.d.ts +0 -2
- package/dist/legal-address.d.ts.map +0 -1
- package/dist/legal-address.js +0 -16
- package/dist/legal-address.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"problems.js","sourceRoot":"","sources":["../../src/custom/problems.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAqB,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"problems.js","sourceRoot":"","sources":["../../src/custom/problems.ts"],"names":[],"mappings":"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"}
|
package/dist/detect-language.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* 権威ある点数で、こちらは何も読み込んでいない状態での見当付け。
|
|
7
7
|
* 似た計算を両方が持つのは、この順序から来る避けられない重複。
|
|
8
8
|
*
|
|
9
|
-
* 呼ぶ側が、コードブロック・インラインコード・URL・front matter
|
|
9
|
+
* 呼ぶ側が、コードブロック・インラインコード・URL・front matter を先に落としておくこと(guessLanguage は language-sample.ts で落とす)。
|
|
10
10
|
* 技術文書は英語のコードを大量に含むため、落とさないと日本語文書が英語と判定される。
|
|
11
11
|
*/
|
|
12
12
|
const JAPANESE = /[-ゟ゠-ヿ一-鿿]/gu;
|
package/dist/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAiC9G,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,aAK9C,CAAC"}
|
package/dist/detect.js
CHANGED
|
@@ -5,6 +5,7 @@ import { parse } from "yaml";
|
|
|
5
5
|
import { japaneseRatio, latinRatio } from "./detect-language.js";
|
|
6
6
|
import { referenceListSpans } from "./reference-lists.js";
|
|
7
7
|
import { withoutSpans } from "./soft-break.js";
|
|
8
|
+
import { languageSample } from "./language-sample.js";
|
|
8
9
|
/**
|
|
9
10
|
* 技術文書の日本語は英字を大量に含む(コマンド名、識別子、製品名)。
|
|
10
11
|
* 仮名と漢字が 15% あれば日本語と見る。corpus で測るまでの暫定値。spec §26。
|
|
@@ -25,11 +26,16 @@ const bodyOf = (source) => {
|
|
|
25
26
|
const body = withoutSpans(source, referenceListSpans(source, REFERENCE_HEADINGS));
|
|
26
27
|
return body.trim() === "" ? source : body;
|
|
27
28
|
};
|
|
29
|
+
/** The body without code, URLs and markup, or the whole body when nothing else is left (a document of only code). */
|
|
30
|
+
const proseOf = (body) => {
|
|
31
|
+
const sample = languageSample(body);
|
|
32
|
+
return sample.trim() === "" ? body : sample;
|
|
33
|
+
};
|
|
28
34
|
export const guessLanguage = (source) => {
|
|
29
|
-
const
|
|
30
|
-
const japanese = japaneseRatio(
|
|
35
|
+
const prose = proseOf(bodyOf(source));
|
|
36
|
+
const japanese = japaneseRatio(prose);
|
|
31
37
|
if (japanese >= JAPANESE_FLOOR)
|
|
32
38
|
return { language: "ja", confidence: japanese, from: "content" };
|
|
33
|
-
return { language: "en", confidence: latinRatio(
|
|
39
|
+
return { language: "en", confidence: latinRatio(prose), from: "content" };
|
|
34
40
|
};
|
|
35
41
|
//# sourceMappingURL=detect.js.map
|
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;GAGG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAErG,MAAM,YAAY,GAAG,CAAC,KAAc,EAAqB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AAEtI,MAAM,YAAY,GAAG,GAAa,EAAE;IAClC,MAAM,GAAG,GAAY,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAY,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,yBAAyB,CAAC,CAAC;IACxF,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,YAAY,EAAE,CAAC;AAE1C,4DAA4D;AAC5D,MAAM,MAAM,GAAG,CAAC,MAAc,EAAU,EAAE;IACxC,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC,CAAC;AAEF,qHAAqH;AACrH,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAiB,EAAE;IAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,QAAQ,IAAI,cAAc;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACjG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC5E,CAAC,CAAC"}
|
|
@@ -8,7 +8,10 @@ export declare const openerDensity: Detector;
|
|
|
8
8
|
* 密度ではなく数で見る。人の記事も長さによらず 1 つ 2 つは書き、生成文は短い記事にも重ねる。
|
|
9
9
|
*/
|
|
10
10
|
export declare const openerPile: Detector;
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* コロンで箇条書きへ渡す文(以下の通りです:)。1 つなら案内だが、節ごとに続くと説明が箇条書きの前置きだけになる。
|
|
13
|
+
* 数えるのは文書の言語の文だけ。和文の中の英文(Examples include:)は、英語ではふつうの書き方なので数えない。
|
|
14
|
+
*/
|
|
12
15
|
export declare const colonLeadIn: Detector;
|
|
13
16
|
/**
|
|
14
17
|
* 会話の返事の名残(As of my last knowledge update、私の知識は)。重みを足した点が上限に届いたら、当たった文をすべて言う。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-phrasing.d.ts","sourceRoot":"","sources":["../../src/detectors/ai-phrasing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA2D,MAAM,cAAc,CAAC;AA8CtG,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,QAO7B,CAAC;AASF,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,QAAmH,CAAC;AAEhJ;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,QAGxB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"ai-phrasing.d.ts","sourceRoot":"","sources":["../../src/detectors/ai-phrasing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA2D,MAAM,cAAc,CAAC;AA8CtG,sEAAsE;AACtE,eAAO,MAAM,eAAe,EAAE,QAO7B,CAAC;AASF,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,QAAmH,CAAC;AAEhJ;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,QAGxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,QAIzB,CAAC;AAkCF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAK9B,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,EAAE,QAWjC,CAAC"}
|
|
@@ -58,9 +58,13 @@ export const openerPile = (doc, options) => {
|
|
|
58
58
|
const hits = openerHits(doc, options.lexicon ?? []);
|
|
59
59
|
return hits.length === 0 || hits.length < options.limit ? [] : hits.map((hit) => findingOf(hit, { count: hits.length, limit: options.limit }));
|
|
60
60
|
};
|
|
61
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* コロンで箇条書きへ渡す文(以下の通りです:)。1 つなら案内だが、節ごとに続くと説明が箇条書きの前置きだけになる。
|
|
63
|
+
* 数えるのは文書の言語の文だけ。和文の中の英文(Examples include:)は、英語ではふつうの書き方なので数えない。
|
|
64
|
+
*/
|
|
62
65
|
export const colonLeadIn = (doc, options) => {
|
|
63
|
-
const
|
|
66
|
+
const inDocumentLanguage = doc.sentences.filter((sentence) => sentence.embeddedLanguage === undefined);
|
|
67
|
+
const hits = colonLeadIns(inDocumentLanguage, doc.lists, doc.listSpans, doc.source).map((sentence) => ({ sentence, matched: sentence.text.trim() }));
|
|
64
68
|
return densityFindings(doc, hits, options.limit);
|
|
65
69
|
};
|
|
66
70
|
const distinct = (lexicon) => [...new Map(lexicon.map((entry) => [entry.pattern.toLowerCase(), entry])).values()];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-phrasing.js","sourceRoot":"","sources":["../../src/detectors/ai-phrasing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ai-phrasing.js","sourceRoot":"","sources":["../../src/detectors/ai-phrasing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Detector, ProseDocument, Span } from "../plugin.ts";
|
|
2
|
+
/** The label a list item opens with in bold before a colon and more text, or undefined. `item` is the item as written, marker and all. */
|
|
3
|
+
export declare const boldLabelOf: (item: string) => string | undefined;
|
|
4
|
+
/** Whether the line holding `offset` is quoted (`> - **a**:…`): someone else's words, not the writer's to fix. */
|
|
5
|
+
export declare const isQuotedAt: (source: string, offset: number) => boolean;
|
|
6
|
+
/** The list items, in document order, that open with a bold label and are not quoted. */
|
|
7
|
+
export declare const boldLabelItems: (doc: ProseDocument) => Span[];
|
|
8
|
+
/** A count, not a density: a person writes one or two labels even in a long article. */
|
|
9
|
+
export declare const boldLabelList: Detector;
|
|
10
|
+
//# sourceMappingURL=bold-label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bold-label.d.ts","sourceRoot":"","sources":["../../src/detectors/bold-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAsB3E,0IAA0I;AAC1I,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAGnD,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAuF,CAAC;AAEpJ,yFAAyF;AACzF,eAAO,MAAM,cAAc,GAAI,KAAK,aAAa,KAAG,IAAI,EAIA,CAAC;AAEzD,wFAAwF;AACxF,eAAO,MAAM,aAAa,EAAE,QAe3B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** A bold run longer than this is a bold sentence, not a label. */
|
|
2
|
+
const MAX_LABEL_CHARS = 40;
|
|
3
|
+
/** The bullet or number that opens a list item. */
|
|
4
|
+
const ITEM_MARKER = /^[ \t]*(?:[-*+]|\d{1,9}[.)])[ \t]+/u;
|
|
5
|
+
/** A task box, after the marker or at the start of an item whose marker was already cut. */
|
|
6
|
+
const TASK_BOX = /^\[[ xX]\][ \t]+/u;
|
|
7
|
+
/** `**Label**: text` or `**Label:** text`. The label holds no delimiter, so `**a** and **b**: text` is not one label. */
|
|
8
|
+
const BOLD_LABEL = new RegExp(String.raw `^(\*\*|__)(?!\s)((?:(?!\1)[^\n]){1,${MAX_LABEL_CHARS}}?)(?:\1[ \t]*[::]|[::]\1)[ \t]*\S`, "u");
|
|
9
|
+
/** A label that is only code (`--flag`, `timeout_ms`) names an option or a field: the way reference documentation lists them. */
|
|
10
|
+
const CODE_SPAN = /^`[^`]+`$/u;
|
|
11
|
+
/** A link around the whole label: inline, reference, collapsed or shortcut. Its text is what the reader sees. */
|
|
12
|
+
const WHOLE_LINK = /^\[([^\]\n]+)\](?:\([^)\s]*\)|\[[^\]\n]*\])?$/u;
|
|
13
|
+
const isCodeOnly = (label) => CODE_SPAN.test(label.replace(WHOLE_LINK, "$1"));
|
|
14
|
+
/** The label a list item opens with in bold before a colon and more text, or undefined. `item` is the item as written, marker and all. */
|
|
15
|
+
export const boldLabelOf = (item) => {
|
|
16
|
+
const label = BOLD_LABEL.exec(item.replace(ITEM_MARKER, "").replace(TASK_BOX, ""))?.[2]?.trim();
|
|
17
|
+
return label === undefined || isCodeOnly(label) ? undefined : label;
|
|
18
|
+
};
|
|
19
|
+
/** Whether the line holding `offset` is quoted (`> - **a**:…`): someone else's words, not the writer's to fix. */
|
|
20
|
+
export const isQuotedAt = (source, offset) => source.slice(source.lastIndexOf("\n", offset - 1) + 1, offset).includes(">");
|
|
21
|
+
/** The list items, in document order, that open with a bold label and are not quoted. */
|
|
22
|
+
export const boldLabelItems = (doc) => doc.lists
|
|
23
|
+
.flatMap((list) => list.itemSpans)
|
|
24
|
+
.filter((span) => !isQuotedAt(doc.source, span.start) && boldLabelOf(doc.source.slice(span.start, span.end)) !== undefined)
|
|
25
|
+
.toSorted((left, right) => left.start - right.start);
|
|
26
|
+
/** A count, not a density: a person writes one or two labels even in a long article. */
|
|
27
|
+
export const boldLabelList = (doc, options) => {
|
|
28
|
+
const items = boldLabelItems(doc);
|
|
29
|
+
const first = items[0];
|
|
30
|
+
if (first === undefined || items.length < options.limit)
|
|
31
|
+
return [];
|
|
32
|
+
const written = doc.source.slice(first.start, first.end);
|
|
33
|
+
return [
|
|
34
|
+
{
|
|
35
|
+
rule: "bold-label-list",
|
|
36
|
+
severity: "info",
|
|
37
|
+
line: 0,
|
|
38
|
+
column: 0,
|
|
39
|
+
quote: (written.split("\n")[0] ?? "").trim(),
|
|
40
|
+
values: { label: boldLabelOf(written) ?? "", count: items.length, limit: options.limit, offset: first.start },
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=bold-label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bold-label.js","sourceRoot":"","sources":["../../src/detectors/bold-label.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { Detector } from "../plugin.ts";
|
|
2
|
-
|
|
1
|
+
import type { Detector, ProseDocument } from "../plugin.ts";
|
|
2
|
+
import { type LabelWords } from "../figure-references.ts";
|
|
3
|
+
/** The language's words for figures, tables and appendices, and for a number that points elsewhere or counts. */
|
|
4
|
+
export declare const labelWordsOf: (doc: ProseDocument) => LabelWords;
|
|
5
|
+
/** 本文が指す図・表・付録の番号が、キャプションにも見出しにも無い。他の文書の名前の後ろに書いた番号は、その文書の図。 */
|
|
3
6
|
export declare const danglingFigure: Detector;
|
|
4
7
|
//# sourceMappingURL=dangling-figure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangling-figure.d.ts","sourceRoot":"","sources":["../../src/detectors/dangling-figure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"dangling-figure.d.ts","sourceRoot":"","sources":["../../src/detectors/dangling-figure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAmC,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAK3F,iHAAiH;AACjH,eAAO,MAAM,YAAY,GAAI,KAAK,aAAa,KAAG,UAIhD,CAAC;AAKH,gEAAgE;AAChE,eAAO,MAAM,cAAc,EAAE,QAQxB,CAAC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { danglingFigures } from "../figure-references.js";
|
|
2
2
|
import { quoteAt } from "./structure-tree.js";
|
|
3
3
|
const patternsOf = (doc, id) => (doc.lexicons[id] ?? []).map((entry) => entry.pattern);
|
|
4
|
-
|
|
4
|
+
/** The language's words for figures, tables and appendices, and for a number that points elsewhere or counts. */
|
|
5
|
+
export const labelWordsOf = (doc) => ({
|
|
5
6
|
labels: (doc.lexicons["figure-label"] ?? []).map((entry) => ({ word: entry.pattern, kind: entry.instead_of ?? entry.pattern })),
|
|
6
7
|
elsewhere: patternsOf(doc, "figure-elsewhere"),
|
|
7
8
|
counters: patternsOf(doc, "count-counter"),
|
|
8
9
|
});
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
const citationsOf = (doc) => doc.namedDocument === undefined ? undefined : { namedDocument: doc.namedDocument, sentences: doc.sentences.map((sentence) => sentence.span) };
|
|
11
|
+
/** 本文が指す図・表・付録の番号が、キャプションにも見出しにも無い。他の文書の名前の後ろに書いた番号は、その文書の図。 */
|
|
12
|
+
export const danglingFigure = (doc) => danglingFigures(doc.source, doc.prose ?? doc.source, labelWordsOf(doc), doc.links, citationsOf(doc)).map((dangling) => ({
|
|
11
13
|
rule: "dangling-figure-reference",
|
|
12
14
|
severity: "warning",
|
|
13
15
|
line: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dangling-figure.js","sourceRoot":"","sources":["../../src/detectors/dangling-figure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"dangling-figure.js","sourceRoot":"","sources":["../../src/detectors/dangling-figure.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAmC,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAY,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAExH,iHAAiH;AACjH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAkB,EAAc,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/H,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC;CAC3C,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,GAAkB,EAAyB,EAAE,CAChE,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAEhJ,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAAa,CAAC,GAAG,EAAa,EAAE,CACzD,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtH,IAAI,EAAE,2BAA2B;IACjC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;CAC3D,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Detector } from "../plugin.ts";
|
|
2
|
+
/** 定義したのに、定義の外で一度も使っていない語。 */
|
|
3
|
+
export declare const unusedDefinition: Detector;
|
|
4
|
+
/** 文の途中で括弧に入れて定義した語を、定義より前で使っている所。 */
|
|
5
|
+
export declare const useBeforeDefinition: Detector;
|
|
6
|
+
/** 同じ略語を、文書の中で二通りに展開している所。 */
|
|
7
|
+
export declare const acronymExpansionConflict: Detector;
|
|
8
|
+
//# sourceMappingURL=definition-use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-use.d.ts","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AAiBrE,8BAA8B;AAC9B,eAAO,MAAM,gBAAgB,EAAE,QAG+G,CAAC;AAE/I,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,EAAE,QAG4H,CAAC;AAE/J,8BAA8B;AAC9B,eAAO,MAAM,wBAAwB,EAAE,QAUtC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { definedTerms, unusedDefinitions, usesBeforeDefinition } from "../structure/definition-use.js";
|
|
2
|
+
import { expansionConflicts, expansionsIn } from "../acronym-expansions.js";
|
|
3
|
+
import { linesOf, lineNumberAt } from "../structure/lines.js";
|
|
4
|
+
import { quoteAt } from "./structure-tree.js";
|
|
5
|
+
const bodyOf = (doc) => doc.sentences.map((sentence) => ({ start: sentence.span.start, text: sentence.text }));
|
|
6
|
+
const findingAt = (doc, offset, values) => ({
|
|
7
|
+
rule: "",
|
|
8
|
+
severity: "warning",
|
|
9
|
+
line: 0,
|
|
10
|
+
column: 0,
|
|
11
|
+
quote: quoteAt(doc.source, offset),
|
|
12
|
+
values: { ...values, offset },
|
|
13
|
+
});
|
|
14
|
+
/** 定義したのに、定義の外で一度も使っていない語。 */
|
|
15
|
+
export const unusedDefinition = (doc) => doc.structure === undefined
|
|
16
|
+
? []
|
|
17
|
+
: unusedDefinitions(definedTerms(doc.structure), bodyOf(doc)).map((defined) => findingAt(doc, defined.span.start, { term: defined.term }));
|
|
18
|
+
/** 文の途中で括弧に入れて定義した語を、定義より前で使っている所。 */
|
|
19
|
+
export const useBeforeDefinition = (doc) => doc.structure === undefined
|
|
20
|
+
? []
|
|
21
|
+
: usesBeforeDefinition(definedTerms(doc.structure), bodyOf(doc)).map((use) => findingAt(doc, use.offset, { term: use.term.term, defined: use.term.line }));
|
|
22
|
+
/** 同じ略語を、文書の中で二通りに展開している所。 */
|
|
23
|
+
export const acronymExpansionConflict = (doc) => {
|
|
24
|
+
const lines = linesOf(doc.source);
|
|
25
|
+
return expansionConflicts(bodyOf(doc).flatMap(expansionsIn)).map(({ expansion, first }) => findingAt(doc, expansion.offset, {
|
|
26
|
+
acronym: expansion.acronym,
|
|
27
|
+
name: expansion.name,
|
|
28
|
+
first: first.name,
|
|
29
|
+
firstLine: lineNumberAt(lines, first.offset) ?? 0,
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=definition-use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definition-use.js","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAiB,MAAM,gCAAgC,CAAC;AACtH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,GAAkB,EAAc,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAE1I,MAAM,SAAS,GAAG,CAAC,GAAkB,EAAE,MAAc,EAAE,MAAiD,EAAW,EAAE,CAAC,CAAC;IACrH,IAAI,EAAE,EAAE;IACR,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE;CAC9B,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAAa,CAAC,GAAG,EAAa,EAAE,CAC3D,GAAG,CAAC,SAAS,KAAK,SAAS;IACzB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAE/I,sCAAsC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAa,CAAC,GAAG,EAAa,EAAE,CAC9D,GAAG,CAAC,SAAS,KAAK,SAAS;IACzB,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAE/J,8BAA8B;AAC9B,MAAM,CAAC,MAAM,wBAAwB,GAAa,CAAC,GAAG,EAAa,EAAE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CACxF,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE;QAC/B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,SAAS,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;KAClD,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubled-punctuation.d.ts","sourceRoot":"","sources":["../../src/detectors/doubled-punctuation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doubled-punctuation.d.ts","sourceRoot":"","sources":["../../src/detectors/doubled-punctuation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,cAAc,CAAC;AA0BtD,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAW5E,kCAAkC;AAClC,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,YAAY,EACgG,CAAC;AAEzJ,eAAO,MAAM,kBAAkB,EAAE,QAUhC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { quoteAround } from "./quote-around.js";
|
|
2
2
|
/**
|
|
3
3
|
* 句読点が二つ並んだところ(「。。」「、。」「,,」「..」)。打ち直しで残った印。
|
|
4
|
-
*
|
|
4
|
+
* 同じ印を三つ以上並べたもの(「...」「。。。」)は、わざと伸ばした書き方なので数えない。その後ろに一つだけ付けた印(「...。」)も数えない。
|
|
5
5
|
* コロンは「::」(C++ の名前、IPv6)があるので見ない。
|
|
6
6
|
*/
|
|
7
7
|
const PUNCTUATION_RUN = /[、。,.,.;;]{2,}/gu;
|
|
@@ -11,12 +11,14 @@ const WORD = /[\p{L}\p{N}]/u;
|
|
|
11
11
|
/** 「..」の前後が字か数字か「/」なら、範囲や道のり(1..10、a..b、../)で、書き損じではない。 */
|
|
12
12
|
const JOINED = /[\p{L}\p{N}/]/u;
|
|
13
13
|
const isDrawnOut = (run) => run.length >= 3 && [...run].every((mark) => mark === run.charAt(0));
|
|
14
|
+
/** 伸ばした印(「...」「、、、」)は三点リーダーの代わりで、すぐ後ろの一つの印(「...。」「、、、。」)は文を閉じる印。 */
|
|
15
|
+
const isDrawnOutThenClosed = (run) => isDrawnOut(run.slice(0, -1));
|
|
14
16
|
const isJoinedDots = (text, start, run) => run === ".." && (JOINED.test(text.charAt(start + run.length)) || text.charAt(start - 1) === "/");
|
|
15
17
|
/** 並びの終わりの点が次の語の頭(「、.NET」「。.well-known」)なら、その点は語のうち。 */
|
|
16
18
|
const withoutWordDot = (text, found) => found.run.endsWith(".") && !isDrawnOut(found.run) && found.run !== ".." && WORD.test(text.charAt(found.start + found.run.length))
|
|
17
19
|
? { start: found.start, run: found.run.slice(0, -1) }
|
|
18
20
|
: found;
|
|
19
|
-
const isSlip = (text, { start, run }) => run.length >= 2 && !isDrawnOut(run) && !AFTER_ABBREVIATION.test(run) && !isJoinedDots(text, start, run);
|
|
21
|
+
const isSlip = (text, { start, run }) => run.length >= 2 && !isDrawnOut(run) && !isDrawnOutThenClosed(run) && !AFTER_ABBREVIATION.test(run) && !isJoinedDots(text, start, run);
|
|
20
22
|
/** text の中の、句読点が重なった並び(位置と並び)。 */
|
|
21
23
|
export const doubledMarks = (text) => [...text.matchAll(PUNCTUATION_RUN)].map((match) => withoutWordDot(text, { start: match.index, run: match[0] })).filter((found) => isSlip(text, found));
|
|
22
24
|
export const doubledPunctuation = (doc) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubled-punctuation.js","sourceRoot":"","sources":["../../src/detectors/doubled-punctuation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAE3C,2CAA2C;AAC3C,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAEvC,MAAM,IAAI,GAAG,eAAe,CAAC;AAE7B,2DAA2D;AAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC;AAEhC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAW,EAAE,CACzE,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAInG,wDAAwD;AACxD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,KAAmB,EAAgB,EAAE,CACzE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/H,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACrD,CAAC,CAAC,KAAK,CAAC;AAEZ,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAgB,EAAW,EAAE,CACrE,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"doubled-punctuation.js","sourceRoot":"","sources":["../../src/detectors/doubled-punctuation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Detector, MarkupHeading } from "../plugin.ts";
|
|
2
|
+
/** 見出しの言葉を比べる形。全角と半角、大文字と小文字、空白の数は同じ見出しの違いにしない。 */
|
|
3
|
+
export declare const headingKey: (text: string) => string;
|
|
4
|
+
export type RepeatedHeading = {
|
|
5
|
+
readonly heading: MarkupHeading;
|
|
6
|
+
readonly first: MarkupHeading;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* 同じ親の下で、前の見出しと同じ言葉の見出し(markdownlint の MD024 siblings_only)。変更履歴の版ごとの「Added」「Fixed」のように、
|
|
10
|
+
* 親が違えば同じ言葉でもよい。深さが違っても親が同じなら兄弟として比べる(飛んだ深さの見出しも同じ親の下にある)。
|
|
11
|
+
*/
|
|
12
|
+
export declare const repeatedSiblingHeadings: (headings: readonly MarkupHeading[]) => RepeatedHeading[];
|
|
13
|
+
export declare const duplicateHeading: Detector;
|
|
14
|
+
//# sourceMappingURL=duplicate-heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicate-heading.d.ts","sourceRoot":"","sources":["../../src/detectors/duplicate-heading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAE,MAAM,cAAc,CAAC;AAIrE,mDAAmD;AACnD,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,MAA2E,CAAC;AActH,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAIjG;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,UAAU,SAAS,aAAa,EAAE,KAAG,eAAe,EAY3F,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAK9B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { lineNumberAt, linesOf } from "../structure/lines.js";
|
|
2
|
+
import { findingAt, writtenHeadings } from "./markup-finding.js";
|
|
3
|
+
/** 見出しの言葉を比べる形。全角と半角、大文字と小文字、空白の数は同じ見出しの違いにしない。 */
|
|
4
|
+
export const headingKey = (text) => text.normalize("NFKC").toLowerCase().replace(/\s+/gu, " ").trim();
|
|
5
|
+
/** 見出しの親(一つ前の、それより浅い見出し)の位置。いちばん浅い見出しは文書が親で、-1。 */
|
|
6
|
+
const parentIndexes = (headings) => {
|
|
7
|
+
const open = [];
|
|
8
|
+
const depthAt = (at) => (at === undefined ? 0 : (headings[at]?.depth ?? 0));
|
|
9
|
+
return headings.map((heading, index) => {
|
|
10
|
+
while (open.length > 0 && depthAt(open.at(-1)) >= heading.depth)
|
|
11
|
+
open.pop();
|
|
12
|
+
const parent = open.at(-1) ?? -1;
|
|
13
|
+
open.push(index);
|
|
14
|
+
return parent;
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 同じ親の下で、前の見出しと同じ言葉の見出し(markdownlint の MD024 siblings_only)。変更履歴の版ごとの「Added」「Fixed」のように、
|
|
19
|
+
* 親が違えば同じ言葉でもよい。深さが違っても親が同じなら兄弟として比べる(飛んだ深さの見出しも同じ親の下にある)。
|
|
20
|
+
*/
|
|
21
|
+
export const repeatedSiblingHeadings = (headings) => {
|
|
22
|
+
const parents = parentIndexes(headings);
|
|
23
|
+
const seen = new Map();
|
|
24
|
+
return headings.flatMap((heading, index) => {
|
|
25
|
+
const key = headingKey(heading.text);
|
|
26
|
+
const parent = parents[index] ?? -1;
|
|
27
|
+
const siblings = seen.get(parent) ?? new Map();
|
|
28
|
+
seen.set(parent, siblings);
|
|
29
|
+
const first = siblings.get(key);
|
|
30
|
+
if (first === undefined)
|
|
31
|
+
siblings.set(key, heading);
|
|
32
|
+
return first === undefined || key === "" ? [] : [{ heading, first }];
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export const duplicateHeading = (doc) => {
|
|
36
|
+
const lines = linesOf(doc.source);
|
|
37
|
+
return repeatedSiblingHeadings(writtenHeadings(doc)).map(({ heading, first }) => findingAt(doc, heading, { heading: heading.text, firstLine: lineNumberAt(lines, first.start) ?? 0 }));
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=duplicate-heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicate-heading.js","sourceRoot":"","sources":["../../src/detectors/duplicate-heading.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Detector, MarkupHeading } from "../plugin.ts";
|
|
2
|
+
/**
|
|
3
|
+
* 中身の無い節。見出しのすぐ後ろに、同じ深さか浅い見出しが来るもの(remark-lint の no-empty-sections)。
|
|
4
|
+
* 深い見出しが続くのは、節を小さな節に分けただけなので中身がある。文書の最後の見出しは、後ろに何も無ければ空。
|
|
5
|
+
*/
|
|
6
|
+
export declare const emptySections: (source: string, headings: readonly MarkupHeading[]) => MarkupHeading[];
|
|
7
|
+
export declare const emptySection: Detector;
|
|
8
|
+
//# sourceMappingURL=empty-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-section.d.ts","sourceRoot":"","sources":["../../src/detectors/empty-section.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAE,MAAM,cAAc,CAAC;AAQrE;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,UAAU,SAAS,aAAa,EAAE,KAAG,aAAa,EAK5F,CAAC;AAEL,eAAO,MAAM,YAAY,EAAE,QAC2F,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { findingAt, writtenHeadings } from "./markup-finding.js";
|
|
2
|
+
/** HTML のコメント(「<!-- 後で書く -->」)。読み手には見えない。一つずつ外す(間の本文ごと一つのコメントと読まない)。 */
|
|
3
|
+
const HTML_COMMENT = /<!--[\s\S]*?-->/gu;
|
|
4
|
+
const showsNothing = (written) => written.replace(HTML_COMMENT, "").trim() === "";
|
|
5
|
+
/**
|
|
6
|
+
* 中身の無い節。見出しのすぐ後ろに、同じ深さか浅い見出しが来るもの(remark-lint の no-empty-sections)。
|
|
7
|
+
* 深い見出しが続くのは、節を小さな節に分けただけなので中身がある。文書の最後の見出しは、後ろに何も無ければ空。
|
|
8
|
+
*/
|
|
9
|
+
export const emptySections = (source, headings) => headings.filter((heading, index) => {
|
|
10
|
+
const next = headings[index + 1];
|
|
11
|
+
if (next !== undefined && next.depth > heading.depth)
|
|
12
|
+
return false;
|
|
13
|
+
return showsNothing(source.slice(heading.end, next?.start ?? source.length));
|
|
14
|
+
});
|
|
15
|
+
export const emptySection = (doc) => emptySections(doc.source, writtenHeadings(doc)).map((heading) => findingAt(doc, heading, { heading: heading.text }));
|
|
16
|
+
//# sourceMappingURL=empty-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-section.js","sourceRoot":"","sources":["../../src/detectors/empty-section.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE,wEAAwE;AACxE,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAEnG;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,QAAkC,EAAmB,EAAE,CACnG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;IACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,YAAY,GAAa,CAAC,GAAG,EAAa,EAAE,CACvD,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Detector, Sentence } from "../plugin.ts";
|
|
2
|
+
/**
|
|
3
|
+
* 比べる組。英字と数字を分け、一字だけの並びと二字以上の並びも分ける。「1桁は全角、2桁以上は半角」「一字の英字(A案)は全角」と
|
|
4
|
+
* 決めている文書は、組の中ではそろっている。
|
|
5
|
+
*/
|
|
6
|
+
export type AlnumKind = "letter" | "letters" | "digit" | "digits";
|
|
7
|
+
export type AlnumRun = {
|
|
8
|
+
readonly kind: AlnumKind;
|
|
9
|
+
readonly fullwidth: boolean;
|
|
10
|
+
readonly written: string;
|
|
11
|
+
readonly offset: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* 文の中の英字・数字の並び。全角と半角が混ざった並び、鉤括弧で引いたものの中、項目と注の番号、箇条書きの頭の番号、版の番号の続き(TLS1.2 の 2)は数えない。
|
|
15
|
+
* offset は文書の中の位置。
|
|
16
|
+
*/
|
|
17
|
+
export declare const alnumRunsIn: (sentence: Sentence, source: string) => AlnumRun[];
|
|
18
|
+
/**
|
|
19
|
+
* 英字・数字を全角で書くか半角で書くか。組(英字一字・英字の語・数字一字・数字の並び)ごとに、文書の中で少ないほうを指摘する。
|
|
20
|
+
* 少ないほうが組の limit パーセントを超えるほど多いなら、文書が使い分けている(数え方の語や見出しの書き方)と見て言わない。
|
|
21
|
+
* どちらが正しいかは決めない。
|
|
22
|
+
*/
|
|
23
|
+
export declare const fullwidthAlnum: Detector;
|
|
24
|
+
//# sourceMappingURL=fullwidth-alnum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fullwidth-alnum.d.ts","sourceRoot":"","sources":["../../src/detectors/fullwidth-alnum.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,QAAQ,EAAQ,MAAM,cAAc,CAAC;AAWtE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAiDlE,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpI;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU,QAAQ,EAAE,QAAQ,MAAM,KAAG,QAAQ,EAUxE,CAAC;AAuBF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,QAS5B,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { minorityWithin } from "../orthography.js";
|
|
2
|
+
import { QUOTATION_MARKS, isWithinAny, quotedSpans } from "../quoted-span.js";
|
|
3
|
+
import { isCitation } from "./kutoten-consistency.js";
|
|
4
|
+
/** 英字と数字の並び。半角(ABC123)と全角(ABC123)。 */
|
|
5
|
+
const ALNUM_RUN = /[A-Za-z0-9A-Za-z0-9]+/gu;
|
|
6
|
+
const FULLWIDTH = /^[A-Za-z0-9]+$/u;
|
|
7
|
+
const HALFWIDTH = /^[A-Za-z0-9]+$/u;
|
|
8
|
+
const LETTER = /[A-Za-zA-Za-z]/u;
|
|
9
|
+
const kindOf = (run) => {
|
|
10
|
+
const single = [...run].length === 1;
|
|
11
|
+
if (LETTER.test(run))
|
|
12
|
+
return single ? "letter" : "letters";
|
|
13
|
+
return single ? "digit" : "digits";
|
|
14
|
+
};
|
|
15
|
+
/** 項目の番号の並び(行の頭や括弧の後ろの「1.」「(1)」「1)」)。項目の印で、本文の数ではない。 */
|
|
16
|
+
const LABEL_BEFORE = /(?:^|[\s、,,(([[])$/u;
|
|
17
|
+
const LABEL_AFTER = /^[..))]\]]/u;
|
|
18
|
+
const LABEL_REACH = 1;
|
|
19
|
+
/** 注の印(「※1」「(※3)」)。注どうしで決まった書き方をする。 */
|
|
20
|
+
const NOTE_MARK = /[※**]$/u;
|
|
21
|
+
/** 箇条書きの項目の頭(「- 4「勧告」…」)。目次の番号で、本文の数ではない。 */
|
|
22
|
+
const LIST_ITEM_HEAD = /^[ \t]*(?:[-*+]|\d{1,9}[.)])[ \t]+$/u;
|
|
23
|
+
const isLabel = (text, start, end) => (LABEL_BEFORE.test(text.slice(Math.max(0, start - LABEL_REACH), start)) && LABEL_AFTER.test(text.slice(end, end + LABEL_REACH))) ||
|
|
24
|
+
NOTE_MARK.test(text.slice(0, start));
|
|
25
|
+
/**
|
|
26
|
+
* メールアドレスやドメイン名の一部(support@example.com の support・example・com)。字の幅を変えると宛先が壊れる。
|
|
27
|
+
* 点の向こうが英字のときだけ名前の区切りと見る。数の小数点(39.4)は数として数える。
|
|
28
|
+
*/
|
|
29
|
+
const LETTER_BESIDE = /[A-Za-zA-Za-z]/u;
|
|
30
|
+
const isInAddress = (text, start, end) => text.charAt(start - 1) === "@" ||
|
|
31
|
+
text.charAt(end) === "@" ||
|
|
32
|
+
(text.charAt(start - 1) === "." && LETTER_BESIDE.test(text.charAt(start - 2))) ||
|
|
33
|
+
(text.charAt(end) === "." && LETTER_BESIDE.test(text.charAt(end + 1)));
|
|
34
|
+
/** 英字の後ろに数字を続けた名前(TLS1、Python3)と、その後ろの点でつないだ番号(Python3.12)。版の番号の頭になる。 */
|
|
35
|
+
const VERSION_SO_FAR = /[A-Za-zA-Za-z][0-90-9]+(?:\.[0-90-9]+)*$/u;
|
|
36
|
+
/** 版の番号を後ろ向きに読む長さの上限。長い行で点ごとに行の頭から読み直さない。 */
|
|
37
|
+
const VERSION_REACH = 32;
|
|
38
|
+
/** 版の番号の続き(TLS1.2 の 2、Python3.12.4 の 12 と 4)。名前の数字と同じ幅なら、幅は名前に従い、文書の数の書き方の票にはしない(TLS1.2 の 2 は数える)。 */
|
|
39
|
+
const continuesVersion = (text, start, run) => text.charAt(start - 1) === "." &&
|
|
40
|
+
FULLWIDTH.test(run) === FULLWIDTH.test(text.charAt(start - 2)) &&
|
|
41
|
+
VERSION_SO_FAR.test(text.slice(Math.max(0, start - 1 - VERSION_REACH), start - 1));
|
|
42
|
+
const isListItemNumber = (source, offset) => LIST_ITEM_HEAD.test(source.slice(source.lastIndexOf("\n", offset - 1) + 1, offset));
|
|
43
|
+
/**
|
|
44
|
+
* 文の中の英字・数字の並び。全角と半角が混ざった並び、鉤括弧で引いたものの中、項目と注の番号、箇条書きの頭の番号、版の番号の続き(TLS1.2 の 2)は数えない。
|
|
45
|
+
* offset は文書の中の位置。
|
|
46
|
+
*/
|
|
47
|
+
export const alnumRunsIn = (sentence, source) => {
|
|
48
|
+
const quoted = quotedSpans(sentence.text, QUOTATION_MARKS);
|
|
49
|
+
return [...sentence.text.matchAll(ALNUM_RUN)]
|
|
50
|
+
.filter((match) => FULLWIDTH.test(match[0]) || HALFWIDTH.test(match[0]))
|
|
51
|
+
.filter((match) => !isWithinAny(quoted, { start: match.index, end: match.index + match[0].length }))
|
|
52
|
+
.filter((match) => !isLabel(sentence.text, match.index, match.index + match[0].length))
|
|
53
|
+
.filter((match) => !isListItemNumber(source, sentence.span.start + match.index))
|
|
54
|
+
.filter((match) => !isInAddress(sentence.text, match.index, match.index + match[0].length))
|
|
55
|
+
.filter((match) => !continuesVersion(sentence.text, match.index, match[0]))
|
|
56
|
+
.map((match) => ({ kind: kindOf(match[0]), fullwidth: FULLWIDTH.test(match[0]), written: match[0], offset: sentence.span.start + match.index }));
|
|
57
|
+
};
|
|
58
|
+
const KINDS = ["letter", "letters", "digit", "digits"];
|
|
59
|
+
/** 半角の英数字を全角に(NFKC の逆)。 */
|
|
60
|
+
const FULLWIDTH_OFFSET = 0xfee0;
|
|
61
|
+
const toFullwidth = (text) => text.replace(/[A-Za-z0-9]/gu, (char) => String.fromCodePoint((char.codePointAt(0) ?? 0) + FULLWIDTH_OFFSET));
|
|
62
|
+
/** 同じ並びの、もう一方の幅の書き方。 */
|
|
63
|
+
const otherWidth = (run) => (run.fullwidth ? run.written.normalize("NFKC") : toFullwidth(run.written));
|
|
64
|
+
const findingOf = ({ sentence, run }, count, of, limit) => ({
|
|
65
|
+
rule: "",
|
|
66
|
+
severity: "warning",
|
|
67
|
+
line: 0,
|
|
68
|
+
column: 0,
|
|
69
|
+
quote: sentence.text.trim(),
|
|
70
|
+
values: { written: run.written, other: otherWidth(run), count, of, limit, offset: run.offset },
|
|
71
|
+
variant: run.fullwidth ? "fullwidth" : "halfwidth",
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* 英字・数字を全角で書くか半角で書くか。組(英字一字・英字の語・数字一字・数字の並び)ごとに、文書の中で少ないほうを指摘する。
|
|
75
|
+
* 少ないほうが組の limit パーセントを超えるほど多いなら、文書が使い分けている(数え方の語や見出しの書き方)と見て言わない。
|
|
76
|
+
* どちらが正しいかは決めない。
|
|
77
|
+
*/
|
|
78
|
+
export const fullwidthAlnum = (doc, options) => {
|
|
79
|
+
const located = doc.sentences
|
|
80
|
+
.filter((sentence) => sentence.embeddedLanguage === undefined && !isCitation(sentence, doc.source))
|
|
81
|
+
.flatMap((sentence) => alnumRunsIn(sentence, doc.source).map((run) => ({ sentence, run })));
|
|
82
|
+
return KINDS.flatMap((kind) => {
|
|
83
|
+
const ofKind = located.filter(({ run }) => run.kind === kind);
|
|
84
|
+
const odd = minorityWithin(ofKind, ({ run }) => run.fullwidth, options.limit);
|
|
85
|
+
return odd.map((entry) => findingOf(entry, odd.length, ofKind.length, options.limit));
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=fullwidth-alnum.js.map
|