chaffjs 0.33.0 → 0.34.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 (467) hide show
  1. package/dist/api.d.ts +7 -1
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js.map +1 -1
  4. package/dist/cli-text.d.ts.map +1 -1
  5. package/dist/cli-text.js +4 -2
  6. package/dist/cli-text.js.map +1 -1
  7. package/dist/commands/grade.d.ts.map +1 -1
  8. package/dist/commands/grade.js +66 -21
  9. package/dist/commands/grade.js.map +1 -1
  10. package/dist/company-kana-spelling.d.ts +6 -1
  11. package/dist/company-kana-spelling.d.ts.map +1 -1
  12. package/dist/company-kana-spelling.js +19 -2
  13. package/dist/company-kana-spelling.js.map +1 -1
  14. package/dist/company-name-ending.d.ts +7 -0
  15. package/dist/company-name-ending.d.ts.map +1 -0
  16. package/dist/company-name-ending.js +44 -0
  17. package/dist/company-name-ending.js.map +1 -0
  18. package/dist/company-names.d.ts +11 -3
  19. package/dist/company-names.d.ts.map +1 -1
  20. package/dist/company-names.js +27 -14
  21. package/dist/company-names.js.map +1 -1
  22. package/dist/custom/no-rewrite.d.ts +3 -0
  23. package/dist/custom/no-rewrite.d.ts.map +1 -0
  24. package/dist/custom/no-rewrite.js +3 -0
  25. package/dist/custom/no-rewrite.js.map +1 -0
  26. package/dist/custom/parse.d.ts.map +1 -1
  27. package/dist/custom/parse.js +14 -2
  28. package/dist/custom/parse.js.map +1 -1
  29. package/dist/detectors/age-words.d.ts +5 -0
  30. package/dist/detectors/age-words.d.ts.map +1 -0
  31. package/dist/detectors/age-words.js +8 -0
  32. package/dist/detectors/age-words.js.map +1 -0
  33. package/dist/detectors/annual-pay-mismatch.d.ts.map +1 -1
  34. package/dist/detectors/annual-pay-mismatch.js +2 -12
  35. package/dist/detectors/annual-pay-mismatch.js.map +1 -1
  36. package/dist/detectors/blank-structure.d.ts.map +1 -1
  37. package/dist/detectors/blank-structure.js +4 -3
  38. package/dist/detectors/blank-structure.js.map +1 -1
  39. package/dist/detectors/closing-balance-mismatch.d.ts.map +1 -1
  40. package/dist/detectors/closing-balance-mismatch.js +1 -0
  41. package/dist/detectors/closing-balance-mismatch.js.map +1 -1
  42. package/dist/detectors/code-fences.d.ts +5 -0
  43. package/dist/detectors/code-fences.d.ts.map +1 -1
  44. package/dist/detectors/code-fences.js +9 -0
  45. package/dist/detectors/code-fences.js.map +1 -1
  46. package/dist/detectors/condition-toki.d.ts +16 -0
  47. package/dist/detectors/condition-toki.d.ts.map +1 -0
  48. package/dist/detectors/condition-toki.js +42 -0
  49. package/dist/detectors/condition-toki.js.map +1 -0
  50. package/dist/detectors/conjugated-entry.d.ts +17 -0
  51. package/dist/detectors/conjugated-entry.d.ts.map +1 -0
  52. package/dist/detectors/conjugated-entry.js +50 -0
  53. package/dist/detectors/conjugated-entry.js.map +1 -0
  54. package/dist/detectors/content-morphemes.d.ts +2 -0
  55. package/dist/detectors/content-morphemes.d.ts.map +1 -1
  56. package/dist/detectors/content-morphemes.js +1 -1
  57. package/dist/detectors/content-morphemes.js.map +1 -1
  58. package/dist/detectors/cross-facts.d.ts.map +1 -1
  59. package/dist/detectors/cross-facts.js +2 -1
  60. package/dist/detectors/cross-facts.js.map +1 -1
  61. package/dist/detectors/custom.d.ts.map +1 -1
  62. package/dist/detectors/custom.js +8 -2
  63. package/dist/detectors/custom.js.map +1 -1
  64. package/dist/detectors/document-shape.d.ts.map +1 -1
  65. package/dist/detectors/document-shape.js +6 -0
  66. package/dist/detectors/document-shape.js.map +1 -1
  67. package/dist/detectors/due-date.d.ts.map +1 -1
  68. package/dist/detectors/due-date.js +12 -2
  69. package/dist/detectors/due-date.js.map +1 -1
  70. package/dist/detectors/fact-consistency.d.ts.map +1 -1
  71. package/dist/detectors/fact-consistency.js +12 -13
  72. package/dist/detectors/fact-consistency.js.map +1 -1
  73. package/dist/detectors/form-line.d.ts +9 -0
  74. package/dist/detectors/form-line.d.ts.map +1 -0
  75. package/dist/detectors/form-line.js +36 -0
  76. package/dist/detectors/form-line.js.map +1 -0
  77. package/dist/detectors/formula-amount.d.ts.map +1 -1
  78. package/dist/detectors/formula-amount.js +2 -12
  79. package/dist/detectors/formula-amount.js.map +1 -1
  80. package/dist/detectors/heading-claim.d.ts +14 -0
  81. package/dist/detectors/heading-claim.d.ts.map +1 -0
  82. package/dist/detectors/heading-claim.js +49 -0
  83. package/dist/detectors/heading-claim.js.map +1 -0
  84. package/dist/detectors/heading-echo.d.ts.map +1 -1
  85. package/dist/detectors/heading-echo.js +29 -1
  86. package/dist/detectors/heading-echo.js.map +1 -1
  87. package/dist/detectors/installment-total-mismatch.d.ts.map +1 -1
  88. package/dist/detectors/installment-total-mismatch.js +2 -12
  89. package/dist/detectors/installment-total-mismatch.js.map +1 -1
  90. package/dist/detectors/list-parallel.d.ts +5 -2
  91. package/dist/detectors/list-parallel.d.ts.map +1 -1
  92. package/dist/detectors/list-parallel.js +45 -7
  93. package/dist/detectors/list-parallel.js.map +1 -1
  94. package/dist/detectors/name-variant.d.ts.map +1 -1
  95. package/dist/detectors/name-variant.js +34 -7
  96. package/dist/detectors/name-variant.js.map +1 -1
  97. package/dist/detectors/number-unit.d.ts +10 -0
  98. package/dist/detectors/number-unit.d.ts.map +1 -1
  99. package/dist/detectors/number-unit.js +28 -8
  100. package/dist/detectors/number-unit.js.map +1 -1
  101. package/dist/detectors/orthography.d.ts.map +1 -1
  102. package/dist/detectors/orthography.js +16 -7
  103. package/dist/detectors/orthography.js.map +1 -1
  104. package/dist/detectors/per-unit-words.d.ts +7 -0
  105. package/dist/detectors/per-unit-words.d.ts.map +1 -0
  106. package/dist/detectors/per-unit-words.js +17 -0
  107. package/dist/detectors/per-unit-words.js.map +1 -0
  108. package/dist/detectors/period-multiple-mismatch.d.ts.map +1 -1
  109. package/dist/detectors/period-multiple-mismatch.js +2 -12
  110. package/dist/detectors/period-multiple-mismatch.js.map +1 -1
  111. package/dist/detectors/reference-number-variant.d.ts.map +1 -1
  112. package/dist/detectors/reference-number-variant.js +21 -3
  113. package/dist/detectors/reference-number-variant.js.map +1 -1
  114. package/dist/detectors/registry/condition-toki.d.ts +3 -0
  115. package/dist/detectors/registry/condition-toki.d.ts.map +1 -0
  116. package/dist/detectors/registry/condition-toki.js +3 -0
  117. package/dist/detectors/registry/condition-toki.js.map +1 -0
  118. package/dist/detectors/rent-multiple-mismatch.d.ts.map +1 -1
  119. package/dist/detectors/rent-multiple-mismatch.js +2 -12
  120. package/dist/detectors/rent-multiple-mismatch.js.map +1 -1
  121. package/dist/detectors/row-sentence-amounts.d.ts.map +1 -1
  122. package/dist/detectors/row-sentence-amounts.js +5 -10
  123. package/dist/detectors/row-sentence-amounts.js.map +1 -1
  124. package/dist/detectors/stated-amounts.d.ts +4 -0
  125. package/dist/detectors/stated-amounts.d.ts.map +1 -0
  126. package/dist/detectors/stated-amounts.js +12 -0
  127. package/dist/detectors/stated-amounts.js.map +1 -0
  128. package/dist/detectors/step-time-sum.d.ts.map +1 -1
  129. package/dist/detectors/step-time-sum.js +2 -1
  130. package/dist/detectors/step-time-sum.js.map +1 -1
  131. package/dist/detectors/structure-tree.d.ts.map +1 -1
  132. package/dist/detectors/structure-tree.js +3 -0
  133. package/dist/detectors/structure-tree.js.map +1 -1
  134. package/dist/detectors/team.d.ts.map +1 -1
  135. package/dist/detectors/team.js +10 -6
  136. package/dist/detectors/team.js.map +1 -1
  137. package/dist/detectors/time-order.d.ts.map +1 -1
  138. package/dist/detectors/time-order.js +17 -13
  139. package/dist/detectors/time-order.js.map +1 -1
  140. package/dist/detectors/unknown-word.d.ts +4 -1
  141. package/dist/detectors/unknown-word.d.ts.map +1 -1
  142. package/dist/detectors/unknown-word.js +18 -2
  143. package/dist/detectors/unknown-word.js.map +1 -1
  144. package/dist/detectors/use-interval.d.ts +1 -0
  145. package/dist/detectors/use-interval.d.ts.map +1 -1
  146. package/dist/detectors/use-interval.js +15 -10
  147. package/dist/detectors/use-interval.js.map +1 -1
  148. package/dist/detectors/use-maximum.d.ts.map +1 -1
  149. package/dist/detectors/use-maximum.js +3 -1
  150. package/dist/detectors/use-maximum.js.map +1 -1
  151. package/dist/extension/document-view.d.ts +2 -2
  152. package/dist/extension/document-view.d.ts.map +1 -1
  153. package/dist/extension/document-view.js +17 -8
  154. package/dist/extension/document-view.js.map +1 -1
  155. package/dist/extension/entry-genres.d.ts +5 -0
  156. package/dist/extension/entry-genres.d.ts.map +1 -0
  157. package/dist/extension/entry-genres.js +13 -0
  158. package/dist/extension/entry-genres.js.map +1 -0
  159. package/dist/extension/module-detector.d.ts.map +1 -1
  160. package/dist/extension/module-detector.js +4 -4
  161. package/dist/extension/module-detector.js.map +1 -1
  162. package/dist/extension/plugin-parse.d.ts +1 -1
  163. package/dist/extension/plugin-parse.d.ts.map +1 -1
  164. package/dist/extension/plugin-parse.js +24 -7
  165. package/dist/extension/plugin-parse.js.map +1 -1
  166. package/dist/extension/problem-text.d.ts.map +1 -1
  167. package/dist/extension/problem-text.js +2 -0
  168. package/dist/extension/problem-text.js.map +1 -1
  169. package/dist/facts/age-values.d.ts.map +1 -1
  170. package/dist/facts/age-values.js +20 -2
  171. package/dist/facts/age-values.js.map +1 -1
  172. package/dist/facts/column-units.d.ts +31 -0
  173. package/dist/facts/column-units.d.ts.map +1 -0
  174. package/dist/facts/column-units.js +37 -0
  175. package/dist/facts/column-units.js.map +1 -0
  176. package/dist/facts/fact-values.d.ts +4 -0
  177. package/dist/facts/fact-values.d.ts.map +1 -1
  178. package/dist/facts/fact-values.js +3 -1
  179. package/dist/facts/fact-values.js.map +1 -1
  180. package/dist/facts/labelled-facts.d.ts +10 -0
  181. package/dist/facts/labelled-facts.d.ts.map +1 -1
  182. package/dist/facts/labelled-facts.js +6 -1
  183. package/dist/facts/labelled-facts.js.map +1 -1
  184. package/dist/facts/per-unit.d.ts +36 -0
  185. package/dist/facts/per-unit.d.ts.map +1 -0
  186. package/dist/facts/per-unit.js +56 -0
  187. package/dist/facts/per-unit.js.map +1 -0
  188. package/dist/facts/row-sentence-amounts.d.ts +3 -12
  189. package/dist/facts/row-sentence-amounts.d.ts.map +1 -1
  190. package/dist/facts/row-sentence-amounts.js +1 -15
  191. package/dist/facts/row-sentence-amounts.js.map +1 -1
  192. package/dist/facts/table-facts.d.ts +1 -1
  193. package/dist/facts/table-facts.d.ts.map +1 -1
  194. package/dist/facts/table-facts.js +13 -9
  195. package/dist/facts/table-facts.js.map +1 -1
  196. package/dist/facts/term-values.d.ts +13 -1
  197. package/dist/facts/term-values.d.ts.map +1 -1
  198. package/dist/facts/term-values.js +71 -12
  199. package/dist/facts/term-values.js.map +1 -1
  200. package/dist/grade/baseline.d.ts +4 -2
  201. package/dist/grade/baseline.d.ts.map +1 -1
  202. package/dist/grade/baseline.js +13 -11
  203. package/dist/grade/baseline.js.map +1 -1
  204. package/dist/grade/expect-read.d.ts +16 -0
  205. package/dist/grade/expect-read.d.ts.map +1 -0
  206. package/dist/grade/expect-read.js +52 -0
  207. package/dist/grade/expect-read.js.map +1 -0
  208. package/dist/grade/expect.d.ts +50 -0
  209. package/dist/grade/expect.d.ts.map +1 -0
  210. package/dist/grade/expect.js +53 -0
  211. package/dist/grade/expect.js.map +1 -0
  212. package/dist/grade/grade-item.d.ts +1 -1
  213. package/dist/grade/grade-item.d.ts.map +1 -1
  214. package/dist/grade/grade-item.js +13 -3
  215. package/dist/grade/grade-item.js.map +1 -1
  216. package/dist/grade/item.d.ts +9 -1
  217. package/dist/grade/item.d.ts.map +1 -1
  218. package/dist/grade/item.js +32 -7
  219. package/dist/grade/item.js.map +1 -1
  220. package/dist/grade/result.d.ts +5 -0
  221. package/dist/grade/result.d.ts.map +1 -1
  222. package/dist/grade/results-read.d.ts.map +1 -1
  223. package/dist/grade/results-read.js +4 -2
  224. package/dist/grade/results-read.js.map +1 -1
  225. package/dist/grade/rubric-file.d.ts +23 -0
  226. package/dist/grade/rubric-file.d.ts.map +1 -0
  227. package/dist/grade/rubric-file.js +35 -0
  228. package/dist/grade/rubric-file.js.map +1 -0
  229. package/dist/grade/rubric.d.ts +2 -0
  230. package/dist/grade/rubric.d.ts.map +1 -1
  231. package/dist/grade/rubric.js +75 -47
  232. package/dist/grade/rubric.js.map +1 -1
  233. package/dist/grade/setup.d.ts +2 -1
  234. package/dist/grade/setup.d.ts.map +1 -1
  235. package/dist/grade/setup.js +2 -2
  236. package/dist/grade/setup.js.map +1 -1
  237. package/dist/grade/stamp.d.ts +2 -0
  238. package/dist/grade/stamp.d.ts.map +1 -1
  239. package/dist/grade/stamp.js +8 -2
  240. package/dist/grade/stamp.js.map +1 -1
  241. package/dist/grade/task-rubric.d.ts +16 -0
  242. package/dist/grade/task-rubric.d.ts.map +1 -0
  243. package/dist/grade/task-rubric.js +34 -0
  244. package/dist/grade/task-rubric.js.map +1 -0
  245. package/dist/grade/text.d.ts +5 -1
  246. package/dist/grade/text.d.ts.map +1 -1
  247. package/dist/grade/text.js +16 -4
  248. package/dist/grade/text.js.map +1 -1
  249. package/dist/name-char-reading.d.ts +5 -0
  250. package/dist/name-char-reading.d.ts.map +1 -1
  251. package/dist/name-char-reading.js +15 -0
  252. package/dist/name-char-reading.js.map +1 -1
  253. package/dist/name-end-letter.d.ts +19 -0
  254. package/dist/name-end-letter.d.ts.map +1 -0
  255. package/dist/name-end-letter.js +37 -0
  256. package/dist/name-end-letter.js.map +1 -0
  257. package/dist/name-neighbours.d.ts.map +1 -1
  258. package/dist/name-neighbours.js +2 -1
  259. package/dist/name-neighbours.js.map +1 -1
  260. package/dist/name-separator.d.ts +6 -0
  261. package/dist/name-separator.d.ts.map +1 -1
  262. package/dist/name-separator.js +29 -0
  263. package/dist/name-separator.js.map +1 -1
  264. package/dist/name-variants.d.ts +6 -3
  265. package/dist/name-variants.d.ts.map +1 -1
  266. package/dist/name-variants.js +37 -10
  267. package/dist/name-variants.js.map +1 -1
  268. package/dist/number-name.d.ts.map +1 -1
  269. package/dist/number-name.js +11 -2
  270. package/dist/number-name.js.map +1 -1
  271. package/dist/profile/cue-lines.d.ts +6 -0
  272. package/dist/profile/cue-lines.d.ts.map +1 -0
  273. package/dist/profile/cue-lines.js +13 -0
  274. package/dist/profile/cue-lines.js.map +1 -0
  275. package/dist/profile/parse.d.ts +1 -1
  276. package/dist/profile/parse.d.ts.map +1 -1
  277. package/dist/profile/parse.js +3 -2
  278. package/dist/profile/parse.js.map +1 -1
  279. package/dist/reference-numbers.d.ts +2 -0
  280. package/dist/reference-numbers.d.ts.map +1 -1
  281. package/dist/reference-numbers.js +1 -1
  282. package/dist/reference-numbers.js.map +1 -1
  283. package/dist/spaced-person-name.d.ts.map +1 -1
  284. package/dist/spaced-person-name.js +26 -1
  285. package/dist/spaced-person-name.js.map +1 -1
  286. package/dist/spacing-code.d.ts.map +1 -1
  287. package/dist/spacing-code.js +10 -1
  288. package/dist/spacing-code.js.map +1 -1
  289. package/dist/spacing-minority.d.ts +7 -0
  290. package/dist/spacing-minority.d.ts.map +1 -1
  291. package/dist/spacing-minority.js +14 -0
  292. package/dist/spacing-minority.js.map +1 -1
  293. package/dist/structure/closing-balance.d.ts +9 -0
  294. package/dist/structure/closing-balance.d.ts.map +1 -1
  295. package/dist/structure/closing-balance.js +34 -7
  296. package/dist/structure/closing-balance.js.map +1 -1
  297. package/dist/structure/definition-use.d.ts.map +1 -1
  298. package/dist/structure/definition-use.js +20 -1
  299. package/dist/structure/definition-use.js.map +1 -1
  300. package/dist/structure/document-context.d.ts +2 -0
  301. package/dist/structure/document-context.d.ts.map +1 -0
  302. package/dist/structure/document-context.js +42 -0
  303. package/dist/structure/document-context.js.map +1 -0
  304. package/dist/structure/fenced-lines.d.ts +7 -0
  305. package/dist/structure/fenced-lines.d.ts.map +1 -0
  306. package/dist/structure/fenced-lines.js +27 -0
  307. package/dist/structure/fenced-lines.js.map +1 -0
  308. package/dist/structure/labelled-date-order.d.ts +31 -9
  309. package/dist/structure/labelled-date-order.d.ts.map +1 -1
  310. package/dist/structure/labelled-date-order.js +60 -15
  311. package/dist/structure/labelled-date-order.js.map +1 -1
  312. package/dist/structure/labelled-order.d.ts +7 -1
  313. package/dist/structure/labelled-order.d.ts.map +1 -1
  314. package/dist/structure/labelled-order.js +10 -3
  315. package/dist/structure/labelled-order.js.map +1 -1
  316. package/dist/structure/line-amount-label.d.ts.map +1 -1
  317. package/dist/structure/line-amount-label.js +2 -1
  318. package/dist/structure/line-amount-label.js.map +1 -1
  319. package/dist/structure/line-amount.d.ts +0 -5
  320. package/dist/structure/line-amount.d.ts.map +1 -1
  321. package/dist/structure/line-amount.js +1 -10
  322. package/dist/structure/line-amount.js.map +1 -1
  323. package/dist/structure/prose-total.d.ts +8 -0
  324. package/dist/structure/prose-total.d.ts.map +1 -1
  325. package/dist/structure/prose-total.js +70 -2
  326. package/dist/structure/prose-total.js.map +1 -1
  327. package/dist/structure/runs.d.ts.map +1 -1
  328. package/dist/structure/runs.js +9 -1
  329. package/dist/structure/runs.js.map +1 -1
  330. package/dist/structure/signed-date-line.d.ts +15 -0
  331. package/dist/structure/signed-date-line.d.ts.map +1 -0
  332. package/dist/structure/signed-date-line.js +68 -0
  333. package/dist/structure/signed-date-line.js.map +1 -0
  334. package/dist/structure/tax.d.ts.map +1 -1
  335. package/dist/structure/tax.js +5 -3
  336. package/dist/structure/tax.js.map +1 -1
  337. package/dist/structure/total-line.d.ts.map +1 -1
  338. package/dist/structure/total-line.js +10 -6
  339. package/dist/structure/total-line.js.map +1 -1
  340. package/dist/structure/total.d.ts +2 -0
  341. package/dist/structure/total.d.ts.map +1 -1
  342. package/dist/structure/total.js +34 -3
  343. package/dist/structure/total.js.map +1 -1
  344. package/dist/subject-codes.d.ts +21 -0
  345. package/dist/subject-codes.d.ts.map +1 -0
  346. package/dist/subject-codes.js +79 -0
  347. package/dist/subject-codes.js.map +1 -0
  348. package/dist/unlabelled-references.d.ts +6 -2
  349. package/dist/unlabelled-references.d.ts.map +1 -1
  350. package/dist/unlabelled-references.js +11 -10
  351. package/dist/unlabelled-references.js.map +1 -1
  352. package/genres.yaml +17 -0
  353. package/package.json +3 -3
  354. package/profiles/listing.yaml +1 -1
  355. package/rules/closing-balance-mismatch.yaml +3 -3
  356. package/rules/due-before-issue.yaml +9 -5
  357. package/rules/fact-conflict.yaml +2 -2
  358. package/rules/heading-echo.yaml +2 -2
  359. package/rules/internal-jargon.yaml +2 -2
  360. package/rules/latin-spacing.yaml +4 -4
  361. package/rules/list-item-form-mix.yaml +1 -1
  362. package/rules/name-variant.yaml +5 -2
  363. package/rules/no-lead.yaml +2 -2
  364. package/rules/number-without-unit.yaml +2 -2
  365. package/rules/reference-number-variant.yaml +3 -3
  366. package/rules/toki-as-condition.yaml +71 -0
  367. package/rules/total-mismatch.yaml +4 -4
  368. package/rules/unknown-word.yaml +2 -2
  369. package/rules/use-before-definition.yaml +2 -2
  370. package/src/api.ts +11 -2
  371. package/src/cli-text.ts +4 -2
  372. package/src/commands/grade.ts +75 -23
  373. package/src/company-kana-spelling.ts +22 -2
  374. package/src/company-name-ending.ts +50 -0
  375. package/src/company-names.ts +52 -17
  376. package/src/custom/no-rewrite.ts +2 -0
  377. package/src/custom/parse.ts +18 -2
  378. package/src/detectors/age-words.ts +12 -0
  379. package/src/detectors/annual-pay-mismatch.ts +3 -18
  380. package/src/detectors/blank-structure.ts +4 -3
  381. package/src/detectors/closing-balance-mismatch.ts +1 -0
  382. package/src/detectors/code-fences.ts +10 -0
  383. package/src/detectors/condition-toki.ts +60 -0
  384. package/src/detectors/conjugated-entry.ts +53 -0
  385. package/src/detectors/content-morphemes.ts +2 -1
  386. package/src/detectors/cross-facts.ts +2 -1
  387. package/src/detectors/custom.ts +9 -2
  388. package/src/detectors/document-shape.ts +8 -0
  389. package/src/detectors/due-date.ts +17 -7
  390. package/src/detectors/fact-consistency.ts +13 -17
  391. package/src/detectors/form-line.ts +47 -0
  392. package/src/detectors/formula-amount.ts +2 -18
  393. package/src/detectors/heading-claim.ts +76 -0
  394. package/src/detectors/heading-echo.ts +32 -1
  395. package/src/detectors/installment-total-mismatch.ts +3 -18
  396. package/src/detectors/list-parallel.ts +46 -7
  397. package/src/detectors/name-variant.ts +45 -8
  398. package/src/detectors/number-unit.ts +35 -9
  399. package/src/detectors/orthography.ts +17 -8
  400. package/src/detectors/per-unit-words.ts +24 -0
  401. package/src/detectors/period-multiple-mismatch.ts +2 -18
  402. package/src/detectors/reference-number-variant.ts +27 -5
  403. package/src/detectors/registry/condition-toki.ts +4 -0
  404. package/src/detectors/rent-multiple-mismatch.ts +2 -18
  405. package/src/detectors/row-sentence-amounts.ts +5 -20
  406. package/src/detectors/stated-amounts.ts +20 -0
  407. package/src/detectors/step-time-sum.ts +2 -1
  408. package/src/detectors/structure-tree.ts +3 -0
  409. package/src/detectors/team.ts +13 -7
  410. package/src/detectors/time-order.ts +6 -3
  411. package/src/detectors/unknown-word.ts +20 -2
  412. package/src/detectors/use-interval.ts +8 -4
  413. package/src/detectors/use-maximum.ts +3 -1
  414. package/src/extension/document-view.ts +18 -9
  415. package/src/extension/entry-genres.ts +15 -0
  416. package/src/extension/module-detector.ts +9 -4
  417. package/src/extension/plugin-parse.ts +29 -7
  418. package/src/extension/problem-text.ts +4 -0
  419. package/src/facts/age-values.ts +24 -2
  420. package/src/facts/column-units.ts +67 -0
  421. package/src/facts/fact-values.ts +11 -1
  422. package/src/facts/labelled-facts.ts +16 -2
  423. package/src/facts/per-unit.ts +105 -0
  424. package/src/facts/row-sentence-amounts.ts +4 -26
  425. package/src/facts/table-facts.ts +7 -4
  426. package/src/facts/term-values.ts +94 -13
  427. package/src/grade/baseline.ts +20 -12
  428. package/src/grade/expect-read.ts +65 -0
  429. package/src/grade/expect.ts +74 -0
  430. package/src/grade/grade-item.ts +14 -3
  431. package/src/grade/item.ts +48 -8
  432. package/src/grade/result.ts +5 -0
  433. package/src/grade/results-read.ts +7 -2
  434. package/src/grade/rubric-file.ts +46 -0
  435. package/src/grade/rubric.ts +77 -47
  436. package/src/grade/setup.ts +3 -3
  437. package/src/grade/stamp.ts +10 -2
  438. package/src/grade/task-rubric.ts +39 -0
  439. package/src/grade/text.ts +27 -5
  440. package/src/name-char-reading.ts +16 -0
  441. package/src/name-end-letter.ts +52 -0
  442. package/src/name-neighbours.ts +2 -1
  443. package/src/name-separator.ts +32 -0
  444. package/src/name-variants.ts +54 -13
  445. package/src/number-name.ts +12 -3
  446. package/src/profile/cue-lines.ts +14 -0
  447. package/src/profile/parse.ts +3 -2
  448. package/src/reference-numbers.ts +1 -1
  449. package/src/spaced-person-name.ts +27 -2
  450. package/src/spacing-code.ts +13 -2
  451. package/src/spacing-minority.ts +17 -0
  452. package/src/structure/closing-balance.ts +46 -8
  453. package/src/structure/definition-use.ts +24 -1
  454. package/src/structure/document-context.ts +46 -0
  455. package/src/structure/fenced-lines.ts +28 -0
  456. package/src/structure/labelled-date-order.ts +105 -21
  457. package/src/structure/labelled-order.ts +21 -10
  458. package/src/structure/line-amount-label.ts +2 -1
  459. package/src/structure/line-amount.ts +1 -11
  460. package/src/structure/prose-total.ts +81 -2
  461. package/src/structure/runs.ts +10 -1
  462. package/src/structure/signed-date-line.ts +78 -0
  463. package/src/structure/tax.ts +6 -3
  464. package/src/structure/total-line.ts +12 -6
  465. package/src/structure/total.ts +42 -3
  466. package/src/subject-codes.ts +105 -0
  467. package/src/unlabelled-references.ts +24 -16
