chaffjs 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/README.md +27 -2
  2. package/dist/address-chain.d.ts +4 -1
  3. package/dist/address-chain.d.ts.map +1 -1
  4. package/dist/address-chain.js +6 -3
  5. package/dist/address-chain.js.map +1 -1
  6. package/dist/backends/anthropic.d.ts +2 -1
  7. package/dist/backends/anthropic.d.ts.map +1 -1
  8. package/dist/backends/anthropic.js +4 -1
  9. package/dist/backends/anthropic.js.map +1 -1
  10. package/dist/backends/openai.d.ts +2 -1
  11. package/dist/backends/openai.d.ts.map +1 -1
  12. package/dist/backends/openai.js +1 -1
  13. package/dist/backends/openai.js.map +1 -1
  14. package/dist/backends/types.d.ts +2 -1
  15. package/dist/backends/types.d.ts.map +1 -1
  16. package/dist/backends/types.js +1 -1
  17. package/dist/backends/types.js.map +1 -1
  18. package/dist/baseline.js +1 -1
  19. package/dist/baseline.js.map +1 -1
  20. package/dist/calendar-number.d.ts +26 -0
  21. package/dist/calendar-number.d.ts.map +1 -0
  22. package/dist/calendar-number.js +51 -0
  23. package/dist/calendar-number.js.map +1 -0
  24. package/dist/cli-args.d.ts +0 -5
  25. package/dist/cli-args.d.ts.map +1 -1
  26. package/dist/cli-args.js +2 -2
  27. package/dist/cli-args.js.map +1 -1
  28. package/dist/cli-text.d.ts +10 -3
  29. package/dist/cli-text.d.ts.map +1 -1
  30. package/dist/cli-text.js +33 -14
  31. package/dist/cli-text.js.map +1 -1
  32. package/dist/cli.d.ts.map +1 -1
  33. package/dist/cli.js +53 -47
  34. package/dist/cli.js.map +1 -1
  35. package/dist/commands/cite.d.ts.map +1 -1
  36. package/dist/commands/cite.js +4 -4
  37. package/dist/commands/cite.js.map +1 -1
  38. package/dist/commands/eval.d.ts +4 -0
  39. package/dist/commands/eval.d.ts.map +1 -1
  40. package/dist/commands/eval.js +21 -7
  41. package/dist/commands/eval.js.map +1 -1
  42. package/dist/commands/feedback.d.ts.map +1 -1
  43. package/dist/commands/feedback.js +2 -1
  44. package/dist/commands/feedback.js.map +1 -1
  45. package/dist/commands/init-ask.d.ts +19 -0
  46. package/dist/commands/init-ask.d.ts.map +1 -0
  47. package/dist/commands/init-ask.js +43 -0
  48. package/dist/commands/init-ask.js.map +1 -0
  49. package/dist/commands/test.d.ts +8 -0
  50. package/dist/commands/test.d.ts.map +1 -1
  51. package/dist/commands/test.js +73 -40
  52. package/dist/commands/test.js.map +1 -1
  53. package/dist/commands/tree.d.ts +1 -8
  54. package/dist/commands/tree.d.ts.map +1 -1
  55. package/dist/commands/tree.js +9 -7
  56. package/dist/commands/tree.js.map +1 -1
  57. package/dist/config/by-path.d.ts.map +1 -1
  58. package/dist/config/by-path.js +10 -9
  59. package/dist/config/by-path.js.map +1 -1
  60. package/dist/config/load.d.ts +4 -0
  61. package/dist/config/load.d.ts.map +1 -1
  62. package/dist/config/load.js +19 -0
  63. package/dist/config/load.js.map +1 -1
  64. package/dist/config/name-problems.d.ts +5 -0
  65. package/dist/config/name-problems.d.ts.map +1 -0
  66. package/dist/config/name-problems.js +11 -0
  67. package/dist/config/name-problems.js.map +1 -0
  68. package/dist/date-stamp.js +1 -1
  69. package/dist/date-stamp.js.map +1 -1
  70. package/dist/detectors/acronym-compound.d.ts +8 -0
  71. package/dist/detectors/acronym-compound.d.ts.map +1 -0
  72. package/dist/detectors/acronym-compound.js +8 -0
  73. package/dist/detectors/acronym-compound.js.map +1 -0
  74. package/dist/detectors/acronym-context.d.ts +4 -0
  75. package/dist/detectors/acronym-context.d.ts.map +1 -1
  76. package/dist/detectors/acronym-context.js +17 -1
  77. package/dist/detectors/acronym-context.js.map +1 -1
  78. package/dist/detectors/acronym-expansion.d.ts +10 -0
  79. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  80. package/dist/detectors/acronym-expansion.js +63 -5
  81. package/dist/detectors/acronym-expansion.js.map +1 -1
  82. package/dist/detectors/char-shape.d.ts.map +1 -1
  83. package/dist/detectors/char-shape.js +47 -15
  84. package/dist/detectors/char-shape.js.map +1 -1
  85. package/dist/detectors/citation-key.d.ts +13 -0
  86. package/dist/detectors/citation-key.d.ts.map +1 -0
  87. package/dist/detectors/citation-key.js +9 -0
  88. package/dist/detectors/citation-key.js.map +1 -0
  89. package/dist/detectors/cited-name.d.ts +11 -0
  90. package/dist/detectors/cited-name.d.ts.map +1 -0
  91. package/dist/detectors/cited-name.js +15 -0
  92. package/dist/detectors/cited-name.js.map +1 -0
  93. package/dist/detectors/concrete-evidence.d.ts +7 -0
  94. package/dist/detectors/concrete-evidence.d.ts.map +1 -0
  95. package/dist/detectors/concrete-evidence.js +21 -0
  96. package/dist/detectors/concrete-evidence.js.map +1 -0
  97. package/dist/detectors/counter-edge.d.ts +8 -0
  98. package/dist/detectors/counter-edge.d.ts.map +1 -0
  99. package/dist/detectors/counter-edge.js +27 -0
  100. package/dist/detectors/counter-edge.js.map +1 -0
  101. package/dist/detectors/dotted-name.d.ts +13 -0
  102. package/dist/detectors/dotted-name.d.ts.map +1 -0
  103. package/dist/detectors/dotted-name.js +10 -0
  104. package/dist/detectors/dotted-name.js.map +1 -0
  105. package/dist/detectors/doubled-word.d.ts +6 -1
  106. package/dist/detectors/doubled-word.d.ts.map +1 -1
  107. package/dist/detectors/doubled-word.js +22 -2
  108. package/dist/detectors/doubled-word.js.map +1 -1
  109. package/dist/detectors/en-shape.d.ts +1 -1
  110. package/dist/detectors/en-shape.d.ts.map +1 -1
  111. package/dist/detectors/en-shape.js +112 -29
  112. package/dist/detectors/en-shape.js.map +1 -1
  113. package/dist/detectors/enumerated-runs.d.ts.map +1 -1
  114. package/dist/detectors/enumerated-runs.js +4 -2
  115. package/dist/detectors/enumerated-runs.js.map +1 -1
  116. package/dist/detectors/gram-place.d.ts +0 -4
  117. package/dist/detectors/gram-place.d.ts.map +1 -1
  118. package/dist/detectors/gram-place.js +7 -2
  119. package/dist/detectors/gram-place.js.map +1 -1
  120. package/dist/detectors/gram-predicate.d.ts +7 -0
  121. package/dist/detectors/gram-predicate.d.ts.map +1 -0
  122. package/dist/detectors/gram-predicate.js +44 -0
  123. package/dist/detectors/gram-predicate.js.map +1 -0
  124. package/dist/detectors/heading-case.d.ts +21 -0
  125. package/dist/detectors/heading-case.d.ts.map +1 -0
  126. package/dist/detectors/heading-case.js +40 -0
  127. package/dist/detectors/heading-case.js.map +1 -0
  128. package/dist/detectors/heading-echo.d.ts.map +1 -1
  129. package/dist/detectors/heading-echo.js +4 -1
  130. package/dist/detectors/heading-echo.js.map +1 -1
  131. package/dist/detectors/index.d.ts.map +1 -1
  132. package/dist/detectors/index.js +4 -3
  133. package/dist/detectors/index.js.map +1 -1
  134. package/dist/detectors/lettered-index.d.ts +9 -0
  135. package/dist/detectors/lettered-index.d.ts.map +1 -0
  136. package/dist/detectors/lettered-index.js +54 -0
  137. package/dist/detectors/lettered-index.js.map +1 -0
  138. package/dist/detectors/lexicon.d.ts +5 -1
  139. package/dist/detectors/lexicon.d.ts.map +1 -1
  140. package/dist/detectors/lexicon.js +51 -5
  141. package/dist/detectors/lexicon.js.map +1 -1
  142. package/dist/detectors/name-numeral.d.ts +16 -0
  143. package/dist/detectors/name-numeral.d.ts.map +1 -0
  144. package/dist/detectors/name-numeral.js +30 -0
  145. package/dist/detectors/name-numeral.js.map +1 -0
  146. package/dist/detectors/name-part.d.ts +8 -0
  147. package/dist/detectors/name-part.d.ts.map +1 -0
  148. package/dist/detectors/name-part.js +20 -0
  149. package/dist/detectors/name-part.js.map +1 -0
  150. package/dist/detectors/name-run.d.ts +8 -0
  151. package/dist/detectors/name-run.d.ts.map +1 -0
  152. package/dist/detectors/name-run.js +13 -0
  153. package/dist/detectors/name-run.js.map +1 -0
  154. package/dist/detectors/orthography.d.ts.map +1 -1
  155. package/dist/detectors/orthography.js +35 -7
  156. package/dist/detectors/orthography.js.map +1 -1
  157. package/dist/detectors/phrase-match.d.ts +3 -1
  158. package/dist/detectors/phrase-match.d.ts.map +1 -1
  159. package/dist/detectors/phrase-match.js +20 -15
  160. package/dist/detectors/phrase-match.js.map +1 -1
  161. package/dist/detectors/placeholder.d.ts +14 -0
  162. package/dist/detectors/placeholder.d.ts.map +1 -0
  163. package/dist/detectors/placeholder.js +24 -0
  164. package/dist/detectors/placeholder.js.map +1 -0
  165. package/dist/detectors/quoted-variant.d.ts +7 -0
  166. package/dist/detectors/quoted-variant.d.ts.map +1 -0
  167. package/dist/detectors/quoted-variant.js +18 -0
  168. package/dist/detectors/quoted-variant.js.map +1 -0
  169. package/dist/detectors/repeated-head.d.ts.map +1 -1
  170. package/dist/detectors/repeated-head.js +5 -4
  171. package/dist/detectors/repeated-head.js.map +1 -1
  172. package/dist/detectors/series-label.d.ts +13 -0
  173. package/dist/detectors/series-label.d.ts.map +1 -0
  174. package/dist/detectors/series-label.js +26 -0
  175. package/dist/detectors/series-label.js.map +1 -0
  176. package/dist/detectors/signals.d.ts.map +1 -1
  177. package/dist/detectors/signals.js +44 -29
  178. package/dist/detectors/signals.js.map +1 -1
  179. package/dist/detectors/stacked-hedge.d.ts +23 -0
  180. package/dist/detectors/stacked-hedge.d.ts.map +1 -0
  181. package/dist/detectors/stacked-hedge.js +64 -0
  182. package/dist/detectors/stacked-hedge.js.map +1 -0
  183. package/dist/detectors/structure-tree.js +1 -1
  184. package/dist/detectors/structure-tree.js.map +1 -1
  185. package/dist/detectors/superlative-amount.d.ts +9 -0
  186. package/dist/detectors/superlative-amount.d.ts.map +1 -0
  187. package/dist/detectors/superlative-amount.js +20 -0
  188. package/dist/detectors/superlative-amount.js.map +1 -0
  189. package/dist/detectors/superlative-clause.d.ts +18 -0
  190. package/dist/detectors/superlative-clause.d.ts.map +1 -0
  191. package/dist/detectors/superlative-clause.js +61 -0
  192. package/dist/detectors/superlative-clause.js.map +1 -0
  193. package/dist/detectors/superlative-name.d.ts +9 -0
  194. package/dist/detectors/superlative-name.d.ts.map +1 -0
  195. package/dist/detectors/superlative-name.js +24 -0
  196. package/dist/detectors/superlative-name.js.map +1 -0
  197. package/dist/detectors/superlative-scope.d.ts +6 -0
  198. package/dist/detectors/superlative-scope.d.ts.map +1 -1
  199. package/dist/detectors/superlative-scope.js +3 -3
  200. package/dist/detectors/superlative-scope.js.map +1 -1
  201. package/dist/detectors/team.d.ts +0 -6
  202. package/dist/detectors/team.d.ts.map +1 -1
  203. package/dist/detectors/team.js +17 -1
  204. package/dist/detectors/team.js.map +1 -1
  205. package/dist/detectors/token-shape.d.ts.map +1 -1
  206. package/dist/detectors/token-shape.js +15 -5
  207. package/dist/detectors/token-shape.js.map +1 -1
  208. package/dist/document.d.ts +3 -0
  209. package/dist/document.d.ts.map +1 -1
  210. package/dist/document.js +28 -7
  211. package/dist/document.js.map +1 -1
  212. package/dist/eval.js +1 -1
  213. package/dist/eval.js.map +1 -1
  214. package/dist/feedback/draft.js +1 -1
  215. package/dist/feedback/draft.js.map +1 -1
  216. package/dist/feedback/excerpt.d.ts +0 -1
  217. package/dist/feedback/excerpt.d.ts.map +1 -1
  218. package/dist/feedback/excerpt.js +2 -2
  219. package/dist/feedback/excerpt.js.map +1 -1
  220. package/dist/file-header.d.ts +20 -0
  221. package/dist/file-header.d.ts.map +1 -0
  222. package/dist/file-header.js +21 -0
  223. package/dist/file-header.js.map +1 -0
  224. package/dist/files.js +3 -3
  225. package/dist/files.js.map +1 -1
  226. package/dist/genre-check.d.ts +34 -0
  227. package/dist/genre-check.d.ts.map +1 -0
  228. package/dist/genre-check.js +21 -0
  229. package/dist/genre-check.js.map +1 -0
  230. package/dist/genre-load.d.ts +6 -0
  231. package/dist/genre-load.d.ts.map +1 -0
  232. package/dist/genre-load.js +22 -0
  233. package/dist/genre-load.js.map +1 -0
  234. package/dist/genre-parse.d.ts +40 -0
  235. package/dist/genre-parse.d.ts.map +1 -0
  236. package/dist/genre-parse.js +104 -0
  237. package/dist/genre-parse.js.map +1 -0
  238. package/dist/genre-suggest.d.ts +15 -0
  239. package/dist/genre-suggest.d.ts.map +1 -0
  240. package/dist/genre-suggest.js +26 -0
  241. package/dist/genre-suggest.js.map +1 -0
  242. package/dist/genre.d.ts +8 -1
  243. package/dist/genre.d.ts.map +1 -1
  244. package/dist/genre.js +19 -5
  245. package/dist/genre.js.map +1 -1
  246. package/dist/init-choice.d.ts +12 -0
  247. package/dist/init-choice.d.ts.map +1 -0
  248. package/dist/init-choice.js +41 -0
  249. package/dist/init-choice.js.map +1 -0
  250. package/dist/init.d.ts +0 -1
  251. package/dist/init.d.ts.map +1 -1
  252. package/dist/init.js +16 -17
  253. package/dist/init.js.map +1 -1
  254. package/dist/joined-view.d.ts +25 -0
  255. package/dist/joined-view.d.ts.map +1 -0
  256. package/dist/joined-view.js +76 -0
  257. package/dist/joined-view.js.map +1 -0
  258. package/dist/judge.d.ts +2 -1
  259. package/dist/judge.d.ts.map +1 -1
  260. package/dist/judge.js +1 -1
  261. package/dist/judge.js.map +1 -1
  262. package/dist/line-continues.d.ts +6 -0
  263. package/dist/line-continues.d.ts.map +1 -0
  264. package/dist/line-continues.js +33 -0
  265. package/dist/line-continues.js.map +1 -0
  266. package/dist/line-paragraphs.d.ts +4 -0
  267. package/dist/line-paragraphs.d.ts.map +1 -0
  268. package/dist/line-paragraphs.js +69 -0
  269. package/dist/line-paragraphs.js.map +1 -0
  270. package/dist/mask.d.ts.map +1 -1
  271. package/dist/mask.js +7 -6
  272. package/dist/mask.js.map +1 -1
  273. package/dist/measure.d.ts +1 -0
  274. package/dist/measure.d.ts.map +1 -1
  275. package/dist/measure.js +5 -1
  276. package/dist/measure.js.map +1 -1
  277. package/dist/number-name.d.ts +6 -3
  278. package/dist/number-name.d.ts.map +1 -1
  279. package/dist/number-name.js +31 -14
  280. package/dist/number-name.js.map +1 -1
  281. package/dist/orthography.d.ts +4 -0
  282. package/dist/orthography.d.ts.map +1 -1
  283. package/dist/orthography.js +11 -9
  284. package/dist/orthography.js.map +1 -1
  285. package/dist/plain-source.d.ts +6 -0
  286. package/dist/plain-source.d.ts.map +1 -0
  287. package/dist/plain-source.js +6 -0
  288. package/dist/plain-source.js.map +1 -0
  289. package/dist/plugin.d.ts +22 -1
  290. package/dist/plugin.d.ts.map +1 -1
  291. package/dist/profile/check.d.ts +28 -0
  292. package/dist/profile/check.d.ts.map +1 -0
  293. package/dist/profile/check.js +12 -0
  294. package/dist/profile/check.js.map +1 -0
  295. package/dist/profile/for-file.d.ts +2 -2
  296. package/dist/profile/for-file.d.ts.map +1 -1
  297. package/dist/profile/for-file.js +9 -2
  298. package/dist/profile/for-file.js.map +1 -1
  299. package/dist/profile/load.js +1 -1
  300. package/dist/profile/load.js.map +1 -1
  301. package/dist/profile/select.d.ts +4 -2
  302. package/dist/profile/select.d.ts.map +1 -1
  303. package/dist/profile/select.js +8 -3
  304. package/dist/profile/select.js.map +1 -1
  305. package/dist/quoted-span.d.ts +22 -0
  306. package/dist/quoted-span.d.ts.map +1 -0
  307. package/dist/quoted-span.js +25 -0
  308. package/dist/quoted-span.js.map +1 -0
  309. package/dist/reasons.d.ts +1 -0
  310. package/dist/reasons.d.ts.map +1 -1
  311. package/dist/reasons.js +4 -1
  312. package/dist/reasons.js.map +1 -1
  313. package/dist/render/compact.d.ts.map +1 -1
  314. package/dist/render/compact.js +1 -2
  315. package/dist/render/compact.js.map +1 -1
  316. package/dist/render/eval.d.ts +2 -1
  317. package/dist/render/eval.d.ts.map +1 -1
  318. package/dist/render/eval.js +85 -43
  319. package/dist/render/eval.js.map +1 -1
  320. package/dist/render/friendly.d.ts +2 -1
  321. package/dist/render/friendly.d.ts.map +1 -1
  322. package/dist/render/friendly.js +14 -6
  323. package/dist/render/friendly.js.map +1 -1
  324. package/dist/render/genres.d.ts +5 -0
  325. package/dist/render/genres.d.ts.map +1 -0
  326. package/dist/render/genres.js +28 -0
  327. package/dist/render/genres.js.map +1 -0
  328. package/dist/render/plural.d.ts +3 -0
  329. package/dist/render/plural.d.ts.map +1 -0
  330. package/dist/render/plural.js +5 -0
  331. package/dist/render/plural.js.map +1 -0
  332. package/dist/render/rules-json.d.ts.map +1 -1
  333. package/dist/render/rules-json.js +9 -3
  334. package/dist/render/rules-json.js.map +1 -1
  335. package/dist/render/semantic.d.ts +3 -2
  336. package/dist/render/semantic.d.ts.map +1 -1
  337. package/dist/render/semantic.js +94 -34
  338. package/dist/render/semantic.js.map +1 -1
  339. package/dist/render/summary.d.ts.map +1 -1
  340. package/dist/render/summary.js +4 -3
  341. package/dist/render/summary.js.map +1 -1
  342. package/dist/render/suppressions.d.ts.map +1 -1
  343. package/dist/render/suppressions.js +3 -2
  344. package/dist/render/suppressions.js.map +1 -1
  345. package/dist/render/text.d.ts +2 -0
  346. package/dist/render/text.d.ts.map +1 -1
  347. package/dist/render/text.js +11 -3
  348. package/dist/render/text.js.map +1 -1
  349. package/dist/resolve-genre.d.ts +11 -0
  350. package/dist/resolve-genre.d.ts.map +1 -0
  351. package/dist/resolve-genre.js +18 -0
  352. package/dist/resolve-genre.js.map +1 -0
  353. package/dist/rule-load.d.ts.map +1 -1
  354. package/dist/rule-load.js +4 -1
  355. package/dist/rule-load.js.map +1 -1
  356. package/dist/run-semantic.js +1 -1
  357. package/dist/run-semantic.js.map +1 -1
  358. package/dist/run.d.ts +2 -0
  359. package/dist/run.d.ts.map +1 -1
  360. package/dist/run.js +25 -15
  361. package/dist/run.js.map +1 -1
  362. package/dist/sentence-shape.d.ts +0 -1
  363. package/dist/sentence-shape.d.ts.map +1 -1
  364. package/dist/sentence-shape.js +3 -5
  365. package/dist/sentence-shape.js.map +1 -1
  366. package/dist/setting-problems.d.ts +5 -0
  367. package/dist/setting-problems.d.ts.map +1 -0
  368. package/dist/setting-problems.js +15 -0
  369. package/dist/setting-problems.js.map +1 -0
  370. package/dist/soft-break.d.ts +19 -0
  371. package/dist/soft-break.d.ts.map +1 -0
  372. package/dist/soft-break.js +78 -0
  373. package/dist/soft-break.js.map +1 -0
  374. package/dist/structure/build.d.ts.map +1 -1
  375. package/dist/structure/build.js +24 -14
  376. package/dist/structure/build.js.map +1 -1
  377. package/dist/structure/cite.js +1 -1
  378. package/dist/structure/cite.js.map +1 -1
  379. package/dist/structure/date-order.d.ts +3 -0
  380. package/dist/structure/date-order.d.ts.map +1 -1
  381. package/dist/structure/date-order.js +9 -1
  382. package/dist/structure/date-order.js.map +1 -1
  383. package/dist/structure/issues.d.ts +1 -1
  384. package/dist/structure/issues.d.ts.map +1 -1
  385. package/dist/structure/issues.js +19 -8
  386. package/dist/structure/issues.js.map +1 -1
  387. package/dist/structure/listed-tags.d.ts +3 -0
  388. package/dist/structure/listed-tags.d.ts.map +1 -0
  389. package/dist/structure/listed-tags.js +6 -0
  390. package/dist/structure/listed-tags.js.map +1 -0
  391. package/dist/structure/markdown-path.d.ts.map +1 -1
  392. package/dist/structure/markdown-path.js +2 -2
  393. package/dist/structure/markdown-path.js.map +1 -1
  394. package/dist/structure/number-in-sentence.d.ts +15 -0
  395. package/dist/structure/number-in-sentence.d.ts.map +1 -0
  396. package/dist/structure/number-in-sentence.js +13 -0
  397. package/dist/structure/number-in-sentence.js.map +1 -0
  398. package/dist/structure/numbering.d.ts.map +1 -1
  399. package/dist/structure/numbering.js +1 -1
  400. package/dist/structure/numbering.js.map +1 -1
  401. package/dist/structure/relative-find.js +1 -1
  402. package/dist/structure/relative-find.js.map +1 -1
  403. package/dist/structure/sexp.js +1 -1
  404. package/dist/structure/sexp.js.map +1 -1
  405. package/dist/structure/unit-word.d.ts +8 -0
  406. package/dist/structure/unit-word.d.ts.map +1 -0
  407. package/dist/structure/unit-word.js +10 -0
  408. package/dist/structure/unit-word.js.map +1 -0
  409. package/dist/structure/unnumbered.js +2 -2
  410. package/dist/structure/unnumbered.js.map +1 -1
  411. package/dist/structure/wrapped-tail.d.ts +18 -0
  412. package/dist/structure/wrapped-tail.d.ts.map +1 -0
  413. package/dist/structure/wrapped-tail.js +11 -0
  414. package/dist/structure/wrapped-tail.js.map +1 -0
  415. package/dist/team-names.d.ts +9 -0
  416. package/dist/team-names.d.ts.map +1 -0
  417. package/dist/team-names.js +34 -0
  418. package/dist/team-names.js.map +1 -0
  419. package/dist/ui.d.ts +2 -0
  420. package/dist/ui.d.ts.map +1 -1
  421. package/dist/ui.js +6 -0
  422. package/dist/ui.js.map +1 -1
  423. package/dist/version.js +1 -1
  424. package/dist/version.js.map +1 -1
  425. package/dist/watch.d.ts +2 -2
  426. package/dist/watch.d.ts.map +1 -1
  427. package/dist/watch.js +5 -5
  428. package/dist/watch.js.map +1 -1
  429. package/genres.yaml +363 -0
  430. package/package.json +4 -3
  431. package/rules/adverb-overuse.yaml +2 -2
  432. package/rules/agentless-passive.yaml +1 -1
  433. package/rules/ai-generated-composite.yaml +2 -2
  434. package/rules/ai-tell.yaml +2 -2
  435. package/rules/bold-density.yaml +2 -2
  436. package/rules/closing-cliche.yaml +1 -1
  437. package/rules/concrete-evidence-density.yaml +2 -2
  438. package/rules/contraction-consistency.yaml +1 -1
  439. package/rules/cushion-phrase-density.yaml +1 -1
  440. package/rules/dangling-reference.yaml +3 -3
  441. package/rules/date-order.yaml +3 -3
  442. package/rules/date-weekday-mismatch.yaml +1 -1
  443. package/rules/double-keigo.yaml +1 -1
  444. package/rules/doubled-word.yaml +1 -1
  445. package/rules/duplicate-definition.yaml +1 -1
  446. package/rules/emoji-density.yaml +1 -1
  447. package/rules/empty-conclusion.yaml +2 -1
  448. package/rules/empty-intensifier.yaml +1 -1
  449. package/rules/excessive-hedging.yaml +16 -6
  450. package/rules/expletive-construction.yaml +2 -2
  451. package/rules/heading-echo.yaml +1 -1
  452. package/rules/hiragana-fukushi.yaml +1 -1
  453. package/rules/internal-jargon.yaml +2 -2
  454. package/rules/latin-spacing.yaml +6 -3
  455. package/rules/max-kanji-continuous.yaml +5 -4
  456. package/rules/max-paragraph-length.yaml +9 -2
  457. package/rules/max-sentence-length.yaml +14 -2
  458. package/rules/ngram-repetition.yaml +4 -4
  459. package/rules/no-doubled-joshi.yaml +4 -4
  460. package/rules/no-em-dash.yaml +2 -2
  461. package/rules/no-mixed-desumasu.yaml +1 -1
  462. package/rules/no-nakaguro-parallel.yaml +2 -2
  463. package/rules/numbering-gap.yaml +1 -1
  464. package/rules/oxford-comma-consistency.yaml +2 -1
  465. package/rules/padded-intro.yaml +2 -1
  466. package/rules/paragraph-length-variance.yaml +1 -1
  467. package/rules/preamble-length.yaml +2 -2
  468. package/rules/preferred-term.yaml +1 -1
  469. package/rules/proper-noun-density.yaml +3 -2
  470. package/rules/repeated-conjunction.yaml +2 -2
  471. package/rules/repeated-sentence-head.yaml +2 -2
  472. package/rules/required-sections.yaml +1 -1
  473. package/rules/rule-of-three.yaml +2 -2
  474. package/rules/sasete-itadaku.yaml +3 -3
  475. package/rules/section-length-uniformity.yaml +1 -1
  476. package/rules/sentence-initial-conjunction-run.yaml +2 -2
  477. package/rules/sentence-rhythm.yaml +1 -1
  478. package/rules/taigen-dome-in-prose.yaml +2 -2
  479. package/rules/title-case-consistency.yaml +3 -3
  480. package/rules/total-mismatch.yaml +1 -1
  481. package/rules/undefined-acronym.yaml +18 -5
  482. package/rules/unqualified-superlative.yaml +3 -3
  483. package/skills/chaff/SKILL.md +28 -9
  484. package/src/address-chain.ts +6 -3
  485. package/src/backends/anthropic.ts +5 -1
  486. package/src/backends/openai.ts +2 -1
  487. package/src/backends/types.ts +3 -2
  488. package/src/baseline.ts +1 -1
  489. package/src/calendar-number.ts +75 -0
  490. package/src/cli-args.ts +2 -2
  491. package/src/cli-text.ts +48 -18
  492. package/src/cli.ts +51 -47
  493. package/src/commands/cite.ts +4 -4
  494. package/src/commands/eval.ts +27 -6
  495. package/src/commands/feedback.ts +2 -1
  496. package/src/commands/init-ask.ts +53 -0
  497. package/src/commands/test.ts +105 -47
  498. package/src/commands/tree.ts +9 -7
  499. package/src/config/by-path.ts +8 -9
  500. package/src/config/load.ts +24 -0
  501. package/src/config/name-problems.ts +15 -0
  502. package/src/date-stamp.ts +1 -1
  503. package/src/detectors/acronym-compound.ts +9 -0
  504. package/src/detectors/acronym-context.ts +22 -1
  505. package/src/detectors/acronym-expansion.ts +72 -5
  506. package/src/detectors/char-shape.ts +56 -16
  507. package/src/detectors/citation-key.ts +13 -0
  508. package/src/detectors/cited-name.ts +23 -0
  509. package/src/detectors/concrete-evidence.ts +31 -0
  510. package/src/detectors/counter-edge.ts +29 -0
  511. package/src/detectors/dotted-name.ts +14 -0
  512. package/src/detectors/doubled-word.ts +25 -2
  513. package/src/detectors/en-shape.ts +123 -38
  514. package/src/detectors/enumerated-runs.ts +3 -2
  515. package/src/detectors/gram-place.ts +9 -2
  516. package/src/detectors/gram-predicate.ts +55 -0
  517. package/src/detectors/heading-case.ts +44 -0
  518. package/src/detectors/heading-echo.ts +5 -1
  519. package/src/detectors/index.ts +4 -3
  520. package/src/detectors/lettered-index.ts +78 -0
  521. package/src/detectors/lexicon.ts +68 -8
  522. package/src/detectors/name-numeral.ts +37 -0
  523. package/src/detectors/name-part.ts +24 -0
  524. package/src/detectors/name-run.ts +16 -0
  525. package/src/detectors/orthography.ts +43 -10
  526. package/src/detectors/phrase-match.ts +23 -12
  527. package/src/detectors/placeholder.ts +38 -0
  528. package/src/detectors/quoted-variant.ts +20 -0
  529. package/src/detectors/repeated-head.ts +3 -4
  530. package/src/detectors/series-label.ts +33 -0
  531. package/src/detectors/signals.ts +49 -35
  532. package/src/detectors/stacked-hedge.ts +93 -0
  533. package/src/detectors/structure-tree.ts +2 -2
  534. package/src/detectors/superlative-amount.ts +24 -0
  535. package/src/detectors/superlative-clause.ts +82 -0
  536. package/src/detectors/superlative-name.ts +30 -0
  537. package/src/detectors/superlative-scope.ts +3 -3
  538. package/src/detectors/team.ts +18 -2
  539. package/src/detectors/token-shape.ts +13 -6
  540. package/src/document.ts +41 -8
  541. package/src/eval.ts +1 -1
  542. package/src/feedback/draft.ts +1 -1
  543. package/src/feedback/excerpt.ts +2 -2
  544. package/src/file-header.ts +31 -0
  545. package/src/files.ts +3 -3
  546. package/src/genre-check.ts +46 -0
  547. package/src/genre-load.ts +24 -0
  548. package/src/genre-parse.ts +126 -0
  549. package/src/genre-suggest.ts +37 -0
  550. package/src/genre.ts +25 -5
  551. package/src/init-choice.ts +47 -0
  552. package/src/init.ts +20 -19
  553. package/src/joined-view.ts +96 -0
  554. package/src/judge.ts +3 -1
  555. package/src/line-continues.ts +43 -0
  556. package/src/line-paragraphs.ts +83 -0
  557. package/src/mask.ts +5 -6
  558. package/src/measure.ts +9 -1
  559. package/src/number-name.ts +35 -13
  560. package/src/orthography.ts +15 -9
  561. package/src/plain-source.ts +5 -0
  562. package/src/plugin.ts +27 -2
  563. package/src/profile/check.ts +34 -0
  564. package/src/profile/for-file.ts +10 -3
  565. package/src/profile/load.ts +1 -1
  566. package/src/profile/select.ts +11 -4
  567. package/src/quoted-span.ts +39 -0
  568. package/src/reasons.ts +5 -1
  569. package/src/render/compact.ts +1 -3
  570. package/src/render/eval.ts +102 -38
  571. package/src/render/friendly.ts +21 -6
  572. package/src/render/genres.ts +31 -0
  573. package/src/render/plural.ts +6 -0
  574. package/src/render/rules-json.ts +10 -3
  575. package/src/render/semantic.ts +117 -34
  576. package/src/render/summary.ts +4 -3
  577. package/src/render/suppressions.ts +3 -2
  578. package/src/render/text.ts +18 -3
  579. package/src/resolve-genre.ts +20 -0
  580. package/src/rule-load.ts +6 -1
  581. package/src/run-semantic.ts +1 -1
  582. package/src/run.ts +28 -15
  583. package/src/sentence-shape.ts +3 -7
  584. package/src/setting-problems.ts +24 -0
  585. package/src/soft-break.ts +94 -0
  586. package/src/structure/build.ts +24 -15
  587. package/src/structure/cite.ts +1 -1
  588. package/src/structure/date-order.ts +16 -1
  589. package/src/structure/issues.ts +24 -8
  590. package/src/structure/listed-tags.ts +7 -0
  591. package/src/structure/markdown-path.ts +2 -2
  592. package/src/structure/number-in-sentence.ts +20 -0
  593. package/src/structure/numbering.ts +1 -1
  594. package/src/structure/relative-find.ts +1 -1
  595. package/src/structure/sexp.ts +1 -1
  596. package/src/structure/unit-word.ts +11 -0
  597. package/src/structure/unnumbered.ts +2 -2
  598. package/src/structure/wrapped-tail.ts +22 -0
  599. package/src/team-names.ts +39 -0
  600. package/src/ui.ts +7 -0
  601. package/src/version.ts +1 -1
  602. package/src/watch.ts +5 -5
