chaffjs 0.15.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.js +1 -1
- 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 +6 -2
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +19 -12
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +43 -37
- 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.js +1 -1
- package/dist/commands/eval.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 +70 -38
- 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 +7 -6
- 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/char-shape.d.ts.map +1 -1
- package/dist/detectors/char-shape.js +16 -6
- package/dist/detectors/char-shape.js.map +1 -1
- package/dist/detectors/en-shape.d.ts.map +1 -1
- package/dist/detectors/en-shape.js +101 -7
- 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.js +1 -1
- package/dist/detectors/gram-place.js.map +1 -1
- package/dist/detectors/heading-case.d.ts.map +1 -1
- package/dist/detectors/heading-case.js +3 -1
- package/dist/detectors/heading-case.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 +46 -3
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +24 -6
- 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/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/signals.d.ts.map +1 -1
- package/dist/detectors/signals.js +16 -6
- 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/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-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 +8 -6
- 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 +18 -3
- 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.js +1 -1
- package/dist/genre-check.js.map +1 -1
- 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 +1 -1
- package/dist/genre.d.ts.map +1 -1
- package/dist/genre.js +3 -13
- 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.map +1 -1
- package/dist/init.js +16 -5
- package/dist/init.js.map +1 -1
- 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-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/plugin.d.ts +6 -0
- 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 +15 -3
- package/dist/quoted-span.d.ts.map +1 -1
- package/dist/quoted-span.js +16 -11
- package/dist/quoted-span.js.map +1 -1
- 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.map +1 -1
- package/dist/render/eval.js +4 -3
- 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/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/structure/build.js +5 -5
- 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/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +5 -5
- package/dist/structure/issues.js.map +1 -1
- 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/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/unnumbered.js +2 -2
- package/dist/structure/unnumbered.js.map +1 -1
- 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 +1 -1
- package/rules/date-order.yaml +1 -1
- 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 +5 -4
- package/rules/max-kanji-continuous.yaml +4 -3
- 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 +2 -2
- 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 +1 -1
- package/rules/total-mismatch.yaml +1 -1
- package/rules/undefined-acronym.yaml +4 -4
- package/rules/unqualified-superlative.yaml +2 -2
- package/skills/chaff/SKILL.md +28 -9
- package/src/address-chain.ts +1 -1
- 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 +29 -15
- package/src/cli.ts +42 -41
- package/src/commands/cite.ts +4 -4
- package/src/commands/eval.ts +1 -1
- package/src/commands/init-ask.ts +53 -0
- package/src/commands/test.ts +102 -45
- package/src/commands/tree.ts +7 -6
- 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/char-shape.ts +21 -9
- package/src/detectors/en-shape.ts +106 -8
- package/src/detectors/enumerated-runs.ts +3 -2
- package/src/detectors/gram-place.ts +1 -1
- package/src/detectors/heading-case.ts +4 -1
- package/src/detectors/index.ts +4 -3
- package/src/detectors/lettered-index.ts +78 -0
- package/src/detectors/lexicon.ts +63 -6
- package/src/detectors/orthography.ts +31 -7
- package/src/detectors/phrase-match.ts +23 -12
- package/src/detectors/repeated-head.ts +3 -4
- package/src/detectors/signals.ts +15 -6
- package/src/detectors/stacked-hedge.ts +93 -0
- package/src/detectors/superlative-amount.ts +24 -0
- package/src/detectors/superlative-clause.ts +82 -0
- package/src/detectors/superlative-scope.ts +3 -3
- package/src/detectors/team.ts +18 -2
- package/src/detectors/token-shape.ts +8 -10
- package/src/document.ts +29 -3
- 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 +1 -1
- 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 +4 -13
- package/src/init-choice.ts +47 -0
- package/src/init.ts +20 -6
- package/src/judge.ts +3 -1
- package/src/line-paragraphs.ts +83 -0
- package/src/mask.ts +5 -6
- package/src/plugin.ts +6 -0
- 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 +26 -12
- package/src/reasons.ts +5 -1
- package/src/render/compact.ts +1 -3
- package/src/render/eval.ts +4 -3
- 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/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/structure/build.ts +5 -5
- package/src/structure/cite.ts +1 -1
- package/src/structure/issues.ts +6 -5
- package/src/structure/markdown-path.ts +2 -2
- 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/unnumbered.ts +2 -2
- 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/render/eval.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/render/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAA+B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/render/eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { RuleDefinition } from "../plugin.ts";
|
|
2
2
|
import type { RunResult } from "../run.ts";
|
|
3
|
-
|
|
3
|
+
/** notes: lines after the not-run list (the genre chaff suggests when none is set). */
|
|
4
|
+
export declare const renderFriendly: (header: string, result: RunResult, rules: readonly RuleDefinition[], language: string, notes?: readonly string[]) => string;
|
|
4
5
|
//# sourceMappingURL=friendly.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friendly.d.ts","sourceRoot":"","sources":["../../src/render/friendly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"friendly.d.ts","sourceRoot":"","sources":["../../src/render/friendly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AA0E3C,uFAAuF;AACvF,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,SAAS,EACjB,OAAO,SAAS,cAAc,EAAE,EAChC,UAAU,MAAM,EAChB,QAAO,SAAS,MAAM,EAAO,KAC5B,MA0BF,CAAC"}
|
package/dist/render/friendly.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MARK, localized, messageOf } from "./text.js";
|
|
2
2
|
import { tally } from "./summary.js";
|
|
3
|
+
import { counted } from "./plural.js";
|
|
3
4
|
import { uiLanguageOf } from "../ui.js";
|
|
4
5
|
const RULE = 60;
|
|
5
6
|
const TEXT = {
|
|
@@ -10,6 +11,7 @@ const TEXT = {
|
|
|
10
11
|
deterministic: " (同じ文章なら何度実行しても同じ結果になります)",
|
|
11
12
|
untouched: "文章は書き換えていません。直すのは書いた人です。",
|
|
12
13
|
forced: (n, ids) => `試験中の rule を ${n} 件、設定により有効にしています: ${ids}`,
|
|
14
|
+
presetOn: (n, ids) => `試験中の rule を ${n} 件、ジャンルの既定で有効にしています: ${ids}`,
|
|
13
15
|
notRun: (n) => `${n} 件の rule は動いていません:`,
|
|
14
16
|
because: (why) => `(${why})`,
|
|
15
17
|
},
|
|
@@ -19,8 +21,9 @@ const TEXT = {
|
|
|
19
21
|
machine: "All judged by machine",
|
|
20
22
|
deterministic: " (the same text gives the same result every time)",
|
|
21
23
|
untouched: "The text was not changed. Fixing it is the writer's job.",
|
|
22
|
-
forced: (n, ids) => `${n
|
|
23
|
-
|
|
24
|
+
forced: (n, ids) => `${counted(n, "experimental rule")} turned on in the settings: ${ids}`,
|
|
25
|
+
presetOn: (n, ids) => `${counted(n, "experimental rule")} turned on by the genre: ${ids}`,
|
|
26
|
+
notRun: (n) => `${counted(n, "rule")} did not run:`,
|
|
24
27
|
because: (why) => ` (${why})`,
|
|
25
28
|
},
|
|
26
29
|
};
|
|
@@ -53,14 +56,15 @@ const block = (finding, rule, language) => [
|
|
|
53
56
|
` ${TEXT[uiLanguageOf(language)].relax}: npx chaff relax ${finding.rule}`,
|
|
54
57
|
"",
|
|
55
58
|
];
|
|
56
|
-
|
|
59
|
+
/** notes: lines after the not-run list (the genre chaff suggests when none is set). */
|
|
60
|
+
export const renderFriendly = (header, result, rules, language, notes = []) => {
|
|
57
61
|
const byId = new Map(rules.map((rule) => [rule.id, rule]));
|
|
58
62
|
const blocks = result.findings.flatMap((finding) => {
|
|
59
63
|
const rule = byId.get(finding.rule);
|
|
60
64
|
return rule === undefined ? [] : block(finding, rule, language);
|
|
61
65
|
});
|
|
62
66
|
const text = TEXT[uiLanguageOf(language)];
|
|
63
|
-
const
|
|
67
|
+
const closing = [
|
|
64
68
|
"",
|
|
65
69
|
"─".repeat(RULE),
|
|
66
70
|
"",
|
|
@@ -69,10 +73,14 @@ export const renderFriendly = (header, result, rules, language) => {
|
|
|
69
73
|
"",
|
|
70
74
|
` ${text.untouched}`,
|
|
71
75
|
];
|
|
72
|
-
const forced =
|
|
76
|
+
const forced = [
|
|
77
|
+
...(result.forcedExperimental.length > 0 ? ["", ` ${text.forced(result.forcedExperimental.length, result.forcedExperimental.join(", "))}`] : []),
|
|
78
|
+
...(result.presetExperimental.length > 0 ? ["", ` ${text.presetOn(result.presetExperimental.length, result.presetExperimental.join(", "))}`] : []),
|
|
79
|
+
];
|
|
73
80
|
const skipped = result.skipped.length > 0
|
|
74
81
|
? ["", ` ${text.notRun(result.skipped.length)}`, ...result.skipped.map((entry) => ` ${entry.rule}${text.because(entry.why)}`)]
|
|
75
82
|
: [];
|
|
76
|
-
|
|
83
|
+
const after = notes.flatMap((note) => ["", note]);
|
|
84
|
+
return ["", header, ...blocks, ...closing, ...forced, ...skipped, ...after, ""].join("\n");
|
|
77
85
|
};
|
|
78
86
|
//# sourceMappingURL=friendly.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friendly.js","sourceRoot":"","sources":["../../src/render/friendly.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AAEpD,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"friendly.js","sourceRoot":"","sources":["../../src/render/friendly.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;AAEpD,MAAM,IAAI,GAAG,EAAE,CAAC;AAEhB,MAAM,IAAI,GAUL;IACH,EAAE,EAAE;QACF,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;QACtB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,cAAc;QACvB,aAAa,EAAE,wCAAwC;QACvD,SAAS,EAAE,0BAA0B;QACrC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,qBAAqB,GAAG,EAAE;QAC9D,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,wBAAwB,GAAG,EAAE;QACnE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB;QACvC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG;KAC7B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE;QACxB,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,uBAAuB;QAChC,aAAa,EAAE,gEAAgE;QAC/E,SAAS,EAAE,0DAA0D;QACrE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,mBAAmB,CAAC,+BAA+B,GAAG,EAAE;QAC1F,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,mBAAmB,CAAC,4BAA4B,GAAG,EAAE;QACzF,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe;QACnD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,GAAG;KAC9B;CACF,CAAC;AACF,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAW,EAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;AAExG,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAY,EAAE;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACtG,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,IAAoB,EAAE,QAAgB,EAAY,EAAE,CAAC;IACpF,EAAE;IACF,wGAAwG;IACxG,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;IAC3H,GAAG,OAAO,CAAC,OAAO,CAAC;IACnB,EAAE;IACF,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;IACvE,EAAE;IACF,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACtD,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACjD,EAAE;IACF,GAAG,MAAM,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IAC/D,EAAE;IACF,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,sBAAsB,OAAO,CAAC,IAAI,EAAE;IAC9E,EAAE;CACH,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAAc,EACd,MAAiB,EACjB,KAAgC,EAChC,QAAgB,EAChB,QAA2B,EAAE,EACrB,EAAE;IACV,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG;QACd,EAAE;QACF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAChB,EAAE;QACF,KAAK,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE;QACvE,IAAI,CAAC,aAAa;QAClB,EAAE;QACF,KAAK,IAAI,CAAC,SAAS,EAAE;KACtB,CAAC;IACF,MAAM,MAAM,GAAG;QACb,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjJ,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACpJ,CAAC;IACF,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACvB,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpI,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GenreData } from "../genre-parse.ts";
|
|
2
|
+
import type { UiLanguage } from "../ui.ts";
|
|
3
|
+
/** `chaff genres`: every genre under its group, with what it is for, in the output language. */
|
|
4
|
+
export declare const renderGenres: (data: GenreData, ui: UiLanguage) => string;
|
|
5
|
+
//# sourceMappingURL=genres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genres.d.ts","sourceRoot":"","sources":["../../src/render/genres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAmBlD,gGAAgG;AAChG,eAAO,MAAM,YAAY,GAAI,MAAM,SAAS,EAAE,IAAI,UAAU,KAAG,MAS9D,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const TEXT = {
|
|
2
|
+
ja: {
|
|
3
|
+
heading: " ジャンル(文書の種類)を選ぶと、その種類の書き方に合わせて見ます:",
|
|
4
|
+
usage: [
|
|
5
|
+
" この実行だけ: npx chaffjs --genre legal/contract 契約書.md",
|
|
6
|
+
" この場所に決める: npx chaffjs init --genre legal/contract (chaff.yaml の genre に書きます)",
|
|
7
|
+
],
|
|
8
|
+
},
|
|
9
|
+
en: {
|
|
10
|
+
heading: " Pick the genre (the kind of document) and chaff checks it the way that kind is written:",
|
|
11
|
+
usage: [
|
|
12
|
+
" For one run: npx chaffjs --genre legal/contract contract.md",
|
|
13
|
+
" For this folder: npx chaffjs init --genre legal/contract (writes genre in chaff.yaml)",
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
/** `chaff genres`: every genre under its group, with what it is for, in the output language. */
|
|
18
|
+
export const renderGenres = (data, ui) => {
|
|
19
|
+
const width = Math.max(...data.genres.map((genre) => genre.id.length)) + 2;
|
|
20
|
+
const groups = data.groups.flatMap((group) => {
|
|
21
|
+
const members = data.genres.filter((genre) => genre.id.startsWith(`${group.id}/`));
|
|
22
|
+
return members.length === 0
|
|
23
|
+
? []
|
|
24
|
+
: ["", ` ${group.name[ui] ?? group.id}`, ...members.map((genre) => ` ${genre.id.padEnd(width)}${genre.summary[ui] ?? ""}`)];
|
|
25
|
+
});
|
|
26
|
+
return ["", TEXT[ui].heading, ...groups, "", ...TEXT[ui].usage, ""].join("\n");
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=genres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genres.js","sourceRoot":"","sources":["../../src/render/genres.ts"],"names":[],"mappings":"AAGA,MAAM,IAAI,GAA2E;IACnF,EAAE,EAAE;QACF,OAAO,EAAE,qCAAqC;QAC9C,KAAK,EAAE;YACL,wDAAwD;YACxD,kFAAkF;SACnF;KACF;IACD,EAAE,EAAE;QACF,OAAO,EAAE,2FAA2F;QACpG,KAAK,EAAE;YACL,qEAAqE;YACrE,6FAA6F;SAC9F;KACF;CACF,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAe,EAAE,EAAc,EAAU,EAAE;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACpI,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural.d.ts","sourceRoot":"","sources":["../../src/render/plural.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,GAAG,MAAM,EAAE,UAAU,MAAM,EAAE,QAAQ,MAAM,KAAG,MAA4C,CAAC;AAEhI,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,EAAE,eAAuB,KAAG,MAAgE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** English agreement: only exactly one takes the singular ("0 findings", "1 finding", "1.5 findings"). */
|
|
2
|
+
const isOne = (count) => String(count) === "1";
|
|
3
|
+
export const formFor = (count, singular, plural) => (isOne(count) ? singular : plural);
|
|
4
|
+
export const counted = (count, singular, plural = `${singular}s`) => `${String(count)} ${formFor(count, singular, plural)}`;
|
|
5
|
+
//# sourceMappingURL=plural.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plural.js","sourceRoot":"","sources":["../../src/render/plural.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAC1G,MAAM,KAAK,GAAG,CAAC,KAAsB,EAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC;AAEzE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAE,QAAgB,EAAE,MAAc,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhI,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAM,GAAG,GAAG,QAAQ,GAAG,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-json.d.ts","sourceRoot":"","sources":["../../src/render/rules-json.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"rules-json.d.ts","sourceRoot":"","sources":["../../src/render/rules-json.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA8DnD,0DAA0D;AAC1D,eAAO,MAAM,SAAS,GAAI,OAAO,SAAS,cAAc,EAAE,EAAE,QAAQ,MAAM,EAAE,UAAU,MAAM,EAAE,OAAO,MAAM,KAAG,MA+B7G,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { definedLevels, resolve } from "../levels.js";
|
|
2
2
|
import { uiLanguageOf } from "../ui.js";
|
|
3
|
+
import { presetLevels } from "../genre-load.js";
|
|
3
4
|
const TEXT = {
|
|
4
5
|
ja: {
|
|
5
6
|
offBySetting: "設定で止めている",
|
|
7
|
+
offByGenre: (genre) => `ジャンル ${genre} では見ない`,
|
|
6
8
|
offExperimental: "experimental な rule は既定で動かさない",
|
|
7
9
|
valuesNote: "この 4 語のかわりに数字を直接書いてもよい。4 語のほうを勧める。",
|
|
8
10
|
reason: "<理由>",
|
|
@@ -10,14 +12,17 @@ const TEXT = {
|
|
|
10
12
|
},
|
|
11
13
|
en: {
|
|
12
14
|
offBySetting: "turned off in the settings",
|
|
15
|
+
offByGenre: (genre) => `the ${genre} genre does not check it`,
|
|
13
16
|
offExperimental: "experimental rules do not run by default",
|
|
14
17
|
valuesNote: "A number may be written instead of these four words. The words are recommended.",
|
|
15
18
|
reason: "<reason>",
|
|
16
19
|
byFile: "Add <rule-id>: <level> under rules in chaff.yaml. Leave out anything at its default.",
|
|
17
20
|
},
|
|
18
21
|
};
|
|
19
|
-
const now = (rule, config, genre, text) => {
|
|
20
|
-
const explicit = config.rules[rule.id];
|
|
22
|
+
const now = (rule, config, genre, text, preset) => {
|
|
23
|
+
const explicit = config.rules[rule.id] ?? preset[rule.id];
|
|
24
|
+
if (explicit === "off" && config.rules[rule.id] === undefined)
|
|
25
|
+
return { level: "off", why_off: text.offByGenre(genre) };
|
|
21
26
|
if (explicit === "off")
|
|
22
27
|
return { level: "off", why_off: text.offBySetting };
|
|
23
28
|
const limit = rule.layer === "L4" ? undefined : config.limits[rule.id];
|
|
@@ -48,6 +53,7 @@ const levelsOf = (rule, genre) => {
|
|
|
48
53
|
/** AI に設定を書かせるときの入口。推測せずに書けるだけの情報を 1 つに入れる。spec §19.3。 */
|
|
49
54
|
export const rulesJson = (rules, config, language, genre) => {
|
|
50
55
|
const text = TEXT[uiLanguageOf(language)];
|
|
56
|
+
const preset = presetLevels(genre);
|
|
51
57
|
return JSON.stringify({
|
|
52
58
|
schema_version: 1,
|
|
53
59
|
config_file: "chaff.yaml",
|
|
@@ -65,7 +71,7 @@ export const rulesJson = (rules, config, language, genre) => {
|
|
|
65
71
|
...levelsOf(rule, genre),
|
|
66
72
|
levels_you_can_set: definedLevels(rule),
|
|
67
73
|
your_setting: yourSetting(rule, config),
|
|
68
|
-
now: now(rule, config, genre, text),
|
|
74
|
+
now: now(rule, config, genre, text, preset),
|
|
69
75
|
})),
|
|
70
76
|
how_to_change: {
|
|
71
77
|
by_command: ["relax", "strict", "off"].map((command) => `npx chaff ${command} <rule-id> --why "${text.reason}"`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-json.js","sourceRoot":"","sources":["../../src/render/rules-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAc,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"rules-json.js","sourceRoot":"","sources":["../../src/render/rules-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { RuleDefinition } from "../plugin.ts";
|
|
2
2
|
import type { UserCheck } from "../checks.ts";
|
|
3
3
|
import type { Job as Plan, SemanticResult } from "../run-semantic.ts";
|
|
4
|
-
|
|
4
|
+
/** The banner over a file's machine findings, in the file's language. */
|
|
5
|
+
export declare const machineBanner: (language: string) => readonly string[];
|
|
5
6
|
export declare const renderSemantic: (result: SemanticResult, rules: readonly RuleDefinition[], checks: readonly UserCheck[], language: string) => string[];
|
|
6
|
-
export declare const renderPlan: (path: string, jobs: readonly Plan[], sentences: number) => string[];
|
|
7
|
+
export declare const renderPlan: (path: string, jobs: readonly Plan[], sentences: number, language: string) => string[];
|
|
7
8
|
//# sourceMappingURL=semantic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/render/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"semantic.d.ts","sourceRoot":"","sources":["../../src/render/semantic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAgFtE,yEAAyE;AACzE,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,SAAS,MAAM,EAAgD,CAAC;AAiEjH,eAAO,MAAM,cAAc,GAAI,QAAQ,cAAc,EAAE,OAAO,SAAS,cAAc,EAAE,EAAE,QAAQ,SAAS,SAAS,EAAE,EAAE,UAAU,MAAM,KAAG,MAAM,EAO/I,CAAC;AAgBF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,MAAM,SAAS,IAAI,EAAE,EAAE,WAAW,MAAM,EAAE,UAAU,MAAM,KAAG,MAAM,EAO3G,CAAC"}
|
package/dist/render/semantic.js
CHANGED
|
@@ -1,26 +1,81 @@
|
|
|
1
|
+
import { uiLanguageOf } from "../ui.js";
|
|
1
2
|
import { MARK, localized } from "./text.js";
|
|
3
|
+
import { counted, formFor } from "./plural.js";
|
|
2
4
|
const RULE = 60;
|
|
5
|
+
const TEXT = {
|
|
6
|
+
ja: {
|
|
7
|
+
machineBanner: ["", `═══ 機械による判定 ${"═".repeat(RULE - 18)}`, " 同じ文章なら何度実行しても同じ結果になります", ""],
|
|
8
|
+
aiTitle: `═══ AI による判定 ${"═".repeat(RULE - 17)}`,
|
|
9
|
+
aiNote: [" 文章の意味を読んでいます。実行するたび結果が変わることが", " あります。おかしいと思ったら、そのまま無視して構いません。"],
|
|
10
|
+
read: (asked, seen) => ` ${seen} 文のうち ${asked} 箇所を読みました(残りは機械が対象外と判断)`,
|
|
11
|
+
wholeRead: (name) => [` ${name}: 見るところを絞れず、全文を読みました`, ` look_at に「」で語を書くと、その語を含む文だけになります`],
|
|
12
|
+
word: (word) => `「${word}」`,
|
|
13
|
+
number: "数字",
|
|
14
|
+
narrowedRead: (name, what, kept, total) => ` ${name}: ${what} を含む ${kept} 文だけを読みました(全 ${total} 文)`,
|
|
15
|
+
line: (line) => `${line} 行目`,
|
|
16
|
+
confidence: (value) => `確からしさ ${value}`,
|
|
17
|
+
disagree: [" この指摘が違うと思ったら:"],
|
|
18
|
+
silence: (rule) => ` この箇所だけ黙らせる <!-- stet: ${rule} — 理由 -->`,
|
|
19
|
+
relax: (rule) => ` ルールごとゆるめる npx chaff relax ${rule}`,
|
|
20
|
+
notRunChecks: (count) => ` ${count} 件の検査は、見るところが無いため動いていません。`,
|
|
21
|
+
byMachine: "機械で絞り込み済み",
|
|
22
|
+
whole: "絞り込めず全文",
|
|
23
|
+
containing: (parts) => `${parts} を含む文`,
|
|
24
|
+
planLine: (count, name, how) => ` ${String(count).padStart(3)} 箇所 ${name} (${how})`,
|
|
25
|
+
firstSample: " 最初の 1 件に送る文章:",
|
|
26
|
+
planHead: (path, sentences, asked) => `${path} 全 ${sentences} 文のうち ${asked} 箇所を送ります(API は呼んでいません)`,
|
|
27
|
+
},
|
|
28
|
+
en: {
|
|
29
|
+
machineBanner: ["", `═══ Judged by machine ${"═".repeat(RULE - 21)}`, " The same text gives the same result every time", ""],
|
|
30
|
+
aiTitle: `═══ Judged by AI ${"═".repeat(RULE - 16)}`,
|
|
31
|
+
aiNote: [" These read the meaning of the text. The result can change", " from run to run. If one looks wrong, feel free to ignore it."],
|
|
32
|
+
read: (asked, seen) => ` Read ${counted(asked, "passage")} out of ${counted(seen, "sentence")} (the machine ruled out the rest)`,
|
|
33
|
+
wholeRead: (name) => [
|
|
34
|
+
` ${name}: could not narrow what to read, so read the whole text`,
|
|
35
|
+
` Put words in quotes in look_at ("like this") to read only the sentences that contain them`,
|
|
36
|
+
],
|
|
37
|
+
word: (word) => `"${word}"`,
|
|
38
|
+
number: "a number",
|
|
39
|
+
narrowedRead: (name, what, kept, total) => ` ${name}: read only the ${counted(kept, "sentence")} containing ${what} (of ${total})`,
|
|
40
|
+
line: (line) => `line ${line}`,
|
|
41
|
+
confidence: (value) => `confidence ${value}`,
|
|
42
|
+
disagree: [" If you think this finding is wrong:"],
|
|
43
|
+
silence: (rule) => ` Silence this spot only <!-- stet: ${rule} — reason -->`,
|
|
44
|
+
relax: (rule) => ` Relax the whole rule npx chaff relax ${rule}`,
|
|
45
|
+
notRunChecks: (count) => ` ${counted(count, "check")} did not run: there was nothing for ${formFor(count, "it", "them")} to look at.`,
|
|
46
|
+
byMachine: "narrowed by machine",
|
|
47
|
+
whole: "not narrowed: the whole text",
|
|
48
|
+
containing: (parts) => `sentences containing ${parts}`,
|
|
49
|
+
planLine: (count, name, how) => ` ${String(count).padStart(3)} to send ${name} (${how})`,
|
|
50
|
+
firstSample: " The text sent for the first one:",
|
|
51
|
+
planHead: (path, sentences, asked) => `${path} sends ${counted(asked, "passage")} out of ${counted(sentences, "sentence")} (the API was not called)`,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
3
54
|
const indent = (text, pad) => text.split("\n").map((line) => `${pad}${line}`);
|
|
4
|
-
|
|
55
|
+
/** The banner over a file's machine findings, in the file's language. */
|
|
56
|
+
export const machineBanner = (language) => TEXT[uiLanguageOf(language)].machineBanner;
|
|
57
|
+
/** The words a narrowing looks for, as the screen names them. */
|
|
58
|
+
const lookedFor = (narrowing, language) => {
|
|
59
|
+
const text = TEXT[language];
|
|
60
|
+
return [...narrowing.words.map((word) => text.word(word)), ...(narrowing.needsNumber ? [text.number] : [])];
|
|
61
|
+
};
|
|
5
62
|
/**
|
|
6
63
|
* 自分の書いた検査が、どこまで絞り込めたかを見せる。
|
|
7
64
|
* 絞り込めないまま全文を読んでいることに気づけないと、遅さの原因が分からない。
|
|
8
65
|
*/
|
|
9
|
-
const narrowingLines = (result) => result.narrowed.flatMap(({ name, narrowing }) => {
|
|
10
|
-
if (narrowing.words.length === 0 && !narrowing.needsNumber)
|
|
11
|
-
return [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return [` ${name}: ${what} を含む ${narrowing.kept} 文だけを読みました(全 ${narrowing.total} 文)`];
|
|
66
|
+
const narrowingLines = (result, language) => result.narrowed.flatMap(({ name, narrowing }) => {
|
|
67
|
+
if (narrowing.words.length === 0 && !narrowing.needsNumber)
|
|
68
|
+
return [...TEXT[language].wholeRead(name)];
|
|
69
|
+
const what = lookedFor(narrowing, language).join(language === "ja" ? " " : ", ");
|
|
70
|
+
return [TEXT[language].narrowedRead(name, what, narrowing.kept, narrowing.total)];
|
|
15
71
|
});
|
|
16
|
-
const aiBanner = (result) => [
|
|
72
|
+
const aiBanner = (result, language) => [
|
|
17
73
|
"",
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
" あります。おかしいと思ったら、そのまま無視して構いません。",
|
|
74
|
+
TEXT[language].aiTitle,
|
|
75
|
+
...TEXT[language].aiNote,
|
|
21
76
|
"",
|
|
22
|
-
|
|
23
|
-
...narrowingLines(result),
|
|
77
|
+
TEXT[language].read(result.asked, result.sentencesSeen),
|
|
78
|
+
...narrowingLines(result, language),
|
|
24
79
|
"",
|
|
25
80
|
];
|
|
26
81
|
const nameOf = (rule, rules, checks, language) => {
|
|
@@ -34,52 +89,57 @@ const nameOf = (rule, rules, checks, language) => {
|
|
|
34
89
|
* AI の指摘にだけ確からしさを出し、納得できないときの逃げ道を 2 つ添える。
|
|
35
90
|
* 揺れる判定だと読む人が知らないと、誤検知に振り回される。
|
|
36
91
|
*/
|
|
37
|
-
const block = (finding, named) => {
|
|
92
|
+
const block = (finding, named, language) => {
|
|
93
|
+
const text = TEXT[language];
|
|
38
94
|
const confidence = finding.values["confidence"];
|
|
39
95
|
const reason = String(finding.values["reason"] ?? "");
|
|
40
|
-
const sure = confidence === undefined ? "" : `
|
|
96
|
+
const sure = confidence === undefined ? "" : ` ${text.confidence(String(confidence))}`;
|
|
41
97
|
const fix = named.howToFix.length > 0 ? ["", ...indent(`→ ${named.howToFix}`, " ")] : [];
|
|
42
98
|
return [
|
|
43
99
|
"",
|
|
44
|
-
|
|
100
|
+
// "12 行目" and "line 12" take the same width on a terminal, so the rule ends in the same column in both.
|
|
101
|
+
`─── ${text.line(finding.line)} ${"─".repeat(Math.max(0, RULE - String(finding.line).length - 8))}`,
|
|
45
102
|
"",
|
|
46
103
|
` ${MARK[finding.severity] ?? "·"} ${named.name}${sure}`,
|
|
47
104
|
"",
|
|
48
105
|
...indent(reason, " "),
|
|
49
106
|
...fix,
|
|
50
107
|
"",
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
108
|
+
...text.disagree,
|
|
109
|
+
text.silence(finding.rule),
|
|
110
|
+
text.relax(finding.rule),
|
|
54
111
|
"",
|
|
55
112
|
];
|
|
56
113
|
};
|
|
57
|
-
export const renderSemantic = (result, rules, checks, language) =>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
114
|
+
export const renderSemantic = (result, rules, checks, language) => {
|
|
115
|
+
const ui = uiLanguageOf(language);
|
|
116
|
+
return [
|
|
117
|
+
...aiBanner(result, ui),
|
|
118
|
+
...result.findings.flatMap((finding) => block(finding, nameOf(finding.rule, rules, checks, language), ui)),
|
|
119
|
+
...(result.skipped.length > 0 ? [TEXT[ui].notRunChecks(result.skipped.length), ""] : []),
|
|
120
|
+
];
|
|
121
|
+
};
|
|
62
122
|
/**
|
|
63
123
|
* 何が送られるのかを、API を呼ばずに見せる。`chaff test --dry-run`。
|
|
64
124
|
*
|
|
65
125
|
* 鍵が無い環境でも二段構えの 1 段目まで確かめられる。全文が送られようとしていることに
|
|
66
126
|
* 請求書で気づくのでは遅い。spec §14。
|
|
67
127
|
*/
|
|
68
|
-
const howNarrowed = (job) => {
|
|
128
|
+
const howNarrowed = (job, language) => {
|
|
69
129
|
const narrowing = job.narrowing;
|
|
70
130
|
if (narrowing === undefined)
|
|
71
|
-
return
|
|
72
|
-
const
|
|
73
|
-
const parts = narrowing.needsNumber ? [...quoted, "数字"] : quoted;
|
|
131
|
+
return TEXT[language].byMachine;
|
|
132
|
+
const parts = lookedFor(narrowing, language);
|
|
74
133
|
if (parts.length === 0)
|
|
75
|
-
return
|
|
76
|
-
return
|
|
134
|
+
return TEXT[language].whole;
|
|
135
|
+
return TEXT[language].containing(parts.join(language === "ja" ? " " : ", "));
|
|
77
136
|
};
|
|
78
|
-
export const renderPlan = (path, jobs, sentences) => {
|
|
137
|
+
export const renderPlan = (path, jobs, sentences, language) => {
|
|
138
|
+
const text = TEXT[uiLanguageOf(language)];
|
|
79
139
|
const asked = jobs.reduce((sum, job) => sum + job.candidates.length, 0);
|
|
80
|
-
const lines = jobs.map((job) =>
|
|
140
|
+
const lines = jobs.map((job) => text.planLine(job.candidates.length, job.name, howNarrowed(job, uiLanguageOf(language))));
|
|
81
141
|
const first = jobs.find((job) => job.candidates.length > 0);
|
|
82
|
-
const sample = first === undefined ? [] : ["",
|
|
83
|
-
return ["",
|
|
142
|
+
const sample = first === undefined ? [] : ["", text.firstSample, "", ...indent(String(first.candidates[0]?.text ?? "").slice(0, 300), " ")];
|
|
143
|
+
return ["", text.planHead(path, sentences, asked), "", ...lines, ...sample, ""];
|
|
84
144
|
};
|
|
85
145
|
//# sourceMappingURL=semantic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/render/semantic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"semantic.js","sourceRoot":"","sources":["../../src/render/semantic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/render/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/render/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAGlD,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgCpH,eAAO,MAAM,KAAK,GAAI,UAAU,SAAS,OAAO,EAAE,EAAE,IAAI,UAAU,KAAG,MAGpE,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,aAAa,GAAI,UAAU,SAAS,WAAW,EAAE,EAAE,IAAI,UAAU,KAAG,MAAM,EAKtF,CAAC"}
|
package/dist/render/summary.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { counted } from "./plural.js";
|
|
1
2
|
const count = (findings, severity) => findings.filter((finding) => finding.severity === severity).length;
|
|
2
3
|
const TEXT = {
|
|
3
4
|
ja: {
|
|
@@ -8,9 +9,9 @@ const TEXT = {
|
|
|
8
9
|
},
|
|
9
10
|
en: {
|
|
10
11
|
counts: {
|
|
11
|
-
error: (n) =>
|
|
12
|
-
warning: (n) =>
|
|
13
|
-
info: (n) =>
|
|
12
|
+
error: (n) => counted(n, "error"),
|
|
13
|
+
warning: (n) => counted(n, "warning"),
|
|
14
|
+
info: (n) => counted(n, "note"),
|
|
14
15
|
},
|
|
15
16
|
join: ", ",
|
|
16
17
|
none: "No findings",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/render/summary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/render/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/render/suppressions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../src/render/suppressions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,UAAU,CAAC;AAmClD,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAA;CAAE,CAAC;AAsCzI;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,OAAO,EAAE,EAAE,KAAI,UAAiB,KAAG,MAarF,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { counted } from "./plural.js";
|
|
1
2
|
const TEXT = {
|
|
2
3
|
ja: {
|
|
3
4
|
nudge: " ← 設定の見直しを検討してください",
|
|
@@ -11,7 +12,7 @@ const TEXT = {
|
|
|
11
12
|
},
|
|
12
13
|
en: {
|
|
13
14
|
nudge: " <- consider changing the setting instead",
|
|
14
|
-
more: (n) => ` and ${n
|
|
15
|
+
more: (n) => ` and ${counted(n, "more file")}`,
|
|
15
16
|
count: (n) => `${String(n).padStart(3)}`,
|
|
16
17
|
reasons: (list) => `reasons: ${list}`,
|
|
17
18
|
relaxAll: (rule) => `relax the whole rule: npx chaff relax ${rule} --why "..."`,
|
|
@@ -35,7 +36,7 @@ const groupByRule = (files) => {
|
|
|
35
36
|
reasons: [...new Set(mine.flatMap((row) => (row.reason === undefined ? [] : [row.reason])))],
|
|
36
37
|
};
|
|
37
38
|
})
|
|
38
|
-
.
|
|
39
|
+
.toSorted((left, right) => right.count - left.count);
|
|
39
40
|
};
|
|
40
41
|
const groupLines = (group, ui) => {
|
|
41
42
|
const text = TEXT[ui];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/render/suppressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"suppressions.js","sourceRoot":"","sources":["../../src/render/suppressions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,IAAI,GASL;IACH,EAAE,EAAE;QACF,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO;QAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE;QAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,8BAA8B,IAAI,cAAc;QACpE,IAAI,EAAE,wBAAwB;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI;QACjC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI;KAC1C;IACD,EAAE,EAAE;QACF,KAAK,EAAE,4CAA4C;QACnD,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;QAC9C,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE;QACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,yCAAyC,IAAI,cAAc;QAC/E,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,EAAE;QACvC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,EAAE;KACrD;CACF,CAAC;AAIF,iDAAiD;AACjD,MAAM,QAAQ,GAAG,CAAC,CAAC;AAInB,MAAM,WAAW,GAAG,CAAC,KAAyB,EAAW,EAAE;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACxJ,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACrD,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SAC7F,CAAC;IACJ,CAAC,CAAC;SACD,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,EAAc,EAAY,EAAE;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,OAAO;QACL,EAAE;QACF,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE;QAC9D,SAAS,KAAK,GAAG,IAAI,EAAE;QACvB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACrD,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACxG,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAAE,KAAiB,IAAI,EAAU,EAAE;IAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC;IAClC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,OAAO;QACL,EAAE;QACF,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACxB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjI,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC"}
|