chaffjs 0.20.0 → 0.21.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 +5 -4
- package/dist/api.d.ts +16 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli-text.d.ts +2 -0
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +14 -5
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/command-help.d.ts +7 -0
- package/dist/command-help.d.ts.map +1 -0
- package/dist/command-help.js +18 -0
- package/dist/command-help.js.map +1 -0
- package/dist/commands/eval.js +2 -2
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/fix-plan.d.ts.map +1 -1
- package/dist/commands/fix-plan.js +11 -1
- package/dist/commands/fix-plan.js.map +1 -1
- package/dist/commands/help.d.ts +4 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +7 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/config/load.d.ts +2 -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.js +2 -2
- package/dist/config/option-problems.js.map +1 -1
- package/dist/config/rule-problems.js +2 -2
- package/dist/config/rule-problems.js.map +1 -1
- package/dist/custom/checked.d.ts +9 -0
- package/dist/custom/checked.d.ts.map +1 -0
- package/dist/custom/checked.js +3 -0
- package/dist/custom/checked.js.map +1 -0
- package/dist/custom/dsl-fields.d.ts +27 -0
- package/dist/custom/dsl-fields.d.ts.map +1 -0
- package/dist/custom/dsl-fields.js +86 -0
- package/dist/custom/dsl-fields.js.map +1 -0
- package/dist/custom/load.d.ts.map +1 -1
- package/dist/custom/load.js +2 -0
- package/dist/custom/load.js.map +1 -1
- package/dist/custom/parse.d.ts +14 -3
- package/dist/custom/parse.d.ts.map +1 -1
- package/dist/custom/parse.js +44 -40
- package/dist/custom/parse.js.map +1 -1
- package/dist/custom/problems.d.ts.map +1 -1
- package/dist/custom/problems.js +11 -1
- package/dist/custom/problems.js.map +1 -1
- package/dist/detectors/blank-structure.d.ts.map +1 -1
- package/dist/detectors/blank-structure.js +6 -4
- package/dist/detectors/blank-structure.js.map +1 -1
- package/dist/detectors/clause-shape.d.ts +22 -0
- package/dist/detectors/clause-shape.d.ts.map +1 -0
- package/dist/detectors/clause-shape.js +149 -0
- package/dist/detectors/clause-shape.js.map +1 -0
- package/dist/detectors/code-fences.d.ts +34 -0
- package/dist/detectors/code-fences.d.ts.map +1 -0
- package/dist/detectors/code-fences.js +100 -0
- package/dist/detectors/code-fences.js.map +1 -0
- package/dist/detectors/cross-definitions.d.ts +4 -0
- package/dist/detectors/cross-definitions.d.ts.map +1 -0
- package/dist/detectors/cross-definitions.js +43 -0
- package/dist/detectors/cross-definitions.js.map +1 -0
- package/dist/detectors/cross-facts.d.ts +4 -0
- package/dist/detectors/cross-facts.d.ts.map +1 -0
- package/dist/detectors/cross-facts.js +53 -0
- package/dist/detectors/cross-facts.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-duplicate-definition.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-duplicate-definition.js.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts +3 -0
- package/dist/detectors/cross-registry/cross-doc-fact-conflict.d.ts.map +1 -0
- package/dist/detectors/cross-registry/cross-doc-fact-conflict.js +3 -0
- package/dist/detectors/cross-registry/cross-doc-fact-conflict.js.map +1 -0
- package/dist/detectors/custom.d.ts.map +1 -1
- package/dist/detectors/custom.js +4 -1
- package/dist/detectors/custom.js.map +1 -1
- package/dist/detectors/defined-term-form.d.ts +25 -0
- package/dist/detectors/defined-term-form.d.ts.map +1 -0
- package/dist/detectors/defined-term-form.js +170 -0
- package/dist/detectors/defined-term-form.js.map +1 -0
- package/dist/detectors/email-letter.d.ts +46 -0
- package/dist/detectors/email-letter.d.ts.map +1 -0
- package/dist/detectors/email-letter.js +234 -0
- package/dist/detectors/email-letter.js.map +1 -0
- package/dist/detectors/impossible-date.d.ts +20 -0
- package/dist/detectors/impossible-date.d.ts.map +1 -0
- package/dist/detectors/impossible-date.js +105 -0
- package/dist/detectors/impossible-date.js.map +1 -0
- package/dist/detectors/impossible-time.d.ts +18 -0
- package/dist/detectors/impossible-time.d.ts.map +1 -0
- package/dist/detectors/impossible-time.js +116 -0
- package/dist/detectors/impossible-time.js.map +1 -0
- package/dist/detectors/link-shape.d.ts +11 -0
- package/dist/detectors/link-shape.d.ts.map +1 -0
- package/dist/detectors/link-shape.js +56 -0
- package/dist/detectors/link-shape.js.map +1 -0
- package/dist/detectors/mark-shape.d.ts +53 -0
- package/dist/detectors/mark-shape.d.ts.map +1 -0
- package/dist/detectors/mark-shape.js +160 -0
- package/dist/detectors/mark-shape.js.map +1 -0
- package/dist/detectors/registry/adverb-polarity.d.ts +3 -0
- package/dist/detectors/registry/adverb-polarity.d.ts.map +1 -0
- package/dist/detectors/registry/adverb-polarity.js +3 -0
- package/dist/detectors/registry/adverb-polarity.js.map +1 -0
- package/dist/detectors/registry/attachment-missing.d.ts +3 -0
- package/dist/detectors/registry/attachment-missing.d.ts.map +1 -0
- package/dist/detectors/registry/attachment-missing.js +3 -0
- package/dist/detectors/registry/attachment-missing.js.map +1 -0
- package/dist/detectors/registry/bare-url-mix.d.ts +3 -0
- package/dist/detectors/registry/bare-url-mix.d.ts.map +1 -0
- package/dist/detectors/registry/bare-url-mix.js +3 -0
- package/dist/detectors/registry/bare-url-mix.js.map +1 -0
- package/dist/detectors/registry/caps-shouting.d.ts +3 -0
- package/dist/detectors/registry/caps-shouting.d.ts.map +1 -0
- package/dist/detectors/registry/caps-shouting.js +3 -0
- package/dist/detectors/registry/caps-shouting.js.map +1 -0
- package/dist/detectors/registry/code-fence-language.d.ts +3 -0
- package/dist/detectors/registry/code-fence-language.d.ts.map +1 -0
- package/dist/detectors/registry/code-fence-language.js +3 -0
- package/dist/detectors/registry/code-fence-language.js.map +1 -0
- package/dist/detectors/registry/defined-name-repeated.d.ts +3 -0
- package/dist/detectors/registry/defined-name-repeated.d.ts.map +1 -0
- package/dist/detectors/registry/defined-name-repeated.js +3 -0
- package/dist/detectors/registry/defined-name-repeated.js.map +1 -0
- package/dist/detectors/registry/defined-term-form.d.ts +3 -0
- package/dist/detectors/registry/defined-term-form.d.ts.map +1 -0
- package/dist/detectors/registry/defined-term-form.js +3 -0
- package/dist/detectors/registry/defined-term-form.js.map +1 -0
- package/dist/detectors/registry/email-frame.d.ts +3 -0
- package/dist/detectors/registry/email-frame.d.ts.map +1 -0
- package/dist/detectors/registry/email-frame.js +3 -0
- package/dist/detectors/registry/email-frame.js.map +1 -0
- package/dist/detectors/registry/email-subject.d.ts +3 -0
- package/dist/detectors/registry/email-subject.d.ts.map +1 -0
- package/dist/detectors/registry/email-subject.js +3 -0
- package/dist/detectors/registry/email-subject.js.map +1 -0
- package/dist/detectors/registry/ending-run.d.ts +3 -0
- package/dist/detectors/registry/ending-run.d.ts.map +1 -0
- package/dist/detectors/registry/ending-run.js +3 -0
- package/dist/detectors/registry/ending-run.js.map +1 -0
- package/dist/detectors/registry/heading-command.d.ts +3 -0
- package/dist/detectors/registry/heading-command.d.ts.map +1 -0
- package/dist/detectors/registry/heading-command.js +3 -0
- package/dist/detectors/registry/heading-command.js.map +1 -0
- package/dist/detectors/registry/hyphen-dash.d.ts +3 -0
- package/dist/detectors/registry/hyphen-dash.d.ts.map +1 -0
- package/dist/detectors/registry/hyphen-dash.js +3 -0
- package/dist/detectors/registry/hyphen-dash.js.map +1 -0
- package/dist/detectors/registry/image-file-name-alt.d.ts +3 -0
- package/dist/detectors/registry/image-file-name-alt.d.ts.map +1 -0
- package/dist/detectors/registry/image-file-name-alt.js +3 -0
- package/dist/detectors/registry/image-file-name-alt.js.map +1 -0
- package/dist/detectors/registry/impossible-date.d.ts +3 -0
- package/dist/detectors/registry/impossible-date.d.ts.map +1 -0
- package/dist/detectors/registry/impossible-date.js +3 -0
- package/dist/detectors/registry/impossible-date.js.map +1 -0
- package/dist/detectors/registry/impossible-time.d.ts +3 -0
- package/dist/detectors/registry/impossible-time.d.ts.map +1 -0
- package/dist/detectors/registry/impossible-time.js +3 -0
- package/dist/detectors/registry/impossible-time.js.map +1 -0
- package/dist/detectors/registry/latin-abbreviation.d.ts +3 -0
- package/dist/detectors/registry/latin-abbreviation.d.ts.map +1 -0
- package/dist/detectors/registry/latin-abbreviation.js +3 -0
- package/dist/detectors/registry/latin-abbreviation.js.map +1 -0
- package/dist/detectors/registry/link-text-url-mismatch.d.ts +3 -0
- package/dist/detectors/registry/link-text-url-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/link-text-url-mismatch.js +3 -0
- package/dist/detectors/registry/link-text-url-mismatch.js.map +1 -0
- package/dist/detectors/registry/mark-consistency.d.ts +3 -0
- package/dist/detectors/registry/mark-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/mark-consistency.js +3 -0
- package/dist/detectors/registry/mark-consistency.js.map +1 -0
- package/dist/detectors/registry/origin-particle.d.ts +3 -0
- package/dist/detectors/registry/origin-particle.d.ts.map +1 -0
- package/dist/detectors/registry/origin-particle.js +3 -0
- package/dist/detectors/registry/origin-particle.js.map +1 -0
- package/dist/detectors/registry/request-without-deadline.d.ts +3 -0
- package/dist/detectors/registry/request-without-deadline.d.ts.map +1 -0
- package/dist/detectors/registry/request-without-deadline.js +3 -0
- package/dist/detectors/registry/request-without-deadline.js.map +1 -0
- package/dist/detectors/registry/sentence-spacing.d.ts +3 -0
- package/dist/detectors/registry/sentence-spacing.d.ts.map +1 -0
- package/dist/detectors/registry/sentence-spacing.js +3 -0
- package/dist/detectors/registry/sentence-spacing.js.map +1 -0
- package/dist/detectors/registry/shell-prompt.d.ts +3 -0
- package/dist/detectors/registry/shell-prompt.d.ts.map +1 -0
- package/dist/detectors/registry/shell-prompt.js +3 -0
- package/dist/detectors/registry/shell-prompt.js.map +1 -0
- package/dist/detectors/registry/step-statement.d.ts +3 -0
- package/dist/detectors/registry/step-statement.d.ts.map +1 -0
- package/dist/detectors/registry/step-statement.js +3 -0
- package/dist/detectors/registry/step-statement.js.map +1 -0
- package/dist/detectors/registry/unpaired-parallel.d.ts +3 -0
- package/dist/detectors/registry/unpaired-parallel.d.ts.map +1 -0
- package/dist/detectors/registry/unpaired-parallel.js +3 -0
- package/dist/detectors/registry/unpaired-parallel.js.map +1 -0
- package/dist/detectors/request-owner.d.ts +23 -0
- package/dist/detectors/request-owner.d.ts.map +1 -0
- package/dist/detectors/request-owner.js +110 -0
- package/dist/detectors/request-owner.js.map +1 -0
- package/dist/detectors/technical-docs.d.ts +32 -0
- package/dist/detectors/technical-docs.d.ts.map +1 -0
- package/dist/detectors/technical-docs.js +199 -0
- package/dist/detectors/technical-docs.js.map +1 -0
- package/dist/extension/pack-read.d.ts +21 -0
- package/dist/extension/pack-read.d.ts.map +1 -0
- package/dist/extension/pack-read.js +117 -0
- package/dist/extension/pack-read.js.map +1 -0
- package/dist/extension/plugin-load.d.ts.map +1 -1
- package/dist/extension/plugin-load.js +44 -10
- package/dist/extension/plugin-load.js.map +1 -1
- package/dist/extension/plugin-parse.d.ts.map +1 -1
- package/dist/extension/plugin-parse.js +10 -3
- package/dist/extension/plugin-parse.js.map +1 -1
- package/dist/facts/address-values.d.ts +5 -0
- package/dist/facts/address-values.d.ts.map +1 -0
- package/dist/facts/address-values.js +64 -0
- package/dist/facts/address-values.js.map +1 -0
- package/dist/facts/cross-facts.d.ts +20 -0
- package/dist/facts/cross-facts.d.ts.map +1 -0
- package/dist/facts/cross-facts.js +41 -0
- package/dist/facts/cross-facts.js.map +1 -0
- package/dist/fix-plan/chosen-depth.d.ts +10 -0
- package/dist/fix-plan/chosen-depth.d.ts.map +1 -0
- package/dist/fix-plan/chosen-depth.js +24 -0
- package/dist/fix-plan/chosen-depth.js.map +1 -0
- package/dist/fix-plan/mode.d.ts +13 -4
- package/dist/fix-plan/mode.d.ts.map +1 -1
- package/dist/fix-plan/mode.js +38 -7
- package/dist/fix-plan/mode.js.map +1 -1
- package/dist/fix-plan/plan.d.ts +20 -0
- package/dist/fix-plan/plan.d.ts.map +1 -1
- package/dist/fix-plan/plan.js +23 -5
- 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 +24 -0
- package/dist/fix-plan/render.js.map +1 -1
- package/dist/fix-plan/text.d.ts +8 -0
- package/dist/fix-plan/text.d.ts.map +1 -1
- package/dist/fix-plan/text.js +36 -10
- package/dist/fix-plan/text.js.map +1 -1
- package/dist/genre-load.d.ts +1 -1
- package/dist/genre-load.d.ts.map +1 -1
- package/dist/genre-load.js +7 -4
- package/dist/genre-load.js.map +1 -1
- package/dist/genre-parse.d.ts +6 -0
- package/dist/genre-parse.d.ts.map +1 -1
- package/dist/genre-parse.js +18 -0
- package/dist/genre-parse.js.map +1 -1
- package/dist/init.js +10 -10
- package/dist/init.js.map +1 -1
- package/dist/known-genres.d.ts +8 -0
- package/dist/known-genres.d.ts.map +1 -0
- package/dist/known-genres.js +17 -0
- package/dist/known-genres.js.map +1 -0
- package/dist/link-shape.d.ts +20 -0
- package/dist/link-shape.d.ts.map +1 -0
- package/dist/link-shape.js +58 -0
- package/dist/link-shape.js.map +1 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +15 -4
- package/dist/reasons.js.map +1 -1
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +11 -2
- package/dist/render/explain.js.map +1 -1
- package/dist/render/friendly.js +1 -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 +12 -3
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/rules-table.js +6 -6
- package/dist/render/rules-table.js.map +1 -1
- package/dist/render/semantic.js +2 -2
- package/dist/render/semantic.js.map +1 -1
- package/dist/render/suppressions.js +2 -2
- package/dist/render/suppressions.js.map +1 -1
- package/dist/rewrite-depth.d.ts +22 -0
- package/dist/rewrite-depth.d.ts.map +1 -0
- package/dist/rewrite-depth.js +42 -0
- package/dist/rewrite-depth.js.map +1 -0
- package/dist/rule-fields.d.ts +23 -0
- package/dist/rule-fields.d.ts.map +1 -0
- package/dist/rule-fields.js +64 -0
- package/dist/rule-fields.js.map +1 -0
- package/dist/rule-guide.d.ts +3 -0
- package/dist/rule-guide.d.ts.map +1 -1
- package/dist/rule-guide.js +6 -0
- package/dist/rule-guide.js.map +1 -1
- package/dist/rule-load.d.ts.map +1 -1
- package/dist/rule-load.js +13 -5
- package/dist/rule-load.js.map +1 -1
- package/dist/rule-offs.d.ts +14 -0
- package/dist/rule-offs.d.ts.map +1 -0
- package/dist/rule-offs.js +45 -0
- package/dist/rule-offs.js.map +1 -0
- package/dist/structure/build.d.ts.map +1 -1
- package/dist/structure/build.js +14 -1
- package/dist/structure/build.js.map +1 -1
- package/dist/structure/cross-definitions.d.ts +23 -0
- package/dist/structure/cross-definitions.d.ts.map +1 -0
- package/dist/structure/cross-definitions.js +34 -0
- package/dist/structure/cross-definitions.js.map +1 -0
- package/genres.yaml +14 -313
- package/package.json +3 -3
- package/rules/absolute-exception.yaml +3 -1
- package/rules/abstract-length.yaml +7 -1
- package/rules/acronym-expansion-conflict.yaml +2 -1
- package/rules/adverb-overuse.yaml +7 -1
- package/rules/adverb-without-negation.yaml +60 -0
- package/rules/adversative-ga-repeat.yaml +2 -1
- package/rules/agentless-passive.yaml +10 -1
- package/rules/agreement-slip.yaml +4 -1
- package/rules/ai-generated-composite.yaml +6 -1
- package/rules/ai-structure.yaml +8 -2
- package/rules/ai-tell.yaml +7 -1
- package/rules/all-caps-shouting.yaml +61 -0
- package/rules/announced-count-mismatch.yaml +3 -1
- package/rules/announcing-opener.yaml +7 -1
- package/rules/article-sound.yaml +6 -2
- package/rules/assistant-residue.yaml +4 -1
- package/rules/attachment-not-attached.yaml +112 -0
- package/rules/baito-keigo.yaml +64 -0
- package/rules/bare-url-mix.yaml +86 -0
- package/rules/bold-density.yaml +1 -0
- package/rules/bold-label-list.yaml +9 -1
- package/rules/bracket-nesting.yaml +2 -1
- package/rules/bracket-width-consistency.yaml +64 -0
- package/rules/broken-link.yaml +1 -1
- package/rules/chat-citation-residue.yaml +2 -1
- package/rules/citation-reference-mismatch.yaml +7 -1
- package/rules/citation-style-mix.yaml +7 -1
- package/rules/clause-chain.yaml +6 -1
- package/rules/closing-cliche.yaml +7 -0
- package/rules/code-fence-language-mix.yaml +176 -0
- package/rules/colloquial-opener.yaml +62 -0
- package/rules/colon-lead-in.yaml +7 -1
- package/rules/concrete-evidence-density.yaml +6 -0
- package/rules/contraction-consistency.yaml +4 -1
- package/rules/contrast-framing.yaml +7 -1
- package/rules/cross-doc-duplicate-definition.yaml +70 -0
- package/rules/cross-doc-fact-conflict.yaml +64 -0
- package/rules/cushion-phrase-density.yaml +8 -1
- package/rules/dangling-figure-reference.yaml +3 -1
- package/rules/dangling-reference.yaml +3 -1
- package/rules/date-format-consistency.yaml +3 -2
- package/rules/date-order.yaml +3 -1
- package/rules/date-range-reversed.yaml +3 -1
- package/rules/date-weekday-mismatch.yaml +3 -1
- package/rules/date-without-year.yaml +4 -3
- package/rules/defined-name-repeated.yaml +97 -0
- package/rules/defined-term-form.yaml +113 -0
- package/rules/demonstrative-opener-run.yaml +2 -1
- package/rules/double-keigo.yaml +6 -1
- package/rules/double-negative.yaml +5 -1
- package/rules/doubled-nado.yaml +2 -1
- package/rules/doubled-punctuation.yaml +1 -1
- package/rules/doubled-word.yaml +4 -1
- package/rules/duplicate-definition.yaml +3 -1
- package/rules/duplicate-heading.yaml +1 -1
- package/rules/duration-mismatch.yaml +2 -1
- package/rules/elapsed-years-mismatch.yaml +4 -1
- package/rules/email-greeting-closing.yaml +122 -0
- package/rules/email-subject-length.yaml +112 -0
- package/rules/emoji-density.yaml +3 -1
- package/rules/emoji-heading.yaml +7 -1
- package/rules/empty-intensifier.yaml +4 -0
- package/rules/empty-list-item.yaml +2 -1
- package/rules/empty-section.yaml +1 -1
- package/rules/empty-table-cell.yaml +2 -1
- package/rules/excessive-hedging.yaml +7 -1
- package/rules/exclamation-width-consistency.yaml +64 -0
- package/rules/expletive-construction.yaml +7 -1
- package/rules/fact-conflict.yaml +4 -1
- package/rules/figure-reference-order.yaml +7 -1
- package/rules/fullwidth-alnum-consistency.yaml +2 -2
- package/rules/hankaku-kana.yaml +1 -1
- package/rules/heading-command-missing.yaml +109 -0
- package/rules/heading-echo.yaml +6 -1
- package/rules/heading-level-skip.yaml +3 -3
- package/rules/heading-numbering-mix.yaml +4 -3
- package/rules/hiragana-fukushi.yaml +4 -1
- package/rules/homophone-slip.yaml +5 -1
- package/rules/humble-for-others.yaml +63 -0
- package/rules/hyphen-as-dash.yaml +59 -0
- package/rules/idiom-misuse.yaml +4 -1
- package/rules/image-file-name-alt.yaml +83 -0
- package/rules/impossible-date.yaml +79 -0
- package/rules/impossible-time.yaml +76 -0
- package/rules/internal-jargon.yaml +1 -1
- package/rules/invisible-character.yaml +1 -1
- package/rules/katakana-density.yaml +2 -1
- package/rules/katakana-long-vowel.yaml +1 -1
- package/rules/known-misspelling.yaml +2 -1
- package/rules/kutoten-consistency.yaml +1 -1
- package/rules/latin-abbreviation-form.yaml +58 -0
- package/rules/latin-spacing.yaml +6 -2
- package/rules/link-text-url-mismatch.yaml +72 -0
- package/rules/list-item-form-mix.yaml +7 -1
- package/rules/max-kanji-continuous.yaml +10 -2
- package/rules/max-paragraph-length.yaml +4 -1
- package/rules/max-sentence-length.yaml +29 -21
- package/rules/max-ten.yaml +4 -1
- package/rules/misconversion.yaml +2 -1
- package/rules/modal-conflict.yaml +2 -1
- package/rules/name-variant.yaml +4 -3
- package/rules/ngram-repetition.yaml +5 -0
- package/rules/no-doubled-joshi.yaml +5 -1
- package/rules/no-em-dash.yaml +4 -1
- package/rules/no-lead.yaml +6 -1
- package/rules/no-mixed-desumasu.yaml +5 -2
- package/rules/no-nakaguro-parallel.yaml +3 -0
- package/rules/nominalization.yaml +5 -1
- package/rules/number-style-consistency.yaml +6 -1
- package/rules/number-without-unit.yaml +2 -1
- package/rules/numbering-gap.yaml +1 -1
- package/rules/one-sentence-paragraph-run.yaml +5 -1
- package/rules/orthographic-variant.yaml +4 -1
- package/rules/outside-announced-list.yaml +2 -1
- package/rules/oxford-comma-consistency.yaml +3 -1
- package/rules/padded-intro.yaml +7 -0
- package/rules/paragraph-length-variance.yaml +7 -1
- package/rules/paragraph-restatement.yaml +6 -1
- package/rules/percent-sum-mismatch.yaml +3 -1
- package/rules/person-consistency.yaml +4 -1
- package/rules/preamble-length.yaml +6 -0
- package/rules/preferred-term.yaml +1 -1
- package/rules/proper-noun-density.yaml +8 -1
- package/rules/quote-style-consistency.yaml +66 -0
- package/rules/ra-nuki.yaml +4 -1
- package/rules/redundant-expression.yaml +4 -1
- package/rules/reference-title-mismatch.yaml +4 -3
- package/rules/reference-topic-missing.yaml +2 -1
- package/rules/relative-date-mismatch.yaml +2 -1
- package/rules/repeated-conjunction.yaml +4 -1
- package/rules/repeated-sentence-ending.yaml +62 -0
- package/rules/repeated-sentence-head.yaml +4 -0
- package/rules/request-without-deadline.yaml +92 -0
- package/rules/required-sections.yaml +1 -1
- package/rules/requirement-modal.yaml +1 -1
- package/rules/requirement-smell.yaml +12 -4
- package/rules/rule-of-three.yaml +8 -1
- package/rules/sasete-itadaku.yaml +7 -1
- package/rules/section-length-uniformity.yaml +7 -1
- package/rules/sentence-initial-conjunction-run.yaml +5 -1
- package/rules/sentence-initial-so.yaml +6 -1
- package/rules/sentence-rhythm.yaml +8 -1
- package/rules/sentence-spacing-consistency.yaml +63 -0
- package/rules/shell-prompt-mix.yaml +128 -0
- package/rules/space-before-punctuation.yaml +1 -1
- package/rules/spelling-consistency.yaml +3 -1
- package/rules/step-statement-mix.yaml +76 -0
- package/rules/stock-transition.yaml +8 -1
- package/rules/stray-space.yaml +2 -2
- package/rules/summary-fact-mismatch.yaml +4 -1
- package/rules/table-header-variant.yaml +2 -1
- package/rules/taigen-dome-in-prose.yaml +6 -0
- package/rules/tari-unpaired.yaml +58 -0
- package/rules/teki-overuse.yaml +2 -1
- package/rules/title-case-consistency.yaml +1 -1
- package/rules/title-length.yaml +7 -1
- package/rules/topic-predicate-distance.yaml +6 -1
- package/rules/total-mismatch.yaml +3 -1
- package/rules/translationese-density.yaml +4 -1
- package/rules/unbalanced-bracket.yaml +3 -3
- package/rules/undefined-acronym.yaml +8 -1
- package/rules/unfilled-placeholder.yaml +1 -1
- package/rules/unit-mismatch.yaml +2 -1
- package/rules/unknown-word.yaml +4 -1
- package/rules/unqualified-superlative.yaml +6 -1
- package/rules/unused-definition.yaml +4 -3
- package/rules/url-run-on.yaml +1 -1
- package/rules/use-before-definition.yaml +4 -3
- package/rules/vague-figure-reference.yaml +3 -1
- package/rules/vague-link-text.yaml +2 -1
- package/rules/vague-word-density.yaml +2 -1
- package/rules/very-adjective.yaml +5 -1
- package/rules/weasel-word.yaml +6 -1
- package/rules/wordy-phrase.yaml +6 -1
- package/rules/yori-as-from.yaml +61 -0
- package/src/api.ts +13 -1
- package/src/cli-text.ts +18 -7
- package/src/cli.ts +3 -0
- package/src/command-help.ts +26 -0
- package/src/commands/eval.ts +2 -2
- package/src/commands/fix-plan.ts +13 -1
- package/src/commands/help.ts +8 -0
- package/src/config/load.ts +3 -0
- package/src/config/option-problems.ts +2 -2
- package/src/config/rule-problems.ts +2 -2
- package/src/custom/checked.ts +8 -0
- package/src/custom/dsl-fields.ts +102 -0
- package/src/custom/load.ts +2 -0
- package/src/custom/parse.ts +72 -50
- package/src/custom/problems.ts +18 -2
- package/src/detectors/blank-structure.ts +12 -4
- package/src/detectors/clause-shape.ts +199 -0
- package/src/detectors/code-fences.ts +113 -0
- package/src/detectors/cross-definitions.ts +49 -0
- package/src/detectors/cross-facts.ts +60 -0
- package/src/detectors/cross-registry/cross-doc-duplicate-definition.ts +4 -0
- package/src/detectors/cross-registry/cross-doc-fact-conflict.ts +4 -0
- package/src/detectors/custom.ts +10 -2
- package/src/detectors/defined-term-form.ts +200 -0
- package/src/detectors/email-letter.ts +262 -0
- package/src/detectors/impossible-date.ts +141 -0
- package/src/detectors/impossible-time.ts +151 -0
- package/src/detectors/link-shape.ts +70 -0
- package/src/detectors/mark-shape.ts +202 -0
- package/src/detectors/registry/adverb-polarity.ts +4 -0
- package/src/detectors/registry/attachment-missing.ts +4 -0
- package/src/detectors/registry/bare-url-mix.ts +4 -0
- package/src/detectors/registry/caps-shouting.ts +4 -0
- package/src/detectors/registry/code-fence-language.ts +4 -0
- package/src/detectors/registry/defined-name-repeated.ts +4 -0
- package/src/detectors/registry/defined-term-form.ts +4 -0
- package/src/detectors/registry/email-frame.ts +4 -0
- package/src/detectors/registry/email-subject.ts +4 -0
- package/src/detectors/registry/ending-run.ts +4 -0
- package/src/detectors/registry/heading-command.ts +4 -0
- package/src/detectors/registry/hyphen-dash.ts +4 -0
- package/src/detectors/registry/image-file-name-alt.ts +4 -0
- package/src/detectors/registry/impossible-date.ts +4 -0
- package/src/detectors/registry/impossible-time.ts +4 -0
- package/src/detectors/registry/latin-abbreviation.ts +4 -0
- package/src/detectors/registry/link-text-url-mismatch.ts +4 -0
- package/src/detectors/registry/mark-consistency.ts +4 -0
- package/src/detectors/registry/origin-particle.ts +4 -0
- package/src/detectors/registry/request-without-deadline.ts +4 -0
- package/src/detectors/registry/sentence-spacing.ts +4 -0
- package/src/detectors/registry/shell-prompt.ts +4 -0
- package/src/detectors/registry/step-statement.ts +4 -0
- package/src/detectors/registry/unpaired-parallel.ts +4 -0
- package/src/detectors/request-owner.ts +141 -0
- package/src/detectors/technical-docs.ts +230 -0
- package/src/extension/pack-read.ts +128 -0
- package/src/extension/plugin-load.ts +49 -9
- package/src/extension/plugin-parse.ts +10 -3
- package/src/facts/address-values.ts +74 -0
- package/src/facts/cross-facts.ts +54 -0
- package/src/fix-plan/chosen-depth.ts +28 -0
- package/src/fix-plan/mode.ts +57 -11
- package/src/fix-plan/plan.ts +37 -5
- package/src/fix-plan/render.ts +24 -0
- package/src/fix-plan/text.ts +47 -10
- package/src/genre-load.ts +7 -4
- package/src/genre-parse.ts +19 -0
- package/src/init.ts +10 -10
- package/src/known-genres.ts +19 -0
- package/src/link-shape.ts +62 -0
- package/src/reasons.ts +16 -4
- package/src/render/explain.ts +14 -2
- package/src/render/friendly.ts +1 -1
- package/src/render/rules-json.ts +14 -3
- package/src/render/rules-table.ts +6 -6
- package/src/render/semantic.ts +2 -2
- package/src/render/suppressions.ts +2 -2
- package/src/rewrite-depth.ts +60 -0
- package/src/rule-fields.ts +95 -0
- package/src/rule-guide.ts +9 -0
- package/src/rule-load.ts +10 -4
- package/src/rule-offs.ts +50 -0
- package/src/structure/build.ts +21 -1
- package/src/structure/cross-definitions.ts +60 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
id: email-greeting-closing
|
|
2
|
+
layer: L2
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: email-frame
|
|
5
|
+
severity: info
|
|
6
|
+
|
|
7
|
+
name:
|
|
8
|
+
ja: メールの挨拶か結びが無い
|
|
9
|
+
en: Email without a greeting or a closing
|
|
10
|
+
|
|
11
|
+
why:
|
|
12
|
+
ja: 仕事のメールは、挨拶で始まり結びで終わるのが読み手の期待です。挨拶が無いと用件だけを突きつけられたように読め、結びが無いと途中で切れたように見えます。下書きを貼り付けたときや、前のメールから本文だけを写したときに抜けます。本文の最初の数行に挨拶(お世話になっております、拝啓、Dear)が無いか、最後の数行(名前や連絡先の行を含む)に結び(よろしくお願いいたします、敬具、Best regards)が無いとき指します。語は語彙表から読みます。
|
|
13
|
+
en: 'A work email is expected to open with a greeting and end with a closing. Without the greeting it reads as a bare demand; without the closing it looks cut off. Both go missing when a draft is pasted in or the body is copied from an earlier email. chaff points out a body whose first lines hold no greeting ("Dear", "Hi", "Hello") or whose last lines, the name and contact lines included, hold no closing ("Best regards", "Sincerely", "Thanks"). The words come from a lexicon.'
|
|
14
|
+
|
|
15
|
+
message:
|
|
16
|
+
ja: メールの挨拶か結びがありません
|
|
17
|
+
en: The email has no greeting or no closing
|
|
18
|
+
|
|
19
|
+
messages:
|
|
20
|
+
greeting:
|
|
21
|
+
ja: 書き出しに挨拶がありません
|
|
22
|
+
en: The email does not open with a greeting
|
|
23
|
+
closing:
|
|
24
|
+
ja: 終わりに結びの言葉がありません
|
|
25
|
+
en: The email does not end with a closing
|
|
26
|
+
|
|
27
|
+
how_to_fix:
|
|
28
|
+
ja: 書き出しに「いつもお世話になっております。」のような挨拶を、終わりに「よろしくお願いいたします。」のような結びを足してください。
|
|
29
|
+
en: Open with a greeting such as "Dear Ms Lee," and end with a closing such as "Best regards," before your name.
|
|
30
|
+
|
|
31
|
+
levels: { strict: warning, normal: info, relaxed: info }
|
|
32
|
+
|
|
33
|
+
use_for: [business/email, legal, docs, academic, literature, speech]
|
|
34
|
+
off_for:
|
|
35
|
+
legal: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
36
|
+
docs: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
37
|
+
academic: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
38
|
+
literature: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
39
|
+
speech: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
40
|
+
|
|
41
|
+
group: structure
|
|
42
|
+
summary:
|
|
43
|
+
ja: 仕事のメールで、書き出しの挨拶か終わりの結びが無いもの
|
|
44
|
+
en: A work email that opens without a greeting or ends without a closing
|
|
45
|
+
example:
|
|
46
|
+
ja:
|
|
47
|
+
config: { genre: business/email }
|
|
48
|
+
before: |
|
|
49
|
+
件名: 打ち合わせの日程
|
|
50
|
+
|
|
51
|
+
打ち合わせの日程をお知らせします。10月13日の14時からです。
|
|
52
|
+
|
|
53
|
+
よろしくお願いいたします。
|
|
54
|
+
after: |
|
|
55
|
+
件名: 打ち合わせの日程
|
|
56
|
+
|
|
57
|
+
いつもお世話になっております。打ち合わせの日程をお知らせします。10月13日の14時からです。
|
|
58
|
+
|
|
59
|
+
よろしくお願いいたします。
|
|
60
|
+
en:
|
|
61
|
+
config: { genre: business/email }
|
|
62
|
+
before: |
|
|
63
|
+
Subject: Meeting date
|
|
64
|
+
|
|
65
|
+
The meeting is on 13 October at 14:00.
|
|
66
|
+
|
|
67
|
+
Best regards,
|
|
68
|
+
Ichiro
|
|
69
|
+
after: |
|
|
70
|
+
Subject: Meeting date
|
|
71
|
+
|
|
72
|
+
Dear facilities team,
|
|
73
|
+
|
|
74
|
+
The meeting is on 13 October at 14:00.
|
|
75
|
+
|
|
76
|
+
Best regards,
|
|
77
|
+
Ichiro
|
|
78
|
+
not_flagged:
|
|
79
|
+
ja: 引用した返信(「>」の行)と、ヘッダーと署名(「-- 」の後ろ)は見ません。挨拶と結びの言い方は決めず、語彙表のどれかがあれば足ります。メール・手紙のジャンルでだけ見ます。
|
|
80
|
+
en: 'Quoted replies (lines starting with ">"), the header and the signature after "-- " are not read. Which greeting or closing is used is not decided; any word in the lexicon will do. Only the email and letter genre runs this rule.'
|
|
81
|
+
rewrite:
|
|
82
|
+
depth: light
|
|
83
|
+
ja:
|
|
84
|
+
direction: 足りないほうだけを足してください。挨拶は本文の最初に一文、結びは名前の前に一文です。相手との関係が分からなければ「お世話になっております」「よろしくお願いいたします」を使います。用件の文は変えません。
|
|
85
|
+
pairs:
|
|
86
|
+
- before: 打ち合わせの日程をお知らせします。
|
|
87
|
+
after: いつもお世話になっております。打ち合わせの日程をお知らせします。
|
|
88
|
+
- before: |
|
|
89
|
+
ご都合をお知らせください。
|
|
90
|
+
佐藤
|
|
91
|
+
after: |
|
|
92
|
+
ご都合をお知らせください。
|
|
93
|
+
よろしくお願いいたします。
|
|
94
|
+
佐藤
|
|
95
|
+
keep:
|
|
96
|
+
- 用件の文
|
|
97
|
+
- 署名の名前と連絡先
|
|
98
|
+
avoid:
|
|
99
|
+
- 本文に無い用件や約束を足す
|
|
100
|
+
- 挨拶を何文も重ねる
|
|
101
|
+
en:
|
|
102
|
+
direction: Add only what is missing. The greeting is one line before the body, the closing one line before the name. If the relationship is unclear, use "Dear [name]," and "Best regards,". Leave the body as it is.
|
|
103
|
+
pairs:
|
|
104
|
+
- before: The meeting is on 13 October at 14:00.
|
|
105
|
+
after: |
|
|
106
|
+
Dear facilities team,
|
|
107
|
+
|
|
108
|
+
The meeting is on 13 October at 14:00.
|
|
109
|
+
- before: |
|
|
110
|
+
Let me know which time suits you.
|
|
111
|
+
Ichiro
|
|
112
|
+
after: |
|
|
113
|
+
Let me know which time suits you.
|
|
114
|
+
|
|
115
|
+
Best regards,
|
|
116
|
+
Ichiro
|
|
117
|
+
keep:
|
|
118
|
+
- the body's sentences
|
|
119
|
+
- the name and contact lines
|
|
120
|
+
avoid:
|
|
121
|
+
- adding a request or a promise the body does not make
|
|
122
|
+
- piling up several greetings
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
id: email-subject-length
|
|
2
|
+
layer: L2
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: email-subject
|
|
5
|
+
severity: warning
|
|
6
|
+
|
|
7
|
+
name:
|
|
8
|
+
ja: 件名が空か長すぎる
|
|
9
|
+
en: Subject line empty or too long
|
|
10
|
+
|
|
11
|
+
why:
|
|
12
|
+
ja: 受け手は件名を見て、開くか、いつ読むかを決めます。空の件名は用件が分からず、迷惑メールにも見えます。長い件名は一覧で途中から切れ、肝心の語が見えません。「件名:」「Subject:」の行があるメールだけを見て、その値の字数を数えます。返信や転送でメールソフトが足す「Re:」「Fwd:」は数えません。
|
|
13
|
+
en: 'Recipients decide from the subject whether to open a message and when. An empty subject says nothing and looks like spam; a long one is cut off in the inbox list before its key words. Only an email with a "Subject:" line is checked, and its value is counted in characters. The "Re:" and "Fwd:" a mail program adds are not counted.'
|
|
14
|
+
|
|
15
|
+
message:
|
|
16
|
+
ja: 件名が {count} 字あります({limit} 字まで)
|
|
17
|
+
en: The subject has {count} characters (up to {limit})
|
|
18
|
+
|
|
19
|
+
messages:
|
|
20
|
+
empty:
|
|
21
|
+
ja: 件名が空です
|
|
22
|
+
en: The subject line is empty
|
|
23
|
+
|
|
24
|
+
how_to_fix:
|
|
25
|
+
ja: 件名には、用件と、日付や案件名のような見分けの語だけを書いてください。説明は本文に移します。
|
|
26
|
+
en: Put only the request and a distinguishing word (a date, a project) in the subject, and move the explanation into the body.
|
|
27
|
+
|
|
28
|
+
levels:
|
|
29
|
+
ja: { strict: 20, normal: 30, relaxed: 40 }
|
|
30
|
+
en: { strict: 50, normal: 70, relaxed: 90 }
|
|
31
|
+
|
|
32
|
+
use_for: [business/email, legal, docs, academic, literature, speech]
|
|
33
|
+
off_for:
|
|
34
|
+
legal: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
35
|
+
docs: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
36
|
+
academic: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
37
|
+
literature: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
38
|
+
speech: "An email's greeting, closing, subject and attachments: only the email and letter genre turns these on."
|
|
39
|
+
|
|
40
|
+
group: structure
|
|
41
|
+
summary:
|
|
42
|
+
ja: 「件名:」の行がある仕事のメールで、件名が空か、字数の上限を超えるもの
|
|
43
|
+
en: A work email whose "Subject:" line is empty or longer than the limit
|
|
44
|
+
example:
|
|
45
|
+
ja:
|
|
46
|
+
config: { genre: business/email }
|
|
47
|
+
before: |
|
|
48
|
+
件名: 来週の火曜日に予定している会議室の予約サービスの導入に向けた打ち合わせの日程について
|
|
49
|
+
|
|
50
|
+
いつもお世話になっております。打ち合わせの日程をお知らせします。
|
|
51
|
+
|
|
52
|
+
よろしくお願いいたします。
|
|
53
|
+
after: |
|
|
54
|
+
件名: 打ち合わせの日程(10月13日)
|
|
55
|
+
|
|
56
|
+
いつもお世話になっております。打ち合わせの日程をお知らせします。
|
|
57
|
+
|
|
58
|
+
よろしくお願いいたします。
|
|
59
|
+
en:
|
|
60
|
+
config: { genre: business/email }
|
|
61
|
+
before: |
|
|
62
|
+
Subject: Following up on our conversation last week about the meeting room booking service and a visit
|
|
63
|
+
|
|
64
|
+
Dear facilities team,
|
|
65
|
+
|
|
66
|
+
I would like to visit your office.
|
|
67
|
+
|
|
68
|
+
Best regards,
|
|
69
|
+
Ichiro
|
|
70
|
+
after: |
|
|
71
|
+
Subject: Visit for the room booking service
|
|
72
|
+
|
|
73
|
+
Dear facilities team,
|
|
74
|
+
|
|
75
|
+
I would like to visit your office.
|
|
76
|
+
|
|
77
|
+
Best regards,
|
|
78
|
+
Ichiro
|
|
79
|
+
not_flagged:
|
|
80
|
+
ja: 「件名:」の行が無いメールや手紙、引用した返信の中の件名は見ません。メール・手紙のジャンルでだけ見ます。
|
|
81
|
+
en: 'An email or letter without a "Subject:" line, and subjects inside a quoted reply, are not checked. Only the email and letter genre runs this rule.'
|
|
82
|
+
level_meaning:
|
|
83
|
+
ja: 件名 {limit} 字まで
|
|
84
|
+
en: up to {limit} characters in the subject
|
|
85
|
+
rewrite:
|
|
86
|
+
depth: light
|
|
87
|
+
ja:
|
|
88
|
+
direction: 件名を、用件と見分けの語(日付・案件名・期限)だけに縮めてください。経緯や理由は本文に移します。空の件名には、本文の用件を短く書きます。
|
|
89
|
+
pairs:
|
|
90
|
+
- before: 来週の火曜日に予定している会議室の予約サービスの導入に向けた打ち合わせの日程について
|
|
91
|
+
after: 打ち合わせの日程(10月13日)
|
|
92
|
+
- before: 先日お送りいただいた見積書の内容についての確認とご相談
|
|
93
|
+
after: 見積書の確認(10月分)
|
|
94
|
+
keep:
|
|
95
|
+
- 用件
|
|
96
|
+
- 日付・案件名・期限
|
|
97
|
+
avoid:
|
|
98
|
+
- 本文に無い用件を件名に書く
|
|
99
|
+
- 「至急」「重要」を足す
|
|
100
|
+
en:
|
|
101
|
+
direction: Cut the subject to the request and a distinguishing word (a date, a project, a deadline). Move the background into the body. For an empty subject, state the body's request briefly.
|
|
102
|
+
pairs:
|
|
103
|
+
- before: Following up on our conversation last week about the meeting room booking service and a visit
|
|
104
|
+
after: Visit for the room booking service
|
|
105
|
+
- before: Some questions about the quote you sent us and a few things we would like to discuss
|
|
106
|
+
after: Questions on the October quote
|
|
107
|
+
keep:
|
|
108
|
+
- the request
|
|
109
|
+
- dates, project names and deadlines
|
|
110
|
+
avoid:
|
|
111
|
+
- stating a request the body does not make
|
|
112
|
+
- adding "Urgent" or "Important"
|
package/rules/emoji-density.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: emoji-density
|
|
2
2
|
layer: L1
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: emoji-density
|
|
5
5
|
severity: info
|
|
6
6
|
|
|
@@ -24,6 +24,8 @@ how_to_fix:
|
|
|
24
24
|
levels: { strict: 3, normal: 8, relaxed: 20 }
|
|
25
25
|
|
|
26
26
|
use_for: [blog, business, technical, legal, docs, academic, literature, speech]
|
|
27
|
+
off_for:
|
|
28
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
27
29
|
sources: [zhang-2024]
|
|
28
30
|
|
|
29
31
|
group: readability
|
package/rules/emoji-heading.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: emoji-heading
|
|
2
2
|
layer: L1
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: emoji-heading
|
|
5
5
|
requires: [markdown]
|
|
6
6
|
severity: info
|
|
@@ -25,6 +25,11 @@ how_to_fix:
|
|
|
25
25
|
levels: { strict: 2, normal: 3, relaxed: 5 }
|
|
26
26
|
|
|
27
27
|
use_for: [blog, business, legal, docs, academic, literature, speech]
|
|
28
|
+
off_for:
|
|
29
|
+
legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
|
|
30
|
+
docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
|
|
31
|
+
academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
|
|
32
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
28
33
|
sources: [zhang-2024]
|
|
29
34
|
|
|
30
35
|
group: ai-tells
|
|
@@ -100,6 +105,7 @@ level_meaning:
|
|
|
100
105
|
ja: 絵文字の付いた見出しが {limit} 個あれば指摘
|
|
101
106
|
en: reported once {limit} headings carry an emoji
|
|
102
107
|
rewrite:
|
|
108
|
+
depth: light
|
|
103
109
|
ja:
|
|
104
110
|
direction: 見出しから絵文字を外し、節の中身が分かる言葉にしてください。絵文字が言っていたこと(注意、完了)が要るなら、本文の最初の文で言います。
|
|
105
111
|
pairs:
|
|
@@ -28,6 +28,9 @@ levels:
|
|
|
28
28
|
relaxed: 3
|
|
29
29
|
|
|
30
30
|
use_for: [blog, business, technical, legal, docs, academic, literature, speech]
|
|
31
|
+
off_for:
|
|
32
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
33
|
+
speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
|
|
31
34
|
|
|
32
35
|
group: wording
|
|
33
36
|
summary:
|
|
@@ -48,6 +51,7 @@ level_meaning:
|
|
|
48
51
|
ja: 当てはまる言い回しが {limit} 箇所あれば指摘
|
|
49
52
|
en: reported once there are {limit}
|
|
50
53
|
rewrite:
|
|
54
|
+
depth: light
|
|
51
55
|
ja:
|
|
52
56
|
direction: 強める語(「非常に」「言うまでもなく」)を消し、何がどう大事なのかが本文にあれば、それを主語と述語で書いてください。無ければ書き手に聞きます。
|
|
53
57
|
pairs:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: empty-list-item
|
|
2
2
|
layer: L1
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: empty-list-item
|
|
5
5
|
requires: [markdown]
|
|
6
6
|
severity: warning
|
|
@@ -57,6 +57,7 @@ not_flagged:
|
|
|
57
57
|
ja: 見出しの語だけの項目は、同じ箇条書きのほかの項目に「見出し:値」の形が一つも無ければ指しません(記入用の書式)。下に入れ子の箇条書きや段落が続く項目(「手順:」の下に手順を並べたもの)も指しません。Markdown の箇条書きでだけ動きます。
|
|
58
58
|
en: 'A label-only item is not reported when no other item in its list has a "label: value" form (a blank form to fill in). An item followed by a nested list or paragraph (a lead-in) is not reported. Markdown lists only.'
|
|
59
59
|
rewrite:
|
|
60
|
+
depth: light
|
|
60
61
|
ja:
|
|
61
62
|
direction: 空の項目に入るものを本文から探して書いてください。本文に無ければ作らず、「未定」と書いて書き手に聞きます。中身の無い記号だけの項目は消します。
|
|
62
63
|
pairs:
|
package/rules/empty-section.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: empty-table-cell
|
|
2
2
|
layer: L1
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: empty-table-cell
|
|
5
5
|
requires: [markdown]
|
|
6
6
|
severity: warning
|
|
@@ -61,6 +61,7 @@ not_flagged:
|
|
|
61
61
|
ja: 一番左の列は見ません(空欄で「上と同じ」を表す書き方があるため)。同じ列に空欄が二つ以上ある列、本文の行が三つより少ない表、「—」「なし」と書いたセルは指しません。Markdown の表でだけ動きます。
|
|
62
62
|
en: The first column is not checked, since a blank there often means "same as above". A column with two or more blanks, a table with fewer than three body rows, and a cell holding "—" or "none" are not reported. Markdown tables only.
|
|
63
63
|
rewrite:
|
|
64
|
+
depth: light
|
|
64
65
|
ja:
|
|
65
66
|
direction: 空欄に入るものを本文から探して書いてください。本文に無ければ作らず、「未定」と書いて、決める人か時期を書き手に聞きます。
|
|
66
67
|
pairs:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: excessive-hedging
|
|
2
2
|
layer: L2
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: hedging
|
|
5
5
|
word_list: excessive-hedging
|
|
6
6
|
# 1 つの文の重なりを数えるときの、それだけでは逃げていない包む言い方(「という状況です」、may)と、
|
|
@@ -35,6 +35,11 @@ how_to_fix:
|
|
|
35
35
|
levels: { strict: 3, normal: 6, relaxed: 12 }
|
|
36
36
|
|
|
37
37
|
use_for: [business, blog, technical, legal, docs, academic, literature, speech]
|
|
38
|
+
off_for:
|
|
39
|
+
legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
|
|
40
|
+
academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
|
|
41
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
42
|
+
speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
|
|
38
43
|
sources: [femmer-2017]
|
|
39
44
|
|
|
40
45
|
group: wording
|
|
@@ -56,6 +61,7 @@ level_meaning:
|
|
|
56
61
|
ja: 1000 字あたり逃げの表現 {limit} 個まで(一文に重ねた逃げは、文書の長さによらず指摘)
|
|
57
62
|
en: up to {limit} hedges per 1000 words (hedges stacked in one sentence are reported whatever the length)
|
|
58
63
|
rewrite:
|
|
64
|
+
depth: light
|
|
59
65
|
ja:
|
|
60
66
|
direction: 重ねた逃げは一つだけ残すか、確かめたことなら全部外して言い切ってください。言い切れないなら、何が分かれば言い切れるかを書きます。
|
|
61
67
|
pairs:
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
id: exclamation-width-consistency
|
|
2
|
+
layer: L1
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: mark-consistency
|
|
5
|
+
word_list: exclamation-width
|
|
6
|
+
languages: [ja]
|
|
7
|
+
severity: info
|
|
8
|
+
|
|
9
|
+
name:
|
|
10
|
+
ja: !? の全角と半角の混在
|
|
11
|
+
en: Full-width and half-width ! and ? mixed
|
|
12
|
+
|
|
13
|
+
why:
|
|
14
|
+
ja: 日本語の文の中で、感嘆符と疑問符を全角(!?)と半角(!?)で混ぜて書くと、別々の所から貼り合わせた文書に見えます。どちらが正しいかは決めません。日本語の字に接するものだけを、感嘆符と疑問符それぞれで数え、少ないほうを指します。
|
|
15
|
+
en: In a Japanese document, ! and ? written both full-width (!?) and half-width (!?) make it look pasted together. chaff does not pick a side; it counts only marks touching Japanese text, each kind apart, and points at the less common way.
|
|
16
|
+
|
|
17
|
+
message:
|
|
18
|
+
ja: 「{mark}」と書いています(この文書はふつう「{usual}」。{of} 箇所のうち {count} 箇所が違う)
|
|
19
|
+
en: '"{mark}" here, where the document usually writes "{usual}" ({count} of {of})'
|
|
20
|
+
|
|
21
|
+
# 少ないほうが 5 箇所以上で、全体の 2 割を超えるとき。書き損じではなく書き方が二通りあるので、1 件にまとめて両方の数を言う。
|
|
22
|
+
messages:
|
|
23
|
+
mixed:
|
|
24
|
+
ja: "「{mark}」の仲間を、全角で {spaced} 箇所、半角で {touching} 箇所書いています。この文書には書き方が二通りあります"
|
|
25
|
+
en: '"{mark}" is written two ways in this document ({spaced} full-width, {touching} half-width)'
|
|
26
|
+
|
|
27
|
+
how_to_fix:
|
|
28
|
+
ja: 文書の多いほうの書き方に合わせてください。
|
|
29
|
+
en: Match the way the rest of the document writes it.
|
|
30
|
+
|
|
31
|
+
levels: { strict: 1, normal: 1, relaxed: 3 }
|
|
32
|
+
|
|
33
|
+
use_for: [business, technical, blog, legal, docs, academic, literature, speech]
|
|
34
|
+
|
|
35
|
+
group: consistency
|
|
36
|
+
summary:
|
|
37
|
+
ja: 日本語の文の中で、!? の全角と半角(!?)が混ざっている所
|
|
38
|
+
en: Full-width !? and half-width !? mixed in one Japanese document
|
|
39
|
+
example:
|
|
40
|
+
ja:
|
|
41
|
+
before: |
|
|
42
|
+
本当ですか? 来週ですか? 今日ですか?
|
|
43
|
+
after: |
|
|
44
|
+
本当ですか? 来週ですか? 今日ですか?
|
|
45
|
+
|
|
46
|
+
not_flagged:
|
|
47
|
+
ja: 日本語の字に接するものだけを数えます。URL やコードの中の「?」、英語の文の中のものは数えません。
|
|
48
|
+
en: Only marks touching Japanese text. A ? in a URL, in code or in English text is not counted.
|
|
49
|
+
level_meaning:
|
|
50
|
+
ja: 少ないほうの書き方が {limit} 箇所あれば指摘
|
|
51
|
+
en: reported once the less common way appears {limit} times
|
|
52
|
+
rewrite:
|
|
53
|
+
depth: light
|
|
54
|
+
ja:
|
|
55
|
+
direction: 指された感嘆符・疑問符だけを、文書の多いほうの書き方(全角か半角)に替えてください。
|
|
56
|
+
pairs:
|
|
57
|
+
- before: 今日ですか?
|
|
58
|
+
after: 今日ですか?
|
|
59
|
+
- before: 完成しました!
|
|
60
|
+
after: 完成しました!
|
|
61
|
+
keep:
|
|
62
|
+
- 文の言葉
|
|
63
|
+
avoid:
|
|
64
|
+
- 感嘆符を増やしたり減らしたりする
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: expletive-construction
|
|
2
2
|
layer: L3
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: expletive
|
|
5
5
|
requires: [pos]
|
|
6
6
|
languages: [en]
|
|
@@ -25,6 +25,12 @@ how_to_fix:
|
|
|
25
25
|
levels: { strict: 1, normal: 3, relaxed: 6 }
|
|
26
26
|
|
|
27
27
|
use_for: [blog, business, legal, docs, academic, literature, speech]
|
|
28
|
+
off_for:
|
|
29
|
+
legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
|
|
30
|
+
docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
|
|
31
|
+
academic: "Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence."
|
|
32
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
33
|
+
speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
|
|
28
34
|
|
|
29
35
|
group: readability
|
|
30
36
|
summary:
|
package/rules/fact-conflict.yaml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: fact-conflict
|
|
2
2
|
layer: L3
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: fact-conflict
|
|
5
5
|
requires: [quantities]
|
|
6
6
|
uses: [pos]
|
|
@@ -25,6 +25,8 @@ how_to_fix:
|
|
|
25
25
|
levels: { normal: warning, relaxed: info }
|
|
26
26
|
|
|
27
27
|
use_for: [business, technical, blog, legal, docs, academic, literature, speech]
|
|
28
|
+
off_for:
|
|
29
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
28
30
|
|
|
29
31
|
group: facts
|
|
30
32
|
summary:
|
|
@@ -58,6 +60,7 @@ not_flagged:
|
|
|
58
60
|
ja: 違う見出しの下、違う親の項目の下、太字だけの行や「第2回:」のような行の後ろの値は、別のものの値として比べません。値の後ろに条件が続くもの(「3,000円から」「10月5日に開催」)、読点のあとから始まる項目名(「大人は、参加費は」)、単位の違う値(単位の食い違いは別に見ます)も比べません。同じ項目に三通り以上の値があれば、一覧として何も言いません。
|
|
59
61
|
en: Values under different headings, under different parent list items, or after a bold-only line or a line like "Session 2:" are taken as values of different things. A value followed by a condition ("$300 per person", "May 3 at noon"), a name that starts after a comma ("For adults, the fee"), and values in different units are not compared. An item with three or more different values is read as a list and left alone.
|
|
60
62
|
rewrite:
|
|
63
|
+
depth: light
|
|
61
64
|
ja:
|
|
62
65
|
direction: 二つの値のどちらが正しいかを書き手に確かめ、もう一方を同じ値に直してください。どちらが正しいか文書から決まらないときは、推測で選ばずに書き手に聞いてください。
|
|
63
66
|
pairs:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
id: figure-reference-order
|
|
2
2
|
layer: L3
|
|
3
|
-
status:
|
|
3
|
+
status: stable
|
|
4
4
|
how_to_find: figure-order
|
|
5
5
|
severity: info
|
|
6
6
|
|
|
@@ -34,6 +34,11 @@ how_to_fix:
|
|
|
34
34
|
levels: { strict: warning, normal: info, relaxed: info }
|
|
35
35
|
|
|
36
36
|
use_for: [academic, legal, docs, literature, speech]
|
|
37
|
+
off_for:
|
|
38
|
+
legal: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
|
|
39
|
+
docs: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
|
|
40
|
+
literature: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
|
|
41
|
+
speech: "A paper's citations, figures and abstract: only the academic paper genre turns these on."
|
|
37
42
|
|
|
38
43
|
group: structure
|
|
39
44
|
summary:
|
|
@@ -81,6 +86,7 @@ not_flagged:
|
|
|
81
86
|
ja: キャプション(行の頭の「図1 …」)を一つも書いていない種類の図、他の文書の図(「報告書の図5」)、リンクの字、番号が字や漢数字のもの(付録A、別表第一)は見ません。付録・別表・様式は文書の終わりに置くものなので、参照の順だけを見て、置き場所と参照の有無は見ません。見出しの無い文書では、節を越えたかどうかは見ません。論文のジャンルでだけ見ます。
|
|
82
87
|
en: 'A kind of figure the document never captions (a "Figure 1: …" line), figures of another document ("Figure 5 of the report"), link text, and numbers that are letters or numerals in words (Appendix A) are left alone. Appendices and annexes sit at the end, so only the order of their references is checked, not where they are or whether they are referred to. A document without headings is not checked for references past the section. Only the academic paper genre runs this rule.'
|
|
83
88
|
rewrite:
|
|
89
|
+
depth: structure
|
|
84
90
|
ja:
|
|
85
91
|
direction: 初めて参照する順に番号が増えるよう、参照の順を入れ替えるか、図と表の番号を振り直してください。振り直すなら、キャプションとほかの参照も同じく直します。参照しない図には、本文に参照の文を足します。
|
|
86
92
|
pairs:
|
package/rules/hankaku-kana.yaml
CHANGED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
id: heading-command-missing
|
|
2
|
+
layer: L1
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: heading-command
|
|
5
|
+
requires: [markdown]
|
|
6
|
+
severity: info
|
|
7
|
+
|
|
8
|
+
name:
|
|
9
|
+
ja: 見出しのコマンドやオプションが、その節のコードに無い
|
|
10
|
+
en: A heading names a command its section's code does not show
|
|
11
|
+
|
|
12
|
+
why:
|
|
13
|
+
ja: 「## `--dry-run`」の節のコード例が「--dryrun」を使っていると、読み手はどちらが正しいか分かりません。コマンドやオプションの名前を変えたときに、見出しかコード例の片方だけを直すと起きます。見出しのコードの部分(`npm install`、`--force`、`init`)が、その節(次の同じ深さか浅い見出しまで)のコードブロックにもコードの部分にも無いとき指します。節にコードが一つも無ければ見ません。
|
|
14
|
+
en: 'When the section "## `--dry-run`" shows an example using "--dryrun", the reader cannot tell which is right. It happens when a command or an option is renamed and only the heading or only the example is updated. chaff points out a heading''s code part (`npm install`, `--force`, `init`) that appears in none of the code blocks or code spans of its section (up to the next heading of the same or a higher level). A section with no code at all is not checked.'
|
|
15
|
+
|
|
16
|
+
message:
|
|
17
|
+
ja: 見出しの「{command}」が、この節のコードにありません
|
|
18
|
+
en: '"{command}" in this heading does not appear in the section''s code'
|
|
19
|
+
|
|
20
|
+
how_to_fix:
|
|
21
|
+
ja: 見出しとコード例のどちらが今の名前かを確かめて、もう一方を直してください。
|
|
22
|
+
en: Check which of the heading and the example has the current name, and correct the other.
|
|
23
|
+
|
|
24
|
+
levels: { strict: warning, normal: info, relaxed: info }
|
|
25
|
+
|
|
26
|
+
use_for: [technical, docs, blog, legal, academic, literature, speech]
|
|
27
|
+
off_for:
|
|
28
|
+
legal: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
|
|
29
|
+
academic: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
|
|
30
|
+
literature: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
|
|
31
|
+
speech: "Code blocks, shell prompts, command headings and numbered steps belong to technical writing."
|
|
32
|
+
|
|
33
|
+
group: facts
|
|
34
|
+
summary:
|
|
35
|
+
ja: 見出しが名指すコマンドやオプションが、その節のコード例のどこにも無い所
|
|
36
|
+
en: A command or option named in a heading that the section's examples never use
|
|
37
|
+
example:
|
|
38
|
+
ja:
|
|
39
|
+
config: { genre: docs/manual }
|
|
40
|
+
before: |
|
|
41
|
+
# 使い方
|
|
42
|
+
|
|
43
|
+
## `--dry-run`
|
|
44
|
+
|
|
45
|
+
直さずに、直す所だけを見せます。
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx chaffjs fix --dryrun README.md
|
|
49
|
+
```
|
|
50
|
+
after: |
|
|
51
|
+
# 使い方
|
|
52
|
+
|
|
53
|
+
## `--dry-run`
|
|
54
|
+
|
|
55
|
+
直さずに、直す所だけを見せます。
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx chaffjs fix --dry-run README.md
|
|
59
|
+
```
|
|
60
|
+
en:
|
|
61
|
+
config: { genre: docs/manual }
|
|
62
|
+
before: |
|
|
63
|
+
# Usage
|
|
64
|
+
|
|
65
|
+
## `--dry-run`
|
|
66
|
+
|
|
67
|
+
Show what would change without changing it.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx chaffjs fix --dryrun README.md
|
|
71
|
+
```
|
|
72
|
+
after: |
|
|
73
|
+
# Usage
|
|
74
|
+
|
|
75
|
+
## `--dry-run`
|
|
76
|
+
|
|
77
|
+
Show what would change without changing it.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx chaffjs fix --dry-run README.md
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
not_flagged:
|
|
84
|
+
ja: コードの無い節、ファイル名や関数名(`config.yaml`、`useEffect`)を書いた見出し、コードの部分の無い見出しは見ません。`--force` は `--force-with-lease` の中にあっても、あったとは数えません。
|
|
85
|
+
en: "Sections with no code, headings naming a file or a function (`config.yaml`, `useEffect`), and headings with no code part are not checked. `--force` inside `--force-with-lease` does not count as shown."
|
|
86
|
+
rewrite:
|
|
87
|
+
depth: light
|
|
88
|
+
ja:
|
|
89
|
+
direction: 見出しとコード例のどちらが今のコマンドやオプションの名前かを書き手に確かめ、もう一方を直してください。分からなければ推測で書き換えず、確かめるよう伝えます。
|
|
90
|
+
pairs:
|
|
91
|
+
- before: npx chaffjs fix --dryrun README.md
|
|
92
|
+
after: npx chaffjs fix --dry-run README.md
|
|
93
|
+
- before: "## `chaff lint`"
|
|
94
|
+
after: "## `chaff check`"
|
|
95
|
+
keep:
|
|
96
|
+
- 節の説明の文
|
|
97
|
+
avoid:
|
|
98
|
+
- どちらの名前が正しいかを推測で決める
|
|
99
|
+
en:
|
|
100
|
+
direction: Ask the writer which of the heading and the example has the current name of the command or option, and correct the other. If it is not clear, do not guess; ask.
|
|
101
|
+
pairs:
|
|
102
|
+
- before: npx chaffjs fix --dryrun README.md
|
|
103
|
+
after: npx chaffjs fix --dry-run README.md
|
|
104
|
+
- before: "## `chaff lint`"
|
|
105
|
+
after: "## `chaff check`"
|
|
106
|
+
keep:
|
|
107
|
+
- the section's explanation
|
|
108
|
+
avoid:
|
|
109
|
+
- guessing which name is right
|
package/rules/heading-echo.yaml
CHANGED
|
@@ -3,7 +3,7 @@ layer: L1
|
|
|
3
3
|
status: stable
|
|
4
4
|
how_to_find: heading-echo
|
|
5
5
|
uses: [pos]
|
|
6
|
-
severity:
|
|
6
|
+
severity: info
|
|
7
7
|
|
|
8
8
|
name:
|
|
9
9
|
ja: 見出しの繰り返し
|
|
@@ -29,6 +29,11 @@ levels:
|
|
|
29
29
|
relaxed: 75
|
|
30
30
|
|
|
31
31
|
use_for: [blog, business, technical, legal, docs, academic, literature, speech]
|
|
32
|
+
off_for:
|
|
33
|
+
legal: "Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive (shall be deemed), and joins long noun compounds (個人情報取扱事業者). This rule would only flag the form."
|
|
34
|
+
docs: "A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up."
|
|
35
|
+
literature: "Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles. Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps."
|
|
36
|
+
speech/transcript: "A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix."
|
|
32
37
|
|
|
33
38
|
group: readability
|
|
34
39
|
summary:
|