@@ -23,4 +23,4 @@ how_to_fix:
23
23
 
24
24
  levels: { strict: 1, normal: 1, relaxed: 1 }
25
25
 
26
- use_for: [business, technical, blog]
26
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
@@ -23,4 +23,4 @@ how_to_fix:
23
23
  # 1000 語あたりの個数。件数で数えると長い文書ほど当たる。
24
24
  levels: { strict: 3, normal: 8, relaxed: 20 }
25
25
 
26
- use_for: [blog, business, technical]
26
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -34,4 +34,5 @@ levels:
34
34
  normal: warning
35
35
  relaxed: info
36
36
 
37
- use_for: [blog]
37
+ # メール・議事録・プレスリリースの結びは挨拶か連絡先で、判断を書く所ではない。
38
+ use_for: [blog, business/report, business/proposal]
@@ -27,4 +27,4 @@ levels:
27
27
  normal: 1
28
28
  relaxed: 3
29
29
 
30
- use_for: [blog, business, technical]
30
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -1,8 +1,11 @@
1
1
  id: excessive-hedging
2
2
  layer: L2
3
3
  status: experimental
4
- how_to_find: hedging-density
4
+ how_to_find: hedging
5
5
  word_list: excessive-hedging
6
+ # 1 つの文の重なりを数えるときの、それだけでは逃げていない包む言い方(「という状況です」、may)と、
7
+ # 逃げの表現のうちどこで成り立つかを言うもの(「場合がある」、in some cases)。
8
+ extra_word_lists: [hedge-frame, hedge-scope]
6
9
  uses: [pos]
