chaffjs 0.14.0 → 0.16.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 +27 -2
- package/dist/address-chain.d.ts +4 -1
- package/dist/address-chain.d.ts.map +1 -1
- package/dist/address-chain.js +6 -3
- package/dist/address-chain.js.map +1 -1
- package/dist/backends/anthropic.d.ts +2 -1
- package/dist/backends/anthropic.d.ts.map +1 -1
- package/dist/backends/anthropic.js +4 -1
- package/dist/backends/anthropic.js.map +1 -1
- package/dist/backends/openai.d.ts +2 -1
- package/dist/backends/openai.d.ts.map +1 -1
- package/dist/backends/openai.js +1 -1
- package/dist/backends/openai.js.map +1 -1
- package/dist/backends/types.d.ts +2 -1
- package/dist/backends/types.d.ts.map +1 -1
- package/dist/backends/types.js +1 -1
- package/dist/backends/types.js.map +1 -1
- package/dist/baseline.js +1 -1
- package/dist/baseline.js.map +1 -1
- package/dist/calendar-number.d.ts +26 -0
- package/dist/calendar-number.d.ts.map +1 -0
- package/dist/calendar-number.js +51 -0
- package/dist/calendar-number.js.map +1 -0
- package/dist/cli-args.d.ts +0 -5
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +2 -2
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-text.d.ts +10 -3
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +33 -14
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +53 -47
- package/dist/cli.js.map +1 -1
- package/dist/commands/cite.d.ts.map +1 -1
- package/dist/commands/cite.js +4 -4
- package/dist/commands/cite.js.map +1 -1
- package/dist/commands/eval.d.ts +4 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +21 -7
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +2 -1
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/init-ask.d.ts +19 -0
- package/dist/commands/init-ask.d.ts.map +1 -0
- package/dist/commands/init-ask.js +43 -0
- package/dist/commands/init-ask.js.map +1 -0
- package/dist/commands/test.d.ts +8 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +73 -40
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/tree.d.ts +1 -8
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +9 -7
- package/dist/commands/tree.js.map +1 -1
- package/dist/config/by-path.d.ts.map +1 -1
- package/dist/config/by-path.js +10 -9
- package/dist/config/by-path.js.map +1 -1
- package/dist/config/load.d.ts +4 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +19 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/name-problems.d.ts +5 -0
- package/dist/config/name-problems.d.ts.map +1 -0
- package/dist/config/name-problems.js +11 -0
- package/dist/config/name-problems.js.map +1 -0
- package/dist/date-stamp.js +1 -1
- package/dist/date-stamp.js.map +1 -1
- package/dist/detectors/acronym-compound.d.ts +8 -0
- package/dist/detectors/acronym-compound.d.ts.map +1 -0
- package/dist/detectors/acronym-compound.js +8 -0
- package/dist/detectors/acronym-compound.js.map +1 -0
- package/dist/detectors/acronym-context.d.ts +4 -0
- package/dist/detectors/acronym-context.d.ts.map +1 -1
- package/dist/detectors/acronym-context.js +17 -1
- package/dist/detectors/acronym-context.js.map +1 -1
- package/dist/detectors/acronym-expansion.d.ts +10 -0
- package/dist/detectors/acronym-expansion.d.ts.map +1 -1
- package/dist/detectors/acronym-expansion.js +63 -5
- package/dist/detectors/acronym-expansion.js.map +1 -1
- package/dist/detectors/char-shape.d.ts.map +1 -1
- package/dist/detectors/char-shape.js +47 -15
- package/dist/detectors/char-shape.js.map +1 -1
- package/dist/detectors/citation-key.d.ts +13 -0
- package/dist/detectors/citation-key.d.ts.map +1 -0
- package/dist/detectors/citation-key.js +9 -0
- package/dist/detectors/citation-key.js.map +1 -0
- package/dist/detectors/cited-name.d.ts +11 -0
- package/dist/detectors/cited-name.d.ts.map +1 -0
- package/dist/detectors/cited-name.js +15 -0
- package/dist/detectors/cited-name.js.map +1 -0
- package/dist/detectors/concrete-evidence.d.ts +7 -0
- package/dist/detectors/concrete-evidence.d.ts.map +1 -0
- package/dist/detectors/concrete-evidence.js +21 -0
- package/dist/detectors/concrete-evidence.js.map +1 -0
- package/dist/detectors/counter-edge.d.ts +8 -0
- package/dist/detectors/counter-edge.d.ts.map +1 -0
- package/dist/detectors/counter-edge.js +27 -0
- package/dist/detectors/counter-edge.js.map +1 -0
- package/dist/detectors/dotted-name.d.ts +13 -0
- package/dist/detectors/dotted-name.d.ts.map +1 -0
- package/dist/detectors/dotted-name.js +10 -0
- package/dist/detectors/dotted-name.js.map +1 -0
- package/dist/detectors/doubled-word.d.ts +6 -1
- package/dist/detectors/doubled-word.d.ts.map +1 -1
- package/dist/detectors/doubled-word.js +22 -2
- package/dist/detectors/doubled-word.js.map +1 -1
- package/dist/detectors/en-shape.d.ts +1 -1
- package/dist/detectors/en-shape.d.ts.map +1 -1
- package/dist/detectors/en-shape.js +112 -29
- package/dist/detectors/en-shape.js.map +1 -1
- package/dist/detectors/enumerated-runs.d.ts.map +1 -1
- package/dist/detectors/enumerated-runs.js +4 -2
- package/dist/detectors/enumerated-runs.js.map +1 -1
- package/dist/detectors/gram-place.d.ts +0 -4
- package/dist/detectors/gram-place.d.ts.map +1 -1
- package/dist/detectors/gram-place.js +7 -2
- package/dist/detectors/gram-place.js.map +1 -1
- package/dist/detectors/gram-predicate.d.ts +7 -0
- package/dist/detectors/gram-predicate.d.ts.map +1 -0
- package/dist/detectors/gram-predicate.js +44 -0
- package/dist/detectors/gram-predicate.js.map +1 -0
- package/dist/detectors/heading-case.d.ts +21 -0
- package/dist/detectors/heading-case.d.ts.map +1 -0
- package/dist/detectors/heading-case.js +40 -0
- package/dist/detectors/heading-case.js.map +1 -0
- package/dist/detectors/heading-echo.d.ts.map +1 -1
- package/dist/detectors/heading-echo.js +4 -1
- package/dist/detectors/heading-echo.js.map +1 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +4 -3
- package/dist/detectors/index.js.map +1 -1
- package/dist/detectors/lettered-index.d.ts +9 -0
- package/dist/detectors/lettered-index.d.ts.map +1 -0
- package/dist/detectors/lettered-index.js +54 -0
- package/dist/detectors/lettered-index.js.map +1 -0
- package/dist/detectors/lexicon.d.ts +5 -1
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +51 -5
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/name-numeral.d.ts +16 -0
- package/dist/detectors/name-numeral.d.ts.map +1 -0
- package/dist/detectors/name-numeral.js +30 -0
- package/dist/detectors/name-numeral.js.map +1 -0
- package/dist/detectors/name-part.d.ts +8 -0
- package/dist/detectors/name-part.d.ts.map +1 -0
- package/dist/detectors/name-part.js +20 -0
- package/dist/detectors/name-part.js.map +1 -0
- package/dist/detectors/name-run.d.ts +8 -0
- package/dist/detectors/name-run.d.ts.map +1 -0
- package/dist/detectors/name-run.js +13 -0
- package/dist/detectors/name-run.js.map +1 -0
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +35 -7
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/phrase-match.d.ts +3 -1
- package/dist/detectors/phrase-match.d.ts.map +1 -1
- package/dist/detectors/phrase-match.js +20 -15
- package/dist/detectors/phrase-match.js.map +1 -1
- package/dist/detectors/placeholder.d.ts +14 -0
- package/dist/detectors/placeholder.d.ts.map +1 -0
- package/dist/detectors/placeholder.js +24 -0
- package/dist/detectors/placeholder.js.map +1 -0
- package/dist/detectors/quoted-variant.d.ts +7 -0
- package/dist/detectors/quoted-variant.d.ts.map +1 -0
- package/dist/detectors/quoted-variant.js +18 -0
- package/dist/detectors/quoted-variant.js.map +1 -0
- package/dist/detectors/repeated-head.d.ts.map +1 -1
- package/dist/detectors/repeated-head.js +5 -4
- package/dist/detectors/repeated-head.js.map +1 -1
- package/dist/detectors/series-label.d.ts +13 -0
- package/dist/detectors/series-label.d.ts.map +1 -0
- package/dist/detectors/series-label.js +26 -0
- package/dist/detectors/series-label.js.map +1 -0
- package/dist/detectors/signals.d.ts.map +1 -1
- package/dist/detectors/signals.js +44 -29
- package/dist/detectors/signals.js.map +1 -1
- package/dist/detectors/stacked-hedge.d.ts +23 -0
- package/dist/detectors/stacked-hedge.d.ts.map +1 -0
- package/dist/detectors/stacked-hedge.js +64 -0
- package/dist/detectors/stacked-hedge.js.map +1 -0
- package/dist/detectors/structure-tree.js +1 -1
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/superlative-amount.d.ts +9 -0
- package/dist/detectors/superlative-amount.d.ts.map +1 -0
- package/dist/detectors/superlative-amount.js +20 -0
- package/dist/detectors/superlative-amount.js.map +1 -0
- package/dist/detectors/superlative-clause.d.ts +18 -0
- package/dist/detectors/superlative-clause.d.ts.map +1 -0
- package/dist/detectors/superlative-clause.js +61 -0
- package/dist/detectors/superlative-clause.js.map +1 -0
- package/dist/detectors/superlative-name.d.ts +9 -0
- package/dist/detectors/superlative-name.d.ts.map +1 -0
- package/dist/detectors/superlative-name.js +24 -0
- package/dist/detectors/superlative-name.js.map +1 -0
- package/dist/detectors/superlative-scope.d.ts +6 -0
- package/dist/detectors/superlative-scope.d.ts.map +1 -1
- package/dist/detectors/superlative-scope.js +3 -3
- package/dist/detectors/superlative-scope.js.map +1 -1
- package/dist/detectors/team.d.ts +0 -6
- package/dist/detectors/team.d.ts.map +1 -1
- package/dist/detectors/team.js +17 -1
- package/dist/detectors/team.js.map +1 -1
- package/dist/detectors/token-shape.d.ts.map +1 -1
- package/dist/detectors/token-shape.js +15 -5
- package/dist/detectors/token-shape.js.map +1 -1
- package/dist/document.d.ts +3 -0
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +28 -7
- package/dist/document.js.map +1 -1
- package/dist/eval.js +1 -1
- package/dist/eval.js.map +1 -1
- package/dist/feedback/draft.js +1 -1
- package/dist/feedback/draft.js.map +1 -1
- package/dist/feedback/excerpt.d.ts +0 -1
- package/dist/feedback/excerpt.d.ts.map +1 -1
- package/dist/feedback/excerpt.js +2 -2
- package/dist/feedback/excerpt.js.map +1 -1
- package/dist/file-header.d.ts +20 -0
- package/dist/file-header.d.ts.map +1 -0
- package/dist/file-header.js +21 -0
- package/dist/file-header.js.map +1 -0
- package/dist/files.js +3 -3
- package/dist/files.js.map +1 -1
- package/dist/genre-check.d.ts +34 -0
- package/dist/genre-check.d.ts.map +1 -0
- package/dist/genre-check.js +21 -0
- package/dist/genre-check.js.map +1 -0
- package/dist/genre-load.d.ts +6 -0
- package/dist/genre-load.d.ts.map +1 -0
- package/dist/genre-load.js +22 -0
- package/dist/genre-load.js.map +1 -0
- package/dist/genre-parse.d.ts +40 -0
- package/dist/genre-parse.d.ts.map +1 -0
- package/dist/genre-parse.js +104 -0
- package/dist/genre-parse.js.map +1 -0
- package/dist/genre-suggest.d.ts +15 -0
- package/dist/genre-suggest.d.ts.map +1 -0
- package/dist/genre-suggest.js +26 -0
- package/dist/genre-suggest.js.map +1 -0
- package/dist/genre.d.ts +8 -1
- package/dist/genre.d.ts.map +1 -1
- package/dist/genre.js +19 -5
- package/dist/genre.js.map +1 -1
- package/dist/init-choice.d.ts +12 -0
- package/dist/init-choice.d.ts.map +1 -0
- package/dist/init-choice.js +41 -0
- package/dist/init-choice.js.map +1 -0
- package/dist/init.d.ts +0 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +16 -17
- package/dist/init.js.map +1 -1
- package/dist/joined-view.d.ts +25 -0
- package/dist/joined-view.d.ts.map +1 -0
- package/dist/joined-view.js +76 -0
- package/dist/joined-view.js.map +1 -0
- package/dist/judge.d.ts +2 -1
- package/dist/judge.d.ts.map +1 -1
- package/dist/judge.js +1 -1
- package/dist/judge.js.map +1 -1
- package/dist/line-continues.d.ts +6 -0
- package/dist/line-continues.d.ts.map +1 -0
- package/dist/line-continues.js +33 -0
- package/dist/line-continues.js.map +1 -0
- package/dist/line-paragraphs.d.ts +4 -0
- package/dist/line-paragraphs.d.ts.map +1 -0
- package/dist/line-paragraphs.js +69 -0
- package/dist/line-paragraphs.js.map +1 -0
- package/dist/mask.d.ts.map +1 -1
- package/dist/mask.js +7 -6
- package/dist/mask.js.map +1 -1
- package/dist/measure.d.ts +1 -0
- package/dist/measure.d.ts.map +1 -1
- package/dist/measure.js +5 -1
- package/dist/measure.js.map +1 -1
- package/dist/number-name.d.ts +6 -3
- package/dist/number-name.d.ts.map +1 -1
- package/dist/number-name.js +31 -14
- package/dist/number-name.js.map +1 -1
- package/dist/orthography.d.ts +4 -0
- package/dist/orthography.d.ts.map +1 -1
- package/dist/orthography.js +11 -9
- package/dist/orthography.js.map +1 -1
- package/dist/plain-source.d.ts +6 -0
- package/dist/plain-source.d.ts.map +1 -0
- package/dist/plain-source.js +6 -0
- package/dist/plain-source.js.map +1 -0
- package/dist/plugin.d.ts +22 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/profile/check.d.ts +28 -0
- package/dist/profile/check.d.ts.map +1 -0
- package/dist/profile/check.js +12 -0
- package/dist/profile/check.js.map +1 -0
- package/dist/profile/for-file.d.ts +2 -2
- package/dist/profile/for-file.d.ts.map +1 -1
- package/dist/profile/for-file.js +9 -2
- package/dist/profile/for-file.js.map +1 -1
- package/dist/profile/load.js +1 -1
- package/dist/profile/load.js.map +1 -1
- package/dist/profile/select.d.ts +4 -2
- package/dist/profile/select.d.ts.map +1 -1
- package/dist/profile/select.js +8 -3
- package/dist/profile/select.js.map +1 -1
- package/dist/quoted-span.d.ts +22 -0
- package/dist/quoted-span.d.ts.map +1 -0
- package/dist/quoted-span.js +25 -0
- package/dist/quoted-span.js.map +1 -0
- package/dist/reasons.d.ts +1 -0
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +4 -1
- package/dist/reasons.js.map +1 -1
- package/dist/render/compact.d.ts.map +1 -1
- package/dist/render/compact.js +1 -2
- package/dist/render/compact.js.map +1 -1
- package/dist/render/eval.d.ts +2 -1
- package/dist/render/eval.d.ts.map +1 -1
- package/dist/render/eval.js +85 -43
- package/dist/render/eval.js.map +1 -1
- package/dist/render/friendly.d.ts +2 -1
- package/dist/render/friendly.d.ts.map +1 -1
- package/dist/render/friendly.js +14 -6
- package/dist/render/friendly.js.map +1 -1
- package/dist/render/genres.d.ts +5 -0
- package/dist/render/genres.d.ts.map +1 -0
- package/dist/render/genres.js +28 -0
- package/dist/render/genres.js.map +1 -0
- package/dist/render/plural.d.ts +3 -0
- package/dist/render/plural.d.ts.map +1 -0
- package/dist/render/plural.js +5 -0
- package/dist/render/plural.js.map +1 -0
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +9 -3
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/semantic.d.ts +3 -2
- package/dist/render/semantic.d.ts.map +1 -1
- package/dist/render/semantic.js +94 -34
- package/dist/render/semantic.js.map +1 -1
- package/dist/render/summary.d.ts.map +1 -1
- package/dist/render/summary.js +4 -3
- package/dist/render/summary.js.map +1 -1
- package/dist/render/suppressions.d.ts.map +1 -1
- package/dist/render/suppressions.js +3 -2
- package/dist/render/suppressions.js.map +1 -1
- package/dist/render/text.d.ts +2 -0
- package/dist/render/text.d.ts.map +1 -1
- package/dist/render/text.js +11 -3
- package/dist/render/text.js.map +1 -1
- package/dist/resolve-genre.d.ts +11 -0
- package/dist/resolve-genre.d.ts.map +1 -0
- package/dist/resolve-genre.js +18 -0
- package/dist/resolve-genre.js.map +1 -0
- package/dist/rule-load.d.ts.map +1 -1
- package/dist/rule-load.js +4 -1
- package/dist/rule-load.js.map +1 -1
- package/dist/run-semantic.js +1 -1
- package/dist/run-semantic.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +25 -15
- package/dist/run.js.map +1 -1
- package/dist/sentence-shape.d.ts +0 -1
- package/dist/sentence-shape.d.ts.map +1 -1
- package/dist/sentence-shape.js +3 -5
- package/dist/sentence-shape.js.map +1 -1
- package/dist/setting-problems.d.ts +5 -0
- package/dist/setting-problems.d.ts.map +1 -0
- package/dist/setting-problems.js +15 -0
- package/dist/setting-problems.js.map +1 -0
- package/dist/soft-break.d.ts +19 -0
- package/dist/soft-break.d.ts.map +1 -0
- package/dist/soft-break.js +78 -0
- package/dist/soft-break.js.map +1 -0
- package/dist/structure/build.d.ts.map +1 -1
- package/dist/structure/build.js +24 -14
- package/dist/structure/build.js.map +1 -1
- package/dist/structure/cite.js +1 -1
- package/dist/structure/cite.js.map +1 -1
- package/dist/structure/date-order.d.ts +3 -0
- package/dist/structure/date-order.d.ts.map +1 -1
- package/dist/structure/date-order.js +9 -1
- package/dist/structure/date-order.js.map +1 -1
- package/dist/structure/issues.d.ts +1 -1
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +19 -8
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/listed-tags.d.ts +3 -0
- package/dist/structure/listed-tags.d.ts.map +1 -0
- package/dist/structure/listed-tags.js +6 -0
- package/dist/structure/listed-tags.js.map +1 -0
- package/dist/structure/markdown-path.d.ts.map +1 -1
- package/dist/structure/markdown-path.js +2 -2
- package/dist/structure/markdown-path.js.map +1 -1
- package/dist/structure/number-in-sentence.d.ts +15 -0
- package/dist/structure/number-in-sentence.d.ts.map +1 -0
- package/dist/structure/number-in-sentence.js +13 -0
- package/dist/structure/number-in-sentence.js.map +1 -0
- package/dist/structure/numbering.d.ts.map +1 -1
- package/dist/structure/numbering.js +1 -1
- package/dist/structure/numbering.js.map +1 -1
- package/dist/structure/relative-find.js +1 -1
- package/dist/structure/relative-find.js.map +1 -1
- package/dist/structure/sexp.js +1 -1
- package/dist/structure/sexp.js.map +1 -1
- package/dist/structure/unit-word.d.ts +8 -0
- package/dist/structure/unit-word.d.ts.map +1 -0
- package/dist/structure/unit-word.js +10 -0
- package/dist/structure/unit-word.js.map +1 -0
- package/dist/structure/unnumbered.js +2 -2
- package/dist/structure/unnumbered.js.map +1 -1
- package/dist/structure/wrapped-tail.d.ts +18 -0
- package/dist/structure/wrapped-tail.d.ts.map +1 -0
- package/dist/structure/wrapped-tail.js +11 -0
- package/dist/structure/wrapped-tail.js.map +1 -0
- package/dist/team-names.d.ts +9 -0
- package/dist/team-names.d.ts.map +1 -0
- package/dist/team-names.js +34 -0
- package/dist/team-names.js.map +1 -0
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +6 -0
- package/dist/ui.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/watch.d.ts +2 -2
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +5 -5
- package/dist/watch.js.map +1 -1
- package/genres.yaml +363 -0
- package/package.json +4 -3
- package/rules/adverb-overuse.yaml +2 -2
- package/rules/agentless-passive.yaml +1 -1
- package/rules/ai-generated-composite.yaml +2 -2
- package/rules/ai-tell.yaml +2 -2
- package/rules/bold-density.yaml +2 -2
- package/rules/closing-cliche.yaml +1 -1
- package/rules/concrete-evidence-density.yaml +2 -2
- package/rules/contraction-consistency.yaml +1 -1
- package/rules/cushion-phrase-density.yaml +1 -1
- package/rules/dangling-reference.yaml +3 -3
- package/rules/date-order.yaml +3 -3
- package/rules/date-weekday-mismatch.yaml +1 -1
- package/rules/double-keigo.yaml +1 -1
- package/rules/doubled-word.yaml +1 -1
- package/rules/duplicate-definition.yaml +1 -1
- package/rules/emoji-density.yaml +1 -1
- package/rules/empty-conclusion.yaml +2 -1
- package/rules/empty-intensifier.yaml +1 -1
- package/rules/excessive-hedging.yaml +16 -6
- package/rules/expletive-construction.yaml +2 -2
- package/rules/heading-echo.yaml +1 -1
- package/rules/hiragana-fukushi.yaml +1 -1
- package/rules/internal-jargon.yaml +2 -2
- package/rules/latin-spacing.yaml +6 -3
- package/rules/max-kanji-continuous.yaml +5 -4
- package/rules/max-paragraph-length.yaml +9 -2
- package/rules/max-sentence-length.yaml +14 -2
- package/rules/ngram-repetition.yaml +4 -4
- package/rules/no-doubled-joshi.yaml +4 -4
- package/rules/no-em-dash.yaml +2 -2
- package/rules/no-mixed-desumasu.yaml +1 -1
- package/rules/no-nakaguro-parallel.yaml +2 -2
- package/rules/numbering-gap.yaml +1 -1
- package/rules/oxford-comma-consistency.yaml +2 -1
- package/rules/padded-intro.yaml +2 -1
- package/rules/paragraph-length-variance.yaml +1 -1
- package/rules/preamble-length.yaml +2 -2
- package/rules/preferred-term.yaml +1 -1
- package/rules/proper-noun-density.yaml +3 -2
- package/rules/repeated-conjunction.yaml +2 -2
- package/rules/repeated-sentence-head.yaml +2 -2
- package/rules/required-sections.yaml +1 -1
- package/rules/rule-of-three.yaml +2 -2
- package/rules/sasete-itadaku.yaml +3 -3
- package/rules/section-length-uniformity.yaml +1 -1
- package/rules/sentence-initial-conjunction-run.yaml +2 -2
- package/rules/sentence-rhythm.yaml +1 -1
- package/rules/taigen-dome-in-prose.yaml +2 -2
- package/rules/title-case-consistency.yaml +3 -3
- package/rules/total-mismatch.yaml +1 -1
- package/rules/undefined-acronym.yaml +18 -5
- package/rules/unqualified-superlative.yaml +3 -3
- package/skills/chaff/SKILL.md +28 -9
- package/src/address-chain.ts +6 -3
- package/src/backends/anthropic.ts +5 -1
- package/src/backends/openai.ts +2 -1
- package/src/backends/types.ts +3 -2
- package/src/baseline.ts +1 -1
- package/src/calendar-number.ts +75 -0
- package/src/cli-args.ts +2 -2
- package/src/cli-text.ts +48 -18
- package/src/cli.ts +51 -47
- package/src/commands/cite.ts +4 -4
- package/src/commands/eval.ts +27 -6
- package/src/commands/feedback.ts +2 -1
- package/src/commands/init-ask.ts +53 -0
- package/src/commands/test.ts +105 -47
- package/src/commands/tree.ts +9 -7
- package/src/config/by-path.ts +8 -9
- package/src/config/load.ts +24 -0
- package/src/config/name-problems.ts +15 -0
- package/src/date-stamp.ts +1 -1
- package/src/detectors/acronym-compound.ts +9 -0
- package/src/detectors/acronym-context.ts +22 -1
- package/src/detectors/acronym-expansion.ts +72 -5
- package/src/detectors/char-shape.ts +56 -16
- package/src/detectors/citation-key.ts +13 -0
- package/src/detectors/cited-name.ts +23 -0
- package/src/detectors/concrete-evidence.ts +31 -0
- package/src/detectors/counter-edge.ts +29 -0
- package/src/detectors/dotted-name.ts +14 -0
- package/src/detectors/doubled-word.ts +25 -2
- package/src/detectors/en-shape.ts +123 -38
- package/src/detectors/enumerated-runs.ts +3 -2
- package/src/detectors/gram-place.ts +9 -2
- package/src/detectors/gram-predicate.ts +55 -0
- package/src/detectors/heading-case.ts +44 -0
- package/src/detectors/heading-echo.ts +5 -1
- package/src/detectors/index.ts +4 -3
- package/src/detectors/lettered-index.ts +78 -0
- package/src/detectors/lexicon.ts +68 -8
- package/src/detectors/name-numeral.ts +37 -0
- package/src/detectors/name-part.ts +24 -0
- package/src/detectors/name-run.ts +16 -0
- package/src/detectors/orthography.ts +43 -10
- package/src/detectors/phrase-match.ts +23 -12
- package/src/detectors/placeholder.ts +38 -0
- package/src/detectors/quoted-variant.ts +20 -0
- package/src/detectors/repeated-head.ts +3 -4
- package/src/detectors/series-label.ts +33 -0
- package/src/detectors/signals.ts +49 -35
- package/src/detectors/stacked-hedge.ts +93 -0
- package/src/detectors/structure-tree.ts +2 -2
- package/src/detectors/superlative-amount.ts +24 -0
- package/src/detectors/superlative-clause.ts +82 -0
- package/src/detectors/superlative-name.ts +30 -0
- package/src/detectors/superlative-scope.ts +3 -3
- package/src/detectors/team.ts +18 -2
- package/src/detectors/token-shape.ts +13 -6
- package/src/document.ts +41 -8
- package/src/eval.ts +1 -1
- package/src/feedback/draft.ts +1 -1
- package/src/feedback/excerpt.ts +2 -2
- package/src/file-header.ts +31 -0
- package/src/files.ts +3 -3
- package/src/genre-check.ts +46 -0
- package/src/genre-load.ts +24 -0
- package/src/genre-parse.ts +126 -0
- package/src/genre-suggest.ts +37 -0
- package/src/genre.ts +25 -5
- package/src/init-choice.ts +47 -0
- package/src/init.ts +20 -19
- package/src/joined-view.ts +96 -0
- package/src/judge.ts +3 -1
- package/src/line-continues.ts +43 -0
- package/src/line-paragraphs.ts +83 -0
- package/src/mask.ts +5 -6
- package/src/measure.ts +9 -1
- package/src/number-name.ts +35 -13
- package/src/orthography.ts +15 -9
- package/src/plain-source.ts +5 -0
- package/src/plugin.ts +27 -2
- package/src/profile/check.ts +34 -0
- package/src/profile/for-file.ts +10 -3
- package/src/profile/load.ts +1 -1
- package/src/profile/select.ts +11 -4
- package/src/quoted-span.ts +39 -0
- package/src/reasons.ts +5 -1
- package/src/render/compact.ts +1 -3
- package/src/render/eval.ts +102 -38
- package/src/render/friendly.ts +21 -6
- package/src/render/genres.ts +31 -0
- package/src/render/plural.ts +6 -0
- package/src/render/rules-json.ts +10 -3
- package/src/render/semantic.ts +117 -34
- package/src/render/summary.ts +4 -3
- package/src/render/suppressions.ts +3 -2
- package/src/render/text.ts +18 -3
- package/src/resolve-genre.ts +20 -0
- package/src/rule-load.ts +6 -1
- package/src/run-semantic.ts +1 -1
- package/src/run.ts +28 -15
- package/src/sentence-shape.ts +3 -7
- package/src/setting-problems.ts +24 -0
- package/src/soft-break.ts +94 -0
- package/src/structure/build.ts +24 -15
- package/src/structure/cite.ts +1 -1
- package/src/structure/date-order.ts +16 -1
- package/src/structure/issues.ts +24 -8
- package/src/structure/listed-tags.ts +7 -0
- package/src/structure/markdown-path.ts +2 -2
- package/src/structure/number-in-sentence.ts +20 -0
- package/src/structure/numbering.ts +1 -1
- package/src/structure/relative-find.ts +1 -1
- package/src/structure/sexp.ts +1 -1
- package/src/structure/unit-word.ts +11 -0
- package/src/structure/unnumbered.ts +2 -2
- package/src/structure/wrapped-tail.ts +22 -0
- package/src/team-names.ts +39 -0
- package/src/ui.ts +7 -0
- package/src/version.ts +1 -1
- package/src/watch.ts +5 -5
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAA4B,EAAc,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5G,iEAAiE;AACjE,MAAM,gBAAgB,GAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,cAAkC,EAAE,GAAiD,EAAc,EAAE;IAChI,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IAC9G,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAA4B,EAAc,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE5G,iEAAiE;AACjE,MAAM,gBAAgB,GAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,cAAkC,EAAE,GAAiD,EAAc,EAAE;IAChI,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IAC9G,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrF,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAA4B,EAAE,IAAgB,EAAc,EAAE;IAC3F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7B,OAAO,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC,CAAC"}
|
package/dist/version.js
CHANGED
|
@@ -16,7 +16,7 @@ export const versionLines = (raw) => {
|
|
|
16
16
|
const dependencies = isRecord(raw) && isRecord(raw["dependencies"]) ? raw["dependencies"] : {};
|
|
17
17
|
const bundled = Object.entries(dependencies)
|
|
18
18
|
.filter((entry) => BUNDLED.test(entry[0]) && typeof entry[1] === "string")
|
|
19
|
-
.
|
|
19
|
+
.toSorted(([left], [right]) => left.localeCompare(right))
|
|
20
20
|
.map(([name, version]) => `${name} ${version}`);
|
|
21
21
|
return [`chaffjs ${versionOf(raw)}`, ...bundled];
|
|
22
22
|
};
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAErF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE5I,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE7H,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAY,EAAE;IACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SACzC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;SACpG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAErF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE5I,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAE7H,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAY,EAAY,EAAE;IACrD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;SACzC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;SACpG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC"}
|
package/dist/watch.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ export type Snapshot = Readonly<Record<string, number>>;
|
|
|
3
3
|
export declare const snapshotOf: (findings: readonly Finding[]) => Snapshot;
|
|
4
4
|
/**
|
|
5
5
|
* 差分だけを出す。書いている最中に全件を出し直されると、何が変わったのか分からない。
|
|
6
|
-
* workflow spec §11
|
|
6
|
+
* workflow spec §11。`unit` takes the count after the change, which sets the English noun ("0 → 1 finding").
|
|
7
7
|
*/
|
|
8
|
-
export declare const describeChange: (before: Snapshot, after: Snapshot, unit?: string) => string | undefined;
|
|
8
|
+
export declare const describeChange: (before: Snapshot, after: Snapshot, unit?: (count: number) => string) => string | undefined;
|
|
9
9
|
export declare const clock: () => string;
|
|
10
10
|
/** 変更が落ち着いてから 1 度だけ呼ぶ。 */
|
|
11
11
|
export declare const watchPaths: (paths: readonly string[], onChange: (path: string) => void) => (() => void);
|
package/dist/watch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD,eAAO,MAAM,UAAU,GAAI,UAAU,SAAS,OAAO,EAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD,eAAO,MAAM,UAAU,GAAI,UAAU,SAAS,OAAO,EAAE,KAAG,QAC0F,CAAC;AAIrJ;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,EAAE,OAAM,CAAC,KAAK,EAAE,MAAM,KAAK,MAAmB,KAAG,MAAM,GAAG,SAUzH,CAAC;AAEF,eAAO,MAAM,KAAK,QAAO,MAA+C,CAAC;AAEzE,0BAA0B;AAC1B,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,MAAM,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,KAAG,CAAC,MAAM,IAAI,CAmBlG,CAAC"}
|
package/dist/watch.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { watch } from "node:fs";
|
|
2
2
|
/** 保存は 1 回でも複数イベントになる。まとめて 1 回だけ走らせる。 */
|
|
3
3
|
const SETTLE_MS = 120;
|
|
4
|
-
export const snapshotOf = (findings) => findings.reduce((
|
|
4
|
+
export const snapshotOf = (findings) => Object.fromEntries(findings.reduce((counts, finding) => counts.set(finding.rule, (counts.get(finding.rule) ?? 0) + 1), new Map()));
|
|
5
5
|
const total = (snapshot) => Object.values(snapshot).reduce((sum, count) => sum + count, 0);
|
|
6
6
|
/**
|
|
7
7
|
* 差分だけを出す。書いている最中に全件を出し直されると、何が変わったのか分からない。
|
|
8
|
-
* workflow spec §11
|
|
8
|
+
* workflow spec §11。`unit` takes the count after the change, which sets the English noun ("0 → 1 finding").
|
|
9
9
|
*/
|
|
10
|
-
export const describeChange = (before, after, unit = " 件") => {
|
|
10
|
+
export const describeChange = (before, after, unit = () => " 件") => {
|
|
11
11
|
const rules = [...new Set([...Object.keys(before), ...Object.keys(after)])];
|
|
12
12
|
const moved = rules
|
|
13
13
|
.map((rule) => ({ rule, delta: (after[rule] ?? 0) - (before[rule] ?? 0) }))
|
|
14
14
|
.filter((entry) => entry.delta !== 0)
|
|
15
|
-
.
|
|
15
|
+
.toSorted((left, right) => left.rule.localeCompare(right.rule, "en"));
|
|
16
16
|
if (moved.length === 0)
|
|
17
17
|
return undefined;
|
|
18
18
|
const detail = moved.map((entry) => `${entry.delta > 0 ? "+" : ""}${entry.delta} ${entry.rule}`).join(", ");
|
|
19
19
|
const mark = total(after) < total(before) ? "✓" : "✗";
|
|
20
|
-
return `${mark} ${total(before)} → ${total(after)}${unit} (${detail})`;
|
|
20
|
+
return `${mark} ${total(before)} → ${total(after)}${unit(total(after))} (${detail})`;
|
|
21
21
|
};
|
|
22
22
|
export const clock = () => new Date().toTimeString().slice(0, 8);
|
|
23
23
|
/** 変更が落ち着いてから 1 度だけ呼ぶ。 */
|
package/dist/watch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,yCAAyC;AACzC,MAAM,SAAS,GAAG,GAAG,CAAC;AAItB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAA4B,EAAY,EAAE,CACnE,QAAQ,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/genres.yaml
ADDED
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# The genres chaff knows, in the order `chaff genres` lists them.
|
|
2
|
+
#
|
|
3
|
+
# A genre is a preset: pick the kind of document and chaff checks it the way that kind is written.
|
|
4
|
+
# rules: the level a rule runs at for this genre (strict / normal / relaxed / off), under chaff.yaml's rules.
|
|
5
|
+
# A group's rules apply to every genre in it; a genre's own rules win over its group's.
|
|
6
|
+
# A rule turned off here is listed under "did not run" with the genre as the reason.
|
|
7
|
+
# profile: the document profile (profiles/*.yaml) this genre reads with, when chaff.yaml names none.
|
|
8
|
+
# Which genres a rule applies to at all is the rule's use_for; the numbers behind a level are the rule's by_genre.
|
|
9
|
+
|
|
10
|
+
groups:
|
|
11
|
+
- id: technical
|
|
12
|
+
name: { ja: 技術文書, en: Technical }
|
|
13
|
+
- id: blog
|
|
14
|
+
name: { ja: ブログ, en: Blog }
|
|
15
|
+
- id: business
|
|
16
|
+
name: { ja: ビジネス文書, en: Business }
|
|
17
|
+
# Legal drafting repeats its terms and its sentence heads on purpose, puts the actor in the passive
|
|
18
|
+
# (shall be deemed), and joins long noun compounds (個人情報取扱事業者). Those rules would only flag the form.
|
|
19
|
+
- id: legal
|
|
20
|
+
name: { ja: 法務, en: Legal }
|
|
21
|
+
rules:
|
|
22
|
+
agentless-passive: off
|
|
23
|
+
max-kanji-continuous: off
|
|
24
|
+
no-doubled-joshi: off
|
|
25
|
+
ngram-repetition: off
|
|
26
|
+
repeated-sentence-head: off
|
|
27
|
+
heading-echo: off
|
|
28
|
+
taigen-dome-in-prose: off
|
|
29
|
+
unqualified-superlative: off
|
|
30
|
+
excessive-hedging: off
|
|
31
|
+
proper-noun-density: off
|
|
32
|
+
expletive-construction: off
|
|
33
|
+
adverb-overuse: off
|
|
34
|
+
concrete-evidence-density: off
|
|
35
|
+
closing-cliche: off
|
|
36
|
+
padded-intro: off
|
|
37
|
+
preamble-length: off
|
|
38
|
+
cushion-phrase-density: off
|
|
39
|
+
sasete-itadaku: off
|
|
40
|
+
sentence-rhythm: off
|
|
41
|
+
rule-of-three: off
|
|
42
|
+
section-length-uniformity: off
|
|
43
|
+
paragraph-length-variance: off
|
|
44
|
+
ai-tell: off
|
|
45
|
+
ai-generated-composite: off
|
|
46
|
+
# A help page repeats its heading in its first line (To upload a file, ...) and states no claims to back up.
|
|
47
|
+
- id: docs
|
|
48
|
+
name: { ja: 説明書, en: Documentation }
|
|
49
|
+
rules:
|
|
50
|
+
heading-echo: off
|
|
51
|
+
agentless-passive: off
|
|
52
|
+
concrete-evidence-density: off
|
|
53
|
+
preamble-length: off
|
|
54
|
+
proper-noun-density: off
|
|
55
|
+
unqualified-superlative: off
|
|
56
|
+
expletive-construction: off
|
|
57
|
+
adverb-overuse: off
|
|
58
|
+
cushion-phrase-density: off
|
|
59
|
+
double-keigo: off
|
|
60
|
+
sasete-itadaku: off
|
|
61
|
+
sentence-initial-conjunction-run: off
|
|
62
|
+
closing-cliche: off
|
|
63
|
+
padded-intro: off
|
|
64
|
+
sentence-rhythm: off
|
|
65
|
+
rule-of-three: off
|
|
66
|
+
section-length-uniformity: off
|
|
67
|
+
paragraph-length-variance: off
|
|
68
|
+
ai-tell: off
|
|
69
|
+
ai-generated-composite: off
|
|
70
|
+
# Science writes in the passive, hedges its claims on purpose (may, suggest) and cites numbers as its evidence.
|
|
71
|
+
- id: academic
|
|
72
|
+
name: { ja: 学術, en: Academic }
|
|
73
|
+
rules:
|
|
74
|
+
agentless-passive: off
|
|
75
|
+
excessive-hedging: off
|
|
76
|
+
expletive-construction: off
|
|
77
|
+
concrete-evidence-density: off
|
|
78
|
+
proper-noun-density: off
|
|
79
|
+
adverb-overuse: off
|
|
80
|
+
closing-cliche: off
|
|
81
|
+
padded-intro: off
|
|
82
|
+
preamble-length: off
|
|
83
|
+
cushion-phrase-density: off
|
|
84
|
+
sasete-itadaku: off
|
|
85
|
+
double-keigo: off
|
|
86
|
+
sentence-rhythm: off
|
|
87
|
+
rule-of-three: off
|
|
88
|
+
section-length-uniformity: off
|
|
89
|
+
paragraph-length-variance: off
|
|
90
|
+
# Length, rhythm, repetition and register are the author's choices in literature, and dialogue mixes styles.
|
|
91
|
+
# Only what one work can hold itself to runs: consistent spacing and commas, and numbering without gaps.
|
|
92
|
+
- id: literature
|
|
93
|
+
name: { ja: 文学, en: Literature }
|
|
94
|
+
rules:
|
|
95
|
+
max-sentence-length: off
|
|
96
|
+
max-paragraph-length: off
|
|
97
|
+
ngram-repetition: off
|
|
98
|
+
repeated-sentence-head: off
|
|
99
|
+
heading-echo: off
|
|
100
|
+
empty-intensifier: off
|
|
101
|
+
no-doubled-joshi: off
|
|
102
|
+
no-nakaguro-parallel: off
|
|
103
|
+
taigen-dome-in-prose: off
|
|
104
|
+
max-kanji-continuous: off
|
|
105
|
+
hiragana-fukushi: off
|
|
106
|
+
no-mixed-desumasu: off
|
|
107
|
+
contraction-consistency: off
|
|
108
|
+
doubled-word: off
|
|
109
|
+
agentless-passive: off
|
|
110
|
+
expletive-construction: off
|
|
111
|
+
excessive-hedging: off
|
|
112
|
+
unqualified-superlative: off
|
|
113
|
+
adverb-overuse: off
|
|
114
|
+
sentence-initial-conjunction-run: off
|
|
115
|
+
repeated-conjunction: off
|
|
116
|
+
undefined-acronym: off
|
|
117
|
+
proper-noun-density: off
|
|
118
|
+
concrete-evidence-density: off
|
|
119
|
+
closing-cliche: off
|
|
120
|
+
padded-intro: off
|
|
121
|
+
preamble-length: off
|
|
122
|
+
cushion-phrase-density: off
|
|
123
|
+
sasete-itadaku: off
|
|
124
|
+
double-keigo: off
|
|
125
|
+
no-em-dash: off
|
|
126
|
+
emoji-density: off
|
|
127
|
+
sentence-rhythm: off
|
|
128
|
+
rule-of-three: off
|
|
129
|
+
section-length-uniformity: off
|
|
130
|
+
paragraph-length-variance: off
|
|
131
|
+
ai-tell: off
|
|
132
|
+
ai-generated-composite: off
|
|
133
|
+
dangling-reference: off
|
|
134
|
+
duplicate-definition: off
|
|
135
|
+
date-order: off
|
|
136
|
+
date-weekday-mismatch: off
|
|
137
|
+
total-mismatch: off
|
|
138
|
+
# A speech opens with greetings and closes with thanks: that is its form, not padding.
|
|
139
|
+
- id: speech
|
|
140
|
+
name: { ja: 話し言葉, en: Speech }
|
|
141
|
+
rules:
|
|
142
|
+
agentless-passive: off
|
|
143
|
+
preamble-length: off
|
|
144
|
+
padded-intro: off
|
|
145
|
+
closing-cliche: off
|
|
146
|
+
concrete-evidence-density: off
|
|
147
|
+
proper-noun-density: off
|
|
148
|
+
sentence-rhythm: off
|
|
149
|
+
rule-of-three: off
|
|
150
|
+
section-length-uniformity: off
|
|
151
|
+
paragraph-length-variance: off
|
|
152
|
+
|
|
153
|
+
genres:
|
|
154
|
+
- id: technical/spec
|
|
155
|
+
name: { ja: 仕様書, en: Specification }
|
|
156
|
+
summary:
|
|
157
|
+
ja: 仕様書・RFC・設計文書。読み手に間違えさせないための文書
|
|
158
|
+
en: Specifications, RFCs and design documents, written so the reader cannot get it wrong
|
|
159
|
+
- id: technical/readme
|
|
160
|
+
name: { ja: README・技術文書, en: README and technical docs }
|
|
161
|
+
summary:
|
|
162
|
+
ja: README と開発者向けの説明
|
|
163
|
+
en: READMEs and documentation for developers
|
|
164
|
+
- id: blog/tech
|
|
165
|
+
name: { ja: 技術ブログ, en: Tech blog }
|
|
166
|
+
summary:
|
|
167
|
+
ja: 技術記事。ジャンルを決めないときはこれで見ます
|
|
168
|
+
en: Technical articles; the genre used when none is set
|
|
169
|
+
- id: blog/essay
|
|
170
|
+
name: { ja: エッセイ(ブログ), en: Blog essay }
|
|
171
|
+
summary:
|
|
172
|
+
ja: 自分の考えを書くブログのエッセイ
|
|
173
|
+
en: Personal essays posted on a blog
|
|
174
|
+
- id: blog/owned-media
|
|
175
|
+
name: { ja: オウンドメディア, en: Owned media }
|
|
176
|
+
summary:
|
|
177
|
+
ja: 会社や団体が読者に向けて出す記事
|
|
178
|
+
en: Articles an organisation publishes for its readers
|
|
179
|
+
- id: business/proposal
|
|
180
|
+
name: { ja: 提案書・企画書, en: Proposal }
|
|
181
|
+
summary:
|
|
182
|
+
ja: 提案書・企画書・計画書
|
|
183
|
+
en: Proposals, plans and pitches
|
|
184
|
+
- id: business/report
|
|
185
|
+
name: { ja: 報告書, en: Report }
|
|
186
|
+
summary:
|
|
187
|
+
ja: 報告書・白書・社内文書
|
|
188
|
+
en: Reports, white papers and internal documents
|
|
189
|
+
- id: business/email
|
|
190
|
+
name: { ja: メール・手紙, en: Email and letter }
|
|
191
|
+
summary:
|
|
192
|
+
ja: 仕事のメールと手紙
|
|
193
|
+
en: Work email and letters
|
|
194
|
+
- id: business/press-release
|
|
195
|
+
name: { ja: プレスリリース・お知らせ, en: Press release and notice }
|
|
196
|
+
summary:
|
|
197
|
+
ja: プレスリリースと、お知らせ
|
|
198
|
+
en: Press releases and public notices
|
|
199
|
+
- id: business/meeting-notes
|
|
200
|
+
name: { ja: 議事録, en: Meeting notes }
|
|
201
|
+
summary:
|
|
202
|
+
ja: 議事録・議事要旨
|
|
203
|
+
en: Minutes and meeting notes
|
|
204
|
+
- id: legal/contract
|
|
205
|
+
name: { ja: 契約書・規約, en: Contract and terms }
|
|
206
|
+
summary:
|
|
207
|
+
ja: 契約書・利用規約・プライバシーポリシー
|
|
208
|
+
en: Contracts, terms of service and privacy policies
|
|
209
|
+
suggest:
|
|
210
|
+
paths: ["(^|/)(contracts?|agreements?|terms|tos|nda|keiyaku|kiyaku)(/|[-_.])", "(^|/)privacy[-_]?policy[-_.]"]
|
|
211
|
+
ja: { line: "本契約|本規約|本ポリシー|以下「(?:甲|乙|丙)」|^#{1,6}\\s*(?:プライバシーポリシー|個人情報保護方針|利用規約|契約書)", min_lines: 2 }
|
|
212
|
+
en:
|
|
213
|
+
{
|
|
214
|
+
line: "\\b(?:[Tt]his Agreement|[Tt]hese Terms|[Tt]his (?:Privacy )?Policy|the Parties)\\b|^#{1,6}\\s*(?:Terms of (?:Service|Use)|Privacy Policy)\\b",
|
|
215
|
+
min_lines: 3,
|
|
216
|
+
}
|
|
217
|
+
# A contract is read clause by clause against its own numbers, definitions and dates: these are its mistakes.
|
|
218
|
+
rules:
|
|
219
|
+
numbering-gap: normal
|
|
220
|
+
duplicate-definition: normal
|
|
221
|
+
dangling-reference: normal
|
|
222
|
+
date-weekday-mismatch: normal
|
|
223
|
+
total-mismatch: normal
|
|
224
|
+
- id: legal/statute
|
|
225
|
+
name: { ja: 法令・規程, en: Statute and regulation }
|
|
226
|
+
summary:
|
|
227
|
+
ja: 法令・規則・社内規程・通達
|
|
228
|
+
en: Statutes, regulations and internal rules
|
|
229
|
+
profile: statute
|
|
230
|
+
# Also suggested when the content has the statute profile's shape.
|
|
231
|
+
suggest:
|
|
232
|
+
paths: ["(^|/)(laws?|statutes?|regulations?|kitei|kisoku)(/|[-_.])"]
|
|
233
|
+
ja: { line: "(?:この|本)(?:法律|政令|省令|府令|規則|規程|条例|定款|通達)", min_lines: 2 }
|
|
234
|
+
en: { line: "\\b(?:[Tt]his (?:Act|[Pp]art|[Ss]ubpart|[Rr]egulation)|[Tt]hese [Rr]egulations)\\b|^§\\s?\\d", min_lines: 3 }
|
|
235
|
+
- id: legal/judgment
|
|
236
|
+
name: { ja: 判決, en: Court decision }
|
|
237
|
+
summary:
|
|
238
|
+
ja: 判決文・決定
|
|
239
|
+
en: Court judgments and opinions
|
|
240
|
+
suggest:
|
|
241
|
+
ja: { line: "^(?:#{1,6}\\s*)?(?:主\\s*文|理\\s*由|判\\s*決)\\s*$", min_lines: 2 }
|
|
242
|
+
en: { line: "delivered the opinion of the Court|^(?:Reversed|Affirmed)\\.?$", min_lines: 1 }
|
|
243
|
+
- id: legal/patent
|
|
244
|
+
name: { ja: 特許明細書, en: Patent }
|
|
245
|
+
summary:
|
|
246
|
+
ja: 特許の明細書と請求項
|
|
247
|
+
en: Patent specifications and claims
|
|
248
|
+
suggest:
|
|
249
|
+
ja: { line: "【(?:課題|解決手段|請求項[0-90-9]+|選択図|技術分野|背景技術|発明の詳細な説明|特許請求の範囲)】", min_lines: 2 }
|
|
250
|
+
en: { line: "^#{1,6}\\s*(?:BACKGROUND OF THE INVENTION|SUMMARY OF THE INVENTION|Claims\\b)|\\bof claim \\d+", min_lines: 3 }
|
|
251
|
+
- id: docs/manual
|
|
252
|
+
name: { ja: マニュアル・手順書, en: Manual and how-to }
|
|
253
|
+
summary:
|
|
254
|
+
ja: 使い方の説明・手順書・ヘルプ
|
|
255
|
+
en: User guides, how-to pages and help
|
|
256
|
+
suggest:
|
|
257
|
+
paths: ["(^|/)(manuals?|guides?|how-?tos?|help|tutorials?|user-?guides?)(/|[-_.])"]
|
|
258
|
+
ja: { line: "^#{1,6}\\s.*(?:手順|操作方法|設定方法)", min_lines: 2 }
|
|
259
|
+
en: { line: "^#{1,6}\\s*(?:Steps?\\b|Step \\d|Prerequisites|Before you begin|Troubleshooting)", min_lines: 2 }
|
|
260
|
+
- id: docs/faq
|
|
261
|
+
name: { ja: よくある質問, en: FAQ }
|
|
262
|
+
summary:
|
|
263
|
+
ja: 問いと答えを並べたページ
|
|
264
|
+
en: Pages of questions and answers
|
|
265
|
+
suggest:
|
|
266
|
+
paths: ["(^|[/_-])(faqs?|q-?and-?a)([/_.-]|$)"]
|
|
267
|
+
ja: { line: "^(?:#{1,6}\\s*)?(?:[QQ][0-90-9]*[..::、\\s ]|問[0-90-9]+[..::\\s ])|^#{1,6}\\s*(?:よくある(?:ご)?質問|Q&A|Q&A)", min_lines: 2 }
|
|
268
|
+
en: { line: "^(?:#{1,6}\\s*)?Q[0-9]*[.:)]\\s|^#{1,6}\\s*(?:FAQs?|Frequently asked questions)\\b", min_lines: 2 }
|
|
269
|
+
- id: docs/glossary
|
|
270
|
+
name: { ja: 用語集, en: Glossary }
|
|
271
|
+
summary:
|
|
272
|
+
ja: 用語と、その説明を並べたページ
|
|
273
|
+
en: Lists of terms and what they mean
|
|
274
|
+
suggest:
|
|
275
|
+
paths: ["(^|/)(glossary|glossaries|yogo|用語集)(/|[-_.])"]
|
|
276
|
+
ja: { line: "^#{1,6}\\s*用語集", min_lines: 1 }
|
|
277
|
+
en: { line: "^#{1,6}\\s*Glossary\\b", min_lines: 1 }
|
|
278
|
+
- id: academic/paper
|
|
279
|
+
name: { ja: 論文, en: Academic paper }
|
|
280
|
+
summary:
|
|
281
|
+
ja: 論文と、その要旨
|
|
282
|
+
en: Papers and abstracts
|
|
283
|
+
suggest:
|
|
284
|
+
paths: ["(^|/)(papers?|ronbun)(/|[-_.])"]
|
|
285
|
+
ja: { line: "^(?:#{1,6}\\s*)?(?:要旨|抄録|参考文献|引用文献|謝辞)\\s*(?:[((].*)?$", min_lines: 2 }
|
|
286
|
+
en:
|
|
287
|
+
{
|
|
288
|
+
line: "^(?:#{1,6}\\s*)?(?:\\d+\\.?\\s+)?(?:Abstract|Keywords|Methods?|Methodology|Results|Discussion|Conclusions?|Related [Ww]ork|Bibliography|References)\\s*$",
|
|
289
|
+
min_lines: 4,
|
|
290
|
+
}
|
|
291
|
+
- id: literature/fiction
|
|
292
|
+
name: { ja: 小説, en: Fiction }
|
|
293
|
+
summary:
|
|
294
|
+
ja: 小説・物語
|
|
295
|
+
en: Novels and stories
|
|
296
|
+
suggest:
|
|
297
|
+
paths: ["(^|/)(novels?|fiction|stories|shosetsu)(/|[-_.])"]
|
|
298
|
+
- id: literature/essay
|
|
299
|
+
name: { ja: 随筆, en: Literary essay }
|
|
300
|
+
summary:
|
|
301
|
+
ja: 文学としての随筆。ブログのエッセイは blog/essay
|
|
302
|
+
en: Literary essays; a blog essay is blog/essay
|
|
303
|
+
- id: literature/poetry
|
|
304
|
+
name: { ja: 詩歌, en: Poetry }
|
|
305
|
+
summary:
|
|
306
|
+
ja: 詩・短歌・俳句
|
|
307
|
+
en: Poems and verse
|
|
308
|
+
suggest:
|
|
309
|
+
paths: ["(^|/)(poems?|poetry|tanka|haiku)(/|[-_.])"]
|
|
310
|
+
- id: literature/play
|
|
311
|
+
name: { ja: 戯曲・脚本, en: Play and script }
|
|
312
|
+
summary:
|
|
313
|
+
ja: 戯曲・脚本
|
|
314
|
+
en: Plays and scripts
|
|
315
|
+
suggest:
|
|
316
|
+
paths: ["(^|/)(plays?|screenplays?|kyakuhon)(/|[-_.])"]
|
|
317
|
+
en: { line: "^[A-Z][A-Z '-]{2,}\\.$", min_lines: 10 }
|
|
318
|
+
- id: speech/address
|
|
319
|
+
name: { ja: スピーチ・挨拶, en: Speech }
|
|
320
|
+
summary:
|
|
321
|
+
ja: 読み上げるために書いた演説・挨拶
|
|
322
|
+
en: Speeches and addresses written to be read aloud
|
|
323
|
+
suggest:
|
|
324
|
+
paths: ["(^|/)(speech(es)?|addresses)(/|[-_.])"]
|
|
325
|
+
ja: { line: "^(?:議長|御列席の皆様|ご列席の皆様|皆様|皆さん)、|ご清聴(?:いただき)?ありがとうございました", min_lines: 2 }
|
|
326
|
+
en: { line: "^(?:Mr\\.|Madam) (?:President|Speaker|Chair(?:man)?),|^Ladies and gentlemen,|Thank you for (?:your attention|listening)", min_lines: 2 }
|
|
327
|
+
- id: speech/transcript
|
|
328
|
+
name: { ja: 発言録, en: Transcript }
|
|
329
|
+
summary:
|
|
330
|
+
ja: 話したことを書き起こした記録(会見・国会の会議録)
|
|
331
|
+
en: Verbatim records of what was said (press conferences, parliamentary debates)
|
|
332
|
+
suggest:
|
|
333
|
+
paths: ["(^|/)(transcripts?|kaigiroku)(/|[-_.])"]
|
|
334
|
+
ja: { line: "^○[^ \\s]{1,30} |^((?:問|答))|^【(?:記者|大臣|質問|回答)】", min_lines: 3 }
|
|
335
|
+
en: { line: "^(?:Mr|Ms|Mrs|Dr)\\. [A-Z][A-Z-]{2,}(?: of [A-Z][a-z]+)?\\. ", min_lines: 3 }
|
|
336
|
+
# A transcript records what was said: its sentences, repeats and register are the speaker's, not the writer's to fix.
|
|
337
|
+
rules:
|
|
338
|
+
max-sentence-length: off
|
|
339
|
+
max-paragraph-length: off
|
|
340
|
+
ngram-repetition: off
|
|
341
|
+
repeated-sentence-head: off
|
|
342
|
+
heading-echo: off
|
|
343
|
+
empty-intensifier: off
|
|
344
|
+
no-doubled-joshi: off
|
|
345
|
+
no-nakaguro-parallel: off
|
|
346
|
+
taigen-dome-in-prose: off
|
|
347
|
+
max-kanji-continuous: off
|
|
348
|
+
hiragana-fukushi: off
|
|
349
|
+
no-mixed-desumasu: off
|
|
350
|
+
contraction-consistency: off
|
|
351
|
+
doubled-word: off
|
|
352
|
+
sasete-itadaku: off
|
|
353
|
+
double-keigo: off
|
|
354
|
+
cushion-phrase-density: off
|
|
355
|
+
excessive-hedging: off
|
|
356
|
+
unqualified-superlative: off
|
|
357
|
+
expletive-construction: off
|
|
358
|
+
adverb-overuse: off
|
|
359
|
+
sentence-initial-conjunction-run: off
|
|
360
|
+
repeated-conjunction: off
|
|
361
|
+
undefined-acronym: off
|
|
362
|
+
ai-tell: off
|
|
363
|
+
ai-generated-composite: off
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chaffjs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "Prose validation harness. Finds what is hard to read, and never rewrites it for you.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"chaff",
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"README.md",
|
|
41
41
|
"bin",
|
|
42
42
|
"dist",
|
|
43
|
+
"genres.yaml",
|
|
43
44
|
"profiles",
|
|
44
45
|
"rules",
|
|
45
46
|
"skills",
|
|
@@ -54,8 +55,8 @@
|
|
|
54
55
|
},
|
|
55
56
|
"dependencies": {
|
|
56
57
|
"@anthropic-ai/sdk": "^0.125.0",
|
|
57
|
-
"@chaffjs/lang-en": "0.
|
|
58
|
-
"@chaffjs/lang-ja": "0.
|
|
58
|
+
"@chaffjs/lang-en": "0.14.0",
|
|
59
|
+
"@chaffjs/lang-ja": "0.15.0",
|
|
59
60
|
"mdast-util-from-markdown": "^2.0.3",
|
|
60
61
|
"mdast-util-frontmatter": "^2.0.1",
|
|
61
62
|
"mdast-util-gfm-table": "^2.0.0",
|
|
@@ -16,7 +16,7 @@ why:
|
|
|
16
16
|
|
|
17
17
|
message:
|
|
18
18
|
ja: 1000 語あたり {density} 個の -ly 副詞があります({limit} 個まで)
|
|
19
|
-
en: "{density} -ly adverbs per 1000 words (limit {limit})"
|
|
19
|
+
en: "{density} -ly {density|adverb|adverbs} per 1000 words (limit {limit})"
|
|
20
20
|
|
|
21
21
|
how_to_fix:
|
|
22
22
|
ja: 副詞ごと動詞に畳んでください。"said loudly" を "shouted" に。
|
|
@@ -25,4 +25,4 @@ how_to_fix:
|
|
|
25
25
|
# 1000 語あたりの個数。件数で数えると長い文書ほど当たる(bold-density と同じ)。
|
|
26
26
|
levels: { strict: 10, normal: 15, relaxed: 25 }
|
|
27
27
|
|
|
28
|
-
use_for: [blog, business]
|
|
28
|
+
use_for: [blog, business, legal, docs, academic, literature, speech]
|
|
@@ -24,7 +24,7 @@ why:
|
|
|
24
24
|
|
|
25
25
|
message:
|
|
26
26
|
ja: 「{word}」が同じ文書にそろっています({count} 種、{limit} 種から)
|
|
27
|
-
en: '"{word}" occur together in this document ({count} signals, {limit} needed)'
|
|
27
|
+
en: '"{word}" {count|occurs|occur together} in this document ({count} {count|signal|signals}, {limit} needed)'
|
|
28
28
|
|
|
29
29
|
how_to_fix:
|
|
30
30
|
ja: 自分が書きたかったことが残っているか、通して読み直してください。個々の指摘を 1 つずつ直すより、段落ごと書き直すほうが早いことがあります。
|
|
@@ -33,4 +33,4 @@ how_to_fix:
|
|
|
33
33
|
# 何種そろったら出すか。spec §20.2 は 3。
|
|
34
34
|
levels: { strict: 2, normal: 3, relaxed: 5 }
|
|
35
35
|
|
|
36
|
-
use_for: [blog, business]
|
|
36
|
+
use_for: [blog, business, legal, docs, academic, literature, speech]
|
package/rules/ai-tell.yaml
CHANGED
|
@@ -16,7 +16,7 @@ why:
|
|
|
16
16
|
|
|
17
17
|
message:
|
|
18
18
|
ja: 「{word}」が揃っています(点 {density}、{limit} まで)
|
|
19
|
-
en: '"{word}" appear together (score {density}, limit {limit})'
|
|
19
|
+
en: '"{word}" {count|appears|appear together} (score {density}, limit {limit})'
|
|
20
20
|
|
|
21
21
|
how_to_fix:
|
|
22
22
|
ja: 自分の言葉に置き換えてください。置き換えられないなら、その段落は無くても通るかもしれません。
|
|
@@ -25,4 +25,4 @@ how_to_fix:
|
|
|
25
25
|
# 重みの合計を 10 倍した点。0.9 の言い回しが 2 つで 18。
|
|
26
26
|
levels: { strict: 10, normal: 18, relaxed: 30 }
|
|
27
27
|
|
|
28
|
-
use_for: [blog, business]
|
|
28
|
+
use_for: [blog, business, legal, docs, academic, literature, speech]
|
package/rules/bold-density.yaml
CHANGED
|
@@ -14,7 +14,7 @@ why:
|
|
|
14
14
|
|
|
15
15
|
message:
|
|
16
16
|
ja: このセクションは {chars} 字に太字が {bolds} 箇所あります(1000 字あたり {limit} 箇所まで)
|
|
17
|
-
en: "{bolds} bold spans in {chars} characters (limit {limit} per 1000)"
|
|
17
|
+
en: "{bolds} bold {bolds|span|spans} in {chars} {chars|character|characters} (limit {limit} per 1000)"
|
|
18
18
|
|
|
19
19
|
how_to_fix:
|
|
20
20
|
ja: 本当に強調したい 1〜2 箇所だけ残して、ほかは普通の文にしてください。
|
|
@@ -27,4 +27,4 @@ levels:
|
|
|
27
27
|
normal: 20
|
|
28
28
|
relaxed: 40
|
|
29
29
|
|
|
30
|
-
use_for: [blog, business, technical]
|
|
30
|
+
use_for: [blog, business, technical, legal, docs, academic, literature, speech]
|
|
@@ -16,7 +16,7 @@ why:
|
|
|
16
16
|
|
|
17
17
|
message:
|
|
18
18
|
ja: 「{word}」の節に数値もコードもリンクもありません(そういう節が {count}/{total})
|
|
19
|
-
en: 'Section "{word}" has no number, code or link ({count} of {total} sections)'
|
|
19
|
+
en: 'Section "{word}" has no number, code or link ({count} of {total} {total|section|sections})'
|
|
20
20
|
|
|
21
21
|
how_to_fix:
|
|
22
22
|
ja: 実例を 1 つ足してください。書けないなら、その節は他の節に畳めるかもしれません。
|
|
@@ -24,4 +24,4 @@ how_to_fix:
|
|
|
24
24
|
|
|
25
25
|
levels: { strict: 1, normal: 3, relaxed: 6 }
|
|
26
26
|
|
|
27
|
-
use_for: [blog, business]
|
|
27
|
+
use_for: [blog, business, legal, docs, academic, literature, speech]
|
|
@@ -10,8 +10,8 @@ name:
|
|
|
10
10
|
en: Reference to a missing provision
|
|
11
11
|
|
|
12
12
|
why:
|
|
13
|
-
ja: 「第12条に定める」のような参照は、その条が文書に無ければ読み手を行き止まりにします。条を消したり番号を振り直したりしたときに、参照だけが古い番号のまま残ることがよくあります。chaff は文書を番地の付いた木にして(chaff tree
|
|
14
|
-
en: A reference such as "as set out in Section 12" leaves the reader at a dead end when that section is not in the document. It usually happens when a provision is deleted or renumbered and the reference keeps the old number. chaff builds the document's tree of addresses (chaff tree) and checks that each reference's address is in it.
|
|
13
|
+
ja: 「第12条に定める」のような参照は、その条が文書に無ければ読み手を行き止まりにします。条を消したり番号を振り直したりしたときに、参照だけが古い番号のまま残ることがよくあります。chaff は文書を番地の付いた木にして(chaff tree)、参照の番地が木にあるかを見ます。見出しに「1 目的」と番号を振っただけで「第N条」と書いた条の無い文書(ガイドラインや通達)の「法第2条」は、別の文書の条なので探しません。
|
|
14
|
+
en: A reference such as "as set out in Section 12" leaves the reader at a dead end when that section is not in the document. It usually happens when a provision is deleted or renumbered and the reference keeps the old number. chaff builds the document's tree of addresses (chaff tree) and checks that each reference's address is in it. A Japanese reference counted in 条 (法第2条) is not looked up in a document that numbers none of its provisions with 条, such as a guideline whose headings read "1 目的", because it points into another document.
|
|
15
15
|
|
|
16
16
|
message:
|
|
17
17
|
ja: 「{label}」(番地 {target})はこの文書にありません
|
|
@@ -24,4 +24,4 @@ how_to_fix:
|
|
|
24
24
|
# 何件あれば指摘するか。1 は「1 件でもあれば」。
|
|
25
25
|
levels: { strict: 1, normal: 1, relaxed: 1 }
|
|
26
26
|
|
|
27
|
-
use_for: [business, technical, blog]
|
|
27
|
+
use_for: [business, technical, blog, legal, docs, academic, literature, speech]
|
package/rules/date-order.yaml
CHANGED
|
@@ -10,8 +10,8 @@ name:
|
|
|
10
10
|
en: A date out of order in a schedule
|
|
11
11
|
|
|
12
12
|
why:
|
|
13
|
-
ja:
|
|
14
|
-
en: In a list or a table of dates, such as an itinerary or milestones, one date earlier than the one before it makes the reader check whether it is a typo or a swapped row. The direction of the list (oldest or newest first) is taken from most of its steps, and only a date against it is pointed out.
|
|
13
|
+
ja: 旅程やマイルストーンのように日付を並べた箇条書きや表で、ひとつだけ前の日付より早い日付があると、書き間違いか順番の入れ替わりかを読み手が確かめることになります。並びが古い順か新しい順かは多いほうで決め、それに逆らう日付だけを指します。その向きに沿う日付が半分以下の並びは、名前や版の順に並べた一覧として扱い、何も言いません。
|
|
14
|
+
en: In a list or a table of dates, such as an itinerary or milestones, one date earlier than the one before it makes the reader check whether it is a typo or a swapped row. The direction of the list (oldest or newest first) is taken from most of its steps, and only a date against it is pointed out. A list where no more than half of the dates follow that direction is taken as sorted by something else, such as a name or a version, and nothing is said.
|
|
15
15
|
|
|
16
16
|
message:
|
|
17
17
|
ja: 「{date}」が、前後の日付の並びから外れています(前は「{previous}」)
|
|
@@ -23,4 +23,4 @@ how_to_fix:
|
|
|
23
23
|
|
|
24
24
|
levels: { strict: 1, normal: 1, relaxed: 1 }
|
|
25
25
|
|
|
26
|
-
use_for: [business, technical, blog]
|
|
26
|
+
use_for: [business, technical, blog, legal, docs, academic, literature, speech]
|
package/rules/double-keigo.yaml
CHANGED
package/rules/doubled-word.yaml
CHANGED