chaffjs 0.25.0 → 0.26.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 +179 -42
- package/dist/adapter-import.d.ts +2 -0
- package/dist/adapter-import.d.ts.map +1 -0
- package/dist/adapter-import.js +11 -0
- package/dist/adapter-import.js.map +1 -0
- package/dist/adapter-load.d.ts.map +1 -1
- package/dist/adapter-load.js +2 -9
- package/dist/adapter-load.js.map +1 -1
- package/dist/ai-score/human-shares.d.ts +4 -0
- package/dist/ai-score/human-shares.d.ts.map +1 -0
- package/dist/ai-score/human-shares.js +205 -0
- package/dist/ai-score/human-shares.js.map +1 -0
- package/dist/ai-score/lint-line.d.ts +4 -0
- package/dist/ai-score/lint-line.d.ts.map +1 -0
- package/dist/ai-score/lint-line.js +9 -0
- package/dist/ai-score/lint-line.js.map +1 -0
- package/dist/ai-score/of-document.d.ts +7 -0
- package/dist/ai-score/of-document.d.ts.map +1 -0
- package/dist/ai-score/of-document.js +40 -0
- package/dist/ai-score/of-document.js.map +1 -0
- package/dist/ai-score/render.d.ts +24 -0
- package/dist/ai-score/render.d.ts.map +1 -0
- package/dist/ai-score/render.js +100 -0
- package/dist/ai-score/render.js.map +1 -0
- package/dist/ai-score/score.d.ts +77 -0
- package/dist/ai-score/score.d.ts.map +1 -0
- package/dist/ai-score/score.js +52 -0
- package/dist/ai-score/score.js.map +1 -0
- package/dist/ai-score/signals.d.ts +19 -0
- package/dist/ai-score/signals.d.ts.map +1 -0
- package/dist/ai-score/signals.js +30 -0
- package/dist/ai-score/signals.js.map +1 -0
- package/dist/ai-score/text.d.ts +37 -0
- package/dist/ai-score/text.d.ts.map +1 -0
- package/dist/ai-score/text.js +59 -0
- package/dist/ai-score/text.js.map +1 -0
- package/dist/ai-score/view.d.ts +5 -0
- package/dist/ai-score/view.d.ts.map +1 -0
- package/dist/ai-score/view.js +19 -0
- package/dist/ai-score/view.js.map +1 -0
- package/dist/backends/anthropic.d.ts +0 -1
- package/dist/backends/anthropic.d.ts.map +1 -1
- package/dist/backends/anthropic.js +0 -1
- package/dist/backends/anthropic.js.map +1 -1
- package/dist/backends/default-model.d.ts +3 -0
- package/dist/backends/default-model.d.ts.map +1 -0
- package/dist/backends/default-model.js +5 -0
- package/dist/backends/default-model.js.map +1 -0
- package/dist/backends/openai.d.ts +0 -1
- package/dist/backends/openai.d.ts.map +1 -1
- package/dist/backends/openai.js +0 -1
- package/dist/backends/openai.js.map +1 -1
- package/dist/browser/adapter-import.d.ts +2 -0
- package/dist/browser/adapter-import.d.ts.map +1 -0
- package/dist/browser/adapter-import.js +17 -0
- package/dist/browser/adapter-import.js.map +1 -0
- package/dist/browser/bounded-match.d.ts +3 -0
- package/dist/browser/bounded-match.d.ts.map +1 -0
- package/dist/browser/bounded-match.js +4 -0
- package/dist/browser/bounded-match.js.map +1 -0
- package/dist/browser/check-text.d.ts +43 -0
- package/dist/browser/check-text.d.ts.map +1 -0
- package/dist/browser/check-text.js +50 -0
- package/dist/browser/check-text.js.map +1 -0
- package/dist/browser/detectors.d.ts +4 -0
- package/dist/browser/detectors.d.ts.map +1 -0
- package/dist/browser/detectors.js +22 -0
- package/dist/browser/detectors.js.map +1 -0
- package/dist/browser/package-files.d.ts +5 -0
- package/dist/browser/package-files.d.ts.map +1 -0
- package/dist/browser/package-files.js +8 -0
- package/dist/browser/package-files.js.map +1 -0
- package/dist/browser/path.d.ts +9 -0
- package/dist/browser/path.d.ts.map +1 -0
- package/dist/browser/path.js +70 -0
- package/dist/browser/path.js.map +1 -0
- package/dist/browser/working-dir.d.ts +2 -0
- package/dist/browser/working-dir.d.ts.map +1 -0
- package/dist/browser/working-dir.js +3 -0
- package/dist/browser/working-dir.js.map +1 -0
- package/dist/browser-files.d.ts +21 -0
- package/dist/browser-files.d.ts.map +1 -0
- package/dist/browser-files.js +65 -0
- package/dist/browser-files.js.map +1 -0
- package/dist/browser.d.ts +9 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +13 -0
- package/dist/browser.js.map +1 -0
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +2 -0
- package/dist/cli-text.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/ai-score.d.ts +8 -0
- package/dist/commands/ai-score.d.ts.map +1 -0
- package/dist/commands/ai-score.js +59 -0
- package/dist/commands/ai-score.js.map +1 -0
- package/dist/commands/document-commands.d.ts.map +1 -1
- package/dist/commands/document-commands.js +2 -0
- package/dist/commands/document-commands.js.map +1 -1
- package/dist/config/by-path-problems.d.ts +5 -0
- package/dist/config/by-path-problems.d.ts.map +1 -0
- package/dist/config/by-path-problems.js +11 -0
- package/dist/config/by-path-problems.js.map +1 -0
- package/dist/config/load.d.ts +9 -2
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +21 -8
- package/dist/config/load.js.map +1 -1
- package/dist/config/read.d.ts +2 -0
- package/dist/config/read.d.ts.map +1 -1
- package/dist/config/read.js +4 -1
- package/dist/config/read.js.map +1 -1
- package/dist/config/warnings.d.ts +1 -1
- package/dist/config/warnings.d.ts.map +1 -1
- package/dist/config/warnings.js +3 -1
- package/dist/config/warnings.js.map +1 -1
- package/dist/config/working-dir.d.ts +2 -0
- package/dist/config/working-dir.d.ts.map +1 -0
- package/dist/config/working-dir.js +3 -0
- package/dist/config/working-dir.js.map +1 -0
- package/dist/custom/bounded-match.d.ts +1 -12
- package/dist/custom/bounded-match.d.ts.map +1 -1
- package/dist/custom/bounded-match.js +1 -11
- package/dist/custom/bounded-match.js.map +1 -1
- package/dist/custom/pattern-timeout.d.ts +13 -0
- package/dist/custom/pattern-timeout.d.ts.map +1 -0
- package/dist/custom/pattern-timeout.js +13 -0
- package/dist/custom/pattern-timeout.js.map +1 -0
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +4 -5
- package/dist/detect.js.map +1 -1
- package/dist/detectors/date-year.d.ts +10 -2
- package/dist/detectors/date-year.d.ts.map +1 -1
- package/dist/detectors/date-year.js +44 -8
- package/dist/detectors/date-year.js.map +1 -1
- package/dist/detectors/defined-term-form.d.ts +5 -0
- package/dist/detectors/defined-term-form.d.ts.map +1 -1
- package/dist/detectors/defined-term-form.js +22 -5
- package/dist/detectors/defined-term-form.js.map +1 -1
- package/dist/detectors/orthographic-variant.d.ts.map +1 -1
- package/dist/detectors/orthographic-variant.js +44 -17
- package/dist/detectors/orthographic-variant.js.map +1 -1
- package/dist/detectors/party-role-name.d.ts +3 -0
- package/dist/detectors/party-role-name.d.ts.map +1 -0
- package/dist/detectors/party-role-name.js +35 -0
- package/dist/detectors/party-role-name.js.map +1 -0
- package/dist/detectors/quote-without-source.d.ts +17 -0
- package/dist/detectors/quote-without-source.d.ts.map +1 -0
- package/dist/detectors/quote-without-source.js +64 -0
- package/dist/detectors/quote-without-source.js.map +1 -0
- package/dist/detectors/reference-text.js +1 -1
- package/dist/detectors/reference-text.js.map +1 -1
- package/dist/detectors/registry/party-role-name.d.ts +3 -0
- package/dist/detectors/registry/party-role-name.d.ts.map +1 -0
- package/dist/detectors/registry/party-role-name.js +3 -0
- package/dist/detectors/registry/party-role-name.js.map +1 -0
- package/dist/detectors/registry/quote-without-source.d.ts +3 -0
- package/dist/detectors/registry/quote-without-source.d.ts.map +1 -0
- package/dist/detectors/registry/quote-without-source.js +3 -0
- package/dist/detectors/registry/quote-without-source.js.map +1 -0
- package/dist/detectors/registry/vague-deadline.d.ts +3 -0
- package/dist/detectors/registry/vague-deadline.d.ts.map +1 -0
- package/dist/detectors/registry/vague-deadline.js +3 -0
- package/dist/detectors/registry/vague-deadline.js.map +1 -0
- package/dist/detectors/run-in-label.d.ts +7 -0
- package/dist/detectors/run-in-label.d.ts.map +1 -0
- package/dist/detectors/run-in-label.js +53 -0
- package/dist/detectors/run-in-label.js.map +1 -0
- package/dist/detectors/sentence-counts.d.ts +3 -1
- package/dist/detectors/sentence-counts.d.ts.map +1 -1
- package/dist/detectors/sentence-counts.js +11 -4
- package/dist/detectors/sentence-counts.js.map +1 -1
- package/dist/detectors/sentence-ending.d.ts +1 -1
- package/dist/detectors/sentence-ending.d.ts.map +1 -1
- package/dist/detectors/sentence-ending.js +2 -1
- package/dist/detectors/sentence-ending.js.map +1 -1
- package/dist/detectors/structure-tree.d.ts +4 -1
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +21 -2
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/unbalanced-bracket.d.ts +1 -1
- package/dist/detectors/unbalanced-bracket.d.ts.map +1 -1
- package/dist/detectors/unbalanced-bracket.js +23 -11
- package/dist/detectors/unbalanced-bracket.js.map +1 -1
- package/dist/detectors/vague-deadline.d.ts +25 -0
- package/dist/detectors/vague-deadline.d.ts.map +1 -0
- package/dist/detectors/vague-deadline.js +97 -0
- package/dist/detectors/vague-deadline.js.map +1 -0
- package/dist/furigana.d.ts +7 -0
- package/dist/furigana.d.ts.map +1 -0
- package/dist/furigana.js +16 -0
- package/dist/furigana.js.map +1 -0
- package/dist/genre-load.d.ts.map +1 -1
- package/dist/genre-load.js +5 -7
- package/dist/genre-load.js.map +1 -1
- package/dist/grade/ai-score.d.ts +16 -0
- package/dist/grade/ai-score.d.ts.map +1 -0
- package/dist/grade/ai-score.js +17 -0
- package/dist/grade/ai-score.js.map +1 -0
- package/dist/grade/finding.d.ts +6 -0
- package/dist/grade/finding.d.ts.map +1 -0
- package/dist/grade/finding.js +13 -0
- package/dist/grade/finding.js.map +1 -0
- package/dist/grade/grade-item.d.ts.map +1 -1
- package/dist/grade/grade-item.js +4 -11
- package/dist/grade/grade-item.js.map +1 -1
- package/dist/grade/render-variants.d.ts.map +1 -1
- package/dist/grade/render-variants.js +3 -0
- package/dist/grade/render-variants.js.map +1 -1
- package/dist/grade/render.d.ts.map +1 -1
- package/dist/grade/render.js +1 -0
- package/dist/grade/render.js.map +1 -1
- package/dist/grade/result.d.ts +3 -0
- package/dist/grade/result.d.ts.map +1 -1
- package/dist/grade/results-read.d.ts.map +1 -1
- package/dist/grade/results-read.js +13 -2
- package/dist/grade/results-read.js.map +1 -1
- package/dist/grade/summary.d.ts +3 -0
- package/dist/grade/summary.d.ts.map +1 -1
- package/dist/grade/summary.js +6 -0
- package/dist/grade/summary.js.map +1 -1
- package/dist/grade/text.d.ts +2 -0
- package/dist/grade/text.d.ts.map +1 -1
- package/dist/grade/text.js +2 -0
- package/dist/grade/text.js.map +1 -1
- package/dist/grade/variants-text.d.ts +3 -0
- package/dist/grade/variants-text.d.ts.map +1 -1
- package/dist/grade/variants-text.js +4 -0
- package/dist/grade/variants-text.js.map +1 -1
- package/dist/grade/variants.d.ts +3 -0
- package/dist/grade/variants.d.ts.map +1 -1
- package/dist/grade/variants.js +1 -0
- package/dist/grade/variants.js.map +1 -1
- package/dist/grade-api.d.ts +1 -0
- package/dist/grade-api.d.ts.map +1 -1
- package/dist/grade-api.js +2 -1
- package/dist/grade-api.js.map +1 -1
- package/dist/judge.d.ts +0 -1
- package/dist/judge.d.ts.map +1 -1
- package/dist/judge.js +0 -1
- package/dist/judge.js.map +1 -1
- package/dist/known-genres.js +2 -2
- package/dist/known-genres.js.map +1 -1
- package/dist/package-files.d.ts +6 -0
- package/dist/package-files.d.ts.map +1 -0
- package/dist/package-files.js +11 -0
- package/dist/package-files.js.map +1 -0
- package/dist/profile/load.d.ts.map +1 -1
- package/dist/profile/load.js +5 -6
- package/dist/profile/load.js.map +1 -1
- package/dist/rule-load.d.ts.map +1 -1
- package/dist/rule-load.js +5 -6
- package/dist/rule-load.js.map +1 -1
- package/dist/rule-offs.js +3 -3
- package/dist/rule-offs.js.map +1 -1
- package/dist/run.js +1 -1
- package/dist/run.js.map +1 -1
- package/dist/structure/date-range.d.ts +4 -0
- package/dist/structure/date-range.d.ts.map +1 -1
- package/dist/structure/date-range.js +23 -3
- package/dist/structure/date-range.js.map +1 -1
- package/dist/structure/issues.d.ts +17 -1
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +54 -5
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/party-role.d.ts +30 -0
- package/dist/structure/party-role.d.ts.map +1 -0
- package/dist/structure/party-role.js +58 -0
- package/dist/structure/party-role.js.map +1 -0
- package/dist/structure/prose-total.d.ts +28 -0
- package/dist/structure/prose-total.d.ts.map +1 -0
- package/dist/structure/prose-total.js +99 -0
- package/dist/structure/prose-total.js.map +1 -0
- package/dist/structure/reference-text.d.ts +5 -0
- package/dist/structure/reference-text.d.ts.map +1 -1
- package/dist/structure/reference-text.js +17 -4
- package/dist/structure/reference-text.js.map +1 -1
- package/dist/structure/term-prefix.d.ts +18 -0
- package/dist/structure/term-prefix.d.ts.map +1 -0
- package/dist/structure/term-prefix.js +40 -0
- package/dist/structure/term-prefix.js.map +1 -0
- package/dist/structure/total.d.ts +2 -0
- package/dist/structure/total.d.ts.map +1 -1
- package/dist/structure/total.js +2 -0
- package/dist/structure/total.js.map +1 -1
- package/dist/structure-shape/baseline-load.d.ts.map +1 -1
- package/dist/structure-shape/baseline-load.js +4 -5
- package/dist/structure-shape/baseline-load.js.map +1 -1
- package/dist/style-load.d.ts.map +1 -1
- package/dist/style-load.js +5 -6
- package/dist/style-load.js.map +1 -1
- package/package.json +24 -3
- package/rules/cliche.yaml +28 -8
- package/rules/date-without-year.yaml +28 -3
- package/rules/defined-term-form.yaml +9 -6
- package/rules/demonstrative-opener-run.yaml +24 -7
- package/rules/no-mixed-desumasu.yaml +2 -2
- package/rules/orthographic-variant.yaml +2 -2
- package/rules/party-role-name.yaml +94 -0
- package/rules/quote-without-source.yaml +61 -0
- package/rules/total-mismatch.yaml +8 -8
- package/rules/vague-deadline.yaml +95 -0
- package/rules/weasel-word.yaml +25 -7
- package/skills/chaff/SKILL.md +12 -2
- package/src/adapter-import.ts +3 -0
- package/src/adapter-load.ts +2 -1
- package/src/ai-score/human-shares.ts +207 -0
- package/src/ai-score/lint-line.ts +10 -0
- package/src/ai-score/of-document.ts +46 -0
- package/src/ai-score/render.ts +124 -0
- package/src/ai-score/score.ts +121 -0
- package/src/ai-score/signals.ts +39 -0
- package/src/ai-score/text.ts +103 -0
- package/src/ai-score/view.ts +21 -0
- package/src/backends/anthropic.ts +0 -2
- package/src/backends/default-model.ts +9 -0
- package/src/backends/openai.ts +0 -2
- package/src/browser/adapter-import.ts +19 -0
- package/src/browser/bounded-match.ts +9 -0
- package/src/browser/check-text.ts +106 -0
- package/src/browser/detectors.ts +40 -0
- package/src/browser/import-meta-glob.d.ts +5 -0
- package/src/browser/package-files.ts +13 -0
- package/src/browser/path.ts +73 -0
- package/src/browser/working-dir.ts +3 -0
- package/src/browser-files.ts +87 -0
- package/src/browser.ts +19 -0
- package/src/cli-text.ts +2 -0
- package/src/cli.ts +4 -1
- package/src/commands/ai-score.ts +77 -0
- package/src/commands/document-commands.ts +2 -0
- package/src/config/by-path-problems.ts +17 -0
- package/src/config/load.ts +21 -8
- package/src/config/read.ts +5 -1
- package/src/config/warnings.ts +3 -1
- package/src/config/working-dir.ts +3 -0
- package/src/custom/bounded-match.ts +1 -16
- package/src/custom/pattern-timeout.ts +17 -0
- package/src/detect.ts +4 -5
- package/src/detectors/date-year.ts +51 -12
- package/src/detectors/defined-term-form.ts +28 -6
- package/src/detectors/orthographic-variant.ts +59 -18
- package/src/detectors/party-role-name.ts +44 -0
- package/src/detectors/quote-without-source.ts +90 -0
- package/src/detectors/reference-text.ts +1 -1
- package/src/detectors/registry/party-role-name.ts +4 -0
- package/src/detectors/registry/quote-without-source.ts +4 -0
- package/src/detectors/registry/vague-deadline.ts +4 -0
- package/src/detectors/run-in-label.ts +60 -0
- package/src/detectors/sentence-counts.ts +13 -4
- package/src/detectors/sentence-ending.ts +3 -2
- package/src/detectors/structure-tree.ts +28 -6
- package/src/detectors/unbalanced-bracket.ts +25 -10
- package/src/detectors/vague-deadline.ts +132 -0
- package/src/furigana.ts +20 -0
- package/src/genre-load.ts +5 -7
- package/src/grade/ai-score.ts +32 -0
- package/src/grade/finding.ts +16 -0
- package/src/grade/grade-item.ts +4 -13
- package/src/grade/render-variants.ts +5 -0
- package/src/grade/render.ts +1 -0
- package/src/grade/result.ts +3 -0
- package/src/grade/results-read.ts +17 -2
- package/src/grade/summary.ts +9 -0
- package/src/grade/text.ts +6 -0
- package/src/grade/variants-text.ts +7 -0
- package/src/grade/variants.ts +4 -0
- package/src/grade-api.ts +3 -1
- package/src/judge.ts +0 -2
- package/src/known-genres.ts +2 -2
- package/src/package-files.ts +15 -0
- package/src/profile/load.ts +5 -6
- package/src/rule-load.ts +5 -6
- package/src/rule-offs.ts +3 -3
- package/src/run.ts +1 -1
- package/src/structure/date-range.ts +28 -3
- package/src/structure/issues.ts +61 -6
- package/src/structure/party-role.ts +94 -0
- package/src/structure/prose-total.ts +135 -0
- package/src/structure/reference-text.ts +17 -4
- package/src/structure/term-prefix.ts +54 -0
- package/src/structure/total.ts +4 -0
- package/src/structure-shape/baseline-load.ts +4 -5
- package/src/style-load.ts +5 -6
|
@@ -10,8 +10,8 @@ name:
|
|
|
10
10
|
en: A defined term used in another form
|
|
11
11
|
|
|
12
12
|
why:
|
|
13
|
-
ja: 契約では、定義した語は定義した形のまま使うのが決まりです。「本サービス」と定義したあとで「「本サービス」」とかぎ括弧を付け直すと、新しく定義し直したのか、同じものなのかが読み手に分かりません。英語では "Services" と定義した語を "services"
|
|
14
|
-
en: 'A contract uses each defined term exactly as defined. Quoting a term again after its definition ("the "Services"") leaves the reader asking whether it is being defined anew. Writing "services" where "Services" is defined splits the defined sense from the ordinary one, which is where disputes start. chaff points at a term set in quotes again after its definition,
|
|
13
|
+
ja: 契約では、定義した語は定義した形のまま使うのが決まりです。「本サービス」と定義したあとで「「本サービス」」とかぎ括弧を付け直すと、新しく定義し直したのか、同じものなのかが読み手に分かりません。英語では "Services" と定義した語を "services" と小文字で書くと、定義した意味なのか、ふつうの意味なのかが分かれ、争いのもとになります。「本業務」と定義して「本件業務」と書くと、別の業務を指すのかと読めます。定義の後ろで、かぎ括弧や引用符に入れ直した語、大文字で定義した語を小文字で書いた所(大文字の使用より少ないとき)、頭の「本」と「本件」を入れ替えた語(その形も定義した語なら除きます)を指します。
|
|
14
|
+
en: 'A contract uses each defined term exactly as defined. Quoting a term again after its definition ("the "Services"") leaves the reader asking whether it is being defined anew. Writing "services" where "Services" is defined splits the defined sense from the ordinary one, which is where disputes start. In Japanese, 本件業務 written where 本業務 is defined reads as another task. chaff points at a term set in quotes again after its definition, at a capitalised term written in lower case (when the capitalised uses are more), and at a Japanese term written with its other prefix (本 for 本件 or the other way round), unless that form is defined too.'
|
|
15
15
|
|
|
16
16
|
message:
|
|
17
17
|
ja: 定義した「{term}」と違う形で使っています
|
|
@@ -24,6 +24,9 @@ messages:
|
|
|
24
24
|
case:
|
|
25
25
|
ja: 「{term}」は {line} 行目で大文字で定義した語ですが、ここは小文字です
|
|
26
26
|
en: '"{term}" is defined with a capital on line {line}, but written in lower case here'
|
|
27
|
+
prefix:
|
|
28
|
+
ja: 「{term}」は {line} 行目で定義した語ですが、ここは「{written}」と書いています
|
|
29
|
+
en: '"{term}" is defined on line {line}, but written "{written}" here'
|
|
27
30
|
|
|
28
31
|
how_to_fix:
|
|
29
32
|
ja: 定義した語はかぎ括弧を付けずに使い、英語では定義のとおり大文字で始めてください。ふつうの意味で使うなら、別の言葉に替えます。
|
|
@@ -41,8 +44,8 @@ off_for:
|
|
|
41
44
|
|
|
42
45
|
group: consistency
|
|
43
46
|
summary:
|
|
44
|
-
ja:
|
|
45
|
-
en: A defined term quoted again after its definition,
|
|
47
|
+
ja: 契約や規約で、定義した語を定義のあとでかぎ括弧に入れ直したり、大文字で定義した語を小文字で書いたり、「本業務」を「本件業務」と書いたりしている所
|
|
48
|
+
en: A defined term quoted again after its definition, a capitalised defined term written in lower case, or a Japanese term with its other prefix (本件業務 for 本業務)
|
|
46
49
|
example:
|
|
47
50
|
ja:
|
|
48
51
|
config: { genre: legal/contract }
|
|
@@ -78,8 +81,8 @@ example:
|
|
|
78
81
|
3. You must not resell the Services.
|
|
79
82
|
|
|
80
83
|
not_flagged:
|
|
81
|
-
ja: 定義そのもの(以下「本サービス」という、「本サービス」とは)、定義より前の使用(use-before-definition が見ます)、文の頭の大文字、小文字の使用が {limit}
|
|
82
|
-
en: 'The definitions themselves ("Services" means, (the "Services")), uses before the definition (use-before-definition reads those), capitals at the start of a sentence, and terms written in lower case more than {limit} times or more often than capitalised (taken as the ordinary word used on purpose) are not reported, nor is a use inside the defining sentence ("Customer" means the party named "Customer"). Statutes and regulations quote a term to point at its definition, so that genre does not run this rule.'
|
|
84
|
+
ja: 定義そのもの(以下「本サービス」という、「本サービス」とは)、定義より前の使用(use-before-definition が見ます)、文の頭の大文字、小文字の使用が {limit} 個を超えるか大文字の使用より多い語(ふつうの意味で使っているとみなす)は指しません。定義の文の中の使用(「顧客」とは、表紙に「顧客」と書いた者をいう)も見ません。法令・規程のジャンルは、定義を指すために語をかぎ括弧に入れるので見ません。「本」と「本件」を入れ替えた形は、その形も定義した語であるとき、長い語の一部(見本物品)のときは見ません。
|
|
85
|
+
en: 'The definitions themselves ("Services" means, (the "Services")), uses before the definition (use-before-definition reads those), capitals at the start of a sentence, and terms written in lower case more than {limit} times or more often than capitalised (taken as the ordinary word used on purpose) are not reported, nor is a use inside the defining sentence ("Customer" means the party named "Customer"). Statutes and regulations quote a term to point at its definition, so that genre does not run this rule. A term with its other prefix (本件業務 for 本業務) is not reported when that form is defined too, or inside a longer word (見本物品).'
|
|
83
86
|
level_meaning:
|
|
84
87
|
ja: 小文字の使用が {limit} 個以下で、大文字の使用より少ないとき指摘
|
|
85
88
|
en: lower-case uses reported when they are {limit} or fewer and fewer than the capitalised ones
|
|
@@ -4,7 +4,7 @@ status: stable
|
|
|
4
4
|
how_to_find: opener-run
|
|
5
5
|
word_list: demonstrative-opener
|
|
6
6
|
requires: [pos]
|
|
7
|
-
languages: [ja]
|
|
7
|
+
languages: [ja, en]
|
|
8
8
|
severity: info
|
|
9
9
|
|
|
10
10
|
name:
|
|
@@ -13,15 +13,15 @@ name:
|
|
|
13
13
|
|
|
14
14
|
why:
|
|
15
15
|
ja: 「これは」「その結果」「この方法は」のように指示語で始まる文が続くと、読み手は一文ごとに「どれのことか」を前に戻って確かめることになります。指すものが一つ前の文なのか、もっと前なのかも曖昧になります。数えるのは同じ段落の中の連続だけです。
|
|
16
|
-
en:
|
|
16
|
+
en: Sentence after sentence opening with a word that points back (This, That, It; これは, その結果) sends the reader back each time to find what it points at, and blurs whether it means the last sentence or one before. Only runs within one paragraph are counted.
|
|
17
17
|
|
|
18
18
|
message:
|
|
19
19
|
ja: 「{word}」など、指示語で始まる文が {count} 文続いています({limit} 文まで)
|
|
20
|
-
en: '{count} sentences in a row open with a
|
|
20
|
+
en: '{count} sentences in a row open with a word that points back, such as "{word}" (limit {limit})'
|
|
21
21
|
|
|
22
22
|
how_to_fix:
|
|
23
23
|
ja: 指示語のどれかを、指している名詞に置き換えてください(その結果 → 調査の結果)。
|
|
24
|
-
en: Replace one of the demonstratives with the noun it points at (その結果 → 調査の結果).
|
|
24
|
+
en: Replace one of the demonstratives with the noun it points at (This → The new procedure; その結果 → 調査の結果).
|
|
25
25
|
|
|
26
26
|
levels: { strict: 1, normal: 2, relaxed: 3 }
|
|
27
27
|
|
|
@@ -30,17 +30,22 @@ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
|
|
|
30
30
|
group: readability
|
|
31
31
|
summary:
|
|
32
32
|
ja: 「これは」「その」「この」のような指示語で始まる文が、同じ段落の中で続く所
|
|
33
|
-
en:
|
|
33
|
+
en: Sentences in a row, within one paragraph, that open with a word pointing back (This, That, It; これ, その)
|
|
34
34
|
example:
|
|
35
35
|
ja:
|
|
36
36
|
before: |
|
|
37
37
|
新しい手順を導入しました。これは作業を減らすためです。その結果、残業が減りました。この効果は来月も続く見込みです。
|
|
38
38
|
after: |
|
|
39
39
|
新しい手順を導入しました。作業を減らすためです。その結果、残業が減りました。残業の減少は来月も続く見込みです。
|
|
40
|
+
en:
|
|
41
|
+
before: |
|
|
42
|
+
We introduced a new procedure. This was meant to cut the work. It reduced overtime. That effect should continue next month.
|
|
43
|
+
after: |
|
|
44
|
+
We introduced a new procedure. This was meant to cut the work. The procedure reduced overtime, and the reduction should continue next month.
|
|
40
45
|
|
|
41
46
|
not_flagged:
|
|
42
|
-
ja:
|
|
43
|
-
en: The count restarts at each paragraph. Words such as それぞれ and the conjunction そして are not counted.
|
|
47
|
+
ja: 段落が変われば数え直します。「それぞれ」のように一語になったものと、接続詞の「そして」は数えません。英語では、「This Agreement」「This section」のように文書そのものを指す書き出しと、「It is worth」「It seems」のように後ろを指す It は数えません。
|
|
48
|
+
en: The count restarts at each paragraph. Words such as それぞれ and the conjunction そして are not counted. In English, an opening that names the document itself ("This Agreement", "This section") and an "it" that stands for what follows ("It is worth", "It seems") are not counted.
|
|
44
49
|
level_meaning:
|
|
45
50
|
ja: 指示語で始まる文 {limit} 文の連続まで
|
|
46
51
|
en: up to {limit} such sentences in a row
|
|
@@ -58,3 +63,15 @@ rewrite:
|
|
|
58
63
|
avoid:
|
|
59
64
|
- 指しているものを取り違える
|
|
60
65
|
- 指示語を別の指示語(同様に、前述の)に替えるだけ
|
|
66
|
+
en:
|
|
67
|
+
direction: Of the demonstratives in the run, replace the ones whose referent is furthest away with the noun they point at. One that points at the sentence just before may stay.
|
|
68
|
+
pairs:
|
|
69
|
+
- before: We introduced a new procedure. This was meant to cut the work. It reduced overtime. That effect should continue next month.
|
|
70
|
+
after: We introduced a new procedure. This was meant to cut the work. The procedure reduced overtime, and the reduction should continue next month.
|
|
71
|
+
- before: The audit found three gaps. These came from an old manual. It is two years old. This will be fixed next month.
|
|
72
|
+
after: The audit found three gaps. They came from a manual that is two years old. We will revise the manual next month.
|
|
73
|
+
keep:
|
|
74
|
+
- what each word points at, and the order of the sentences
|
|
75
|
+
avoid:
|
|
76
|
+
- mistaking what a word points at
|
|
77
|
+
- swapping one pointer for another (the above, the former, said)
|
|
@@ -51,8 +51,8 @@ example:
|
|
|
51
51
|
新しい料金は来月から始まります。請求書の形式も変わります。支払いの期限は月末です。古い料金は三月で終わります。
|
|
52
52
|
|
|
53
53
|
not_flagged:
|
|
54
|
-
ja:
|
|
55
|
-
en: Neither register is called right; only the sentences in the minority are pointed at. The body and each list are counted apart, and a sentence in a list's minority is left alone when its register is the document's majority.
|
|
54
|
+
ja: どちらの調子が正しいかは決めません。多いほうに揃っていない、少ないほうの文だけを指します。本文と箇条書きは別々に数えます。箇条書きの中の少ないほうが文書全体では多いほうなら、その文は指しません。項目や段落の頭の太字の札(「- **速く書ける。** 説明です。」の「速く書ける。」)は見出しと同じく文に数えません。
|
|
55
|
+
en: Neither register is called right; only the sentences in the minority are pointed at. The body and each list are counted apart, and a sentence in a list's minority is left alone when its register is the document's majority. A bold label that opens an item or a paragraph and is followed by more text on its line is a heading, not a sentence.
|
|
56
56
|
level_meaning:
|
|
57
57
|
ja: 少ないほうの調子の文が {limit} 文以下のとき、それを指摘
|
|
58
58
|
en: reported when the minority register has {limit} sentences or fewer
|
|
@@ -56,8 +56,8 @@ example:
|
|
|
56
56
|
Send the form by email. We answer every email within a day. Attach the receipt to the email.
|
|
57
57
|
|
|
58
58
|
not_flagged:
|
|
59
|
-
ja: 読みが同じでも漢字の違う語(書く・描く)、補助動詞・形式名詞と本来の使い方の書き分け(見て下さい・資料を下さい)、書き分けが意味の違いになる語(成る・なる、言う・いう)、語末の「ー」だけの違い(katakana-long-vowel
|
|
60
|
-
en: The case of a word's first letter (Email, email; Long-Term, long-term) is not a spelling, nor is a word in capitals only (emphasis or an acronym). Hyphenated words that are another word (re-sign, resign), part of an address (github.com), anything in quotation marks and the team's names are not compared. Nothing is reported when the minority is more than a third. The literature preset turns it off, since old spelling belongs to its time.
|
|
59
|
+
ja: 読みが同じでも漢字の違う語(書く・描く)、補助動詞・形式名詞と本来の使い方の書き分け(見て下さい・資料を下さい)、書き分けが意味の違いになる語(成る・なる、言う・いう)、語末の「ー」だけの違い(katakana-long-vowel が見ます)、鉤括弧や引用符の中、語の直後のふりがなの括弧の中(HTTP(えいちてぃーてぃーぴー))、chaff.yaml の names に書いた名前は見ません。名詞に続けて書いたかなの名詞(全員ぶん)と慣用句の動詞(気をつける)は、同じ読みの語(文、名札を付ける)と別に比べます。英字は、頭の字の大文字小文字(Email と email)と、大文字だけの語(強調や略語)を書き方の違いにしません。少ないほうが三分の一を超えるときも言いません。文学のジャンルでは既定で止めています(その時代の書き方のため)。
|
|
60
|
+
en: The case of a word's first letter (Email, email; Long-Term, long-term) is not a spelling, nor is a word in capitals only (emphasis or an acronym). Hyphenated words that are another word (re-sign, resign), part of an address (github.com), anything in quotation marks, a Japanese reading in brackets right after a word (HTTP(えいちてぃーてぃーぴー)) and the team's names are not compared. Nothing is reported when the minority is more than a third. The literature preset turns it off, since old spelling belongs to its time.
|
|
61
61
|
level_meaning:
|
|
62
62
|
ja: 少ないほうが語の {limit}% 以下のとき指摘
|
|
63
63
|
en: reported when the minority spelling is {limit}% of the word's uses or less
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
id: party-role-name
|
|
2
|
+
layer: L3
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: party-role-name
|
|
5
|
+
requires: [structure]
|
|
6
|
+
severity: info
|
|
7
|
+
|
|
8
|
+
name:
|
|
9
|
+
ja: 当事者を、定めた呼び名でなく立場の語で書いている
|
|
10
|
+
en: A party named by its role instead of the name the contract gave it
|
|
11
|
+
|
|
12
|
+
why:
|
|
13
|
+
ja: 「株式会社しおさい技研(以下「乙」という。)」と定めた契約で、途中から「受託者」と書くと、読み手は受託者が乙のことか、別の誰か(再委託先など)なのかを確かめることになります。ひな形の条項を貼り合わせたときに、元の契約の呼び方が残ると起きます。文の途中で括弧に入れて当事者の呼び名を定めた文書で、その後ろに書いた立場の語(委託者・受託者・開示者・受領者・売主・買主・運営者、the Vendor、the Recipient など)を指します。語は言語ごとの語彙表にあります。
|
|
14
|
+
en: Once a contract says "Harbour Works Ltd (the "Supplier")", writing "the Vendor" later makes the reader check whether the Supplier is meant or someone else, such as a subcontractor. It happens when clauses from another template are pasted in with that template's names. In a document that gives its parties short names in brackets, chaff points at each later role word (the Vendor, the Recipient, the Company, 受託者, 売主) that the document did not define. The words are in each language's word list.
|
|
15
|
+
|
|
16
|
+
message:
|
|
17
|
+
ja: 「{role}」は、この契約が当事者に定めた呼び名({names})ではありません
|
|
18
|
+
en: '"{role}" is not a name this contract gave a party ({names})'
|
|
19
|
+
|
|
20
|
+
how_to_fix:
|
|
21
|
+
ja: 定めた呼び名(甲・乙など)に書き換えてください。当事者でない人を指すなら、その人を定義してから使います。
|
|
22
|
+
en: Use the name the contract gave the party. If someone else is meant, define them first.
|
|
23
|
+
|
|
24
|
+
levels: { strict: warning, normal: info, relaxed: info }
|
|
25
|
+
|
|
26
|
+
use_for: [legal, docs, academic, literature, speech]
|
|
27
|
+
off_for:
|
|
28
|
+
docs: "Defined terms and short names are a contract's apparatus: the legal genres check them."
|
|
29
|
+
academic: "Defined terms and short names are a contract's apparatus: the legal genres check them."
|
|
30
|
+
literature: "Defined terms and short names are a contract's apparatus: the legal genres check them."
|
|
31
|
+
speech: "Defined terms and short names are a contract's apparatus: the legal genres check them."
|
|
32
|
+
legal/statute: "A statute names people by their role (委託者, the employer) on purpose: it defines no parties."
|
|
33
|
+
|
|
34
|
+
group: consistency
|
|
35
|
+
summary:
|
|
36
|
+
ja: 当事者を「甲」「乙」と定めたあとで、「委託者」「受託者」のような立場の語で書いている所
|
|
37
|
+
en: A party given a short name ("the Supplier") and later called by a role word (the Vendor)
|
|
38
|
+
example:
|
|
39
|
+
ja:
|
|
40
|
+
config: { genre: legal/contract }
|
|
41
|
+
before: |
|
|
42
|
+
# 業務委託契約書
|
|
43
|
+
|
|
44
|
+
株式会社みなと製作所(以下「甲」という。)と北浜商事株式会社(以下「乙」という。)は、次のとおり契約を結ぶ。
|
|
45
|
+
|
|
46
|
+
第1条 受託者は、甲の会議室の予約を代わりに行う。
|
|
47
|
+
after: |
|
|
48
|
+
# 業務委託契約書
|
|
49
|
+
|
|
50
|
+
株式会社みなと製作所(以下「甲」という。)と北浜商事株式会社(以下「乙」という。)は、次のとおり契約を結ぶ。
|
|
51
|
+
|
|
52
|
+
第1条 乙は、甲の会議室の予約を代わりに行う。
|
|
53
|
+
en:
|
|
54
|
+
config: { genre: legal/contract }
|
|
55
|
+
before: |
|
|
56
|
+
# Services Agreement
|
|
57
|
+
|
|
58
|
+
This agreement is between Harbour Works Ltd (the "Supplier") and North Trading Inc (the "Customer").
|
|
59
|
+
|
|
60
|
+
1. The Customer pays the Vendor within thirty days of each invoice.
|
|
61
|
+
after: |
|
|
62
|
+
# Services Agreement
|
|
63
|
+
|
|
64
|
+
This agreement is between Harbour Works Ltd (the "Supplier") and North Trading Inc (the "Customer").
|
|
65
|
+
|
|
66
|
+
1. The Customer pays the Supplier within thirty days of each invoice.
|
|
67
|
+
|
|
68
|
+
not_flagged:
|
|
69
|
+
ja: 当事者の呼び名を定める前(「売主 有限会社たちばな木工(以下「甲」という。)」の売主)、定めた語そのもの(「開示者」と定義した文書の開示者)、定義した語の一部、長い語の一部(再委託先、委託者側)は見ません。当事者の定義は、呼び名が甲・乙・当社のような語か立場の語であるもの、または括弧のすぐ前に会社の形(株式会社、Ltd)があるものだけを読みます。法務のジャンルで見ます。法令・規程は当事者を定めず、立場の語で人を呼ぶので見ません。
|
|
70
|
+
en: 'Uses before the parties are named, a role word the document defines itself ("Recipient" means), a role word inside a defined term (Receiving Party) or a longer word, and a lower-case role word (the vendor, an ordinary noun) are not reported. A party is read from a short name in brackets that is a party word (we) or a role word itself, or that follows a company name (Ltd, Inc.). The legal genres run this rule, except statutes, which name people by their role and define no parties.'
|
|
71
|
+
rewrite:
|
|
72
|
+
depth: light
|
|
73
|
+
ja:
|
|
74
|
+
direction: 立場の語を、定めた呼び名に置き換えてください。どちらの当事者か分からなければ、書き手に確かめます。当事者でない人を指しているなら、その人を定義します。
|
|
75
|
+
pairs:
|
|
76
|
+
- before: 受託者は、甲の会議室の予約を代わりに行う。
|
|
77
|
+
after: 乙は、甲の会議室の予約を代わりに行う。
|
|
78
|
+
- before: 委託者は、毎月末日までに委託料を支払う。
|
|
79
|
+
after: 甲は、毎月末日までに委託料を支払う。
|
|
80
|
+
keep:
|
|
81
|
+
- 条の番号と中身
|
|
82
|
+
avoid:
|
|
83
|
+
- 甲と乙を取り違える
|
|
84
|
+
en:
|
|
85
|
+
direction: Replace the role word with the name the contract gave the party. If it is not clear which party is meant, ask the writer. If someone else is meant, define them.
|
|
86
|
+
pairs:
|
|
87
|
+
- before: The Customer pays the Vendor within thirty days.
|
|
88
|
+
after: The Customer pays the Supplier within thirty days.
|
|
89
|
+
- before: The Recipient shall return all documents on request.
|
|
90
|
+
after: The Customer shall return all documents on request.
|
|
91
|
+
keep:
|
|
92
|
+
- the clause numbers and their content
|
|
93
|
+
avoid:
|
|
94
|
+
- swapping the parties
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
id: quote-without-source
|
|
2
|
+
layer: L2
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: quote-without-source
|
|
5
|
+
severity: info
|
|
6
|
+
|
|
7
|
+
name:
|
|
8
|
+
ja: 人の言葉として引いた文に出典がない
|
|
9
|
+
en: A quotation given to someone, with no source
|
|
10
|
+
|
|
11
|
+
why:
|
|
12
|
+
ja: 「〜は『…』と述べている」のように人の言葉として引いた文は、読み手がその人の言葉だと信じて読みます。出典が無いと、本当にその人がそう言ったのか、言い回しが正しいのかを誰も確かめられません。人から人へ伝わるうちに言葉が変わったり、言った人が入れ替わったりするのは、引用でいちばんよく起きる誤りです。chaff はその人が本当に言ったかを知りませんが、確かめる手がかりが無いことは言えます。鉤括弧や引用符で引いた文の直後か少し前に、誰かに帰する言い回し(「と述べ」「によれば」。語の一覧は言語ごとの語彙表にあります)があり、同じ段落にリンクも脚注も番号の引用も括弧の中の年も無いときに指します。
|
|
13
|
+
en: 'A quotation given to someone ("X once said …", "according to X") is read as that person''s words. With no source, nobody can check that the person said it, or said it that way; words change and speakers swap as a quotation is passed along, which is the commonest error in quoting. chaff cannot know who said what, but it can say there is nothing to check the quotation against. It points at a quotation in quotation marks given to someone by the words right after it or shortly before it ("said", "according to"; the words are in each language''s word list), in a paragraph with no link, no footnote, no numbered citation and no year in brackets.'
|
|
14
|
+
|
|
15
|
+
message:
|
|
16
|
+
ja: 「{quote}」を人の言葉として引いていますが、出典(リンク、脚注、書誌)がありません
|
|
17
|
+
en: '"{quote}" is given to someone, but no source (a link, a footnote, a reference) is given'
|
|
18
|
+
|
|
19
|
+
how_to_fix:
|
|
20
|
+
ja: 同じ段落に出典を書いてください。Web で読めるならリンクを、本や論文なら「(著者, 書名, 年)」か脚注を付けます。出典が見つからないなら、言い回しを確かめられるまで人の言葉としては引かないでください。出典を書いたら、`chaff cite <出典> <引用.json>` で、その言葉が出典に本当にあるかを照らせます(chaff --format json の quote がそのまま使えます)。
|
|
21
|
+
en: 'Name the source in the same paragraph: a link when it can be read online, or "(Author, Title, year)" or a footnote for a book or a paper. If no source can be found, do not give the words to the person until they can be checked. With the source in hand, `chaff cite <source> <quotes.json>` checks that the words are really there (each finding''s quote in chaff --format json is the text to check).'
|
|
22
|
+
|
|
23
|
+
levels: { strict: warning, normal: info, relaxed: info }
|
|
24
|
+
|
|
25
|
+
use_for: [blog, academic, docs, legal, literature, speech]
|
|
26
|
+
off_for:
|
|
27
|
+
blog/owned-media: "An organisation's article quotes the people it interviewed: the interview is the source."
|
|
28
|
+
docs: "A manual quotes messages, labels and commands, not people's words."
|
|
29
|
+
legal: "A contract or a statute quotes its own terms and other provisions, which are cited by article."
|
|
30
|
+
literature: "A story's quotations are its characters' words."
|
|
31
|
+
speech: "A speech or a transcript gives its own words, and quotes from memory by design."
|
|
32
|
+
|
|
33
|
+
group: facts
|
|
34
|
+
summary:
|
|
35
|
+
ja: 「〜は『…』と述べた」のように人の言葉として引いたのに、同じ段落に出典の無い所
|
|
36
|
+
en: A quotation given to someone ("X said …") in a paragraph that gives no source
|
|
37
|
+
example:
|
|
38
|
+
ja:
|
|
39
|
+
config: { genre: blog/tech }
|
|
40
|
+
before: |
|
|
41
|
+
# 遅れた計画
|
|
42
|
+
|
|
43
|
+
ある研究者は「遅れているプロジェクトに人を足すと、さらに遅れる」と述べている。人を足す前に、仕事を分けられるかを考えたい。
|
|
44
|
+
after: |
|
|
45
|
+
# 遅れた計画
|
|
46
|
+
|
|
47
|
+
ある研究者は「遅れているプロジェクトに人を足すと、さらに遅れる」と述べている([出典](https://example.com/essay))。人を足す前に、仕事を分けられるかを考えたい。
|
|
48
|
+
en:
|
|
49
|
+
config: { genre: blog/tech }
|
|
50
|
+
before: |
|
|
51
|
+
# Late projects
|
|
52
|
+
|
|
53
|
+
As one engineer put it, "adding people to a late project only makes it later." Before adding people, ask whether the work can be split.
|
|
54
|
+
after: |
|
|
55
|
+
# Late projects
|
|
56
|
+
|
|
57
|
+
As one engineer put it, "adding people to a late project only makes it later" ([source](https://example.com/essay)). Before adding people, ask whether the work can be split.
|
|
58
|
+
|
|
59
|
+
not_flagged:
|
|
60
|
+
ja: 短い鉤括弧(「保存」ボタン、「出典」という語)は語や名前を引いたもので、人の言葉ではないので見ません。誰かに帰する言い回しが引用のすぐ後ろ(「…」と述べた)か少し前(によれば「…」)に無い引用は、書き手自身の言葉か、題名や言い換えなので見ません。同じ段落にリンク、URL、脚注([^1])、番号の引用([3])、括弧の中の年((1975)、(1999年))があれば、出典を書いたと見ます。出典が正しいかは見ません。それは `chaff cite` が照らします。記事(ブログ、エッセイ)と論文で見ます。組織の記事は取材した人の言葉を、プレスリリースや報告書は自分たちの言葉や題名で示した文書を引くので、手順書、仕様、契約や法令、小説、話し言葉とあわせて既定で止めています。
|
|
61
|
+
en: 'A short quotation (the "Save" button, the word "source") names a word or a thing, not someone''s words, and is not read. A quotation with no such words right after it or shortly before it is the writer''s own words, a title or a paraphrase. A link, a URL, a footnote ([^1]), a numbered citation ([3]) or a year in brackets ((1975)) in the same paragraph counts as a source. Whether the source is right is not checked here: `chaff cite` checks that. Blog posts, essays and papers are read. An organisation''s articles quote the people they interviewed, and press releases and reports quote their own people or documents named by title, so they are left out by default, with manuals, specifications, contracts and statutes, fiction and speech.'
|
|
@@ -10,12 +10,12 @@ name:
|
|
|
10
10
|
en: A total that is not the sum of its items
|
|
11
11
|
|
|
12
12
|
why:
|
|
13
|
-
ja:
|
|
14
|
-
en: When the total of a quote or an invoice is not the sum of the amounts listed above it, the reader has to add them up again to find out which is right. It happens when a line is added or removed and the total is not updated. In a list or a table, a line starting with a total word (Total, Subtotal) is compared with the sum of the amounts in the same unit and column above it. When there is more than one way to add them up, such as a grand total after a subtotal and tax, it is pointed out only when none of them matches.
|
|
13
|
+
ja: 見積や請求の「合計」が、上に並べた金額の和と合わないと、読み手はどちらが正しいのかを計算し直すことになります。行を足したり消したりしたあとに、合計だけ直し忘れると起きます。箇条書きか表で、合計の語(合計・小計)で始まる行を、同じ単位で同じ列の金額の和と比べます。契約書のように一つの文に書いた合計(「保守費60,000円、運用費30,000円とし、合計100,000円とする」「月額150,000円(内訳:…)」)も、その文に並べた同じ単位の金額の和と比べます。小計のあとの総計のように、足し方が何通りかあるときは、どの足し方でも合わないときだけ指します。
|
|
14
|
+
en: When the total of a quote or an invoice is not the sum of the amounts listed above it, the reader has to add them up again to find out which is right. It happens when a line is added or removed and the total is not updated. In a list or a table, a line starting with a total word (Total, Subtotal) is compared with the sum of the amounts in the same unit and column above it. A total written in a sentence, as contracts do ("$6,000 for hosting and $3,000 for support, for a total of $9,000", "$8 per month, made up of …"), is compared with the amounts in the same unit listed in that sentence. When there is more than one way to add them up, such as a grand total after a subtotal and tax, it is pointed out only when none of them matches.
|
|
15
15
|
|
|
16
16
|
message:
|
|
17
|
-
ja: 合計「{written}
|
|
18
|
-
en: "The total {written} is not the sum of
|
|
17
|
+
ja: 合計「{written}」が、内訳の金額の和({sum})と合いません
|
|
18
|
+
en: "The total {written} is not the sum of its items ({sum})"
|
|
19
19
|
|
|
20
20
|
how_to_fix:
|
|
21
21
|
ja: 内訳の金額と合計のどちらが正しいかを確かめて、片方を直してください。
|
|
@@ -30,8 +30,8 @@ sources: [de-marneffe-2008]
|
|
|
30
30
|
|
|
31
31
|
group: facts
|
|
32
32
|
summary:
|
|
33
|
-
ja:
|
|
34
|
-
en: A total in a quote
|
|
33
|
+
ja: 見積もりや請求書、契約書で、合計が内訳に並べた金額の和と合わない所
|
|
34
|
+
en: A total in a quote, an invoice or a contract that is not the sum of the amounts it is made up of
|
|
35
35
|
example:
|
|
36
36
|
ja:
|
|
37
37
|
before: |
|
|
@@ -61,5 +61,5 @@ example:
|
|
|
61
61
|
| Total | $8,000 |
|
|
62
62
|
|
|
63
63
|
not_flagged:
|
|
64
|
-
ja:
|
|
65
|
-
en: Amounts in another unit or column are not added. Where there is more than one way to add them up, it is reported only when none matches.
|
|
64
|
+
ja: 単位や列の違う金額は足しません。足し方が何通りもあるとき(小計と税のあとの総計など)は、どれとも合わないときだけ指します。文の中では、合計の語(合計・総額)のすぐ後ろの金額か内訳の語(内訳は)のすぐ前の金額だけを合計と読み、内訳の金額が二つ以上あるときだけ比べます。並びの一部(単価や上限など、合計の語から離れた金額を除いた並び)の和か、一つを引いた額(値引き)と合えば指しません。
|
|
65
|
+
en: Amounts in another unit or column are not added. Where there is more than one way to add them up, it is reported only when none matches. In a sentence, only the amount right after a total phrase (a total of) or right before a breakdown phrase (made up of) is read as a total, and only when two or more items in its unit are listed. It is not reported when the items nearest the phrase add up to it, or when it matches with one item taken away (a discount).
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
id: vague-deadline
|
|
2
|
+
layer: L2
|
|
3
|
+
status: stable
|
|
4
|
+
how_to_find: vague-deadline
|
|
5
|
+
severity: info
|
|
6
|
+
|
|
7
|
+
name:
|
|
8
|
+
ja: 期限を「速やかに」のような語で残している
|
|
9
|
+
en: A time limit left to the reader (promptly)
|
|
10
|
+
|
|
11
|
+
why:
|
|
12
|
+
ja: 契約の義務に「速やかに」「遅滞なく」とだけ書くと、何日目までなら守ったことになるのかを、当事者がそれぞれ自分に都合よく読みます。争いになったとき、守ったかどうかを決める物差しがありません。期限は「通知を受けた日から7日以内に」のように数で書くと、誰が読んでも同じに決まります。期限をどう書くかは書き手が決めることなので、chaff は、ほかの期限の多くを数で書いた文書の中で、期限を読み手に決めさせる語(語の一覧は言語ごとの語彙表にあります)を少ないほうとして指します。数の期限(日以内、営業日)を書いた文が、その語を書いた文より多いときだけで、その語と同じ文に数の期限があれば指しません。
|
|
13
|
+
en: 'An obligation written with "promptly" or "without undue delay" alone lets each party read the deadline its own way, and a dispute has no measure of whether it was met. A number ("within seven days of receiving notice") reads the same to everyone. How to write limits is the drafter''s choice, so chaff points only at the minority: in a document where more sentences state a limit in numbers (days, business days) than hold a word that leaves the limit to the reader (each language''s word list has them), it points at those words, unless their own sentence states a number too.'
|
|
14
|
+
|
|
15
|
+
message:
|
|
16
|
+
ja: 「{word}」では期限が決まりません。何日以内かを数で書くと、守ったかどうかを決められます
|
|
17
|
+
en: '"{word}" sets no deadline; a number of days makes it one that can be met or missed'
|
|
18
|
+
|
|
19
|
+
how_to_fix:
|
|
20
|
+
ja: 「通知を受けた日から7日以内に」のように、起点と日数で期限を書いてください。急ぐことを伝えたいだけなら、「速やかに、遅くとも7日以内に」のように数の期限を添えます。
|
|
21
|
+
en: 'Write the limit as a start and a number of days ("within seven days of receiving notice"). To stress urgency too, add the number: "promptly, and in any case within seven days".'
|
|
22
|
+
|
|
23
|
+
levels: { strict: warning, normal: info, relaxed: info }
|
|
24
|
+
|
|
25
|
+
use_for: [legal, docs, academic, literature, speech]
|
|
26
|
+
off_for:
|
|
27
|
+
docs: "A deadline is a contract's obligation: the contract genre checks it."
|
|
28
|
+
academic: "A deadline is a contract's obligation: the contract genre checks it."
|
|
29
|
+
literature: "A deadline is a contract's obligation: the contract genre checks it."
|
|
30
|
+
speech: "A deadline is a contract's obligation: the contract genre checks it."
|
|
31
|
+
legal/statute: "A statute uses 速やかに, 遅滞なく and 直ちに as graded terms of art, and promptly as a duty it does not quantify."
|
|
32
|
+
legal/judgment: "A court decision quotes the statutes and contracts it reads (遅滞なく報告しなければならない); their limits are not the decision's own."
|
|
33
|
+
legal/patent: "A patent sets no deadlines: promptly describes a step of a process (promptly cooled)."
|
|
34
|
+
|
|
35
|
+
group: wording
|
|
36
|
+
summary:
|
|
37
|
+
ja: ほかの期限を日数で書いた契約で、一部の期限だけを「速やかに」「遅滞なく」と書いた所
|
|
38
|
+
en: A deadline written as "promptly" or "without undue delay" in a contract that gives its other deadlines in days
|
|
39
|
+
example:
|
|
40
|
+
ja:
|
|
41
|
+
config: { genre: legal/contract }
|
|
42
|
+
before: |
|
|
43
|
+
第1条 乙は、毎月5日までに、前月の業務を甲に報告する。
|
|
44
|
+
|
|
45
|
+
第2条 甲は、報告を受けた日から10日以内に、結果を乙に通知する。
|
|
46
|
+
|
|
47
|
+
第3条 乙は、甲から求めを受けたときは、速やかに資料を提出する。
|
|
48
|
+
after: |
|
|
49
|
+
第1条 乙は、毎月5日までに、前月の業務を甲に報告する。
|
|
50
|
+
|
|
51
|
+
第2条 甲は、報告を受けた日から10日以内に、結果を乙に通知する。
|
|
52
|
+
|
|
53
|
+
第3条 乙は、甲から求めを受けた日から7日以内に、資料を提出する。
|
|
54
|
+
en:
|
|
55
|
+
config: { genre: legal/contract }
|
|
56
|
+
before: |
|
|
57
|
+
1. The Supplier shall deliver each report by the fifth business day of the month.
|
|
58
|
+
|
|
59
|
+
2. The Customer shall pay each invoice within thirty days of receiving it.
|
|
60
|
+
|
|
61
|
+
3. The Supplier shall notify the Customer promptly of any breach.
|
|
62
|
+
after: |
|
|
63
|
+
1. The Supplier shall deliver each report by the fifth business day of the month.
|
|
64
|
+
|
|
65
|
+
2. The Customer shall pay each invoice within thirty days of receiving it.
|
|
66
|
+
|
|
67
|
+
3. The Supplier shall notify the Customer of any breach within five business days of becoming aware of it.
|
|
68
|
+
|
|
69
|
+
not_flagged:
|
|
70
|
+
ja: 数の期限を書いた文が、期限を読み手に決めさせる語を書いた文より多くない文書では、書き手がそう書くと決めたとみなして指しません。同じ文に日数の期限(7日以内、5営業日)があれば指しません(「速やかに、遅くとも7日以内に」)。権利を定める文(「速やかに本契約を解除することができる」)は、誰かが守る期限ではないので見ません。今すぐを言う「直ちに」と、解除の手続きの決まった言い方「相当の期間を定めて催告し」は見ません。法令は「速やかに」「遅滞なく」「直ちに」を段の違う決まった語として使うので見ません。判決は法令や契約を引いて書くので、特許は期限を定めないので見ません。契約書・規約のジャンルで見ます。
|
|
71
|
+
en: 'A document where sentences stating a limit in numbers are not more than those with a vague one is taken to write its limits that way on purpose, and is not reported. A sentence that also states a limit in numbers ("promptly, and in any case within seven days") is not reported, nor one that grants a right ("We may promptly suspend your account"), which sets no deadline anyone must meet. A bare unit ("24 hours a day") does not count as a limit in numbers; "within … days" does. "Immediately", which means at once, is not read. Statutes use "promptly" and "without delay" as terms of art, court decisions quote statutes and contracts, and patents set no deadlines, so none of them is read; the contract genre runs this rule.'
|
|
72
|
+
rewrite:
|
|
73
|
+
depth: light
|
|
74
|
+
ja:
|
|
75
|
+
direction: 「速やかに」「遅滞なく」を、起点と日数の期限に書き換えます。日数は書き手が決めることなので、決まっていなければ書き手に確かめます。
|
|
76
|
+
pairs:
|
|
77
|
+
- before: 乙は、速やかに資料を提出する。
|
|
78
|
+
after: 乙は、甲の求めを受けた日から7日以内に、資料を提出する。
|
|
79
|
+
- before: 甲は、前項の請求を受けたときは、遅滞なく修補する。
|
|
80
|
+
after: 甲は、前項の請求を受けた日から14日以内に修補する。
|
|
81
|
+
keep:
|
|
82
|
+
- 義務を負う当事者と、すること
|
|
83
|
+
avoid:
|
|
84
|
+
- 日数を書き手に確かめずに決める
|
|
85
|
+
en:
|
|
86
|
+
direction: Replace "promptly" or "without undue delay" with a start and a number of days. The number is the writer's decision; if it is not known, ask.
|
|
87
|
+
pairs:
|
|
88
|
+
- before: The Supplier shall notify the Customer promptly.
|
|
89
|
+
after: The Supplier shall notify the Customer within five business days.
|
|
90
|
+
- before: The Customer shall pay each invoice within a reasonable time.
|
|
91
|
+
after: The Customer shall pay each invoice within thirty days of receiving it.
|
|
92
|
+
keep:
|
|
93
|
+
- the party bound and what it must do
|
|
94
|
+
avoid:
|
|
95
|
+
- choosing the number of days without asking the writer
|
package/rules/weasel-word.yaml
CHANGED
|
@@ -4,7 +4,7 @@ status: stable
|
|
|
4
4
|
how_to_find: phrase-match
|
|
5
5
|
word_list: weasel-word
|
|
6
6
|
requires: [pos]
|
|
7
|
-
languages: [en]
|
|
7
|
+
languages: [ja, en]
|
|
8
8
|
severity: info
|
|
9
9
|
|
|
10
10
|
name:
|
|
@@ -12,8 +12,8 @@ name:
|
|
|
12
12
|
en: Weasel words
|
|
13
13
|
|
|
14
14
|
why:
|
|
15
|
-
ja:
|
|
16
|
-
en: '"Many experts say", "it is widely believed" and "studies show" lend a claim to an unnamed crowd or to research no one names. The reader cannot check who said it, and the writer need not stand behind it. The phrases are listed in the lexicon.'
|
|
15
|
+
ja: 「〜と言われています」「多くの専門家が」「ある研究によると」(英語の many experts say, studies show)は、主張を名前の無い大勢や、どれとも言わない研究に預けます。読み手は誰がそう言ったのかを確かめられず、書き手は主張に責任を持たずに済みます。言い回しは言語ごとの語彙表にあります。
|
|
16
|
+
en: '"Many experts say", "it is widely believed" and "studies show" (と言われています, ある研究によると) lend a claim to an unnamed crowd or to research no one names. The reader cannot check who said it, and the writer need not stand behind it. The phrases are listed in the lexicon.'
|
|
17
17
|
|
|
18
18
|
message:
|
|
19
19
|
ja: 「{matched}」は、誰が言ったのかを言っていません
|
|
@@ -33,9 +33,14 @@ off_for:
|
|
|
33
33
|
|
|
34
34
|
group: wording
|
|
35
35
|
summary:
|
|
36
|
-
ja:
|
|
37
|
-
en: Phrases such as "many experts say" and "studies show" that credit a claim to no one in particular
|
|
36
|
+
ja: 「〜と言われています」「ある研究によると」(many experts say, studies show)のように、主張を名前の無い誰かに預ける言い回し
|
|
37
|
+
en: Phrases such as "many experts say" and "studies show" (と言われています, ある研究によると) that credit a claim to no one in particular
|
|
38
38
|
example:
|
|
39
|
+
ja:
|
|
40
|
+
before: |
|
|
41
|
+
在宅勤務は生産性を上げると言われています。
|
|
42
|
+
after: |
|
|
43
|
+
2023年のスタンフォード大学の調査(1,600人)では、在宅勤務で生産性が4%上がりました。
|
|
39
44
|
en:
|
|
40
45
|
before: |
|
|
41
46
|
Many experts say remote work raises output.
|
|
@@ -43,13 +48,26 @@ example:
|
|
|
43
48
|
A 2023 Stanford study of 1,600 staff found remote work raised output by 4%.
|
|
44
49
|
|
|
45
50
|
not_flagged:
|
|
46
|
-
ja:
|
|
47
|
-
en: Only the phrases on chaff's list are checked
|
|
51
|
+
ja: 一覧にある言い回しだけを見ます。すぐ後ろに出典が書いてあっても指摘します(文の中で研究の名前を言えるため)。日本語では、前に出典が来やすい「研究によると」「専門家によると」は「ある」「最近の」「多くの」が付いた形だけを、「と言われる」は「と言われている」だけを見ます(「よく言われる話」のように言い回しを話題にするものは見ません)。「一般的に」だけでは指しません。
|
|
52
|
+
en: Only the phrases on chaff's list are checked. A citation right after the phrase does not silence it, since the sentence can name the study itself. In Japanese, 研究によると and 専門家によると, which often follow their source, are checked only as ある・最近の・多くの forms, と言われる only as と言われている (not よく言われる, which mostly talks about the saying itself), and 一般的に alone is not checked.
|
|
48
53
|
level_meaning:
|
|
49
54
|
ja: 当てはまる言い回しが {limit} 箇所あれば指摘
|
|
50
55
|
en: reported once there are {limit}
|
|
51
56
|
rewrite:
|
|
52
57
|
depth: light
|
|
58
|
+
ja:
|
|
59
|
+
direction: 名前の無い大勢(多くの専門家、ある研究)を、本文や出典が名指す人や研究に置き換えてください。名指していなければ作らずに書き手に聞くか、書き手自身の主張として書きます。
|
|
60
|
+
pairs:
|
|
61
|
+
- before: ある研究によると、短い会議は時間を節約します[3]。
|
|
62
|
+
after: 山田(2021)は、15分の会議で各チームの時間が週2時間減ったと報告しています[3]。
|
|
63
|
+
- before: 旧APIのほうが遅いと言われています。
|
|
64
|
+
after: 5月の負荷試験では、旧APIのほうが30%遅い結果でした。
|
|
65
|
+
keep:
|
|
66
|
+
- 出典の番号やリンク
|
|
67
|
+
- 主張そのもの
|
|
68
|
+
avoid:
|
|
69
|
+
- 本文に無い研究や名前を作る
|
|
70
|
+
- 別の名前の無い大勢(一部の研究者)に替えるだけ
|
|
53
71
|
en:
|
|
54
72
|
direction: Replace the unnamed crowd ("many experts", "studies") with the person or study the text or its sources name. If they name none, do not invent one; ask the writer, or state the claim as the writer's own.
|
|
55
73
|
pairs:
|
package/skills/chaff/SKILL.md
CHANGED
|
@@ -70,8 +70,18 @@ relaxing a rule.
|
|
|
70
70
|
limit itself (`max-sentence-length: 260`).
|
|
71
71
|
- `prefer:` maps spellings to the team's (`e-mail: email`); `preferred-term: normal` turns the rule on.
|
|
72
72
|
- Unknown rule names and unreadable values are reported on stderr — read stderr after editing `chaff.yaml`.
|
|
73
|
-
- `genre:` sets the kind of document
|
|
74
|
-
`
|
|
73
|
+
- `genre:` sets the kind of document. `by_path` sets it per path, as a list of `files` globs, each with `genre`,
|
|
74
|
+
`language` or `profile`, and an entry in any other shape is reported on stderr and not used:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
by_path:
|
|
78
|
+
- files: ["guides/**/*.md"]
|
|
79
|
+
genre: docs/manual
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
A file's front matter `genre:` (or `type:`) sets that one file, when neither `genre:` nor a matching `by_path`
|
|
83
|
+
entry does. Strongest first: `--genre` for one run, then `by_path`, `genre:`, front matter, the path, the content,
|
|
84
|
+
and `blog/tech`. `rules:` wins over the genre's preset.
|
|
75
85
|
|
|
76
86
|
## Turn a team's style note into chaff.yaml
|
|
77
87
|
|
package/src/adapter-load.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { importPackage } from "./adapter-import.ts";
|
|
1
2
|
import type { LanguageAdapter } from "./plugin.ts";
|
|
2
3
|
|
|
3
4
|
const ADAPTER_PACKAGE: Readonly<Record<string, string>> = { ja: "@chaffjs/lang-ja", en: "@chaffjs/lang-en" };
|
|
@@ -102,7 +103,7 @@ const importFirst = async (specifiers: readonly string[], language: string, impo
|
|
|
102
103
|
* core だけで起動し、文字種で言語を当ててから、その言語のアダプタを読む。
|
|
103
104
|
* 全言語を静的に import すると、使わない言語のぶんまで npx の初回取得が膨らむ。
|
|
104
105
|
*/
|
|
105
|
-
export const loadAdapter = async (language: string, importer: Importer =
|
|
106
|
+
export const loadAdapter = async (language: string, importer: Importer = importPackage): Promise<LanguageAdapter> => {
|
|
106
107
|
const { specifier, module } = await importFirst(packagesFor(language), language, importer);
|
|
107
108
|
if (typeof module !== "object" || module === null) throw new Error(`${specifier} did not export a module`);
|
|
108
109
|
const candidate = pickExport(module);
|