7
10
  severity: warning
8
11
 
@@ -11,17 +14,24 @@ name:
11
14
  en: Too much hedging
12
15
 
13
16
  why:
14
- ja: 断言を避けるほど、読み手は何が決まったのか分からなくなります。1 つなら慎重さですが、重なると誰も責任を取らない文書になります。
15
- en: The more the text avoids claiming, the less the reader can tell what was decided. One hedge is caution; many mean nobody is accountable.
17
+ ja: 断言を避けるほど、読み手は何が決まったのか分からなくなります。1 つなら慎重さですが、重なると誰も責任を取らない文書になります。chaff は 2 つの見方で探します。1 つの文に逃げを重ねたもの(「〜という状況であると考えられます」「〜かもしれないと思われます」)は、短い文書でも 1 文で指摘します。文書全体で逃げの表現が多すぎるものは、短い文書では測りません。重なりを数えるとき、鉤括弧や引用符で引いた発言の中の逃げは、話した人のものなので数えません。
18
+ en: The more the text avoids claiming, the less the reader can tell what was decided. One hedge is caution; many mean nobody is accountable. chaff looks two ways. A sentence that stacks hedges ("may possibly", "it could perhaps be argued") is reported on its own, even in a short document. Too many hedges across the whole document is measured only on longer documents. When counting hedges stacked in a sentence, a hedge inside a quotation is the speaker's, not the writer's, and is left out.
16
19
 