@@ -1,16 +1,20 @@
1
1
  import type { LexiconEntry } from "./plugin.ts";
2
2
  import { type ReferenceNumber, type ReferenceVariant } from "./reference-numbers.ts";
3
+ type CodeShape = (written: string) => boolean;
4
+ /** A code: letters, a hyphen and the given digits or more (GP-0512). A plain number (48215, 2026-118) is never one. */
5
+ export declare const isCodeWith: (minDigits: number) => (written: string) => boolean;
3
6
  /**
4
7
  * The codes a table labels: in a row whose first cell is a label (| 品番 | GP-0512 |), and in a column whose heading is
5
8
  * one (| 品番 | 品名 | over | GP-0512 | …). Pass the text with its tables (proseAndTablesOf).
6
9
  */
7
- export declare const tableLabelledCodes: (text: string, labels: readonly LexiconEntry[]) => ReferenceNumber[];
10
+ export declare const tableLabelledCodes: (text: string, labels: readonly LexiconEntry[], isCodeShape?: CodeShape) => ReferenceNumber[];
8
11
  /** Every code written anywhere in a table, its heading row too, labelled or not: a code a table lists is an item of its own, never a slip. */
9
- export declare const tableCodes: (text: string) => Set<string>;
12
+ export declare const tableCodes: (text: string, isCodeShape?: CodeShape) => Set<string>;
10
13
  /**
11
14
  * Every code of the prose written with no label that is one labelled code with two neighbours swapped. Only when exactly
12
15
  * one labelled code swaps to it, and when the writing is not itself a code the document labels or lists in a table: a
13
16
  * catalog's AB-1234 and AB-1243 are two items.
14
17
  */