17
20
  message:
18
21
  ja: 「{matched}」など、逃げの表現が 1000 語あたり {density} 個あります({limit} 個まで)
19
22
  en: '"{matched}" and other hedges: {density} per 1000 words (limit {limit})'
20
23
 
24
+ # 1 つの文に重ねたもの。上の message は文書全体の密度。
25
+ messages:
26
+ stacked:
27
+ ja: この文は逃げの表現を {count} つ重ねています(「{matched}」)
28
+ en: 'This sentence stacks {count} hedges ("{matched}")'
29
+
21
30
  how_to_fix:
22
- ja: 言い切れるものは言い切ってください。言い切れないなら、何が分かれば言い切れるのかを書いてください。
23
- en: Commit where you can. Where you cannot, say what you would need to know.
31
+ ja: 言い切れるものは言い切ってください。言い切れないなら、何が分かれば言い切れるのかを書いてください。重ねた逃げは、1 つ残すか、全部外して言い切ってください。
32
+ en: Commit where you can. Where you cannot, say what you would need to know. Where hedges are stacked, keep one or drop them all and commit.
24
33
 
34
+ # 文書全体の、1000 語あたりの数の上限。1 つの文に 2 つ以上重ねたものは、どの段でも指摘する。
25
35
  levels: { strict: 3, normal: 6, relaxed: 12 }
26
36
 
27
- use_for: [business, blog, technical]
37
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -16,7 +16,7 @@ why:
16
16
 
17
17
  message:
18
18
  ja: '"{word} is ..." の形が文書内に {count} 回あります({limit} 回まで)'
19
- en: '"{word} is ..." appears {count} times (limit {limit})'
19
+ en: '"{word} is ..." appears {count} {count|time|times} (limit {limit})'
20
20
 
21
21
  how_to_fix:
22
22
  ja: 主語を前に出してください。"There is a need to review" を "The board must review" に。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
 
25
25
  levels: { strict: 1, normal: 3, relaxed: 6 }
26
26
 
27
- use_for: [blog, business]
27
+ use_for: [blog, business, legal, docs, academic, literature, speech]
@@ -27,4 +27,4 @@ levels:
27
27
  normal: 60
28
28
  relaxed: 75
29
29
 
30
- use_for: [blog, business, technical]
30
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -25,4 +25,4 @@ how_to_fix:
25
25
 
26
26
  levels: { strict: 1, normal: 1, relaxed: 3 }
27
27
 
28
- use_for: [blog, business, technical]
28
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -15,7 +15,7 @@ why:
15
15
 
16
16
  message:
17
17
  ja: 「{matched}」は社内でしか通じないかもしれません(そういう語が {count} 箇所)
18
- en: '"{matched}" may only be understood inside your team ({count} such words)'
18
+ en: '"{matched}" may only be understood inside your team ({count} such {count|word|words})'
19
19
 
20
20
  how_to_fix:
21
21
  ja: 初出のところで普通の言葉に言い換えるか、括弧で説明を添えてください。jargon には辞書形(握る)でも語幹(巻き取)でも書けますが、複合動詞は語幹のほうが確実です。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
  # チームが並べた語なので、1 つでも指摘する。並べた時点で「使わない」と決めている。
25
25
  levels: { strict: 1, normal: 1, relaxed: 3 }
26
26
 
27
- use_for: [business, blog, technical]
27
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -6,14 +6,17 @@ languages: [ja]
6
6
  severity: warning
7
7
  # 番号・識別子として書かれた数を見分けるのに、数の後ろの語の品詞を使う。無ければ全部数える。
8
8
  uses: [pos]
9
+ # 番地(千代田区紀尾井町1-3)を、都道府県までの地名の後ろの範囲(東京都2-3 営業日)と分ける。
10
+ # 日付・時刻(9月、2026年、10時5分)を、長さ(3ヶ月、3 時間)と分ける。
11
+ extra_word_lists: [prefecture-unit, date-time-unit, calendar-unit, calendar-year-unit]
9
12
 
10
13
  name:
11
14
  ja: 英数字の前後の空白がそろっていない
12
15
  en: Spacing around Latin text is inconsistent
13
16
 
14
17
  why:
15
- ja: 日本語と英字・数字のあいだを空けるか詰めるかは、どちらでも読めます。困るのは一つの文書の中で混ざることで、読み手には違いに意味があるように見えます。chaff はどちらが正しいかを決めず、文書の中で少ないほうを指摘します。英字と、数字の前、数字の後ろは別々に数えます。「を 3回」のように、数字の前は空けて助数詞とは詰める書き方がふつうにあるからです。「3GBの」のように数字に続く単位は、英字ではなく数字の側として数えます。逆に「H30 等」「EC2 で」「Phase 1 は」のように英字で始まって数字で終わる名前は、英字の側として数えます。「073-489-5909」「2026-06-02」のような番号は数量ではないので数えません。題や注の番号として書かれた数(「3.1 リサーチの原則」の節番号、※1 の注番号、行の頭に続き番号で並べた注の番号)と、0 で始まる組を含む番号(〒102-0094)も、後ろの空白が番号と題・項目の区切りなので数えません。
16
- en: Whether to put a space between Japanese and Latin letters or digits is a choice either way. What reads badly is mixing both in one document, which suggests the difference means something. chaff does not decide which is right; it points at whichever the document uses less. Letters, the space before a digit and the space after one are counted separately, since spacing before a number but not before its counter is common. A unit after a number (3GB) counts with the number; a name that starts with a letter and ends in a digit (H30, EC2, Phase 1) counts with the letters. A code such as a phone number or a date (073-489-5909, 2026-06-02) is not a quantity and is not counted. Neither is a number written as the label of a title or a note (a section number such as 3.1 before its title, a note number after ※, the numbers of notes listed one per line in sequence) or a code with a part starting with 0 (〒102-0094), since the space after it separates the label from its title or the next item.
18
+ ja: 日本語と英字・数字のあいだを空けるか詰めるかは、どちらでも読めます。困るのは一つの文書の中で混ざることで、読み手には違いに意味があるように見えます。chaff はどちらが正しいかを決めず、文書の中で少ないほうを指摘します。英字と、数字の前、数字の後ろは別々に数えます。「を 3回」のように、数字の前は空けて助数詞とは詰める書き方がふつうにあるからです。「3GBの」のように数字に続く単位は、英字ではなく数字の側として数えます。逆に「H30 等」「EC2 で」「Phase 1 は」のように英字で始まって数字で終わる名前は、英字の側として数えます。「073-489-5909」「2026-06-02」のような番号は数量ではないので数えません。日付・時刻(「9月」「2026年」「10月1日」「3時」「10時5分」)も、数と単位を詰めて書く決まりなので、その中の境目は数えません(日付の前の空白は数えます)。長さ(「3ヶ月」「3 時間」「5日で」「3年」)は数量として数えます。題や注の番号として書かれた数(「3.1 リサーチの原則」の節番号、※1 の注番号、行の頭に続き番号で並べた注の番号)、0 で始まる組を含む番号(102-0094)、〒の後ろの郵便番号(〒100-8916)、市・区・町まで下りた地名のすぐ後ろの番地(千代田区紀尾井町1-3)も、後ろの空白が番号と題・項目の区切りなので数えません。鉤括弧(「」『』)で引いた題名や発言の中も、空け方は引いた元のものなので数えません。
19
+ en: Whether to put a space between Japanese and Latin letters or digits is a choice either way. What reads badly is mixing both in one document, which suggests the difference means something. chaff does not decide which is right; it points at whichever the document uses less. Letters, the space before a digit and the space after one are counted separately, since spacing before a number but not before its counter is common. A unit after a number (3GB) counts with the number; a name that starts with a letter and ends in a digit (H30, EC2, Phase 1) counts with the letters. A code such as a phone number or a date (073-489-5909, 2026-06-02) is not a quantity and is not counted. Nor is the inside of a date or a time written with units (9月, 2026年, 10月1日, 3時, 10時5分), which is packed by convention; the space before it still counts. A length of time (3ヶ月, 3 時間, 5日で, 3年) is a quantity and counts. Neither is a number written as the label of a title or a note (a section number such as 3.1 before its title, a note number after ※, the numbers of notes listed one per line in sequence), a code with a part starting with 0 (102-0094), a postal code after 〒 (〒100-8916), or a hyphenated address number right after a city, ward or town (千代田区紀尾井町1-3), since the space after it separates the label from its title or the next item. Nor is the spacing inside a title or a quotation in 「」 or 『』, which is the source's, not the writer's.
17
20
 
18
21
  message:
19
22
  ja: "日本語と{kind}のあいだを{style}(この文書はふつう{usual}。{of} 箇所のうち {count} 箇所が違う)"
@@ -26,4 +29,4 @@ how_to_fix:
26
29
  # 何箇所違えば指摘するか。1 は「1 箇所でも混ざっていれば」。
27
30
  levels: { strict: 1, normal: 1, relaxed: 3 }
28
31
 
29
- use_for: [business, blog, technical]
32
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -2,8 +2,9 @@ id: max-kanji-continuous
2
2
  layer: L3
3
3
  status: experimental
4
4
  how_to_find: kanji-run
5
- # 品詞があれば、住所(地名と数だけでできた連なり)を数えない。無くても文字だけで動く。
5
+ # 品詞があれば、住所(地名と数だけでできた連なり)と 1 つの名前(辞書の固有名詞 1 語、人の姓と名)を数えない。無くても文字だけで動く。
6
6
  uses: [pos]
7
+ # chaff.yaml の names に並べた名前は連なりを切る。鉤括弧の中身がまるごと 1 つの連なりなら数えない(書き手が 1 つの名前と示している)。
7
8
  # 住所の先頭にしか来ない単位(都道府県)。地名の後ろに付けば、割られた町名ではなく地名の並び。
8
9
  extra_word_lists: [prefecture-unit]
9
10
  languages: [ja]
@@ -22,9 +23,9 @@ message:
22
23
  en: '"{word}" runs {count} kanji together (limit {limit})'
23
24
 
24
25
  how_to_fix:
25
- ja: ひらがなを 1 つ挟むか、助詞で割ってください。「情報処理推進機構の認定試験」に。
26
- en: Break it with a particle or kana.
26
+ ja: ひらがなを 1 つ挟むか、助詞で割ってください。「情報処理推進機構の認定試験」に。割れない正式名称なら、chaff.yaml の names に並べると数えません。鉤括弧でまるごとくくった名前(「英国大使館別荘記念公園」)も数えません。
27
+ en: Break it with a particle or kana. If it is an official name that cannot be broken, list it under names in chaff.yaml and it is not counted. A name that fills a 「」 quotation exactly is not counted either.
27
28
 
28
29
  levels: { strict: 6, normal: 8, relaxed: 12 }
29
30
 
30
- use_for: [blog, business, technical]
31
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -14,7 +14,7 @@ why:
14
14
 
15
15
  message:
16
16
  ja: この段落は {count} 文あります({limit} 文まで)
17
- en: This paragraph runs {count} sentences (limit {limit})
17
+ en: This paragraph runs {count} {count|sentence|sentences} (limit {limit})
18
18
 
19
19
  how_to_fix:
20
20
  ja: 話題の変わり目で段落を割ってください。
@@ -22,4 +22,11 @@ how_to_fix:
22
22
 
23
23
  levels: { strict: 3, normal: 5, relaxed: 8 }
24
24
 
25
- use_for: [blog, business, technical]
25
+ # 条文・判決・論文の段落は、一つの規定や論点をまとめて書く。corpus のその種類の文書で、normal が最も長い一握りの段落だけを指すように測って置いた。
26
+ by_genre:
27
+ legal: { strict: 5, normal: 8, relaxed: 12 }
28
+ legal/statute: { strict: 8, normal: 12, relaxed: 16 }
29
+ legal/judgment: { strict: 8, normal: 12, relaxed: 16 }
30
+ academic: { strict: 5, normal: 9, relaxed: 12 }
31
+
32
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -14,7 +14,7 @@ why:
14
14
 
15
15
  message:
16
16
  ja: この文は {count} 文字あります({limit} 文字まで)
17
- en: "This sentence runs {count} words (limit {limit})"
17
+ en: "This sentence runs {count} {count|word|words} (limit {limit})"
18
18
 
19
19
  how_to_fix:
20
20
  ja: 接続助詞のところで 2 文に割ってください。それだけで読めるようになります。
@@ -46,5 +46,17 @@ by_genre:
46
46
  blog/owned-media:
47
47
  ja: { strict: 65, normal: 90, relaxed: 125 }
48
48
  en: { strict: 16, normal: 22, relaxed: 30 }
49
+ # 法令・契約・判決・論文は、長い一文がその種類の書き方。corpus のその種類の文書で、normal が最も長い一握りの文だけを指すように測って置いた。
50
+ legal:
51
+ ja: { strict: 120, normal: 200, relaxed: 300 }
52
+ en: { strict: 40, normal: 60, relaxed: 80 }
53
+ legal/statute:
54
+ ja: { strict: 200, normal: 300, relaxed: 450 }
55
+ en: { strict: 80, normal: 130, relaxed: 180 }
56
+ legal/judgment:
57
+ ja: { strict: 250, normal: 350, relaxed: 450 }
58
+ academic:
59
+ ja: { strict: 100, normal: 140, relaxed: 180 }
60
+ en: { strict: 35, normal: 50, relaxed: 65 }
49
61
 
50
- use_for: [blog, business, technical]
62
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -16,12 +16,12 @@ why:
16
16
 
17
17
  message:
18
18
  ja: 「{word}」が {count} 回出てきます({limit} 回まで)
19
- en: '"{word}" appears {count} times (limit {limit})'
19
+ en: '"{word}" appears {count} {count|time|times} (limit {limit})'
20
20
 
21
21
  how_to_fix:
22
- ja: 2 回目以降を言い換えるか、まとめて 1 度にしてください。
23
- en: Rephrase the repeats, or say it once.
22
+ ja: 2 回目以降を言い換えるか、まとめて 1 度にしてください。繰り返しているのが組織名や製品名なら、chaff.yaml の names に並べると数えません。
23
+ en: Rephrase the repeats, or say it once. If what repeats is an organisation or product name, list it under names in chaff.yaml and it is not counted.
24
24
 
25
25
  levels: { strict: 3, normal: 5, relaxed: 9 }
26
26
 
27
- use_for: [blog, business, technical]
27
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -12,12 +12,12 @@ name:
12
12
  en: Nested repeated particle
13
13
 
14
14
  why:
15
- ja: 「弊社の新製品の販売の計画」のように同じ助詞が読点を挟まずに続くと、どれがどれに係るのか読み手が追えなくなります。読点で区切られた並列は数えていません。
16
- en: When the same particle repeats without a break, the reader cannot tell which phrase attaches to which. Items separated by punctuation are not counted.
15
+ ja: 「弊社の新製品の販売の計画」のように同じ助詞が読点を挟まずに続くと、どれがどれに係るのか読み手が追えなくなります。読点で区切られた並列は数えていません。鉤括弧で引いた題名や発言(「食品中のウイルスの制御のための…」)の中は書き手が言い換えられないので数えず、引いたもの全体を一つの名詞として読みます。
16
+ en: When the same particle repeats without a break, the reader cannot tell which phrase attaches to which. Items separated by punctuation are not counted. Nor are particles inside a title or a quotation in 「」 or 『』, which the writer cannot rephrase; the quotation as a whole is read as one noun.
17
17
 
18
18
  message:
19
19
  ja: 「{word}」が読点を挟まずに {count} 回続いています({limit} 回まで)
20
- en: '"{word}" repeats {count} times with no break (limit {limit})'
20
+ en: '"{word}" repeats {count} {count|time|times} with no break (limit {limit})'
21
21
 
22
22
  how_to_fix:
23
23
  ja: 文を割るか、係り先を言い換えてください。「弊社の新製品の販売の計画」を「弊社が新製品を販売する計画」に。
@@ -25,4 +25,4 @@ how_to_fix:
25
25
 
26
26
  levels: { strict: 1, normal: 2, relaxed: 3 }
27
27
 
28
- use_for: [blog, business, technical]
28
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -18,7 +18,7 @@ why:
18
18
 
19
19
  message:
20
20
  ja: 1000 字あたり {density} 個のダッシュがあります({limit} 個まで)
21
- en: "{density} dashes per 1000 words (limit {limit})"
21
+ en: "{density} {density|dash|dashes} per 1000 words (limit {limit})"
22
22
 
23
23
  how_to_fix:
24
24
  ja: 読点か括弧に置き換えてください。挟み込みなら括弧、言い換えなら読点が読みやすいです。
@@ -29,4 +29,4 @@ levels:
29
29
  ja: { strict: 1, normal: 3, relaxed: 8 }
30
30
  en: { strict: 3, normal: 8, relaxed: 20 }
31
31
 
32
- use_for: [blog, business, technical]
32
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -26,4 +26,4 @@ how_to_fix:
26
26
  # 少数派が何文までなら「混在」と見るか。これを超えたら、混在ではなく別の文体と判断して黙る。
27
27
  levels: { strict: 5, normal: 3, relaxed: 1 }
28
28
 
29
- use_for: [blog, business, technical]
29
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -15,7 +15,7 @@ why:
15
15
 
16
16
  message:
17
17
  ja: この文に中黒が {count} 個あります({limit} 個まで)
18
- en: "{count} middle dots in this sentence (limit {limit})"
18
+ en: "{count} middle {count|dot|dots} in this sentence (limit {limit})"
19
19
 
20
20
  how_to_fix:
21
21
  ja: 文を割るか、箇条書きにしてください。組の切れ目がはっきりします。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
  # 実文書の分布から。1 文 4 個までは読める。
25
25
  levels: { strict: 3, normal: 5, relaxed: 8 }
26
26
 
27
- use_for: [blog, business, technical]
27
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -23,4 +23,4 @@ how_to_fix:
23
23
 
24
24
  levels: { strict: 1, normal: 1, relaxed: 1 }
25
25
 
26
- use_for: [business, technical, blog]
26
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
@@ -3,6 +3,7 @@ layer: L3
3
3
  status: experimental
4
4
  how_to_find: oxford-comma
5
5
  languages: [en]
6
+ extra_word_lists: [participle-word]
6
7
  severity: info
7
8
 
8
9
  name:
@@ -23,4 +24,4 @@ how_to_fix:
23
24
 
24
25
  levels: { strict: 3, normal: 2, relaxed: 1 }
25
26
 
26
- use_for: [blog, business, technical]
27
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -28,4 +28,5 @@ levels:
28
28
  normal: 1
29
29
  relaxed: 2
30
30
 
31
- use_for: [blog]
31
+ # プレスリリース・メール・議事録の冒頭は理由や用件を言う所で、つかみではない。
32
+ use_for: [blog, business/report, business/proposal, legal, docs, academic, literature, speech]
@@ -22,4 +22,4 @@ how_to_fix:
22
22
 
23
23
  levels: { strict: 40, normal: 30, relaxed: 20 }
24
24
 
25
- use_for: [blog]
25
+ use_for: [blog, legal, docs, academic, literature, speech]
@@ -14,7 +14,7 @@ why:
14
14
 
15
15
  message:
16
16
  ja: 最初の見出しまでに {count} 段落あります({limit} 段落まで)
17
- en: "{count} paragraphs before the first heading (limit {limit})"
17
+ en: "{count} {count|paragraph|paragraphs} before the first heading (limit {limit})"
18
18
 
19
19
  how_to_fix:
20
20
  ja: 結論を先に書くか、前置きを見出しの下へ移してください。
@@ -22,4 +22,4 @@ how_to_fix:
22
22
 
23
23
  levels: { strict: 1, normal: 2, relaxed: 4 }
24
24
 
25
- use_for: [business]
25
+ use_for: [business, legal, docs, academic, literature, speech]
@@ -24,4 +24,4 @@ how_to_fix:
24
24
  # チームが並べた書き方なので、1 つでも指摘する。並べた時点で「使わない」と決めている。
25
25
  levels: { strict: 1, normal: 1, relaxed: 3 }
26
26
 
27
- use_for: [business, blog, technical]
27
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -3,6 +3,7 @@ layer: L3
3
3
  status: experimental
4
4
  how_to_find: proper-noun-density
5
5
  requires: [pos]
6
+ # chaff.yaml の names に並べた名前は、何語に割れても 1 つと数える。名前そのものは数える(読み手が知らないことは変わらない)。
6
7
  severity: info
7
8
 
8
9
  name:
@@ -15,7 +16,7 @@ why:
15
16
 
16
17
  message:
17
18
  ja: 1000 語あたり {density} 個の固有名詞があります({limit} 個まで)
18
- en: "{density} proper nouns per 1000 words (limit {limit})"
19
+ en: "{density} proper {density|noun|nouns} per 1000 words (limit {limit})"
19
20
 
20
21
  how_to_fix:
21
22
  ja: 2 度目からは「その製品」「そのチーム」のように受けてください。初出で何者かを一言添えると、知らない人も読めます。
@@ -23,4 +24,4 @@ how_to_fix:
23
24
 
24
25
  levels: { strict: 20, normal: 40, relaxed: 80 }
25
26
 
26
- use_for: [blog, business, technical]
27
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -16,7 +16,7 @@ why:
16
16
 
17
17
  message:
18
18
  ja: 接続詞で始まる段落が {count} 続いています({limit} まで)
19
- en: "{count} paragraphs in a row open with a conjunction (limit {limit})"
19
+ en: "{count} {count|paragraph|paragraphs} in a row {count|opens|open} with a conjunction (limit {limit})"
20
20
 
21
21
  how_to_fix:
22
22
  ja: どれか 1 つを残して、他は言いたいことから始めてください。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
 
25
25
  levels: { strict: 1, normal: 2, relaxed: 4 }
26
26
 
27
- use_for: [business, blog, technical]
27
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -14,7 +14,7 @@ why:
14
14
 
15
15
  message:
16
16
  ja: 「{head}」で始まる文が {count} 続いています({limit} まで)
17
- en: '{count} sentences in a row open with "{head}" (limit {limit})'
17
+ en: '{count} {count|sentence|sentences} in a row {count|opens|open} with "{head}" (limit {limit})'
18
18
 
19
19
  how_to_fix:
20
20
  ja: 語順を変えるか、1 文を前の文に繋げてください。
@@ -25,4 +25,4 @@ levels:
25
25
  normal: 3
26
26
  relaxed: 4
27
27
 