15
18
  export declare const unlabelledVariants: (prose: string, labelled: readonly ReferenceNumber[], known: ReadonlySet<string>) => ReferenceVariant[];
19
+ export {};
16
20
  //# sourceMappingURL=unlabelled-references.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unlabelled-references.d.ts","sourceRoot":"","sources":["../src/unlabelled-references.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,OAAO,EAA6D,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AA+BhJ;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,QAAQ,SAAS,YAAY,EAAE,KAAG,eAAe,EAa9F,CAAC;AAML,8IAA8I;AAC9I,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG,GAAG,CAAC,MAAM,CACoF,CAAC;AAEzI;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,UAAU,SAAS,eAAe,EAAE,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,gBAAgB,EAYpI,CAAC"}
1
+ {"version":3,"file":"unlabelled-references.d.ts","sourceRoot":"","sources":["../src/unlabelled-references.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,OAAO,EAA6D,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAIhJ,KAAK,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAI9C,uHAAuH;AACvH,eAAO,MAAM,UAAU,GACpB,WAAW,MAAM,MACjB,SAAS,MAAM,KAAG,OAKlB,CAAC;AAqBJ;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,QAAQ,SAAS,YAAY,EAAE,EAAE,cAAa,SAAkB,KAAG,eAAe,EAa/H,CAAC;AAML,8IAA8I;AAC9I,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,cAAa,SAAkB,KAAG,GAAG,CAAC,MAAM,CAGlF,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,EAAE,UAAU,SAAS,eAAe,EAAE,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,gBAAgB,EAYpI,CAAC"}
@@ -6,11 +6,12 @@ import { charactersOf, MAX_CHARACTERS, MIN_DIGITS, REFERENCE_SHAPE } from "./ref
6
6
  const SEPARATOR = /[-‐−-]/u;
7
7
  const LATIN_LETTER = /[A-Z]/u;
8
8
  const DIGIT = /\d/gu;
9
- /** A code: letters, a hyphen and four digits or more (GP-0512). A plain number (48215, 2026-118) is never one. */
10
- const isCode = (written) => {
9
+ /** A code: letters, a hyphen and the given digits or more (GP-0512). A plain number (48215, 2026-118) is never one. */
10
+ export const isCodeWith = (minDigits) => (written) => {
11
11
  const characters = charactersOf(written);
12
- return (SEPARATOR.test(written) && LATIN_LETTER.test(characters) && (characters.match(DIGIT)?.length ?? 0) >= MIN_DIGITS && characters.length <= MAX_CHARACTERS);
12
+ return (SEPARATOR.test(written) && LATIN_LETTER.test(characters) && (characters.match(DIGIT)?.length ?? 0) >= minDigits && characters.length <= MAX_CHARACTERS);
13
13
  };
14
+ const isCode = isCodeWith(MIN_DIGITS);
14
15
  const keyOf = (text) => withoutEdgeMarks(text).normalize("NFKC").toLowerCase();
15
16
  /** The group of a cell that is a label and nothing else (| 品番 |, | Item code |). */
16
17
  const labelOfCell = (cell, labels) => {
@@ -20,11 +21,11 @@ const labelOfCell = (cell, labels) => {
20
21
  return entry === undefined ? undefined : (entry.group ?? entry.pattern);
21
22
  };
22
23
  /** A cell holding one code and nothing else, as a reference number of the group. */
23
- const codeOfCell = (cell, group) => {
24
+ const codeOfCell = (cell, group, isCodeShape) => {
24
25
  if (cell === undefined)
25
26
  return [];
26
27
  const written = withoutEdgeMarks(cell.text);
27
- if (!isCode(written) || [...written.matchAll(REFERENCE_SHAPE)].length !== 1)
28
+ if (!isCodeShape(written) || [...written.matchAll(REFERENCE_SHAPE)].length !== 1)
28
29
  return [];
29
30
  return [{ offset: cell.start + cell.text.indexOf(written), written, characters: charactersOf(written), label: group }];
30
31
  };
@@ -32,23 +33,23 @@ const codeOfCell = (cell, group) => {
32
33
  * The codes a table labels: in a row whose first cell is a label (| 品番 | GP-0512 |), and in a column whose heading is
33
34
  * one (| 品番 | 品名 | over | GP-0512 | …). Pass the text with its tables (proseAndTablesOf).
34
35
  */
35
- export const tableLabelledCodes = (text, labels) => tablesOf(linesOf(text)).flatMap((table) => {
36
+ export const tableLabelledCodes = (text, labels, isCodeShape = isCode) => tablesOf(linesOf(text)).flatMap((table) => {
36
37
  const headings = cellsOf(table.header).map((cell) => labelOfCell(cell, labels));
37
38
  return table.rows.flatMap((row) => {
38
39
  const cells = cellsOf(row);
39
40
  const rowGroup = labelOfCell(cells[0], labels);
40
- const byRow = rowGroup === undefined ? [] : codeOfCell(cells[1], rowGroup);
41
+ const byRow = rowGroup === undefined ? [] : codeOfCell(cells[1], rowGroup, isCodeShape);
41
42
  const byColumn = cells.flatMap((cell, index) => {
42
43
  const group = headings[index];
43
- return group === undefined ? [] : codeOfCell(cell, group);
44
+ return group === undefined ? [] : codeOfCell(cell, group, isCodeShape);
44
45
  });
45
46
  return [...byRow, ...byColumn];
46
47
  });
47
48
  });
48
49
  /** The letters and digits of every code a cell holds. */
49
- const codesInCell = (cell) => [...cell.text.matchAll(REFERENCE_SHAPE)].filter((match) => isCode(match[0])).map((match) => charactersOf(match[0]));
50
+ const codesInCell = (cell, isCodeShape) => [...cell.text.matchAll(REFERENCE_SHAPE)].filter((match) => isCodeShape(match[0])).map((match) => charactersOf(match[0]));
50
51
  /** Every code written anywhere in a table, its heading row too, labelled or not: a code a table lists is an item of its own, never a slip. */
51
- export const tableCodes = (text) => new Set(tablesOf(linesOf(text)).flatMap((table) => [table.header, ...table.rows].flatMap((row) => cellsOf(row).flatMap(codesInCell))));
52
+ export const tableCodes = (text, isCodeShape = isCode) => new Set(tablesOf(linesOf(text)).flatMap((table) => [table.header, ...table.rows].flatMap((row) => cellsOf(row).flatMap((cell) => codesInCell(cell, isCodeShape)))));
52
53
  /**
53
54
  * Every code of the prose written with no label that is one labelled code with two neighbours swapped. Only when exactly
54
55
  * one labelled code swaps to it, and when the writing is not itself a code the document labels or lists in a table: a
@@ -1 +1 @@
1
- {"version":3,"file":"unlabelled-references.js","sourceRoot":"","sources":["../src/unlabelled-references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unlabelled-references.js","sourceRoot":"","sources":["../src/unlabelled-references.ts"],"names":[],"mappings":"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"}
package/genres.yaml CHANGED
@@ -212,6 +212,14 @@ genres:
212
212
  - Do the figures for the problem, the proposal and the benefit have a basis, and agree between the text and the tables?
213
213
  - Are the risks stated, each with what is done about it?
214
214
  - Does it say what decision is asked of the reader, and by when?
215
+ # A quote or a price list asks the reader to decide: its number, its date and how long the price holds, as labelled lines.
216
+ suggest:
217
+ ja:
218
+ line: "^(?:[-*]\\s+|\\|\\s*)?(?:\\*\\*)?(?:見積(?:書)?(?:番号|日|金額|有効期限)|お見積(?:り)?(?:番号|日|金額)|有効期限|有効期間|適用(?:開始|終了)日|価格表番号)(?:\\*\\*)?\\s*(?:[((][^))]*[))]\\s*)?[::|]|^#{1,6}\\s*(?:御?見積書|お見積(?:り)?書?|価格表)"
219
+ min_lines: 2
220
+ en:
221
+ line: "^(?:[-*]\\s+|\\|\\s*)?(?:\\*\\*)?(?:Quot(?:e|ation) (?:[Nn]umber|[Nn]o\\.|#|[Dd]ate)|Estimate (?:[Nn]umber|[Nn]o\\.|#|[Dd]ate)|Date of estimate|Quoted [Aa]mount|Valid (?:[Uu]ntil|[Ff]rom|[Tt]hrough)|Price [Ll]ist (?:[Nn]umber|[Nn]o\\.))(?:\\*\\*)?\\s*(?:\\([^)]*\\)\\s*)?[:|]|^#{1,6}\\s*(?:Quot(?:e|ation)|Estimate|Price list)\\b"
222
+ min_lines: 2
215
223
  - id: business/report
216
224
  name: { ja: 報告書, en: Report }
217
225
  summary:
@@ -228,6 +236,15 @@ genres:
228
236
  - Do the numbers have a source and a date, and do totals and percentages add up?
229
237
  - Are facts kept apart from opinions and guesses?
230
238
  - Are the next actions given with an owner and a deadline?
239
+ # Paperwork that reports figures (a payslip, a bill, a statement, a receipt): the labels of its amounts, balances, periods
240
+ # and reference numbers, as labelled lines or table rows. A word in a sentence is not a label.
241
+ suggest:
242
+ ja:
243
+ line: "^(?:[-*]\\s+|\\|\\s*)?(?:\\*\\*)?(?:総支給額|差引支給額|控除(?:額)?合計|支給日|支給対象期間|勤怠集計期間|(?:社員|従業員)番号|課税対象額|口座(?:名義|番号)|お取引期間|お預入れ合計|お引出し合計|(?:前月末|前回|今回|期首|期末|繰越)の?残高|お借入金額|毎月のお支払額|初回お支払日|分割手数料|お支払い?(?:期限|期日|金額|総額)|ご?請求(?:日|番号|金額|額)|検針期間|料金算定期間|お客さま番号|患者番号|入院日|退院日|診療日|発注(?:日|番号)|納品書番号|インボイス番号|到着予定日|契約番号|入居日|解約通知日|決済日|取引番号|学籍番号|納入額|提出日|出張期間|会員番号|予約番号|無料キャンセル期限|登録番号|注文番号|証券番号|会計年度|会計|前年度繰越金|売上高|営業利益|経常利益|(?:当期|四半期)純利益|保険期間|待機期間|契約年齢|整備日|記録番号|次回点検日|申請者|承認者|対象期間|精算(?:額|日)|退去日|月額賃料|差引合計|ご契約者名|ご利用(?:開始|終了)日|代表電話番号|売主|買主|売買(?:契約日|代金)|残代金|手付金|輸出者|荷受人|船積(?:港|日)|仕向港|受託者|作業期間|報告日|納品(?:日|場所)|納入期限|学生氏名|発行日|交付日)(?:\\*\\*)?\\s*(?:[((][^))]*[))]\\s*)?[::|]"
244
+ min_lines: 3
245
+ en:
246
+ line: "^(?:[-*]\\s+|\\|\\s*)?(?:\\*\\*)?(?:Gross [Pp]ay|Net [Pp]ay|Total [Dd]eductions|Pay [Pp]eriod|Pay [Dd]ate|Timesheet [Pp]eriod|Taxable [Ii]ncome|Employee(?: (?:ID|[Nn]umber))?|Account (?:[Hh]older|[Nn]umber)|Statement (?:[Pp]eriod|[Dd]ate)|(?:Opening|Closing) [Bb]alance|Balance (?:[Bb]rought|[Cc]arried) [Ff]orward|Balance [Dd]ue[^:|]{0,40}|Total (?:[Dd]eposits|[Ww]ithdrawals|[Cc]harges|[Ii]ncome|[Ee]xpenditure|[Dd]ue|[Oo]f [Pp]ayments|[Ff]or the year)|Amount (?:[Dd]ue|[Ff]inanced|[Pp]aid|[Bb]illed)(?: for [^:|]{1,30})?|Finance [Cc]harge|Monthly [Pp]ayment|Number of [Pp]ayments|First [Pp]ayment [Dd]ate|Payment [Dd]ue(?: by)?|Due [Dd]ate|Billing (?:[Pp]eriod|[Dd]ate)|Bill [Tt]o|Pay [Tt]o|Patient (?:[Nn]umber|[Ss]hare)|Invoice (?:[Nn]o\\.|#|[Nn]umber|[Dd]ate)|PO (?:[Nn]umber|#)|Order (?:[Nn]umber|#|[Dd]ate)|Delivery (?:[Dd]ate|[Nn]ote [Nn]umber)|Receipt (?:[Nn]umber|[Nn]o\\.|#)|(?:Reservation|Booking|Registration|Confirmation) (?:[Nn]umber|#)|Free [Cc]ancellation [Uu]ntil|Member [Nn]umber|Points (?:[Ee]arned|[Uu]sed)[^:|]{0,30}|Policy [Nn]umber|Date of (?:claim|incident|admission|discharge|visit)|Settlement [Dd]ate|(?:Purchase|Sale) [Pp]rice|Tenancy [Aa]greement [Nn]umber|Deposit [Hh]eld|Student ID|Record [Nn]umber|Service [Dd]ate|Next [Ii]nspection [Dd]ue|Reporting [Pp]eriod|Report [Dd]ate|Port of (?:[Ll]oading|[Dd]ischarge)|Exporter|Consignee|Financial [Yy]ear|Submitted|Approver|Per [Dd]iem|Contractor|Contract (?:[Nn]umber|[Dd]ate)|Buyer|Seller|Property [Aa]ddress|Loan [Pp]roceeds|Net [Ss]ales|Operating [Pp]rofit|Profit [Bb]efore [Tt]ax|Net [Pp]rofit|Period of [Cc]over|Waiting [Pp]eriod|Age at [Ee]ntry|Issued|Date [Ii]ssued|Issue [Dd]ate)(?:\\*\\*)?\\s*(?:\\([^)]*\\)\\s*)?[:|]"
247
+ min_lines: 3
231
248
  - id: business/email
232
249
  name: { ja: メール・手紙, en: Email and letter }
233
250
  summary:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chaffjs",
3
- "version": "0.33.0",
3
+ "version": "0.34.0",
4
4
  "description": "Prose validation harness. Finds what is hard to read, and never rewrites it for you.",
5
5
  "keywords": [
6
6
  "chaff",
@@ -88,8 +88,8 @@
88
88
  },
89
89
  "dependencies": {
90
90
  "@anthropic-ai/sdk": "^0.125.0",
91
- "@chaffjs/lang-en": "0.30.0",
92
- "@chaffjs/lang-ja": "0.32.0",
91
+ "@chaffjs/lang-en": "0.31.0",
92
+ "@chaffjs/lang-ja": "0.33.0",
93
93
  "character-entities": "^2.0.2",
94
94
  "mdast-util-from-markdown": "^2.0.3",
95
95
  "mdast-util-frontmatter": "^2.0.1",
@@ -9,7 +9,7 @@ why:
9
9
  en: Japanese property advertising computes walking times at 80 m of road per minute, a part minute rounded up (the real-estate fair-competition code). In a Japanese listing, walking times are compared with their distances at that rate even when it is not written. There is no such standard for English listings, so this profile has no English part.
10
10
 
11
11
  # 設定(chaff.yaml の profile / by_path)が無いときに、内容から選ぶ。物件概要の項目(交通、賃料、敷金、間取り…)の行が
12
- # min_lines 行以上あれば物件広告として読む。表の行(| 賃料 | …)も、「賃料:…」の行も数える。
12
+ # min_lines 行以上あれば物件広告として読む。表の行(| 賃料 | …)も、「賃料:…」の行も、箇条の行(- 賃料:…)も数える。
13
13
  detect:
14
14
  ja:
15
15
  line: "^[ \\t]*\\|?[ \\t]*(?:交通|賃料|家賃|管理費|共益費|敷金|礼金|保証金|間取り|専有面積|入居可能日|築年月)[ \\t]*[||::]"
@@ -12,9 +12,9 @@ name:
12
12
  en: A closing balance that is not the opening balance plus deposits less withdrawals
13
13
 
14
14
  why:
15
- ja: 預金の取引明細のまとめでは、当月末残高は、前月末残高にお預入れ合計を足し、お引出し合計を引いた額です。読む人は残高を見て、足し引きし直しません。取引を直したのに残高を直さなかったとき、前の月の明細から写したとき、数字を打ち間違えたときに食い違います。同じ表か同じ節に、初めの残高(前月末残高)、入金の合計(お預入れ合計)、出金の合計(お引出し合計)、終わりの残高(当月末残高)の名前が一つずつあり、それぞれに金額があれば、終わりの残高を足し引きと比べます。表では、見出しの行に四つの名前が並ぶ表は行ごとに、一列目に四つの名前が並ぶ表は列ごとに比べます。表の外では、節(見出しから次の見出しまで)の「前月末残高:412,350円」のような名前と金額だけの行を読みます。どの語が四つのどれかは、言語パッケージの語彙表 closing-balance-label にあります。通貨の印が付いた金額は一円(一セント)まで合わなければ言います。千円の単位の金額や印の無い数は丸めてあるかもしれないので、最後の桁の二つ分までのずれは言いません。
15
+ ja: 預金の取引明細のまとめでは、当月末残高は、前月末残高にお預入れ合計を足し、お引出し合計を引いた額です。読む人は残高を見て、足し引きし直しません。取引を直したのに残高を直さなかったとき、前の月の明細から写したとき、数字を打ち間違えたときに食い違います。同じ表か同じ節に、初めの残高(前月末残高)、入金の合計(お預入れ合計)、出金の合計(お引出し合計)、終わりの残高(当月末残高)の名前が一つずつあり、それぞれに金額があれば、終わりの残高を足し引きと比べます。表では、見出しの行に四つの名前が並ぶ表は行ごとに、一列目に四つの名前が並ぶ表は列ごとに比べます。表の外では、節(見出しから次の見出しまで)の「前月末残高:412,350円」のような名前と金額だけの行を読みます。どの語が四つのどれかは、言語パッケージの語彙表 closing-balance-label にあります。通貨の印が付いた金額は一円(一セント)まで合わなければ言います。千円の単位の金額や印の無い数は丸めてあるかもしれないので、最後の桁の二つ分までのずれは言いません。名前の後ろの日付の括弧(2026年6月30日時点)は単位として扱わず、単位の無い数は、列の見出しが単位の語(ポイント)ならその単位で読みます。
16
16
  en: >-
17
- On a statement summary the closing balance is the opening balance plus the total deposits less the total withdrawals. The reader takes the closing balance as given and does not add it up again. It goes wrong when a transaction is corrected and the balance is not, when the balance is copied from last month's statement, or when a digit is mistyped. When one table or one section names the balance at the start (Opening balance), the total paid in (Total deposits), the total paid out (Total withdrawals) and the balance at the end (Closing balance) once each, each with an amount, the closing balance is compared with the sum. A table whose header row has the four names is compared row by row, and one whose first column has them column by column. Outside tables, the lines of a section (from one heading to the next) that are only a name and an amount ("Opening balance: $2,418.36") are read. Which words name the four is in the language package's lexicon closing-balance-label. Amounts with a currency mark must agree to the cent. Amounts in thousands, and numbers without a mark, may be rounded, so a difference of up to two steps of their last digit is not reported.
17
+ On a statement summary the closing balance is the opening balance plus the total deposits less the total withdrawals. The reader takes the closing balance as given and does not add it up again. It goes wrong when a transaction is corrected and the balance is not, when the balance is copied from last month's statement, or when a digit is mistyped. When one table or one section names the balance at the start (Opening balance), the total paid in (Total deposits), the total paid out (Total withdrawals) and the balance at the end (Closing balance) once each, each with an amount, the closing balance is compared with the sum. A table whose header row has the four names is compared row by row, and one whose first column has them column by column. Outside tables, the lines of a section (from one heading to the next) that are only a name and an amount ("Opening balance: $2,418.36") are read. Which words name the four is in the language package's lexicon closing-balance-label. Amounts with a currency mark must agree to the cent. Amounts in thousands, and numbers without a mark, may be rounded, so a difference of up to two steps of their last digit is not reported. A dated note after a name (as of June 30, 2026) is not a unit, and a bare number under a column heading that is a unit word (Points) is read in that unit.
18
18
 
19
19
  message:
20
20
  ja: 「{written}」は、初めの残高に入金を足し出金を引くと {expected} です
@@ -60,4 +60,4 @@ example:
60
60
 
61
61
  not_flagged:
62
62
  ja: 四つの名前のどれかが無い表や節、同じ名前が二度ある表の列や節、名前が別々の表や節にあるもの、四つの単位が違うもの(円とドル、千円と円)、数でない金額(—、▲、マイナスや括弧の付いた値)は比べません。日付・お預入れ・お引出し・残高の列が並ぶ取引の表は、行ごとの残高を running-balance-mismatch が見るので、ここでは読みません。文の中の金額(「当月末残高は452,220円です」)や、語彙表に無い名前(前回ご請求額、ご利用残高)は読みません。足し引きがマイナスになるときも言いません。
63
- en: 'A table or section without one of the four names, a table column or section that names one of them twice, names spread over separate tables or sections, amounts in different units (yen and dollars, thousands and units), and a value that is not a plain number (—, a negative or bracketed value) are not compared. A transaction table with Date, Deposit, Withdrawal and Balance columns is left to running-balance-mismatch, which checks it row by row. An amount inside a sentence ("The closing balance is $2,156.56") is not read, nor is a name not in the lexicon (Previous balance, New balance, Credits and Debits, which on a card statement move the other way). A sum below zero is not reported either.'
63
+ en: 'A table or section without one of the four names, a table column or section that names one of them twice, names spread over separate tables or sections, amounts in different units (yen and dollars, thousands and units), and a value that is not a plain number (—, a negative or bracketed value) are not compared. A transaction table with Date, Deposit, Withdrawal and Balance columns is left to running-balance-mismatch, which checks it row by row. An amount inside a sentence ("The closing balance is $2,156.56") is not read, nor is a name not in the lexicon (Credits and Debits, which on a card statement move the other way). A sum below zero is not reported either.'
@@ -14,7 +14,8 @@ how_to_find: due-date
14
14
  # service date and its next inspection, a construction start and its completion or handover, a service's or a contract's start and end dates, a price list's or a policy's validity start and end, a statement's period
15
15
  # start and end, a financial year and its audit, a property sale's contract and its settlement or handover, a banquet
16
16
  # quote's validity and its event date) from
17
- # dated-pair-label and date-now-word,
17
+ # dated-pair-label and date-now-word, with the role words of a signature line that dates the pair's later date (an
18
+ # auditor's signature) from dated-signer-label,
18
19
  # the column headers of a table whose rows each hold both dates of a pair (a points statement's earning date and
19
20
  # expiry) from dated-pair-label and the header-only dated-column-label,
20
21
  # and the words whose line states
@@ -29,8 +30,8 @@ name:
29
30
  en: A due date before the issue date
30
31
 
31
32
  why:
32
- ja: 請求書の「お支払期限」や見積書の「有効期限」が「発行日」より前だと、受け取った時点で期限が過ぎていることになり、読み手はどちらの日付が正しいのかを問い合わせることになります。前の月の請求書を使い回して、片方の日付だけ直したときに起きます。発行日の語で始まる行と期限の語で始まる行の日付を比べ、期限が発行日より前なら指します。議事録の宿題も同じで、会議の日(日時)より前の期限は、会議の時点で過ぎています。宿題の節の、期限の列の日付や「(期限 11月2日)」を、頭の方の「日時」の日付と比べます。物件の案内の「入居可能日」も同じで、「掲載日」や「情報公開日」より前の入居可能日は、載せた時点で過ぎています。求人の「応募締切」も同じで、「掲載日」や「募集開始日」より前の締切は、載せた時点で過ぎています。決算短信の「決算説明会」も同じで、「対象期間」が終わる前の説明会では、まだ締まっていない期間の業績を説明することになります。対象期間のように期間を書く行は、その終わりの日と比べます。健診や検査の結果も同じで、「受診日」や「採血日」より前の「報告日」では、受ける前の結果を報告することになります。保証書の「登録の締切」も同じで、「お買い上げ日」より前の締切は、買った時点で過ぎています。宿泊やレンタカーの予約も同じで、「チェックイン」より前の「チェックアウト」、「貸出」より前の「返却」は、泊まる前に発ち、借りる前に返すことになります。「無料キャンセル期限」がチェックインや貸出より後なら、泊まり始めてからでも無料で取り消せることになり、どちらかの日付が違っています。二つの日付は、後に書いた方の行で指します。前後の決まった日付の組は、言語の語彙表に組ごとに書いてあります。ローンや分割払いの「初回お支払日」も同じで、「ご契約日」より前の初回は、契約した時点で過ぎています。製品の回収のお知らせも同じで、「お知らせ日」より前の交換や返金の「受付期限」は、知らせた時点で過ぎています。給与明細の「支給日」も同じで、「支給対象期間」や「計算期間」が終わる前の支給日では、まだ働き終えていない期間の給与を払うことになります。出張の精算書の「帰着」も同じで、「出発」より前の帰着では、発つ前に帰ったことになります。発注書や納品書の「納期」や「納品日」も同じで、「発注日」や「注文日」より前の納期では、頼む前に届いたことになります。成績証明書や卒業・修了の証明書も同じで、「入学年月日」より前の「卒業年月日」や「修了年月日」では入学する前に卒業したことになり、卒業や修了の日より前の「発行日」や「証明日」では、まだ卒業していない人の卒業を証明することになります。給与所得と源泉徴収税額の年間の明細書も同じで、「対象期間」が終わる前や「退職日」より前の「交付日」では、まだ締まっていない年の金額を証明することになります。梱包明細書やインボイスも同じで、「船積日」より前の「到着日」や「到着予定日」では、積む前に着くことになります。診療明細書や領収書も同じで、「診療日」より前の「発行日」では、まだ受けていない診療の代金を受け取ったことになります。入院の明細も同じで、「入院日」より前の「退院日」では、入院する前に退院したことになります。賃貸借の敷金精算書も同じで、「入居日」より前の「退去日」では入居する前に退去したことになり、「退去日」より後の「解約通知日」では、退去してから解約を知らせたことになります。車の整備記録も同じで、「整備日」や「点検日」より前の「次回点検日」や「次回車検」では、次の点検の日が整備した時点で過ぎています。工事やリフォームの見積書も同じで、「着工日」より前の「完工予定日」や「引渡日」では、始める前に工事が終わったことになります。携帯電話やサービスの契約の利用期間も同じで、「ご利用開始日」や「契約開始日」より前の「ご利用終了日」や「契約終了日」では、始まる前に終わったことになります。価格表やクーポンも同じで、「適用開始日」や「発効日」より前の「適用終了日」や「有効期限」では、始まる前に終わることになります。取引明細の期間を二つの行に分けて書いたときも同じで、「照会開始日」や「期間開始日」より前の「照会終了日」や「期間終了日」では、期間が始まる前に終わることになります。保険金や給付金の請求書も同じで、「事故日」や「発病日」より前の「請求日」では、起きる前の事故や病気の保険金を請求することになります。会計報告書や収支決算報告書も同じで、「会計年度」が終わる前の「監査日」では、まだ締まっていない年度の会計を監査したことになります。ポイントの明細のように、一つの表の見出しに組の二つの列(「ご利用日」と「有効期限」)があれば、行ごとに二つの日付を比べます。ご利用日より前の有効期限では、得た時点でポイントが失効しています。別の行や別の表の日付とは比べません。不動産の売買の精算書も同じで、「売買契約日」より前の「決済日」や「引渡日」では、契約する前に代金を払い物件を渡したことになります。宴会や会議室の見積書は向きが逆で、「有効期限」が「開催日」より後なら、催しが終わってから見積を受けられることになります。
33
- en: When the payment due date of an invoice or the expiry of a quote is before its issue date, the document is overdue on arrival and the reader has to ask which date is right. It happens when last month's invoice is reused and only one date is changed. The date on a line starting with an issue word (Issued, Invoice date) is compared with the date on a line starting with a due word (Payment due, Valid until), and an earlier due date is pointed out. Minutes are read the same way. An action item due before the meeting it was set in is overdue when it is written down. The dates in the due column, or after "due" in a list item, of an action-items section are compared with the date on the "Date" line near the top. A property listing is read the same way. An "Available from" date before the "Listed" date has passed when the listing goes up. A job posting is read the same way. An "Application deadline" before the "Posted" date has passed when the posting goes up. An earnings release is read the same way. An "Earnings call" before the "Reporting period" ends would discuss results for a period that has not closed; a line stating a period is compared by the period's last day. A checkup or lab report is read the same way. A "Report date" before the "Examination date" or the "Collection date" reports results that did not exist yet. A product warranty is read the same way. A "Registration deadline" before the "Purchase date" has passed when the product is bought. A hotel or car rental booking is read the same way. A "Check-out" before the "Check-in", or a "Drop-off" before the "Pick-up", leaves before arriving; a "Free cancellation until" date after the check-in or the pick-up lets the booking be cancelled free once it has started, so one of the dates is wrong. The finding is on whichever of the two dates is written second. The pairs of dates that must come in order are listed, pair by pair, in the language's vocabulary. A loan or an installment plan is read the same way. A "First payment date" before the "Contract date" has passed when the contract is signed. A recall notice is read the same way. A deadline for replacement or refund requests before the "Notice date" has passed when the notice goes out. A payslip is read the same way. A "Pay date" before the "Pay period" ends pays for work not yet done. A trip or an expense report is read the same way. A "Return" before the "Departure" comes back before leaving. A purchase order or a delivery note is read the same way. A "Delivery date" before the "Order date" delivers goods not yet ordered. An academic transcript or a certificate of graduation or completion is read the same way. A "Date of graduation" or "Date of completion" before the "Date of enrolment" ends the course before it began, and a "Date of issue" before the graduation or completion date certifies a graduation that has not happened yet. An annual earnings and tax withholding statement is read the same way. An "Issue date" before the "Tax year" ends, or before the "Leaving date", states the year's amounts before they are final. A packing list or a commercial invoice is read the same way. An "Arrival date" or "Estimated arrival" before the "On-board date" arrives before the goods are shipped. An itemized medical bill is read the same way. A "Date issued" before the "Date of visit" bills a visit that has not happened yet, and a "Date of discharge" before the "Date of admission" leaves hospital before arriving. A tenancy's deposit settlement is read the same way. A "Move-out date" before the "Move-in date" leaves before moving in, and a "Notice date" after the "Move-out date" gives notice once the tenant has already left. A car's service record is read the same way. A "Next inspection due" before the "Service date" has passed when the car is serviced. A construction or renovation quote is read the same way. A "Completion date" or "Handover date" before the "Start date" or "Construction start" finishes the work before it begins. A phone bill or a service contract is read the same way. A "Service end date" or "Contract end date" before the "Service start date" or "Contract start date" ends the service before it began. A price list, a coupon or a policy is read the same way. A "Valid until" or an "Expiry date" before the "Valid from" or the "Effective date" ends before it begins. A bank statement whose period is written as two lines is read the same way. A "Period end" before the "Period start" ends the period before it begins. An insurance or benefit claim is read the same way. A "Date of claim" before the "Date of incident" claims for a loss that has not happened yet. A treasurer's report or an income and expenditure statement is read the same way. An audit date before the "Fiscal year" or the "Financial year" ends audits accounts that have not closed. When one table's header names both columns of a pair, as a points statement's "Date" and "Expires" do, the two dates of each row are compared. Points that expire before the date they were earned have lapsed on arrival. A row is never compared with another row or another table. A property sale's settlement statement is read the same way. A "Settlement date" or "Closing date" before the "Contract date" pays and hands over the property before the sale is agreed. A banquet or meeting room quote runs the other way. A "Valid until" date after the "Event date" lets the quote be accepted once the event is over.
33
+ ja: 請求書の「お支払期限」や見積書の「有効期限」が「発行日」より前だと、受け取った時点で期限が過ぎていることになり、読み手はどちらの日付が正しいのかを問い合わせることになります。前の月の請求書を使い回して、片方の日付だけ直したときに起きます。発行日の語で始まる行と期限の語で始まる行の日付を比べ、期限が発行日より前なら指します。議事録の宿題も同じで、会議の日(日時)より前の期限は、会議の時点で過ぎています。宿題の節の、期限の列の日付や「(期限 11月2日)」を、頭の方の「日時」の日付と比べます。物件の案内の「入居可能日」も同じで、「掲載日」や「情報公開日」より前の入居可能日は、載せた時点で過ぎています。求人の「応募締切」も同じで、「掲載日」や「募集開始日」より前の締切は、載せた時点で過ぎています。決算短信の「決算説明会」も同じで、「対象期間」が終わる前の説明会では、まだ締まっていない期間の業績を説明することになります。対象期間のように期間を書く行は、その終わりの日と比べます。健診や検査の結果も同じで、「受診日」や「採血日」より前の「報告日」では、受ける前の結果を報告することになります。保証書の「登録の締切」も同じで、「お買い上げ日」より前の締切は、買った時点で過ぎています。宿泊やレンタカーの予約も同じで、「チェックイン」より前の「チェックアウト」、「貸出」より前の「返却」は、泊まる前に発ち、借りる前に返すことになります。「無料キャンセル期限」がチェックインや貸出より後なら、泊まり始めてからでも無料で取り消せることになり、どちらかの日付が違っています。二つの日付は、後に書いた方の行で指します。前後の決まった日付の組は、言語の語彙表に組ごとに書いてあります。ローンや分割払いの「初回お支払日」も同じで、「ご契約日」より前の初回は、契約した時点で過ぎています。製品の回収のお知らせも同じで、「お知らせ日」より前の交換や返金の「受付期限」は、知らせた時点で過ぎています。給与明細の「支給日」も同じで、「支給対象期間」や「計算期間」が始まる前の支給日では、まだ始まっていない期間の給与を払うことになります。出張の精算書の「帰着」も同じで、「出発」より前の帰着では、発つ前に帰ったことになります。発注書や納品書の「納期」や「納品日」も同じで、「発注日」や「注文日」より前の納期では、頼む前に届いたことになります。成績証明書や卒業・修了の証明書も同じで、「入学年月日」より前の「卒業年月日」や「修了年月日」では入学する前に卒業したことになり、卒業や修了の日より前の「発行日」や「証明日」では、まだ卒業していない人の卒業を証明することになります。給与所得と源泉徴収税額の年間の明細書も同じで、「対象期間」が終わる前や「退職日」より前の「交付日」では、まだ締まっていない年の金額を証明することになります。梱包明細書やインボイスも同じで、「船積日」より前の「到着日」や「到着予定日」では、積む前に着くことになります。診療明細書や領収書も同じで、「診療日」より前の「発行日」では、まだ受けていない診療の代金を受け取ったことになります。入院の明細も同じで、「入院日」より前の「退院日」では、入院する前に退院したことになります。賃貸借の敷金精算書も同じで、「入居日」より前の「退去日」では入居する前に退去したことになり、「退去日」より後の「解約通知日」では、退去してから解約を知らせたことになります。車の整備記録も同じで、「整備日」や「点検日」より前の「次回点検日」や「次回車検」では、次の点検の日が整備した時点で過ぎています。工事やリフォームの見積書も同じで、「着工日」より前の「完工予定日」や「引渡日」では、始める前に工事が終わったことになります。携帯電話やサービスの契約の利用期間も同じで、「ご利用開始日」や「契約開始日」より前の「ご利用終了日」や「契約終了日」では、始まる前に終わったことになります。価格表やクーポンも同じで、「適用開始日」や「発効日」より前の「適用終了日」や「有効期限」では、始まる前に終わることになります。取引明細の期間を二つの行に分けて書いたときも同じで、「照会開始日」や「期間開始日」より前の「照会終了日」や「期間終了日」では、期間が始まる前に終わることになります。保険金や給付金の請求書も同じで、「事故日」や「発病日」より前の「請求日」では、起きる前の事故や病気の保険金を請求することになります。会計報告書や収支決算報告書も同じで、「会計年度」が終わる前の「監査日」では、まだ締まっていない年度の会計を監査したことになります。ポイントの明細のように、一つの表の見出しに組の二つの列(「ご利用日」と「有効期限」)があれば、行ごとに二つの日付を比べます。ご利用日より前の有効期限では、得た時点でポイントが失効しています。別の行や別の表の日付とは比べません。不動産の売買の精算書も同じで、「売買契約日」より前の「決済日」や「引渡日」では、契約する前に代金を払い物件を渡したことになります。宴会や会議室の見積書は向きが逆で、「有効期限」が「開催日」より後なら、催しが終わってから見積を受けられることになります。
34
+ en: When the payment due date of an invoice or the expiry of a quote is before its issue date, the document is overdue on arrival and the reader has to ask which date is right. It happens when last month's invoice is reused and only one date is changed. The date on a line starting with an issue word (Issued, Invoice date) is compared with the date on a line starting with a due word (Payment due, Valid until), and an earlier due date is pointed out. Minutes are read the same way. An action item due before the meeting it was set in is overdue when it is written down. The dates in the due column, or after "due" in a list item, of an action-items section are compared with the date on the "Date" line near the top. A property listing is read the same way. An "Available from" date before the "Listed" date has passed when the listing goes up. A job posting is read the same way. An "Application deadline" before the "Posted" date has passed when the posting goes up. An earnings release is read the same way. An "Earnings call" before the "Reporting period" ends would discuss results for a period that has not closed; a line stating a period is compared by the period's last day. A checkup or lab report is read the same way. A "Report date" before the "Examination date" or the "Collection date" reports results that did not exist yet. A product warranty is read the same way. A "Registration deadline" before the "Purchase date" has passed when the product is bought. A hotel or car rental booking is read the same way. A "Check-out" before the "Check-in", or a "Drop-off" before the "Pick-up", leaves before arriving; a "Free cancellation until" date after the check-in or the pick-up lets the booking be cancelled free once it has started, so one of the dates is wrong. The finding is on whichever of the two dates is written second. The pairs of dates that must come in order are listed, pair by pair, in the language's vocabulary. A loan or an installment plan is read the same way. A "First payment date" before the "Contract date" has passed when the contract is signed. A recall notice is read the same way. A deadline for replacement or refund requests before the "Notice date" has passed when the notice goes out. A payslip is read the same way. A "Pay date" before the "Pay period" starts pays for a period that has not begun. A trip or an expense report is read the same way. A "Return" before the "Departure" comes back before leaving. A purchase order or a delivery note is read the same way. A "Delivery date" before the "Order date" delivers goods not yet ordered. An academic transcript or a certificate of graduation or completion is read the same way. A "Date of graduation" or "Date of completion" before the "Date of enrolment" ends the course before it began, and a "Date of issue" before the graduation or completion date certifies a graduation that has not happened yet. An annual earnings and tax withholding statement is read the same way. An "Issue date" before the "Tax year" ends, or before the "Leaving date", states the year's amounts before they are final. A packing list or a commercial invoice is read the same way. An "Arrival date" or "Estimated arrival" before the "On-board date" arrives before the goods are shipped. An itemized medical bill is read the same way. A "Date issued" before the "Date of visit" bills a visit that has not happened yet, and a "Date of discharge" before the "Date of admission" leaves hospital before arriving. A tenancy's deposit settlement is read the same way. A "Move-out date" before the "Move-in date" leaves before moving in, and a "Notice date" after the "Move-out date" gives notice once the tenant has already left. A car's service record is read the same way. A "Next inspection due" before the "Service date" has passed when the car is serviced. A construction or renovation quote is read the same way. A "Completion date" or "Handover date" before the "Start date" or "Construction start" finishes the work before it begins. A phone bill or a service contract is read the same way. A "Service end date" or "Contract end date" before the "Service start date" or "Contract start date" ends the service before it began. A price list, a coupon or a policy is read the same way. A "Valid until" or an "Expiry date" before the "Valid from" or the "Effective date" ends before it begins. A bank statement whose period is written as two lines is read the same way. A "Period end" before the "Period start" ends the period before it begins. An insurance or benefit claim is read the same way. A "Date of claim" before the "Date of incident" claims for a loss that has not happened yet. A treasurer's report or an income and expenditure statement is read the same way. An audit date before the "Fiscal year" or the "Financial year" ends audits accounts that have not closed. When one table's header names both columns of a pair, as a points statement's "Date" and "Expires" do, the two dates of each row are compared. Points that expire before the date they were earned have lapsed on arrival. A row is never compared with another row or another table. A property sale's settlement statement is read the same way. A "Settlement date" or "Closing date" before the "Contract date" pays and hands over the property before the sale is agreed. A banquet or meeting room quote runs the other way. A "Valid until" date after the "Event date" lets the quote be accepted once the event is over.
34
35
 
35
36
  message:
36
37
  ja: 期限({due})が、発行日({issued})より前です
@@ -46,6 +47,9 @@ messages:
46
47
  period:
47
48
  ja: 「{later_label}」の {later} が、「{earlier_label}」の終わり {earlier} より前です
48
49
  en: '"{later_label}" {later} is before the end of the "{earlier_label}", {earlier}'
50
+ period-start:
51
+ ja: 「{later_label}」の {later} が、「{earlier_label}」の始め {earlier} より前です
52
+ en: '"{later_label}" {later} is before the start of the "{earlier_label}", {earlier}'
49
53
 
50
54
  how_to_fix:
51
55
  ja: 発行日と期限のどちらが正しいかを確かめて、片方を直してください。
@@ -89,5 +93,5 @@ example:
89
93
  Payment due: December 25, 2026
90
94
 
91
95
  not_flagged:
92
- ja: 行の頭に発行日や期限の語が無い日付(文の中の「12月25日までにお支払いください」)、年の無い日付、一行に日付が二つある行は比べません。発行日が二つあれば、最初のものと比べます。発行日から8行以上離れた期限と、期限が過ぎたことを書いた行(「期限切れ」「延滞」)は、この文書の期限ではなく報告している期限と読んで比べません。議事録として読むのは題に「議事録」などのある文書だけです。議事録では、宿題の節(見出しに「宿題」など)の外の日付、済んだ印のある宿題(升だけの「済」、括弧の中や行末の「完了」、チェック済みの箱)、前回の宿題を振り返る節、年の無い日付で年を越す期限(12月の会議の「1月10日」)は比べません。物件の案内では、「即入居可」のように日付の無い入居可能日、年の無い日付、「即入居」「即日」のある行、掲載日から40行以上離れた日付は比べません。求人では、「随時」のように日付の無い締切と年の無い日付は比べません。決算短信では、対象期間の行の無い文書、年の無い説明会の日、行の頭が「前回説明会」のように別の回を言う日、「発表日」や「説明会開催日」だけの日は比べません。健診や検査の結果では、「報告日」とだけ比べ、「発行日」や「作成日」とは比べません。受診券や検査の依頼書は、受診日や採血日より前に発行するからです。保証書では、日付の無い締切(「お早めに」)と年の無い日付は比べません。予約では、同じ日のチェックインとチェックアウト(日帰り)、同じ日のキャンセル期限、時刻だけの行(「15:00から」)、年の無い日付は比べません。「出発日」は、旅券や書類の返却日より後に来ることがあるので、貸出の日と読みません。チェックアウトとキャンセル期限、返却とチェックインのように、別の組の語どうしは比べません。法令、判決、特許、よくある質問、用語集、論文、文学、スピーチのジャンルでは止めています。契約と手引きでは動きます。保証書や規約は、その文書の日付と締切を自分で決めるからです。ローンや分割払いでは、初回お支払日を「ご契約日」とだけ比べ、「発行日」や「お申込日」とは比べません。変更や借り換えの申込書は、今の返済予定より後に申し込むからです。回収のお知らせでは、交換や返金の受付期限だけを比べ、年の無い日付と、「受付期限」「お申し込み期限」だけの締切や「発表日」「公表日」は比べません。受付を終えたお知らせは過ぎた締切を書き、懸賞の結果は締切より後に発表するからです。給与明細では、支給日を支給対象期間、計算期間、対象期間の終わりとだけ比べ、同じ日の支給日と年の無い日付は比べません。出張では、帰着を出発とだけ比べ、同じ日の帰着(日帰り)と年の無い日付は比べません。「返却日」は帰着と読みません。旅の案内では、書類の返却日が出発日より前に来るからです。発注書や納品書では、納期、納品日、納入日を発注日、注文日、受注日とだけ比べ、同じ日の納品と年の無い日付は比べません。「納期限」は納期と読みません。成績証明書では、卒業や修了の日を入学の日(入学年月日、入学日)と、発行日と証明日を卒業や修了の日とだけ比べ、入学の日と発行日は比べません。同じ日と年の無い日付も比べません。組の先の日付と後の日付がどちらも何行もある文書(学歴の表のように一行に一件ずつ書いたもの)では、後の日付を、いちばん近くに書いた先の日付より前のときだけ指します。一度だけ書いた後の日付(記録の下の発行日)は、最初の先の日付と比べます。給与所得と源泉徴収税額の明細書では、「交付日」を対象期間の終わりと退職日とだけ比べ、同じ日と年の無い日付は比べません。「発行日」は交付日と読みません。前払いの請求書は対象期間の初めに発行し、退職の手続きの案内は退職日より前に発行するからです。梱包明細書やインボイスでは、到着日と到着予定日を船積日とだけ比べ、「請求日」とは比べません。インボイスの日付は、船積みの前にも後にも来るからです。予定の日(到着予定日)は後に来る側にだけ読み、同じ日と年の無い日付は比べません。診療明細書では、「発行日」を「診療日」とだけ比べ、「受診日」とは比べません。受診券は受診日より前に発行するからです。入院では、退院日を入院日とだけ比べ、同じ日の退院と年の無い日付は比べません。賃貸借では、退去日、明渡日、退去予定日を、入居日や入居開始日と、解約通知日や解約予告日とそれぞれ比べ、同じ日と年の無い日付は比べません。予定の日(退去予定日)は後に来る側にだけ読み、「入居予定日」は入居日と読みません。空室の案内の入居予定日は、前の借主の退去日より後に来るからです。車の整備では、次回点検日、次回点検予定日、次回車検を、整備日、入庫日、点検日、作業日とだけ比べ、同じ日と年の無い日付は比べません。「前回点検日」は後に来る側に読みません。前の点検は今回の整備より前に来るからです。健診の「検査日」や「報告日」とは組みません。工事では、完工日、完工予定日、竣工日、竣工予定日、引渡日を、着工日、工事開始日、着工予定日とだけ比べ、同じ日と年の無い日付は比べません。サービスの利用期間では、ご利用終了日、利用終了日、契約終了日、サービス終了日を、ご利用開始日、利用開始日、契約開始日、サービス開始日とだけ比べ、同じ日と年の無い日付は比べません。「開始日」「終了日」だけの語は組みません。工程表や作業の記録も使うからです。「契約日」は契約開始日と読みません。価格表や証書では、適用終了日、有効終了日、有効期限を、適用開始日、有効開始日、発効日とだけ比べ、同じ日と年の無い日付は比べません。「有効期限」は、これまでどおり発行日とも別の組として比べます。明細では、照会終了日、対象期間終了日、期間終了日を、照会開始日、対象期間開始日、期間開始日とだけ比べ、同じ日と年の無い日付は比べません。「対象期間開始日」は、期間を書く「対象期間」と読みません。保険金の請求では、事故日、事故発生日、発生日、受傷日、発病日を、請求日、請求書作成日、申請日とだけ比べ、同じ日と年の無い日付は比べません。会計報告書では、監査日、会計監査日、監査実施日を、会計年度と事業年度の終わりとだけ比べ、同じ日、年の無い期間、期間を書いていない年度(「2025年度」)は比べません。「承認日」「総会承認日」「報告日」は年度の終わりと比べません。予算書は年度が始まる前に承認し、中間の報告は年度の途中に出すからです。行の頭に語の無い監査や承認の日(署名の行の日付、文の中の「定期総会で承認」)も比べません。
93
- en: A date without a word at the head of its line (a due date in a sentence), a date without its year, and a line with two dates are not compared. With two issue dates, the first is used. A due date eight lines or more from the issue date, and a line that says the deadline has passed (overdue, expired), are read as reporting on a deadline rather than setting this document's own, and are not compared. Only a document whose title names it as minutes (Minutes, Meeting notes) is read as minutes. In minutes, a date outside an action-items section (a heading with Action items or the like), an item marked done (a Done cell, done in brackets or at the end of the line, a checked box), a section reviewing the previous meeting's items, and a deadline without a year that falls early in the next year (Jan 10 at a December meeting) are not compared. In a listing, a move-in date without a date (Available now), a date without its year, a line saying immediately, and a date forty lines or more from the listing date are not compared. In a job posting, a deadline without a date (Open until filled) and a date without its year are not compared; a bare "Posted" pairs only with an application deadline, not with the dates of a blog post or release notes. In an earnings release, a document without a reporting period line, a call date without its year, a line naming another call (Previous call) and a bare "Release date" or "Conference call" are not compared. In a checkup or lab report, only a report date (Report date, Date reported) is compared, not a bare "Issue date", since an admission ticket or a lab order is issued before the test or collection date it names. In a warranty, a deadline without a date, a date without its year, and "Register by" followed directly by the date without a colon are not compared. In a booking, a same-day check-in and check-out (a day use), a cancellation deadline on the check-in day, a line with only a time (from 3:00 PM) and a date without its year are not compared; a bare "Return" is not read as a drop-off, since an order's return window uses it too. Words of different pairs are not compared either (a check-out and a cancellation deadline, a drop-off and a check-in). It is off for statutes, judgments, patents, FAQs, glossaries, and the academic, literature and speech genres. It runs on contracts and manuals, which set their own dates and deadlines, as a warranty does. In a loan or an installment plan, a first payment date is compared only with the contract date (Contract date, Agreement date), not with the issue date or an application date, since a change or refinancing form is signed after the current schedule began. In a recall notice, only a replacement, refund or exchange deadline is compared; a date without its year and a bare "Requests accepted until" or "Deadline for requests" are not, since a notice that a window has closed states the deadline that has passed. In a payslip, a pay date is compared only with the end of the pay period; a pay date on the period's last day and a date without its year are not compared. In a trip, a return is compared only with the departure; a same-day return (a day trip) and a date without its year are not compared, and a "Return date" is not read as the trip's return, since a guide's return date for forms comes before the departure. In a purchase order or a delivery note, a delivery date is compared only with the order date (Order date, PO date); a same-day delivery and a date without its year are not compared, and a bare "Due date" is not read as a delivery date, since an invoice uses it for the payment due date. In a transcript, a graduation or completion date is compared only with the enrolment date (Date of enrolment, Date of admission), and the issue date only with the graduation or completion date, never with the enrolment date; a same-day date and a date without its year are not compared. Where both dates of a pair are written on several lines (an education history listing one school per row), a later date is pointed out only when it is also before the earlier date written closest to it; a later date written once (an issue date below the records) is compared with the first. In a tax statement, the issue date (Issue date, Date of issue) is compared only with the end of the tax year (Tax year) and the leaving date (Leaving date, Date of leaving); a same-day date and a date without its year are not compared, and a "Period covered" is not read as the tax year, since an invoice billed in advance is issued at the start of the period it covers. In a packing list or a commercial invoice, an arrival date (Arrival date, Estimated arrival, ETA) is compared only with the shipment date (On-board date, Shipment date), never with the invoice date, since an invoice may be dated before or after shipment; an estimated date is read only as the later side, and a same-day arrival and a date without its year are not compared. In a medical bill, the issue date (Date issued) is compared only with the date of visit; a same-day issue and a date without its year are not compared. In a hospital stay, a discharge date is compared only with the admission date; a same-day discharge is not reported, and a "Date of admission" is compared with a discharge date and with a graduation date as two separate pairs. In a tenancy, a move-out date (Move-out date, Planned move-out date) is compared with the move-in date and, separately, with the notice date (Notice date, Date of notice); a same-day date and a date without its year are not compared, a planned date is read only as the later side, and a "Planned move-in date" is not read as the move-in date, since a vacancy notice's planned move-in comes after the previous tenant's move-out. In a car's service record, the next inspection (Next inspection, Next inspection due, Next service due) is compared only with the service date (Service date, Date of service); a same-day date and a date without its year are not compared, and a "Last inspection date" is not read as the later side, since the last inspection comes before this service. A lab report's "Test date" or "Report date" is not paired with it. In a construction or renovation document, a completion or handover date (Completion date, Expected completion, Handover date) is compared only with the start (Work start, Construction start, Start date); a same-day date and a date without its year are not compared. A bare "Start date" is compared with a completion date only, never with a "Handover date", since it also heads a new hire's first day, and a handover can come before that; a transcript's "Date of completion" is not read as the end of the works. In a service period, the end date (Service end date, End of service, Contract end date) is compared only with the start date (Service start date, Start of service, Contract start date); a same-day end and a date without its year are not compared, and a bare "Start date" or "End date" is not read, since a project plan or a timesheet uses them too. In a price list, a coupon or a policy, the end of the validity (Valid until, Valid to, Expiry date, Expires) is compared only with its start (Valid from, Effective date, Effective from); a same-day date and a date without its year are not compared, and "Expires" is read only at the head of a line followed by a colon or the date, not in a sentence (your password expires). "Valid until" and "Expires" are still compared with the issue date, as a separate pair. In a statement whose period is written as two lines, the end (Period end, Statement period end) is compared only with the start (Period start, Statement period start); a same-day date and a date without its year are not compared. In an insurance claim, the incident date (Date of incident, Date of loss, Incident date, Date of injury) is compared only with the claim date (Date of claim, Claim date); a same-day claim and a date without its year are not compared. In a treasurer's report, an audit date (Audited, Date audited, Audit date, Date of audit) is compared only with the end of the fiscal or financial year; a same-day date, a period without its year and a year written without its dates (Financial year 2025–26) are not compared. An approval or report date (Approved, Report date) is not compared with the year's end, since a budget is approved before its year begins and an interim report is dated inside the year. An audit or approval date without a word at the head of its line (the date on a signature line, an approval at the annual general meeting in a sentence) is not compared either.
96
+ ja: 行の頭に発行日や期限の語が無い日付(文の中の「12月25日までにお支払いください」)、年の無い日付、一行に日付が二つある行は比べません。発行日が二つあれば、最初のものと比べます。発行日から8行以上離れた期限と、期限が過ぎたことを書いた行(「期限切れ」「延滞」)は、この文書の期限ではなく報告している期限と読んで比べません。議事録として読むのは題に「議事録」などのある文書だけです。議事録では、宿題の節(見出しに「宿題」など)の外の日付、済んだ印のある宿題(升だけの「済」、括弧の中や行末の「完了」、チェック済みの箱)、前回の宿題を振り返る節、年の無い日付で年を越す期限(12月の会議の「1月10日」)は比べません。物件の案内では、「即入居可」のように日付の無い入居可能日、年の無い日付、「即入居」「即日」のある行、掲載日から40行以上離れた日付は比べません。求人では、「随時」のように日付の無い締切と年の無い日付は比べません。決算短信では、対象期間の行の無い文書、年の無い説明会の日、行の頭が「前回説明会」のように別の回を言う日、「発表日」や「説明会開催日」だけの日は比べません。健診や検査の結果では、「報告日」とだけ比べ、「発行日」や「作成日」とは比べません。受診券や検査の依頼書は、受診日や採血日より前に発行するからです。保証書では、日付の無い締切(「お早めに」)と年の無い日付は比べません。予約では、同じ日のチェックインとチェックアウト(日帰り)、同じ日のキャンセル期限、時刻だけの行(「15:00から」)、年の無い日付は比べません。「出発日」は、旅券や書類の返却日より後に来ることがあるので、貸出の日と読みません。チェックアウトとキャンセル期限、返却とチェックインのように、別の組の語どうしは比べません。法令、判決、特許、よくある質問、用語集、論文、文学、スピーチのジャンルでは止めています。契約と手引きでは動きます。保証書や規約は、その文書の日付と締切を自分で決めるからです。ローンや分割払いでは、初回お支払日を「ご契約日」とだけ比べ、「発行日」や「お申込日」とは比べません。変更や借り換えの申込書は、今の返済予定より後に申し込むからです。回収のお知らせでは、交換や返金の受付期限だけを比べ、年の無い日付と、「受付期限」「お申し込み期限」だけの締切や「発表日」「公表日」は比べません。受付を終えたお知らせは過ぎた締切を書き、懸賞の結果は締切より後に発表するからです。給与明細では、支給日を支給対象期間、計算期間、給与計算期間、対象期間の始めとだけ比べ、期間の中の支給日(毎月25日にその月の分を払う明細)、始めと同じ日の支給日、年の無い日付は指しません。出張では、帰着を出発とだけ比べ、同じ日の帰着(日帰り)と年の無い日付は比べません。「返却日」は帰着と読みません。旅の案内では、書類の返却日が出発日より前に来るからです。発注書や納品書では、納期、納品日、納入日を発注日、注文日、受注日とだけ比べ、同じ日の納品と年の無い日付は比べません。「納期限」は納期と読みません。成績証明書では、卒業や修了の日を入学の日(入学年月日、入学日)と、発行日と証明日を卒業や修了の日とだけ比べ、入学の日と発行日は比べません。同じ日と年の無い日付も比べません。組の先の日付と後の日付がどちらも何行もある文書(学歴の表のように一行に一件ずつ書いたもの)では、後の日付を、いちばん近くに書いた先の日付より前のときだけ指します。一度だけ書いた後の日付(記録の下の発行日)は、最初の先の日付と比べます。給与所得と源泉徴収税額の明細書では、「交付日」を対象期間の終わりと退職日とだけ比べ、同じ日と年の無い日付は比べません。「発行日」は交付日と読みません。前払いの請求書は対象期間の初めに発行し、退職の手続きの案内は退職日より前に発行するからです。梱包明細書やインボイスでは、到着日と到着予定日を船積日とだけ比べ、「請求日」とは比べません。インボイスの日付は、船積みの前にも後にも来るからです。予定の日(到着予定日)は後に来る側にだけ読み、同じ日と年の無い日付は比べません。診療明細書では、「発行日」を「診療日」とだけ比べ、「受診日」とは比べません。受診券は受診日より前に発行するからです。入院では、退院日を入院日とだけ比べ、同じ日の退院と年の無い日付は比べません。賃貸借では、退去日、明渡日、退去予定日を、入居日や入居開始日と、解約通知日や解約予告日とそれぞれ比べ、同じ日と年の無い日付は比べません。予定の日(退去予定日)は後に来る側にだけ読み、「入居予定日」は入居日と読みません。空室の案内の入居予定日は、前の借主の退去日より後に来るからです。車の整備では、次回点検日、次回点検予定日、次回車検を、整備日、入庫日、点検日、作業日とだけ比べ、同じ日と年の無い日付は比べません。「前回点検日」は後に来る側に読みません。前の点検は今回の整備より前に来るからです。健診の「検査日」や「報告日」とは組みません。工事では、完工日、完工予定日、竣工日、竣工予定日、引渡日を、着工日、工事開始日、着工予定日とだけ比べ、同じ日と年の無い日付は比べません。サービスの利用期間では、ご利用終了日、利用終了日、契約終了日、サービス終了日を、ご利用開始日、利用開始日、契約開始日、サービス開始日とだけ比べ、同じ日と年の無い日付は比べません。「開始日」「終了日」だけの語は組みません。工程表や作業の記録も使うからです。「契約日」は契約開始日と読みません。価格表や証書では、適用終了日、有効終了日、有効期限を、適用開始日、有効開始日、発効日とだけ比べ、同じ日と年の無い日付は比べません。「有効期限」は、これまでどおり発行日とも別の組として比べます。明細では、照会終了日、対象期間終了日、期間終了日を、照会開始日、対象期間開始日、期間開始日とだけ比べ、同じ日と年の無い日付は比べません。「対象期間開始日」は、期間を書く「対象期間」と読みません。保険金の請求では、事故日、事故発生日、発生日、受傷日、発病日を、請求日、請求書作成日、申請日とだけ比べ、同じ日と年の無い日付は比べません。会計報告書では、監査日、会計監査日、監査実施日を、会計年度と事業年度の終わりとだけ比べ、同じ日、年の無い期間、期間を書いていない年度(「2025年度」)は比べません。「承認日」「総会承認日」「報告日」は年度の終わりと比べません。予算書は年度が始まる前に承認し、中間の報告は年度の途中に出すからです。監査の署名の行(「2026年4月12日 会計監査 戸川 隆」のように、日付が一つと、会計監査や監事などの役職と、名前だけの行)は、監査の日として年度の終わりと比べます。署名は文書の終わりに来るので、年度の行から離れていても比べます。日付が二つの行、名前の無い行、ほかの役職(会長)の行、文の中の監査や承認の日(「定期総会で承認」)は比べません。
97
+ en: A date without a word at the head of its line (a due date in a sentence), a date without its year, and a line with two dates are not compared. With two issue dates, the first is used. A due date eight lines or more from the issue date, and a line that says the deadline has passed (overdue, expired), are read as reporting on a deadline rather than setting this document's own, and are not compared. Only a document whose title names it as minutes (Minutes, Meeting notes) is read as minutes. In minutes, a date outside an action-items section (a heading with Action items or the like), an item marked done (a Done cell, done in brackets or at the end of the line, a checked box), a section reviewing the previous meeting's items, and a deadline without a year that falls early in the next year (Jan 10 at a December meeting) are not compared. In a listing, a move-in date without a date (Available now), a date without its year, a line saying immediately, and a date forty lines or more from the listing date are not compared. In a job posting, a deadline without a date (Open until filled) and a date without its year are not compared; a bare "Posted" pairs only with an application deadline, not with the dates of a blog post or release notes. In an earnings release, a document without a reporting period line, a call date without its year, a line naming another call (Previous call) and a bare "Release date" or "Conference call" are not compared. In a checkup or lab report, only a report date (Report date, Date reported) is compared, not a bare "Issue date", since an admission ticket or a lab order is issued before the test or collection date it names. In a warranty, a deadline without a date, a date without its year, and "Register by" followed directly by the date without a colon are not compared. In a booking, a same-day check-in and check-out (a day use), a cancellation deadline on the check-in day, a line with only a time (from 3:00 PM) and a date without its year are not compared; a bare "Return" is not read as a drop-off, since an order's return window uses it too. Words of different pairs are not compared either (a check-out and a cancellation deadline, a drop-off and a check-in). It is off for statutes, judgments, patents, FAQs, glossaries, and the academic, literature and speech genres. It runs on contracts and manuals, which set their own dates and deadlines, as a warranty does. In a loan or an installment plan, a first payment date is compared only with the contract date (Contract date, Agreement date), not with the issue date or an application date, since a change or refinancing form is signed after the current schedule began. In a recall notice, only a replacement, refund or exchange deadline is compared; a date without its year and a bare "Requests accepted until" or "Deadline for requests" are not, since a notice that a window has closed states the deadline that has passed. In a payslip, a pay date is compared only with the start of the pay period; a pay date within the period (paid on the 25th for the whole month), one on the period's first day and a date without its year are not reported. In a trip, a return is compared only with the departure; a same-day return (a day trip) and a date without its year are not compared, and a "Return date" is not read as the trip's return, since a guide's return date for forms comes before the departure. In a purchase order or a delivery note, a delivery date is compared only with the order date (Order date, PO date); a same-day delivery and a date without its year are not compared, and a bare "Due date" is not read as a delivery date, since an invoice uses it for the payment due date. In a transcript, a graduation or completion date is compared only with the enrolment date (Date of enrolment, Date of admission), and the issue date only with the graduation or completion date, never with the enrolment date; a same-day date and a date without its year are not compared. Where both dates of a pair are written on several lines (an education history listing one school per row), a later date is pointed out only when it is also before the earlier date written closest to it; a later date written once (an issue date below the records) is compared with the first. In a tax statement, the issue date (Issue date, Date of issue) is compared only with the end of the tax year (Tax year) and the leaving date (Leaving date, Date of leaving); a same-day date and a date without its year are not compared, and a "Period covered" is not read as the tax year, since an invoice billed in advance is issued at the start of the period it covers. In a packing list or a commercial invoice, an arrival date (Arrival date, Estimated arrival, ETA) is compared only with the shipment date (On-board date, Shipment date), never with the invoice date, since an invoice may be dated before or after shipment; an estimated date is read only as the later side, and a same-day arrival and a date without its year are not compared. In a medical bill, the issue date (Date issued) is compared only with the date of visit; a same-day issue and a date without its year are not compared. In a hospital stay, a discharge date is compared only with the admission date; a same-day discharge is not reported, and a "Date of admission" is compared with a discharge date and with a graduation date as two separate pairs. In a tenancy, a move-out date (Move-out date, Planned move-out date) is compared with the move-in date and, separately, with the notice date (Notice date, Date of notice); a same-day date and a date without its year are not compared, a planned date is read only as the later side, and a "Planned move-in date" is not read as the move-in date, since a vacancy notice's planned move-in comes after the previous tenant's move-out. In a car's service record, the next inspection (Next inspection, Next inspection due, Next service due) is compared only with the service date (Service date, Date of service); a same-day date and a date without its year are not compared, and a "Last inspection date" is not read as the later side, since the last inspection comes before this service. A lab report's "Test date" or "Report date" is not paired with it. In a construction or renovation document, a completion or handover date (Completion date, Expected completion, Handover date) is compared only with the start (Work start, Construction start, Start date); a same-day date and a date without its year are not compared. A bare "Start date" is compared with a completion date only, never with a "Handover date", since it also heads a new hire's first day, and a handover can come before that; a transcript's "Date of completion" is not read as the end of the works. In a service period, the end date (Service end date, End of service, Contract end date) is compared only with the start date (Service start date, Start of service, Contract start date); a same-day end and a date without its year are not compared, and a bare "Start date" or "End date" is not read, since a project plan or a timesheet uses them too. In a price list, a coupon or a policy, the end of the validity (Valid until, Valid to, Expiry date, Expires) is compared only with its start (Valid from, Effective date, Effective from); a same-day date and a date without its year are not compared, and "Expires" is read only at the head of a line followed by a colon or the date, not in a sentence (your password expires). "Valid until" and "Expires" are still compared with the issue date, as a separate pair. In a statement whose period is written as two lines, the end (Period end, Statement period end) is compared only with the start (Period start, Statement period start); a same-day date and a date without its year are not compared. In an insurance claim, the incident date (Date of incident, Date of loss, Incident date, Date of injury) is compared only with the claim date (Date of claim, Claim date); a same-day claim and a date without its year are not compared. In a treasurer's report, an audit date (Audited, Date audited, Audit date, Date of audit) is compared only with the end of the fiscal or financial year; a same-day date, a period without its year and a year written without its dates (Financial year 2025–26) are not compared. An approval or report date (Approved, Report date) is not compared with the year's end, since a budget is approved before its year begins and an interim report is dated inside the year. An audit signature line (one date, a role such as Auditor or Honorary Auditor, and a name, nothing else, as in Jane Doe, Honorary Auditor, April 12, 2026) is read as the audit date, however far below the year it is, since a signature closes the document; a line with two dates or no name, another role (Chair), and a sentence (examined by the auditors on …) are not. An audit or approval date without a word at the head of its line (the date on a signature line, an approval at the annual general meeting in a sentence) is not compared either.
@@ -74,8 +74,8 @@ example:
74
74
  - Deadline: May 3, 2026
75
75
 
76
76
  not_flagged:
77
- ja: 違う見出しの下、違う親の項目の下、太字だけの行や「第2回:」のような行の後ろの値は、別のものの値として比べません。値の後ろに条件が続くもの(「3,000円から」「10月5日に開催」)、読点のあとから始まる項目名(「大人は、参加費は」)、単位の違う値(単位の食い違いは別に見ます)も比べません。同じ項目に三通り以上の値があれば、一覧として何も言いません。保存期間は、別のもの(ログは90日、個人情報は1年)や、上限・下限・目安の長さ(最長、以上、約)とは比べません。文書全体の項目は、拠り所(表の升、項目の名前を見出しにした節)と文のあいだだけで比べます。表どうしや、拠り所の無い文どうし(雇用形態ごとの節)、拠り所が二通りの値を書いた項目、条件の句の後ろの値(「製品登録をされた場合、保証期間は24か月です」)、名前に条件を書いた値(正社員の試用期間)は比べません。文書全体の項目は、表の升と文のあいだだけで比べます。表どうしや文どうし(雇用形態ごとの節)、表が二通りの値を書いた項目、名前に条件を書いた値(正社員の試用期間)は比べません。表の行と主語の文の金額は、行か文に同じ通貨の金額が二つ以上あるとき(日額と上限)、期間の違う金額(日額と月額)、主語が見出しより長いとき(入院給付金の上限は)、文に条件の語(場合、ただし)があるときは比べません。全体の数は、全体の印(合計、全部で)と数える語(枚、名)の両方が付いた数だけを読みます。一部の数(うち2枚は)、上限(合計4枚まで)、表の行の名前を書いた文(S席は合計2枚)、数える列が二つ以上ある文書は比べません。人の数は行を足しません(同じ人が参加と交流会の両方の行に載ります)。
78
- en: Values under different headings, under different parent list items, or after a bold-only line or a line like "Session 2:" are taken as values of different things. A value followed by a condition ("$300 per person", "May 3 at noon"), a name that starts after a comma ("For adults, the fee"), and values in different units are not compared. An item with three or more different values is read as a list and left alone. A retention period is not compared with that of another thing (logs 90 days, account data 1 year) or with a bound or an estimate (up to, at least, about). A whole-document item is compared only between its source (a table cell, or a section headed by its name) and a sentence; two tables, two sentences with no source (sections per type of employment), an item its sources give two values, a value after a condition ("If you register the product, the warranty runs for 24 months"), and a qualified name (part-time probation period) are left alone. A whole-document item is compared only between a table cell and a sentence; two tables or two sentences (sections per type of employment), an item the tables give two values, and a qualified name (part-time probation period) are left alone. A table row and a sentence naming it are not compared when either holds two amounts in the currency (a daily amount and a cap), when the amounts are for different periods (a day, a month), when the subject is longer than the heading ("Hospital cash cover is"), or when the sentence puts a condition on its amount (if, unless). A whole count is read only with a whole mark (in total, a total of) and a counting word (tickets, attendees). A part ("2 of the tickets"), a limit ("up to a total of 4 tickets"), a sentence naming a table row ("Stalls are 2 tickets in total"), and a document with two columns counting the same thing are left alone. Rows counting people are not summed, because the same guest is on the admission row and the dinner row.
77
+ ja: 違う見出しの下、違う親の項目の下、太字だけの行や「第2回:」のような行の後ろの値は、別のものの値として比べません。値の後ろに条件が続くもの(「3,000円から」「10月5日に開催」)、何あたりの違う値(日額と月額)や、距離や時間あたりの値とそれを掛けた金額(「1kmあたり15円」と「1,650円」。1件につき のような件ごとの値は比べます)、読点のあとから始まる項目名(「大人は、参加費は」)、単位の違う値(単位の食い違いは別に見ます)も比べません。単価の列(単価、時給)の升は、金額の列(金額、小計)の同じ名前の升とは比べません(文の値とは比べます)。同じ項目に三通り以上の値があれば、一覧として何も言いません。保存期間は、別のもの(ログは90日、個人情報は1年)や、上限・下限・目安の長さ(最長、以上、約)とは比べません。文書全体の項目は、拠り所(表の升、項目の名前を見出しにした節)と文のあいだだけで比べます。表どうしや、拠り所の無い文どうし(雇用形態ごとの節)、拠り所が二通りの値を書いた項目、条件の句の後ろの値(「製品登録をされた場合、保証期間は24か月です」)、名前に条件を書いた値(正社員の試用期間)は比べません。文書全体の項目は、表の升と文のあいだだけで比べます。表どうしや文どうし(雇用形態ごとの節)、表が二通りの値を書いた項目、名前に条件を書いた値(正社員の試用期間)は比べません。表の行と主語の文の金額は、行か文に同じ通貨の金額が二つ以上あるとき(日額と上限)、主語が見出しより長いとき(入院給付金の上限は)、文に条件の語(場合、ただし)があるときは比べません。全体の数は、全体の印(合計、全部で)と数える語(枚、名)の両方が付いた数だけを読みます。一部の数(うち2枚は)、上限(合計4枚まで)、表の行の名前を書いた文(S席は合計2枚)、数える列が二つ以上ある文書は比べません。人の数は行を足しません(同じ人が参加と交流会の両方の行に載ります)。
78
+ en: Values under different headings, under different parent list items, or after a bold-only line or a line like "Session 2:" are taken as values of different things. A value followed by a condition ("$300 per person", "May 3 at noon"), values per different units (a day, a month), a value per a distance or a time against the amount it multiplies into ("$0.45 per mile" and "$165"; a fee "for each transfer" is compared), a name that starts after a comma ("For adults, the fee"), and values in different units are not compared. A cell under a unit price column (Unit price, Rate) is not compared with a cell of the same name under an amount column (Amount, Total); it is compared with a sentence. An item with three or more different values is read as a list and left alone. A retention period is not compared with that of another thing (logs 90 days, account data 1 year) or with a bound or an estimate (up to, at least, about). A whole-document item is compared only between its source (a table cell, or a section headed by its name) and a sentence; two tables, two sentences with no source (sections per type of employment), an item its sources give two values, a value after a condition ("If you register the product, the warranty runs for 24 months"), and a qualified name (part-time probation period) are left alone. A whole-document item is compared only between a table cell and a sentence; two tables or two sentences (sections per type of employment), an item the tables give two values, and a qualified name (part-time probation period) are left alone. A table row and a sentence naming it are not compared when either holds two amounts in the currency (a daily amount and a cap), when the subject is longer than the heading ("Hospital cash cover is"), or when the sentence puts a condition on its amount (if, unless). A whole count is read only with a whole mark (in total, a total of) and a counting word (tickets, attendees). A part ("2 of the tickets"), a limit ("up to a total of 4 tickets"), a sentence naming a table row ("Stalls are 2 tickets in total"), and a document with two columns counting the same thing are left alone. Rows counting people are not summed, because the same guest is on the admission row and the dinner row.
79
79
  rewrite:
80
80
  depth: light
81
81
  ja:
@@ -60,8 +60,8 @@ example:
60
60
  Attach the receipt and submit it by the end of the month.
61
61
 
62
62
  not_flagged:
63
- ja: 短い見出し(言葉が少なく、重なりを測れないもの)は見ません。見出しの頭の番号の札(例 3:、Step 3:、1.、第2章)は重なりに数えません。中身の置き場所(リンク、URL、コードで書いたファイルのパス)へ読者を渡す文(詳しくは `docs/api.md` にあります。)は繰り返しではありません。
64
- en: Headings too short to measure an overlap are not checked. A number label at the head of a heading (Step 3:, Example 4:, 1., Chapter 2:) is not counted in the overlap. A sentence that sends the reader to where the content lives (a link, a web address, a file path in code, as in The full reference is in `docs/api.md`.) is not an echo.
63
+ ja: 短い見出し(言葉が少なく、重なりを測れないもの)は見ません。見出しの頭の番号の札(例 3:、Step 3:、1.、第2章)は重なりに数えません。中身の置き場所(リンク、URL、コードで書いたファイルのパス)へ読者を渡す文(詳しくは `docs/api.md` にあります。)は繰り返しではありません。見出しの直後が名前だけの行(レターヘッド)や項目と値の行(担当者:山田)なら、書式の頭で、繰り返しではありません。
64
+ en: Headings too short to measure an overlap are not checked. A number label at the head of a heading (Step 3:, Example 4:, 1., Chapter 2:) is not counted in the overlap. A sentence that sends the reader to where the content lives (a link, a web address, a file path in code, as in The full reference is in `docs/api.md`.) is not an echo. A name alone (a letterhead) or a field and its value (a contact name after its label) right under the heading is the top of a form, not an echo.
65
65
  level_meaning:
66
66
  ja: 見出しと直後の文の重なりが {limit}% 以上なら指摘
67
67
  en: reported when the first sentence overlaps the heading by {limit}% or more
@@ -18,8 +18,8 @@ message:
18
18
  en: '"{matched}" may only be understood inside your team ({count} such {count|word|words})'
19
19
 
20
20
  how_to_fix:
21
- ja: 初出のところで普通の言葉に言い換えるか、括弧で説明を添えてください。jargon には辞書形(握る)でも語幹(巻き取)でも書けますが、複合動詞は語幹のほうが確実です。
22
- en: Use ordinary words, or explain it in brackets at first use. Entries can be dictionary forms or stems; for compound verbs a stem is safer.
21
+ ja: 初出のところで普通の言葉に言い換えるか、括弧で説明を添えてください。jargon に辞書形(握る・巻き取る)で書いた動詞は、活用した形(握った・巻き取ります)にも当たります。語幹(巻き取)でも書けます。
22
+ en: Use ordinary words, or explain it in brackets at first use. A verb entered in its dictionary form also finds its other forms; a stem works too.
23
23
 
24
24
  # チームが並べた語なので、1 つでも指摘する。並べた時点で「使わない」と決めている。
25
25
  levels: { strict: 1, normal: 1, relaxed: 3 }
@@ -31,8 +31,8 @@ name:
31
31
  en: Spacing around Latin text is inconsistent
32
32
 
33
33
  why:
34
- ja: 日本語と英字・数字のあいだを空けるか詰めるかは、どちらでも読めます。困るのは一つの文書の中で混ざることで、読み手には違いに意味があるように見えます。chaff はどちらが正しいかを決めず、文書の中で少ないほうを指摘します。英字と、数字の前、数字の後ろは別々に数えます。「を 3回」のように、数字の前は空けて助数詞とは詰める書き方がふつうにあるからです。「3GBの」のように数字に続く単位は、英字ではなく数字の側として数えます。逆に「H30 等」「EC2 で」「Phase 1 は」のように英字で始まって数字で終わる名前は、英字の側として数えます。「073-489-5909」「2026-06-02」のような番号や、「1.0.0」のような版番号は数量ではないので数えません。日付・時刻(「9月」「2026年」「令和8年」「10月1日」「3時」「10時5分」)も、数と単位を詰めて書く決まりなので、その中の境目も、前の境目(「は 9月」「午後3時」)も数えません。コロンで書いた時刻(「13:30」「後の17:15から」)も同じです。メールアドレスや URL(「privacy@example.com で」)の前後の空白は、アドレスの終わりを示す区切りなので数えません。予約番号や型番のような番号(「予約番号 MN-48215 を」「型番 SB-210 と」)の前後の空白も、番号を文から区切るものなので数えません。長さ(「3ヶ月」「3 時間」「5日で」「3年」)は数量として数えます。題や注の番号として書かれた数(「3.1 リサーチの原則」の節番号、※1 の注番号、行の頭に続き番号で並べた注の番号、番号が増えていく箇条書きの頭の番号、「問3」「図2」のように語のすぐ後ろに書いた番号)、0 で始まる組を含む番号(102-0094)、〒の後ろの郵便番号(〒100-8916)、市・区・町まで下りた地名のすぐ後ろの番地(千代田区紀尾井町1-3)も、後ろの空白が番号と題・項目の区切りなので数えません。建物の名前の後ろに空白で区切って書いた階や部屋の番号(「本社 5階 第2会議室」「研究所 3階 セミナー室」)の前の空白も、所在の組の区切りなので数えません。名前だけを空白で並べた行(「株式会社あおば電子 経営企画部 IR担当」「東京本社 PR室」)で、空白の両側が部署・拠点・役目や会社の名前のときの空白も、名前と名前の区切りなので数えません。「第1節 AI の…」の「第1節」の後ろの空白も同じです。鉤括弧(「」『』)で引いた題名や発言の中も、リンクの文字の中も、空け方は引いた元のものなので数えません。
35
- 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, a date or a version (073-489-5909, 2026-06-02, 1.0.0) is not a quantity and is not counted. Nor is a date or a time written with units (9月, 2026年, 令和8年, 10月1日, 3時, 10時5分), which is packed by convention; neither its inside nor the space before it (は 9月, 午後3時) counts. The same goes for a clock time written with a colon (13:30). Nor is the space beside an e-mail address or a URL (privacy@example.com で), which marks where the address ends, or beside a booking or model number (予約番号 MN-48215 を, 型番 SB-210 と), which sets the number off from the sentence. 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, numbers opening the items of a list that go up, a number written right after a word such as 問 or 図), 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 space before a floor or room number written after the name of a building (本社 5階 第2会議室), which separates the parts of a location. Nor is the space between names on a line of names alone (株式会社あおば電子 経営企画部 IR担当, 東京本社 PR室), when both sides are names of a department, an office, a role or a company, since it separates one name from the next. The same goes for the space after a division such as 第1節. Nor is the spacing inside a title or a quotation in 「」 or 『』, or inside the text of a link, which is the source's, not the writer's.
34
+ ja: 日本語と英字・数字のあいだを空けるか詰めるかは、どちらでも読めます。困るのは一つの文書の中で混ざることで、読み手には違いに意味があるように見えます。chaff はどちらが正しいかを決めず、文書の中で少ないほうを指摘します。英字と、数字の前、数字の後ろは別々に数えます。「を 3回」のように、数字の前は空けて助数詞とは詰める書き方がふつうにあるからです。「3GBの」のように数字に続く単位は、英字ではなく数字の側として数えます。逆に「H30 等」「EC2 で」「Phase 1 は」のように英字で始まって数字で終わる名前は、英字の側として数えます。「073-489-5909」「2026-06-02」のような番号や、「1.0.0」のような版番号は数量ではないので数えません。日付・時刻(「9月」「2026年」「令和8年」「10月1日」「3時」「10時5分」)も、数と単位を詰めて書く決まりなので、その中の境目も、前の境目(「は 9月」「午後3時」)も数えません。コロンで書いた時刻(「13:30」「後の17:15から」)も同じです。メールアドレスや URL(「privacy@example.com で」)の前後の空白は、アドレスの終わりを示す区切りなので数えません。予約番号や型番のような番号(「予約番号 MN-48215 を」「型番 SB-210 と」)の前後の空白も、番号を文から区切るものなので数えません。長さ(「3ヶ月」「3 時間」「5日で」「3年」)は数量として数えます。題や注の番号として書かれた数(「3.1 リサーチの原則」の節番号、※1 の注番号、行の頭に続き番号で並べた注の番号、番号が増えていく箇条書きの頭の番号、「問3」「図2」のように語のすぐ後ろに書いた番号)、0 で始まる組を含む番号(102-0094)、〒の後ろの郵便番号(〒100-8916)、市・区・町まで下りた地名のすぐ後ろの番地(千代田区紀尾井町1-3)も、後ろの空白が番号と題・項目の区切りなので数えません。建物の名前の後ろに空白で区切って書いた階や部屋の番号(「本社 5階 第2会議室」「研究所 3階 セミナー室」)の前の空白も、所在の組の区切りなので数えません。名前だけを空白で並べた行(「株式会社あおば電子 経営企画部 IR担当」「東京本社 PR室」)で、空白の両側が部署・拠点・役目や会社の名前のときの空白も、名前と名前の区切りなので数えません。「第1節 AI の…」の「第1節」の後ろの空白も同じです。桁の区切りの無い 6 桁以上の番号(「口座番号 3056172 を」)、ナンバープレート(「ひばり野 330 ね 48-15」)の前後と中の空白、「所属:経済学部 経済学科 1年」「振込先:みなと銀行 普通 1234567」のように項目名とコロンの後ろに値の組を並べた行で、組と組のあいだの空白も、値の区切りなので数えません。鉤括弧(「」『』)で引いた題名や発言の中も、リンクの文字の中も、空け方は引いた元のものなので数えません。空けた所と詰めた所が同じ数なら、少ないほうが無いので 1 箇所ずつは指さず、1 対 1 なら何も言いません。
35
+ 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, a date or a version (073-489-5909, 2026-06-02, 1.0.0) is not a quantity and is not counted. Nor is a date or a time written with units (9月, 2026年, 令和8年, 10月1日, 3時, 10時5分), which is packed by convention; neither its inside nor the space before it (は 9月, 午後3時) counts. The same goes for a clock time written with a colon (13:30). Nor is the space beside an e-mail address or a URL (privacy@example.com で), which marks where the address ends, or beside a booking or model number (予約番号 MN-48215 を, 型番 SB-210 と), which sets the number off from the sentence. 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, numbers opening the items of a list that go up, a number written right after a word such as 問 or 図), 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 space before a floor or room number written after the name of a building (本社 5階 第2会議室), which separates the parts of a location. Nor is the space between names on a line of names alone (株式会社あおば電子 経営企画部 IR担当, 東京本社 PR室), when both sides are names of a department, an office, a role or a company, since it separates one name from the next. The same goes for the space after a division such as 第1節. Nor is the space beside a code of six digits or more written without separators (口座番号 3056172 を), around and inside a number plate (ひばり野 330 ね 48-15), or between the parts of a value after a label and a colon (所属:経済学部 経済学科 1年, 振込先:みなと銀行 普通 1234567), which separates the parts of the value. Nor is the spacing inside a title or a quotation in 「」 or 『』, or inside the text of a link, which is the source's, not the writer's. When both ways are used equally often there is no minority, so no place is singled out, and a one-to-one tie is not reported.
36
36
 
37
37
  message:
38
38
  ja: "日本語と{kind}のあいだを{style}(この文書はふつう{usual}。{of} 箇所のうち {count} 箇所が違う)"
@@ -70,8 +70,8 @@ example:
70
70
  表は Excel で作り、Word に貼ります。図は PowerPoint で描きます。最後に PDF にします。
71
71
 
72
72
  not_flagged:
73
- ja: 電話番号や日付のような番号、版番号(1.0.0)、予約番号や型番(MN-48215)の前後、単位つきの日付や時刻(9月、10時5分)、建物の名前の後ろに空白で区切った階や部屋の番号(本社 5階)の前、名前だけを並べた行の名前と名前のあいだ(経営企画部 IR担当)、見出しの番号、行の頭の項目の番号(「一 JIS…」の一、イ)の後ろ、「」の中、リンクの文字の中は数えません。どちらの空け方が正しいかは決めません。少ないほうが全体の 2 割を超えるほど多ければ(5 箇所以上)、1 箇所ずつではなく、書き方が二通りあることを 1 件で言います。
74
- en: Codes such as phone numbers, dates and version numbers (1.0.0), the spaces beside a booking or model number (MN-48215), dates and times with units (9月, 10時5分), the space before a floor or room number after the name of a building (本社 5階), the space between names on a line of names alone (経営企画部 IR担当), heading numbers, the space after an item number at the head of a line (一 JIS…), quotations and the text of links are not counted. Neither way is called right. When the less common way is more than a fifth of the places (and at least five), it is reported once, as a document written two ways, rather than place by place.
73
+ ja: 電話番号や日付のような番号、版番号(1.0.0)、予約番号や型番(MN-48215)の前後、単位つきの日付や時刻(9月、10時5分)、建物の名前の後ろに空白で区切った階や部屋の番号(本社 5階)の前、名前だけを並べた行の名前と名前のあいだ(経営企画部 IR担当)、6 桁以上の番号やナンバープレートの前後、項目名とコロンの後ろの値の組のあいだ(所属:経済学科 1年)、見出しの番号、行の頭の項目の番号(「一 JIS…」の一、イ)の後ろ、「」の中、リンクの文字の中は数えません。どちらの空け方が正しいかは決めません。少ないほうが全体の 2 割を超えるほど多ければ(5 箇所以上)、また二通りが 2 箇所以上ずつの同数なら、1 箇所ずつではなく、書き方が二通りあることを 1 件で言います。1 対 1 の同数は言いません。
74
+ en: Codes such as phone numbers, dates and version numbers (1.0.0), the spaces beside a booking or model number (MN-48215), dates and times with units (9月, 10時5分), the space before a floor or room number after the name of a building (本社 5階), the space between names on a line of names alone (経営企画部 IR担当), the spaces beside a code of six digits or more or a number plate, the space between the parts of a value after a label and a colon (所属:経済学科 1年), heading numbers, the space after an item number at the head of a line (一 JIS…), quotations and the text of links are not counted. Neither way is called right. When the less common way is more than a fifth of the places (and at least five), or both ways are used equally at two places or more each, it is reported once, as a document written two ways, rather than place by place. A one-to-one tie is not reported.
75
75
  level_meaning:
76
76
  ja: 少ないほうの空け方が {limit} 箇所あれば指摘
77
77
  en: reported once {limit} places go against the document's habit
@@ -82,7 +82,7 @@ example:
82
82
 
83
83
  not_flagged:
84
84
  ja: 項目が三つに満たない箇条書き、少ないほうが三分の一を超える箇条書き(使い分けと見る)、一語だけの項目、「札:説明」の形の項目、コードやリンクを含む項目、読点や「;」で終わって一つの文を分けて並べた箇条書き、引用の中の箇条書きは見ません。項目の最後の括弧書き(「健康診断書(3か月以内のもの)」)は外して形を見ます。法務・文学・話し言葉・議事録のジャンルでは見ません。
85
- en: 'Lists of fewer than three items, lists where the less common form is more than a third (used on purpose), one-word items, "Label: value" items, items holding code or a link, lists whose items end in a comma, a semicolon or "and" (one sentence split into items), and quoted lists are not checked. A capitalised name (Cover Letter) and a word that is also a verb (Design) are not judged by their first word. Legal, literary, speech and meeting-notes genres do not run this rule.'
85
+ en: 'Lists of fewer than three items, lists where the less common form is more than a third (used on purpose), one-word items, "Label: value" items, items holding code or a link, lists whose items end in a comma, a semicolon or "and" (one sentence split into items), and quoted lists are not checked. A capitalised name (Cover Letter), a word that is also a verb (Design documents), an adjective before a preposition (Free of charge, Clean up) and an -ing word before a noun (Washing machine) are not judged by their first word; a word followed by "the", "a" or "your" (Open the app) opens with a verb. Legal, literary, speech and meeting-notes genres do not run this rule.'
86
86
  level_meaning:
87
87
  ja: 少ないほうの形が、箇条書きの項目の {limit}% 以下のとき指摘
88
88
  en: reported when the less common form is {limit}% of the list's items or less