28
- use_for: [blog, business, technical]
28
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -23,4 +23,4 @@ how_to_fix:
23
23
  # 何個足りなければ指摘するか。1 は「1 つでも足りなければ」。
24
24
  levels: { strict: 1, normal: 1, relaxed: 2 }
25
25
 
26
- use_for: [business, blog, technical]
26
+ use_for: [business, blog, technical, legal, docs, academic, literature, speech]
@@ -14,7 +14,7 @@ why:
14
14
 
15
15
  message:
16
16
  ja: 箇条書き {total} 個のうち {count} 個が 3 項目です({limit}% まで)
17
- en: "{count} of {total} lists have exactly three items ({limit}% allowed)"
17
+ en: "{count} of {total} {total|list|lists} {count|has|have} exactly three items ({limit}% allowed)"
18
18
 
19
19
  how_to_fix:
20
20
  ja: 数を合わせるために足した項目を消してください。2 つで足りるなら 2 つで。
@@ -22,4 +22,4 @@ how_to_fix:
22
22
 
23
23
  levels: { strict: 50, normal: 70, relaxed: 90 }
24
24
 
25
- use_for: [blog]
25
+ use_for: [blog, legal, docs, academic, literature, speech]
@@ -1,7 +1,7 @@
1
1
  id: sasete-itadaku
2
2
  layer: L3
3
3
  status: experimental
4
- how_to_find: phrase-match
4
+ how_to_find: phrase-count
5
5
  word_list: sasete-itadaku
6
6
  uses: [pos]
7
7
  languages: [ja]
@@ -17,7 +17,7 @@ why:
17
17
 
18
18
  message:
19
19
  ja: 「{matched}」が文書内に {count} 回あります({limit} 回まで)
20
- en: '"{matched}" appears {count} times in this document (limit {limit})'
20
+ en: '"{matched}" appears {count} {count|time|times} in this document (limit {limit})'
21
21
 
22
22
  how_to_fix:
23
23
  ja: 主語を立てて言い切ってください。「検討させていただきます」を「来週までに結論を出します」に。
@@ -25,4 +25,4 @@ how_to_fix:
25
25
 
26
26
  levels: { strict: 1, normal: 3, relaxed: 6 }
27
27
 
28
- use_for: [business, blog]
28
+ use_for: [business, blog, legal, docs, academic, literature, speech]
@@ -22,4 +22,4 @@ how_to_fix:
22
22
 
23
23
  levels: { strict: 45, normal: 35, relaxed: 25 }
24
24
 
25
- use_for: [blog]
25
+ use_for: [blog, legal, docs, academic, literature, speech]
@@ -16,7 +16,7 @@ why:
16
16
 
17
17
  message:
18
18
  ja: 接続詞で始まる文が {count} 文続いています({limit} 文まで)
19
- en: "{count} sentences in a row open with a conjunction (limit {limit})"
19
+ en: "{count} {count|sentence|sentences} in a row {count|opens|open} with a conjunction (limit {limit})"
20
20
 
21
21
  how_to_fix:
22
22
  ja: どれか 1 つを残して、他は前の文に繋ぐか独立させてください。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
 
25
25
  levels: { strict: 1, normal: 2, relaxed: 4 }
26
26
 
27
- use_for: [blog, business]
27
+ use_for: [blog, business, legal, docs, academic, literature, speech]
@@ -27,4 +27,4 @@ levels:
27
27
  normal: 30
28
28
  relaxed: 20
29
29
 
30
- use_for: [blog]
30
+ use_for: [blog, legal, docs, academic, literature, speech]
@@ -16,7 +16,7 @@ why:
16
16
 
17
17
  message:
18
18
  ja: 本文に体言止めが {count} 文あります({limit} 文まで)
19
- en: "{count} sentences end on a noun in the body text (limit {limit})"
19
+ en: "{count} {count|sentence|sentences} {count|ends|end} on a noun in the body text (limit {limit})"
20
20
 
21
21
  how_to_fix:
22
22
  ja: 述語を足してください。「〜が課題。」を「〜が課題です。」に。
@@ -24,4 +24,4 @@ how_to_fix:
24
24
 
25
25
  levels: { strict: 2, normal: 4, relaxed: 8 }
26
26
 
27
- use_for: [blog, business, technical]
27
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -10,8 +10,8 @@ name:
10
10
  en: Heading capitalisation is inconsistent
11
11
 
12
12
  why:
13
- ja: Title Case と sentence case のどちらが正しいかは決めません。1 つの文書で混ざっていると、見出しの階層が変わったように見えます。
14
- en: Neither Title Case nor sentence case is wrong. Mixed within one document, the headings look like they change level.
13
+ ja: Title Case と sentence case のどちらが正しいかは決めません。1 つの文書で混ざっていると、見出しの階層が変わったように見えます。文書の題名(先頭にある深さ 1 の見出しが 1 つだけのとき)は名前なので比べません。節の見出しが同数に割れたときだけ、題名の流儀に合わせます。
14
+ en: Neither Title Case nor sentence case is wrong. Mixed within one document, the headings look like they change level. The document's title (a single top-level heading that opens it) is a name and is not compared; when the section headings split evenly, the title's style decides.
15
15
 
16
16
  message:
17
17
  ja: この見出しだけ他と大文字化の流儀が違います(文書の中で {count} 個)
@@ -23,4 +23,4 @@ how_to_fix:
23
23
 
24
24
  levels: { strict: 3, normal: 2, relaxed: 1 }
25
25
 
26
- use_for: [blog, business, technical]
26
+ use_for: [blog, business, technical, legal, docs, academic, literature, speech]
@@ -23,4 +23,4 @@ how_to_fix:
23
23
 
24
24
  levels: { strict: 1, normal: 1, relaxed: 1 }
25
25
 
26
- use_for: [business, technical, blog]
26
+ use_for: [business, technical, blog, legal, docs, academic, literature, speech]
@@ -3,7 +3,20 @@ layer: L1
3
3
  status: experimental
4
4
  how_to_find: undefined-acronym
5
5
  word_list: common-acronym
6
- extra_word_lists: [definition-marker, definition-verb, meridiem, time-zone, currency-code, us-state-code, emphasis-word, numbered-division]
6
+ extra_word_lists:
7
+ [
8
+ definition-marker,
9
+ definition-verb,
10
+ meridiem,
11
+ time-zone,
12
+ currency-code,
13
+ us-state-code,
14
+ emphasis-word,
15
+ numbered-division,
16
+ honorific,
17
+ date-time-unit,
18
+ http-method,
19
+ ]
7
20
  uses: [pos]
8
21
  severity: info
9
22
 
@@ -17,12 +30,12 @@ why:
17
30
 
18
31
  message:
19
32
  ja: 「{word}」が説明なしで使われています(説明のない略語 {count} 個)
20
- en: '"{word}" is used without an expansion ({count} such acronyms)'
33
+ en: '"{word}" is used without an expansion ({count} such {count|acronym|acronyms})'
21
34
 
22
35
  how_to_fix:
23
- ja: 初出のところで括弧に入れて展開してください。「CI(継続的インテグレーション)」のように。
24
- en: Expand it in brackets at first use.
36
+ ja: 初出のところで括弧に入れて展開してください。「CI(継続的インテグレーション)」のように。読み手が名前として知っている略語(社名など)なら、chaff.yaml の names に並べると求めません。
37
+ en: Expand it in brackets at first use. If your readers know it as a name (a company, say), list it under names in chaff.yaml and it is not asked for.
25
38
 
26
39
  levels: { strict: 1, normal: 3, relaxed: 6 }
27
40
 
28
- use_for: [business, technical]
41
+ use_for: [business, technical, legal, docs, academic, literature, speech]
@@ -3,7 +3,7 @@ layer: L2
3
3
  status: experimental
4
4
  how_to_find: unqualified-superlative
5
5
  word_list: superlative
6
- extra_word_lists: [comparison-marker, superlative-scope]
6
+ extra_word_lists: [comparison-marker, superlative-scope, quantity-noun]
7
7
  uses: [pos]
8
8
  severity: warning
9
9
 
@@ -17,7 +17,7 @@ why:
17
17
 
18
18
  message:
19
19
  ja: 「{matched}」に比べる相手がありません(そういう言い方が {count} 箇所)
20
- en: '"{matched}" has nothing to compare against ({count} such claims)'
20
+ en: '"{matched}" has nothing to compare against ({count} such {count|claim|claims})'
21
21
 
22
22
  how_to_fix:
23
23
  ja: 比較対象か条件を添えてください。「社内の 3 案のうち最も速い」のように。
@@ -25,4 +25,4 @@ how_to_fix:
25
25
 
26
26
  levels: { strict: 1, normal: 2, relaxed: 4 }
27
27
 
28
- use_for: [business, blog]
28
+ use_for: [business, blog, legal, docs, academic, literature, speech]