chaffjs 0.35.0 → 0.36.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 (700) hide show
  1. package/README.ja.md +12 -0
  2. package/README.md +15 -0
  3. package/dist/announced-count.d.ts +2 -0
  4. package/dist/announced-count.d.ts.map +1 -1
  5. package/dist/announced-count.js +29 -7
  6. package/dist/announced-count.js.map +1 -1
  7. package/dist/chronology-rows.d.ts +9 -0
  8. package/dist/chronology-rows.d.ts.map +1 -0
  9. package/dist/chronology-rows.js +79 -0
  10. package/dist/chronology-rows.js.map +1 -0
  11. package/dist/company-name-run.d.ts +8 -0
  12. package/dist/company-name-run.d.ts.map +1 -0
  13. package/dist/company-name-run.js +30 -0
  14. package/dist/company-name-run.js.map +1 -0
  15. package/dist/compound-head.d.ts +7 -0
  16. package/dist/compound-head.d.ts.map +1 -0
  17. package/dist/compound-head.js +19 -0
  18. package/dist/compound-head.js.map +1 -0
  19. package/dist/date-format.d.ts +8 -3
  20. package/dist/date-format.d.ts.map +1 -1
  21. package/dist/date-format.js +36 -3
  22. package/dist/date-format.js.map +1 -1
  23. package/dist/derived/count-per-period.d.ts +23 -0
  24. package/dist/derived/count-per-period.d.ts.map +1 -0
  25. package/dist/derived/count-per-period.js +14 -0
  26. package/dist/derived/count-per-period.js.map +1 -0
  27. package/dist/detectors/acronym-context.d.ts +4 -0
  28. package/dist/detectors/acronym-context.d.ts.map +1 -1
  29. package/dist/detectors/acronym-context.js +29 -1
  30. package/dist/detectors/acronym-context.js.map +1 -1
  31. package/dist/detectors/acronym-expansion.d.ts +5 -1
  32. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  33. package/dist/detectors/acronym-expansion.js +35 -3
  34. package/dist/detectors/acronym-expansion.js.map +1 -1
  35. package/dist/detectors/acronym-known.d.ts +19 -0
  36. package/dist/detectors/acronym-known.d.ts.map +1 -0
  37. package/dist/detectors/acronym-known.js +32 -0
  38. package/dist/detectors/acronym-known.js.map +1 -0
  39. package/dist/detectors/acronym-link.d.ts +14 -0
  40. package/dist/detectors/acronym-link.d.ts.map +1 -0
  41. package/dist/detectors/acronym-link.js +32 -0
  42. package/dist/detectors/acronym-link.js.map +1 -0
  43. package/dist/detectors/acronym-name.d.ts +8 -1
  44. package/dist/detectors/acronym-name.d.ts.map +1 -1
  45. package/dist/detectors/acronym-name.js +23 -4
  46. package/dist/detectors/acronym-name.js.map +1 -1
  47. package/dist/detectors/addressee-edge.d.ts +13 -0
  48. package/dist/detectors/addressee-edge.d.ts.map +1 -0
  49. package/dist/detectors/addressee-edge.js +13 -0
  50. package/dist/detectors/addressee-edge.js.map +1 -0
  51. package/dist/detectors/announced-count.d.ts.map +1 -1
  52. package/dist/detectors/announced-count.js +1 -0
  53. package/dist/detectors/announced-count.js.map +1 -1
  54. package/dist/detectors/bare-comparative.d.ts +4 -0
  55. package/dist/detectors/bare-comparative.d.ts.map +1 -1
  56. package/dist/detectors/bare-comparative.js +28 -3
  57. package/dist/detectors/bare-comparative.js.map +1 -1
  58. package/dist/detectors/blank-structure.d.ts +7 -1
  59. package/dist/detectors/blank-structure.d.ts.map +1 -1
  60. package/dist/detectors/blank-structure.js +13 -8
  61. package/dist/detectors/blank-structure.js.map +1 -1
  62. package/dist/detectors/bracket-specified.d.ts +6 -0
  63. package/dist/detectors/bracket-specified.d.ts.map +1 -0
  64. package/dist/detectors/bracket-specified.js +23 -0
  65. package/dist/detectors/bracket-specified.js.map +1 -0
  66. package/dist/detectors/broken-link.d.ts +6 -0
  67. package/dist/detectors/broken-link.d.ts.map +1 -1
  68. package/dist/detectors/broken-link.js +23 -2
  69. package/dist/detectors/broken-link.js.map +1 -1
  70. package/dist/detectors/caps-caption.d.ts +7 -6
  71. package/dist/detectors/caps-caption.d.ts.map +1 -1
  72. package/dist/detectors/caps-caption.js +38 -0
  73. package/dist/detectors/caps-caption.js.map +1 -1
  74. package/dist/detectors/caps-phrase.d.ts +6 -0
  75. package/dist/detectors/caps-phrase.d.ts.map +1 -0
  76. package/dist/detectors/caps-phrase.js +16 -0
  77. package/dist/detectors/caps-phrase.js.map +1 -0
  78. package/dist/detectors/char-shape.d.ts +1 -0
  79. package/dist/detectors/char-shape.d.ts.map +1 -1
  80. package/dist/detectors/char-shape.js +29 -16
  81. package/dist/detectors/char-shape.js.map +1 -1
  82. package/dist/detectors/cited-title.d.ts +3 -2
  83. package/dist/detectors/cited-title.d.ts.map +1 -1
  84. package/dist/detectors/cited-title.js +14 -3
  85. package/dist/detectors/cited-title.js.map +1 -1
  86. package/dist/detectors/counter-edge.d.ts +2 -1
  87. package/dist/detectors/counter-edge.d.ts.map +1 -1
  88. package/dist/detectors/counter-edge.js +17 -2
  89. package/dist/detectors/counter-edge.js.map +1 -1
  90. package/dist/detectors/date-any-year.d.ts +7 -3
  91. package/dist/detectors/date-any-year.d.ts.map +1 -1
  92. package/dist/detectors/date-any-year.js +25 -5
  93. package/dist/detectors/date-any-year.js.map +1 -1
  94. package/dist/detectors/date-format.d.ts.map +1 -1
  95. package/dist/detectors/date-format.js +2 -1
  96. package/dist/detectors/date-format.js.map +1 -1
  97. package/dist/detectors/date-year.d.ts +9 -3
  98. package/dist/detectors/date-year.d.ts.map +1 -1
  99. package/dist/detectors/date-year.js +45 -9
  100. package/dist/detectors/date-year.js.map +1 -1
  101. package/dist/detectors/deadline-unit.d.ts +20 -0
  102. package/dist/detectors/deadline-unit.d.ts.map +1 -0
  103. package/dist/detectors/deadline-unit.js +19 -0
  104. package/dist/detectors/deadline-unit.js.map +1 -0
  105. package/dist/detectors/defined-term-form.d.ts.map +1 -1
  106. package/dist/detectors/defined-term-form.js +33 -7
  107. package/dist/detectors/defined-term-form.js.map +1 -1
  108. package/dist/detectors/definition-use.d.ts.map +1 -1
  109. package/dist/detectors/definition-use.js +6 -3
  110. package/dist/detectors/definition-use.js.map +1 -1
  111. package/dist/detectors/derived-numbers.d.ts.map +1 -1
  112. package/dist/detectors/derived-numbers.js +17 -4
  113. package/dist/detectors/derived-numbers.js.map +1 -1
  114. package/dist/detectors/doubled-across-aside.d.ts +9 -0
  115. package/dist/detectors/doubled-across-aside.d.ts.map +1 -0
  116. package/dist/detectors/doubled-across-aside.js +27 -0
  117. package/dist/detectors/doubled-across-aside.js.map +1 -0
  118. package/dist/detectors/doubled-punctuation.d.ts +3 -3
  119. package/dist/detectors/doubled-punctuation.d.ts.map +1 -1
  120. package/dist/detectors/doubled-punctuation.js +23 -4
  121. package/dist/detectors/doubled-punctuation.js.map +1 -1
  122. package/dist/detectors/doubled-word.d.ts.map +1 -1
  123. package/dist/detectors/doubled-word.js +2 -1
  124. package/dist/detectors/doubled-word.js.map +1 -1
  125. package/dist/detectors/ellipsis.d.ts.map +1 -1
  126. package/dist/detectors/ellipsis.js +13 -1
  127. package/dist/detectors/ellipsis.js.map +1 -1
  128. package/dist/detectors/email-letter.d.ts +31 -1
  129. package/dist/detectors/email-letter.d.ts.map +1 -1
  130. package/dist/detectors/email-letter.js +76 -14
  131. package/dist/detectors/email-letter.js.map +1 -1
  132. package/dist/detectors/field-label.d.ts +7 -0
  133. package/dist/detectors/field-label.d.ts.map +1 -0
  134. package/dist/detectors/field-label.js +23 -0
  135. package/dist/detectors/field-label.js.map +1 -0
  136. package/dist/detectors/footnote-mismatch.d.ts +6 -1
  137. package/dist/detectors/footnote-mismatch.d.ts.map +1 -1
  138. package/dist/detectors/footnote-mismatch.js +28 -7
  139. package/dist/detectors/footnote-mismatch.js.map +1 -1
  140. package/dist/detectors/graded-step.d.ts +20 -0
  141. package/dist/detectors/graded-step.d.ts.map +1 -0
  142. package/dist/detectors/graded-step.js +33 -0
  143. package/dist/detectors/graded-step.js.map +1 -0
  144. package/dist/detectors/gram-openers.d.ts +8 -0
  145. package/dist/detectors/gram-openers.d.ts.map +1 -0
  146. package/dist/detectors/gram-openers.js +16 -0
  147. package/dist/detectors/gram-openers.js.map +1 -0
  148. package/dist/detectors/gram-place.d.ts +3 -1
  149. package/dist/detectors/gram-place.d.ts.map +1 -1
  150. package/dist/detectors/gram-place.js +8 -0
  151. package/dist/detectors/gram-place.js.map +1 -1
  152. package/dist/detectors/gram-predicate.d.ts.map +1 -1
  153. package/dist/detectors/gram-predicate.js +37 -3
  154. package/dist/detectors/gram-predicate.js.map +1 -1
  155. package/dist/detectors/heading-echo.d.ts.map +1 -1
  156. package/dist/detectors/heading-echo.js +28 -2
  157. package/dist/detectors/heading-echo.js.map +1 -1
  158. package/dist/detectors/ime-residue.d.ts +1 -1
  159. package/dist/detectors/ime-residue.d.ts.map +1 -1
  160. package/dist/detectors/ime-residue.js +4 -3
  161. package/dist/detectors/ime-residue.js.map +1 -1
  162. package/dist/detectors/kanji-compound-slip.d.ts +3 -0
  163. package/dist/detectors/kanji-compound-slip.d.ts.map +1 -0
  164. package/dist/detectors/kanji-compound-slip.js +50 -0
  165. package/dist/detectors/kanji-compound-slip.js.map +1 -0
  166. package/dist/detectors/kutoten-consistency.d.ts +10 -2
  167. package/dist/detectors/kutoten-consistency.d.ts.map +1 -1
  168. package/dist/detectors/kutoten-consistency.js +76 -12
  169. package/dist/detectors/kutoten-consistency.js.map +1 -1
  170. package/dist/detectors/lexicon.d.ts.map +1 -1
  171. package/dist/detectors/lexicon.js +8 -2
  172. package/dist/detectors/lexicon.js.map +1 -1
  173. package/dist/detectors/link-shape.d.ts.map +1 -1
  174. package/dist/detectors/link-shape.js +9 -3
  175. package/dist/detectors/link-shape.js.map +1 -1
  176. package/dist/detectors/list-item-ending.d.ts +18 -0
  177. package/dist/detectors/list-item-ending.d.ts.map +1 -0
  178. package/dist/detectors/list-item-ending.js +35 -0
  179. package/dist/detectors/list-item-ending.js.map +1 -0
  180. package/dist/detectors/list-parallel.d.ts +18 -5
  181. package/dist/detectors/list-parallel.d.ts.map +1 -1
  182. package/dist/detectors/list-parallel.js +116 -36
  183. package/dist/detectors/list-parallel.js.map +1 -1
  184. package/dist/detectors/list-sentence.d.ts +4 -0
  185. package/dist/detectors/list-sentence.d.ts.map +1 -1
  186. package/dist/detectors/list-sentence.js +1 -1
  187. package/dist/detectors/list-sentence.js.map +1 -1
  188. package/dist/detectors/mark-shape.d.ts +11 -4
  189. package/dist/detectors/mark-shape.d.ts.map +1 -1
  190. package/dist/detectors/mark-shape.js +58 -10
  191. package/dist/detectors/mark-shape.js.map +1 -1
  192. package/dist/detectors/mentioned-phrase.d.ts +9 -0
  193. package/dist/detectors/mentioned-phrase.d.ts.map +1 -0
  194. package/dist/detectors/mentioned-phrase.js +25 -0
  195. package/dist/detectors/mentioned-phrase.js.map +1 -0
  196. package/dist/detectors/middle-dot.d.ts +2 -2
  197. package/dist/detectors/middle-dot.d.ts.map +1 -1
  198. package/dist/detectors/middle-dot.js +4 -2
  199. package/dist/detectors/middle-dot.js.map +1 -1
  200. package/dist/detectors/modal-conflict.d.ts.map +1 -1
  201. package/dist/detectors/modal-conflict.js +5 -2
  202. package/dist/detectors/modal-conflict.js.map +1 -1
  203. package/dist/detectors/notice-paragraph.d.ts +9 -0
  204. package/dist/detectors/notice-paragraph.d.ts.map +1 -0
  205. package/dist/detectors/notice-paragraph.js +21 -0
  206. package/dist/detectors/notice-paragraph.js.map +1 -0
  207. package/dist/detectors/number-style.d.ts.map +1 -1
  208. package/dist/detectors/number-style.js +15 -2
  209. package/dist/detectors/number-style.js.map +1 -1
  210. package/dist/detectors/number-unit.d.ts.map +1 -1
  211. package/dist/detectors/number-unit.js +24 -1
  212. package/dist/detectors/number-unit.js.map +1 -1
  213. package/dist/detectors/numeral-opener.d.ts +6 -0
  214. package/dist/detectors/numeral-opener.d.ts.map +1 -1
  215. package/dist/detectors/numeral-opener.js +24 -1
  216. package/dist/detectors/numeral-opener.js.map +1 -1
  217. package/dist/detectors/obligation-without-deadline.d.ts +5 -1
  218. package/dist/detectors/obligation-without-deadline.d.ts.map +1 -1
  219. package/dist/detectors/obligation-without-deadline.js +44 -23
  220. package/dist/detectors/obligation-without-deadline.js.map +1 -1
  221. package/dist/detectors/open-end-class.d.ts +16 -0
  222. package/dist/detectors/open-end-class.d.ts.map +1 -0
  223. package/dist/detectors/open-end-class.js +65 -0
  224. package/dist/detectors/open-end-class.js.map +1 -0
  225. package/dist/detectors/open-end-condition.d.ts +7 -0
  226. package/dist/detectors/open-end-condition.d.ts.map +1 -0
  227. package/dist/detectors/open-end-condition.js +35 -0
  228. package/dist/detectors/open-end-condition.js.map +1 -0
  229. package/dist/detectors/open-end-names.d.ts +9 -3
  230. package/dist/detectors/open-end-names.d.ts.map +1 -1
  231. package/dist/detectors/open-end-names.js +5 -2
  232. package/dist/detectors/open-end-names.js.map +1 -1
  233. package/dist/detectors/open-end-question.d.ts +15 -0
  234. package/dist/detectors/open-end-question.d.ts.map +1 -0
  235. package/dist/detectors/open-end-question.js +37 -0
  236. package/dist/detectors/open-end-question.js.map +1 -0
  237. package/dist/detectors/open-end-scope.d.ts +16 -0
  238. package/dist/detectors/open-end-scope.d.ts.map +1 -0
  239. package/dist/detectors/open-end-scope.js +47 -0
  240. package/dist/detectors/open-end-scope.js.map +1 -0
  241. package/dist/detectors/opening-date.d.ts +10 -0
  242. package/dist/detectors/opening-date.d.ts.map +1 -0
  243. package/dist/detectors/opening-date.js +33 -0
  244. package/dist/detectors/opening-date.js.map +1 -0
  245. package/dist/detectors/ordinary-phrase.d.ts +20 -0
  246. package/dist/detectors/ordinary-phrase.d.ts.map +1 -0
  247. package/dist/detectors/ordinary-phrase.js +54 -0
  248. package/dist/detectors/ordinary-phrase.js.map +1 -0
  249. package/dist/detectors/organisation-run.d.ts +5 -1
  250. package/dist/detectors/organisation-run.d.ts.map +1 -1
  251. package/dist/detectors/organisation-run.js +7 -0
  252. package/dist/detectors/organisation-run.js.map +1 -1
  253. package/dist/detectors/orthographic-variant.d.ts.map +1 -1
  254. package/dist/detectors/orthographic-variant.js +56 -20
  255. package/dist/detectors/orthographic-variant.js.map +1 -1
  256. package/dist/detectors/orthography.d.ts.map +1 -1
  257. package/dist/detectors/orthography.js +6 -1
  258. package/dist/detectors/orthography.js.map +1 -1
  259. package/dist/detectors/oxford-comma.d.ts.map +1 -1
  260. package/dist/detectors/oxford-comma.js +38 -1
  261. package/dist/detectors/oxford-comma.js.map +1 -1
  262. package/dist/detectors/person-consistency.d.ts +2 -1
  263. package/dist/detectors/person-consistency.d.ts.map +1 -1
  264. package/dist/detectors/person-consistency.js +5 -3
  265. package/dist/detectors/person-consistency.js.map +1 -1
  266. package/dist/detectors/phrase-match.d.ts +2 -0
  267. package/dist/detectors/phrase-match.d.ts.map +1 -1
  268. package/dist/detectors/phrase-match.js +11 -4
  269. package/dist/detectors/phrase-match.js.map +1 -1
  270. package/dist/detectors/placeholder-text.d.ts.map +1 -1
  271. package/dist/detectors/placeholder-text.js +18 -3
  272. package/dist/detectors/placeholder-text.js.map +1 -1
  273. package/dist/detectors/placeholder.d.ts +3 -1
  274. package/dist/detectors/placeholder.d.ts.map +1 -1
  275. package/dist/detectors/placeholder.js +8 -3
  276. package/dist/detectors/placeholder.js.map +1 -1
  277. package/dist/detectors/postcode-end.d.ts +3 -0
  278. package/dist/detectors/postcode-end.d.ts.map +1 -0
  279. package/dist/detectors/postcode-end.js +15 -0
  280. package/dist/detectors/postcode-end.js.map +1 -0
  281. package/dist/detectors/prose-total-words.d.ts +5 -0
  282. package/dist/detectors/prose-total-words.d.ts.map +1 -0
  283. package/dist/detectors/prose-total-words.js +14 -0
  284. package/dist/detectors/prose-total-words.js.map +1 -0
  285. package/dist/detectors/registry/kanji-compound-slip.d.ts +3 -0
  286. package/dist/detectors/registry/kanji-compound-slip.d.ts.map +1 -0
  287. package/dist/detectors/registry/kanji-compound-slip.js +3 -0
  288. package/dist/detectors/registry/kanji-compound-slip.js.map +1 -0
  289. package/dist/detectors/registry/phrase-in-use.d.ts +3 -0
  290. package/dist/detectors/registry/phrase-in-use.d.ts.map +1 -0
  291. package/dist/detectors/registry/phrase-in-use.js +3 -0
  292. package/dist/detectors/registry/phrase-in-use.js.map +1 -0
  293. package/dist/detectors/requirement-smell.d.ts.map +1 -1
  294. package/dist/detectors/requirement-smell.js +29 -5
  295. package/dist/detectors/requirement-smell.js.map +1 -1
  296. package/dist/detectors/scaled-figure-unit.d.ts +28 -0
  297. package/dist/detectors/scaled-figure-unit.d.ts.map +1 -0
  298. package/dist/detectors/scaled-figure-unit.js +78 -0
  299. package/dist/detectors/scaled-figure-unit.js.map +1 -0
  300. package/dist/detectors/sentence-counts.d.ts +2 -0
  301. package/dist/detectors/sentence-counts.d.ts.map +1 -1
  302. package/dist/detectors/sentence-counts.js +18 -7
  303. package/dist/detectors/sentence-counts.js.map +1 -1
  304. package/dist/detectors/sentence-ending.d.ts +2 -0
  305. package/dist/detectors/sentence-ending.d.ts.map +1 -1
  306. package/dist/detectors/sentence-ending.js +10 -3
  307. package/dist/detectors/sentence-ending.js.map +1 -1
  308. package/dist/detectors/sentence-load.d.ts +4 -1
  309. package/dist/detectors/sentence-load.d.ts.map +1 -1
  310. package/dist/detectors/sentence-load.js +9 -2
  311. package/dist/detectors/sentence-load.js.map +1 -1
  312. package/dist/detectors/signals.d.ts.map +1 -1
  313. package/dist/detectors/signals.js +30 -50
  314. package/dist/detectors/signals.js.map +1 -1
  315. package/dist/detectors/structure-tree.d.ts.map +1 -1
  316. package/dist/detectors/structure-tree.js +14 -13
  317. package/dist/detectors/structure-tree.js.map +1 -1
  318. package/dist/detectors/structure.d.ts.map +1 -1
  319. package/dist/detectors/structure.js +2 -1
  320. package/dist/detectors/structure.js.map +1 -1
  321. package/dist/detectors/subject-name-line.d.ts +8 -0
  322. package/dist/detectors/subject-name-line.d.ts.map +1 -0
  323. package/dist/detectors/subject-name-line.js +53 -0
  324. package/dist/detectors/subject-name-line.js.map +1 -0
  325. package/dist/detectors/table-header.d.ts.map +1 -1
  326. package/dist/detectors/table-header.js +13 -1
  327. package/dist/detectors/table-header.js.map +1 -1
  328. package/dist/detectors/technical-docs.d.ts.map +1 -1
  329. package/dist/detectors/technical-docs.js +4 -1
  330. package/dist/detectors/technical-docs.js.map +1 -1
  331. package/dist/detectors/term-mention-sentence.d.ts +4 -0
  332. package/dist/detectors/term-mention-sentence.d.ts.map +1 -0
  333. package/dist/detectors/term-mention-sentence.js +28 -0
  334. package/dist/detectors/term-mention-sentence.js.map +1 -0
  335. package/dist/detectors/titled-run.d.ts +2 -1
  336. package/dist/detectors/titled-run.d.ts.map +1 -1
  337. package/dist/detectors/titled-run.js +9 -4
  338. package/dist/detectors/titled-run.js.map +1 -1
  339. package/dist/detectors/token-shape.d.ts.map +1 -1
  340. package/dist/detectors/token-shape.js +13 -5
  341. package/dist/detectors/token-shape.js.map +1 -1
  342. package/dist/detectors/vague-density.d.ts +5 -2
  343. package/dist/detectors/vague-density.d.ts.map +1 -1
  344. package/dist/detectors/vague-density.js +17 -4
  345. package/dist/detectors/vague-density.js.map +1 -1
  346. package/dist/document-paragraphs.d.ts +4 -0
  347. package/dist/document-paragraphs.d.ts.map +1 -0
  348. package/dist/document-paragraphs.js +24 -0
  349. package/dist/document-paragraphs.js.map +1 -0
  350. package/dist/document.d.ts.map +1 -1
  351. package/dist/document.js +2 -19
  352. package/dist/document.js.map +1 -1
  353. package/dist/figure-references.d.ts +3 -0
  354. package/dist/figure-references.d.ts.map +1 -1
  355. package/dist/figure-references.js +6 -2
  356. package/dist/figure-references.js.map +1 -1
  357. package/dist/format-template.d.ts +3 -0
  358. package/dist/format-template.d.ts.map +1 -0
  359. package/dist/format-template.js +13 -0
  360. package/dist/format-template.js.map +1 -0
  361. package/dist/formula-brackets.d.ts +7 -0
  362. package/dist/formula-brackets.d.ts.map +1 -0
  363. package/dist/formula-brackets.js +29 -0
  364. package/dist/formula-brackets.js.map +1 -0
  365. package/dist/html/html-markdown.d.ts.map +1 -1
  366. package/dist/html/html-markdown.js +2 -1
  367. package/dist/html/html-markdown.js.map +1 -1
  368. package/dist/html/html-site-chrome.d.ts +5 -0
  369. package/dist/html/html-site-chrome.d.ts.map +1 -0
  370. package/dist/html/html-site-chrome.js +33 -0
  371. package/dist/html/html-site-chrome.js.map +1 -0
  372. package/dist/joined-view.d.ts.map +1 -1
  373. package/dist/joined-view.js +1 -0
  374. package/dist/joined-view.js.map +1 -1
  375. package/dist/kanji-compound-slip.d.ts +32 -0
  376. package/dist/kanji-compound-slip.d.ts.map +1 -0
  377. package/dist/kanji-compound-slip.js +63 -0
  378. package/dist/kanji-compound-slip.js.map +1 -0
  379. package/dist/latin-company-form.d.ts +6 -0
  380. package/dist/latin-company-form.d.ts.map +1 -0
  381. package/dist/latin-company-form.js +32 -0
  382. package/dist/latin-company-form.js.map +1 -0
  383. package/dist/latin-word-boundary.d.ts +15 -0
  384. package/dist/latin-word-boundary.d.ts.map +1 -0
  385. package/dist/latin-word-boundary.js +40 -0
  386. package/dist/latin-word-boundary.js.map +1 -0
  387. package/dist/lexicon-genres.d.ts +2 -0
  388. package/dist/lexicon-genres.d.ts.map +1 -1
  389. package/dist/lexicon-genres.js +1 -1
  390. package/dist/lexicon-genres.js.map +1 -1
  391. package/dist/link-shape.d.ts +5 -0
  392. package/dist/link-shape.d.ts.map +1 -1
  393. package/dist/link-shape.js +18 -0
  394. package/dist/link-shape.js.map +1 -1
  395. package/dist/link-title.d.ts +4 -0
  396. package/dist/link-title.d.ts.map +1 -0
  397. package/dist/link-title.js +33 -0
  398. package/dist/link-title.js.map +1 -0
  399. package/dist/list-item-paragraphs.d.ts +15 -0
  400. package/dist/list-item-paragraphs.d.ts.map +1 -0
  401. package/dist/list-item-paragraphs.js +19 -0
  402. package/dist/list-item-paragraphs.js.map +1 -0
  403. package/dist/literal-quote.d.ts +12 -0
  404. package/dist/literal-quote.d.ts.map +1 -0
  405. package/dist/literal-quote.js +43 -0
  406. package/dist/literal-quote.js.map +1 -0
  407. package/dist/nado-closed-list.d.ts.map +1 -1
  408. package/dist/nado-closed-list.js +39 -5
  409. package/dist/nado-closed-list.js.map +1 -1
  410. package/dist/name-separator.d.ts.map +1 -1
  411. package/dist/name-separator.js +25 -2
  412. package/dist/name-separator.js.map +1 -1
  413. package/dist/nominal-stem.d.ts +14 -1
  414. package/dist/nominal-stem.d.ts.map +1 -1
  415. package/dist/nominal-stem.js +42 -4
  416. package/dist/nominal-stem.js.map +1 -1
  417. package/dist/person-forms.d.ts +8 -0
  418. package/dist/person-forms.d.ts.map +1 -1
  419. package/dist/person-forms.js +12 -0
  420. package/dist/person-forms.js.map +1 -1
  421. package/dist/plugin.d.ts +5 -0
  422. package/dist/plugin.d.ts.map +1 -1
  423. package/dist/preamble-paragraphs.d.ts +3 -2
  424. package/dist/preamble-paragraphs.d.ts.map +1 -1
  425. package/dist/preamble-paragraphs.js +8 -2
  426. package/dist/preamble-paragraphs.js.map +1 -1
  427. package/dist/spacing-code.d.ts +1 -0
  428. package/dist/spacing-code.d.ts.map +1 -1
  429. package/dist/spacing-code.js +4 -1
  430. package/dist/spacing-code.js.map +1 -1
  431. package/dist/split-noun.d.ts +10 -0
  432. package/dist/split-noun.d.ts.map +1 -0
  433. package/dist/split-noun.js +50 -0
  434. package/dist/split-noun.js.map +1 -0
  435. package/dist/structure/attached-parts.d.ts +11 -0
  436. package/dist/structure/attached-parts.d.ts.map +1 -0
  437. package/dist/structure/attached-parts.js +31 -0
  438. package/dist/structure/attached-parts.js.map +1 -0
  439. package/dist/structure/build.d.ts.map +1 -1
  440. package/dist/structure/build.js +7 -4
  441. package/dist/structure/build.js.map +1 -1
  442. package/dist/structure/contents-lines.d.ts +7 -0
  443. package/dist/structure/contents-lines.d.ts.map +1 -0
  444. package/dist/structure/contents-lines.js +51 -0
  445. package/dist/structure/contents-lines.js.map +1 -0
  446. package/dist/structure/defining-names.d.ts +37 -0
  447. package/dist/structure/defining-names.d.ts.map +1 -0
  448. package/dist/structure/defining-names.js +122 -0
  449. package/dist/structure/defining-names.js.map +1 -0
  450. package/dist/structure/definition-use.d.ts +3 -2
  451. package/dist/structure/definition-use.d.ts.map +1 -1
  452. package/dist/structure/definition-use.js +99 -31
  453. package/dist/structure/definition-use.js.map +1 -1
  454. package/dist/structure/issues.d.ts +4 -1
  455. package/dist/structure/issues.d.ts.map +1 -1
  456. package/dist/structure/issues.js +5 -2
  457. package/dist/structure/issues.js.map +1 -1
  458. package/dist/structure/list-lead-in.d.ts +19 -0
  459. package/dist/structure/list-lead-in.d.ts.map +1 -0
  460. package/dist/structure/list-lead-in.js +85 -0
  461. package/dist/structure/list-lead-in.js.map +1 -0
  462. package/dist/structure/modal-conflict.d.ts +7 -2
  463. package/dist/structure/modal-conflict.d.ts.map +1 -1
  464. package/dist/structure/modal-conflict.js +36 -7
  465. package/dist/structure/modal-conflict.js.map +1 -1
  466. package/dist/structure/negated-act.d.ts +17 -0
  467. package/dist/structure/negated-act.d.ts.map +1 -0
  468. package/dist/structure/negated-act.js +32 -0
  469. package/dist/structure/negated-act.js.map +1 -0
  470. package/dist/structure/numbering.d.ts +3 -1
  471. package/dist/structure/numbering.d.ts.map +1 -1
  472. package/dist/structure/numbering.js +20 -8
  473. package/dist/structure/numbering.js.map +1 -1
  474. package/dist/structure/prose-total.d.ts +4 -0
  475. package/dist/structure/prose-total.d.ts.map +1 -1
  476. package/dist/structure/prose-total.js +16 -6
  477. package/dist/structure/prose-total.js.map +1 -1
  478. package/dist/structure/repeated-number.d.ts +24 -0
  479. package/dist/structure/repeated-number.d.ts.map +1 -0
  480. package/dist/structure/repeated-number.js +89 -0
  481. package/dist/structure/repeated-number.js.map +1 -0
  482. package/dist/structure/rounded-amount.d.ts +8 -0
  483. package/dist/structure/rounded-amount.d.ts.map +1 -0
  484. package/dist/structure/rounded-amount.js +48 -0
  485. package/dist/structure/rounded-amount.js.map +1 -0
  486. package/dist/structure/side-step.d.ts +8 -0
  487. package/dist/structure/side-step.d.ts.map +1 -0
  488. package/dist/structure/side-step.js +21 -0
  489. package/dist/structure/side-step.js.map +1 -0
  490. package/dist/structure/spanned-label-blank.d.ts +8 -0
  491. package/dist/structure/spanned-label-blank.d.ts.map +1 -0
  492. package/dist/structure/spanned-label-blank.js +37 -0
  493. package/dist/structure/spanned-label-blank.js.map +1 -0
  494. package/dist/structure/universal.d.ts +3 -1
  495. package/dist/structure/universal.d.ts.map +1 -1
  496. package/dist/structure/universal.js +9 -2
  497. package/dist/structure/universal.js.map +1 -1
  498. package/dist/structure/unspaced-heading.d.ts +10 -0
  499. package/dist/structure/unspaced-heading.d.ts.map +1 -0
  500. package/dist/structure/unspaced-heading.js +24 -0
  501. package/dist/structure/unspaced-heading.js.map +1 -0
  502. package/dist/structure/written-list-path.d.ts +10 -0
  503. package/dist/structure/written-list-path.d.ts.map +1 -0
  504. package/dist/structure/written-list-path.js +37 -0
  505. package/dist/structure/written-list-path.js.map +1 -0
  506. package/dist/structure/written-resolve.d.ts +1 -1
  507. package/dist/structure/written-resolve.d.ts.map +1 -1
  508. package/dist/structure/written-resolve.js +15 -9
  509. package/dist/structure/written-resolve.js.map +1 -1
  510. package/dist/title-line.d.ts +21 -0
  511. package/dist/title-line.d.ts.map +1 -0
  512. package/dist/title-line.js +27 -0
  513. package/dist/title-line.js.map +1 -0
  514. package/package.json +3 -3
  515. package/rules/all-caps-shouting.yaml +2 -2
  516. package/rules/announced-count-mismatch.yaml +2 -2
  517. package/rules/bare-url-mix.yaml +2 -2
  518. package/rules/bracket-nesting.yaml +2 -2
  519. package/rules/bracket-width-consistency.yaml +2 -2
  520. package/rules/broken-link.yaml +2 -2
  521. package/rules/cliche.yaml +4 -3
  522. package/rules/code-fence-language-mix.yaml +2 -2
  523. package/rules/comparative-without-baseline.yaml +2 -2
  524. package/rules/dangling-figure-reference.yaml +2 -2
  525. package/rules/date-without-year.yaml +10 -2
  526. package/rules/defined-term-form.yaml +2 -2
  527. package/rules/doubled-punctuation.yaml +4 -4
  528. package/rules/doubled-word.yaml +2 -2
  529. package/rules/duplicate-definition.yaml +2 -2
  530. package/rules/duration-mismatch.yaml +2 -2
  531. package/rules/email-greeting-closing.yaml +2 -2
  532. package/rules/email-subject-length.yaml +2 -2
  533. package/rules/empty-table-cell.yaml +2 -2
  534. package/rules/footnote-mismatch.yaml +2 -2
  535. package/rules/heading-echo.yaml +2 -2
  536. package/rules/ime-residue.yaml +2 -2
  537. package/rules/kanji-compound-slip.yaml +67 -0
  538. package/rules/kutoten-consistency.yaml +4 -4
  539. package/rules/latin-spacing.yaml +2 -2
  540. package/rules/list-item-form-mix.yaml +2 -2
  541. package/rules/max-kanji-continuous.yaml +6 -4
  542. package/rules/modal-conflict.yaml +1 -0
  543. package/rules/nado-closed-list.yaml +2 -2
  544. package/rules/ngram-repetition.yaml +2 -2
  545. package/rules/no-doubled-joshi.yaml +2 -2
  546. package/rules/no-mixed-desumasu.yaml +3 -3
  547. package/rules/no-nakaguro-parallel.yaml +2 -0
  548. package/rules/number-without-unit.yaml +9 -4
  549. package/rules/numbering-gap.yaml +7 -2
  550. package/rules/numeral-sentence-start.yaml +2 -2
  551. package/rules/obligation-without-deadline.yaml +2 -2
  552. package/rules/orthographic-variant.yaml +2 -2
  553. package/rules/oxford-comma-consistency.yaml +3 -3
  554. package/rules/preamble-length.yaml +2 -2
  555. package/rules/requirement-smell.yaml +3 -3
  556. package/rules/table-header-variant.yaml +2 -2
  557. package/rules/teki-overuse.yaml +3 -2
  558. package/rules/total-mismatch.yaml +2 -2
  559. package/rules/translationese-density.yaml +2 -2
  560. package/rules/undefined-acronym.yaml +4 -2
  561. package/rules/unfilled-placeholder.yaml +4 -4
  562. package/rules/use-before-definition.yaml +2 -2
  563. package/rules/vague-word-density.yaml +2 -2
  564. package/skills/chaff/SKILL.md +7 -1
  565. package/src/announced-count.ts +35 -8
  566. package/src/chronology-rows.ts +86 -0
  567. package/src/company-name-run.ts +37 -0
  568. package/src/compound-head.ts +25 -0
  569. package/src/date-format.ts +43 -4
  570. package/src/derived/count-per-period.ts +28 -0
  571. package/src/detectors/acronym-context.ts +30 -1
  572. package/src/detectors/acronym-expansion.ts +47 -6
  573. package/src/detectors/acronym-known.ts +40 -0
  574. package/src/detectors/acronym-link.ts +37 -0
  575. package/src/detectors/acronym-name.ts +27 -4
  576. package/src/detectors/addressee-edge.ts +16 -0
  577. package/src/detectors/announced-count.ts +1 -0
  578. package/src/detectors/bare-comparative.ts +44 -3
  579. package/src/detectors/blank-structure.ts +21 -10
  580. package/src/detectors/bracket-specified.ts +25 -0
  581. package/src/detectors/broken-link.ts +26 -2
  582. package/src/detectors/caps-caption.ts +42 -0
  583. package/src/detectors/caps-phrase.ts +17 -0
  584. package/src/detectors/char-shape.ts +30 -9
  585. package/src/detectors/cited-title.ts +15 -3
  586. package/src/detectors/counter-edge.ts +17 -2
  587. package/src/detectors/date-any-year.ts +27 -6
  588. package/src/detectors/date-format.ts +2 -1
  589. package/src/detectors/date-year.ts +64 -16
  590. package/src/detectors/deadline-unit.ts +40 -0
  591. package/src/detectors/defined-term-form.ts +32 -12
  592. package/src/detectors/definition-use.ts +7 -3
  593. package/src/detectors/derived-numbers.ts +19 -4
  594. package/src/detectors/doubled-across-aside.ts +36 -0
  595. package/src/detectors/doubled-punctuation.ts +28 -7
  596. package/src/detectors/doubled-word.ts +2 -1
  597. package/src/detectors/ellipsis.ts +16 -1
  598. package/src/detectors/email-letter.ts +97 -21
  599. package/src/detectors/field-label.ts +25 -0
  600. package/src/detectors/footnote-mismatch.ts +39 -7
  601. package/src/detectors/graded-step.ts +52 -0
  602. package/src/detectors/gram-openers.ts +21 -0
  603. package/src/detectors/gram-place.ts +10 -1
  604. package/src/detectors/gram-predicate.ts +43 -3
  605. package/src/detectors/heading-echo.ts +31 -3
  606. package/src/detectors/ime-residue.ts +4 -3
  607. package/src/detectors/kanji-compound-slip.ts +61 -0
  608. package/src/detectors/kutoten-consistency.ts +93 -14
  609. package/src/detectors/lexicon.ts +12 -3
  610. package/src/detectors/link-shape.ts +10 -3
  611. package/src/detectors/list-item-ending.ts +51 -0
  612. package/src/detectors/list-parallel.ts +158 -33
  613. package/src/detectors/list-sentence.ts +5 -1
  614. package/src/detectors/mark-shape.ts +64 -10
  615. package/src/detectors/mentioned-phrase.ts +38 -0
  616. package/src/detectors/middle-dot.ts +7 -2
  617. package/src/detectors/modal-conflict.ts +5 -2
  618. package/src/detectors/notice-paragraph.ts +33 -0
  619. package/src/detectors/number-style.ts +14 -2
  620. package/src/detectors/number-unit.ts +28 -1
  621. package/src/detectors/numeral-opener.ts +27 -1
  622. package/src/detectors/obligation-without-deadline.ts +29 -4
  623. package/src/detectors/open-end-class.ts +78 -0
  624. package/src/detectors/open-end-condition.ts +40 -0
  625. package/src/detectors/open-end-names.ts +9 -3
  626. package/src/detectors/open-end-question.ts +50 -0
  627. package/src/detectors/open-end-scope.ts +62 -0
  628. package/src/detectors/opening-date.ts +47 -0
  629. package/src/detectors/ordinary-phrase.ts +62 -0
  630. package/src/detectors/organisation-run.ts +13 -2
  631. package/src/detectors/orthographic-variant.ts +85 -25
  632. package/src/detectors/orthography.ts +10 -1
  633. package/src/detectors/oxford-comma.ts +40 -1
  634. package/src/detectors/person-consistency.ts +5 -3
  635. package/src/detectors/phrase-match.ts +16 -5
  636. package/src/detectors/placeholder-text.ts +18 -3
  637. package/src/detectors/placeholder.ts +10 -3
  638. package/src/detectors/postcode-end.ts +16 -0
  639. package/src/detectors/prose-total-words.ts +18 -0
  640. package/src/detectors/registry/kanji-compound-slip.ts +4 -0
  641. package/src/detectors/registry/phrase-in-use.ts +4 -0
  642. package/src/detectors/requirement-smell.ts +38 -5
  643. package/src/detectors/scaled-figure-unit.ts +103 -0
  644. package/src/detectors/sentence-counts.ts +24 -8
  645. package/src/detectors/sentence-ending.ts +12 -3
  646. package/src/detectors/sentence-load.ts +9 -2
  647. package/src/detectors/signals.ts +33 -51
  648. package/src/detectors/structure-tree.ts +14 -14
  649. package/src/detectors/structure.ts +2 -1
  650. package/src/detectors/subject-name-line.ts +66 -0
  651. package/src/detectors/table-header.ts +15 -1
  652. package/src/detectors/technical-docs.ts +5 -1
  653. package/src/detectors/term-mention-sentence.ts +31 -0
  654. package/src/detectors/titled-run.ts +9 -4
  655. package/src/detectors/token-shape.ts +14 -5
  656. package/src/detectors/vague-density.ts +20 -4
  657. package/src/document-paragraphs.ts +27 -0
  658. package/src/document.ts +3 -23
  659. package/src/figure-references.ts +7 -2
  660. package/src/format-template.ts +15 -0
  661. package/src/formula-brackets.ts +36 -0
  662. package/src/html/html-markdown.ts +2 -1
  663. package/src/html/html-site-chrome.ts +47 -0
  664. package/src/joined-view.ts +1 -0
  665. package/src/kanji-compound-slip.ts +98 -0
  666. package/src/latin-company-form.ts +38 -0
  667. package/src/latin-word-boundary.ts +46 -0
  668. package/src/lexicon-genres.ts +1 -1
  669. package/src/link-shape.ts +19 -0
  670. package/src/link-title.ts +38 -0
  671. package/src/list-item-paragraphs.ts +22 -0
  672. package/src/literal-quote.ts +55 -0
  673. package/src/nado-closed-list.ts +48 -5
  674. package/src/name-separator.ts +27 -2
  675. package/src/nominal-stem.ts +62 -5
  676. package/src/person-forms.ts +15 -0
  677. package/src/plugin.ts +5 -0
  678. package/src/preamble-paragraphs.ts +13 -3
  679. package/src/spacing-code.ts +5 -1
  680. package/src/split-noun.ts +63 -0
  681. package/src/structure/attached-parts.ts +32 -0
  682. package/src/structure/build.ts +7 -4
  683. package/src/structure/contents-lines.ts +63 -0
  684. package/src/structure/defining-names.ts +155 -0
  685. package/src/structure/definition-use.ts +116 -25
  686. package/src/structure/issues.ts +7 -3
  687. package/src/structure/list-lead-in.ts +94 -0
  688. package/src/structure/modal-conflict.ts +42 -7
  689. package/src/structure/negated-act.ts +49 -0
  690. package/src/structure/numbering.ts +24 -9
  691. package/src/structure/prose-total.ts +20 -6
  692. package/src/structure/repeated-number.ts +110 -0
  693. package/src/structure/rounded-amount.ts +55 -0
  694. package/src/structure/side-step.ts +21 -0
  695. package/src/structure/spanned-label-blank.ts +39 -0
  696. package/src/structure/universal.ts +11 -2
  697. package/src/structure/unspaced-heading.ts +27 -0
  698. package/src/structure/written-list-path.ts +46 -0
  699. package/src/structure/written-resolve.ts +16 -9
  700. package/src/title-line.ts +52 -0
@@ -6,7 +6,7 @@ export type WrittenReading = {
6
6
  };
7
7
  /**
8
8
  * 平文の見出しの番地と、参照(Section 6.1(i))の親(6.1)が木の条か平文の見出しとしてあり、その範囲の本文に札「(i)」が
9
- * 書かれているかを引く関数。範囲ごとの札は、要るときに一度だけ読む。Pure.
9
+ * 書かれているか(札を行の頭に入れ子で書いた箇条書きも読む)を引く関数。Pure.
10
10
  */
11
11
  export declare const writtenReading: (nodes: readonly StructureNode[], source: string) => WrittenReading;
12
12
  //# sourceMappingURL=written-resolve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"written-resolve.d.ts","sourceRoot":"","sources":["../../src/structure/written-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAOlD,mEAAmE;AACnE,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAA;CAAE,CAAC;AAyBpI;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,aAAa,EAAE,EAAE,QAAQ,MAAM,KAAG,cAmBhF,CAAC"}
1
+ {"version":3,"file":"written-resolve.d.ts","sourceRoot":"","sources":["../../src/structure/written-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAQlD,mEAAmE;AACnE,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAA;CAAE,CAAC;AAoCpI;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,aAAa,EAAE,EAAE,QAAQ,MAAM,KAAG,cAchF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { headingRegions, parentAndLabels, writtenHeadings, writtenSubdivisions } from "./written-headings.js";
2
+ import { hasListPath, listLabels } from "./written-list-path.js";
2
3
  const targetOf = (node) => String(node.attrs["target"] ?? "");
3
4
  /**
4
5
  * 括弧の小見出しを読む範囲。木の条は、項や号を一つも読まなかったときだけ、その条の始まりから次の平文の見出しまで。
@@ -21,28 +22,33 @@ const treeRegions = (nodes, headings) => {
21
22
  });
22
23
  return regions;
23
24
  };
25
+ /** 範囲の本文を read で読んだ結果。範囲ごとに、要るときに一度だけ読む。 */
26
+ const perRegion = (source, read) => {
27
+ const cache = new Map();
28
+ return ([start, end]) => {
29
+ const key = `${String(start)}:${String(end)}`;
30
+ const found = cache.get(key) ?? read(source.slice(start, end));
31
+ cache.set(key, found);
32
+ return found;
33
+ };
34
+ };
24
35
  /**
25
36
  * 平文の見出しの番地と、参照(Section 6.1(i))の親(6.1)が木の条か平文の見出しとしてあり、その範囲の本文に札「(i)」が
26
- * 書かれているかを引く関数。範囲ごとの札は、要るときに一度だけ読む。Pure.
37
+ * 書かれているか(札を行の頭に入れ子で書いた箇条書きも読む)を引く関数。Pure.
27
38
  */
28
39
  export const writtenReading = (nodes, source) => {
29
40
  const references = nodes.filter((node) => node.kind === "reference").map((node) => ({ start: node.span.start, end: node.span.end, target: targetOf(node) }));
30
41
  const headings = writtenHeadings(references, source);
31
42
  const written = headingRegions(headings, source.length);
32
43
  const tree = treeRegions(nodes, headings);
33
- const labels = new Map();
34
- const labelsIn = ([start, end]) => {
35
- const key = `${String(start)}:${String(end)}`;
36
- const found = labels.get(key) ?? writtenSubdivisions(source.slice(start, end));
37
- labels.set(key, found);
38
- return found;
39
- };
44
+ const labelsIn = perRegion(source, writtenSubdivisions);
45
+ const listIn = perRegion(source, listLabels);
40
46
  const regionsOf = (address) => [...(tree.get(address) ?? []), ...(written.get(address) ?? [])];
41
47
  const subdivision = (reference) => {
42
48
  const wanted = parentAndLabels(targetOf(reference), String(reference.attrs["label"] ?? ""));
43
49
  if (wanted === undefined)
44
50
  return false;
45
- return regionsOf(wanted.parent).some((region) => wanted.labels.every((label) => labelsIn(region).has(label)));
51
+ return regionsOf(wanted.parent).some((region) => wanted.labels.every((label) => labelsIn(region).has(label)) || hasListPath(listIn(region), wanted.labels));
46
52
  };
47
53
  return { addresses: headings.map((heading) => heading.address), subdivision };
48
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"written-resolve.js","sourceRoot":"","sources":["../../src/structure/written-resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"written-resolve.js","sourceRoot":"","sources":["../../src/structure/written-resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * How a reader tells a title from a sentence. dangling-figure-reference reads a caption of any labelled thing; duplicate-
3
+ * definition reads where an attached instrument starts. Their notions differ, so each says how.
4
+ */
5
+ export type TitleNotion = {
6
+ /** A title ending in one of these is a sentence or runs on. duplicate-definition also refuses a trailing `: ; ,`. */
7
+ readonly sentenceEnd: RegExp;
8
+ /** Every word longer than three letters starts with a capital. dangling-figure-reference only: Figure 3 shows the trend. */
9
+ readonly capitalised: boolean;
10
+ /**
11
+ * "any-whitespace": the document's edge may be reached across any whitespace (a line of U+3000 or NBSP before the
12
+ * first line). "blank-line": only lines of spaces and tabs count. dangling-figure-reference takes the first.
13
+ */
14
+ readonly edge: "any-whitespace" | "blank-line";
15
+ };
16
+ /**
17
+ * The line from lineStart to lineEnd (-1: the last line) is a title: rest, the words after its label and number, are a
18
+ * short title, and a blank line or the document's edge is on both sides.
19
+ */
20
+ export declare const isTitleLine: (source: string, lineStart: number, lineEnd: number, rest: string, notion: TitleNotion) => boolean;
21
+ //# sourceMappingURL=title-line.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title-line.d.ts","sourceRoot":"","sources":["../src/title-line.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,qHAAqH;IACrH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4HAA4H;IAC5H,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAAC;CAChD,CAAC;AA2BF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,SAAS,MAAM,EAAE,MAAM,MAAM,EAAE,QAAQ,WAAW,KAAG,OAG7B,CAAC"}
@@ -0,0 +1,27 @@
1
+ // A title written on a line of its own, as a plain-text heading (Exhibit A to Merger Agreement, ANNEX 1): a few words with
2
+ // no full stop, and a blank line or the document's edge on both sides. Pure.
3
+ /** A title runs at most this many words after its label and number. */
4
+ const TITLE_MAX_WORDS = 6;
5
+ /** A word this long or shorter may stay in lower case in a title (to, of, the, and). */
6
+ const TITLE_SMALL_WORD = 3;
7
+ const BLANK_LINE = /\n[ \t\r]*\n[ \t\r]*$/u;
8
+ const ENDS_LINE = /^[ \t\r]*\n/u;
9
+ const BLANK = /^[ \t\r]*$/u;
10
+ const LOWER_START = /^\p{Ll}/u;
11
+ const isShortTitle = (rest, notion) => {
12
+ const title = rest.trim();
13
+ const words = title.split(/\s+/u).filter((word) => word !== "");
14
+ return (words.length <= TITLE_MAX_WORDS &&
15
+ !notion.sentenceEnd.test(title) &&
16
+ (!notion.capitalised || words.every((word) => word.length <= TITLE_SMALL_WORD || !LOWER_START.test(word))));
17
+ };
18
+ const isAloneBefore = (before, notion) => before === "" || BLANK_LINE.test(`\n${before}`) || (notion.edge === "any-whitespace" && before.trim() === "");
19
+ const isAloneAfter = (after, isLastLine, notion) => isLastLine || ENDS_LINE.test(after) || BLANK.test(after) || (notion.edge === "any-whitespace" && after.trim() === "");
20
+ /**
21
+ * The line from lineStart to lineEnd (-1: the last line) is a title: rest, the words after its label and number, are a
22
+ * short title, and a blank line or the document's edge is on both sides.
23
+ */
24
+ export const isTitleLine = (source, lineStart, lineEnd, rest, notion) => isShortTitle(rest, notion) &&
25
+ isAloneBefore(source.slice(0, lineStart), notion) &&
26
+ isAloneAfter(lineEnd === -1 ? "" : source.slice(lineEnd + 1), lineEnd === -1, notion);
27
+ //# sourceMappingURL=title-line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"title-line.js","sourceRoot":"","sources":["../src/title-line.ts"],"names":[],"mappings":"AAAA,2HAA2H;AAC3H,6EAA6E;AAkB7E,uEAAuE;AACvE,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,MAAM,SAAS,GAAG,cAAc,CAAC;AACjC,MAAM,KAAK,GAAG,aAAa,CAAC;AAC5B,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,MAAmB,EAAW,EAAE;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAChE,OAAO,CACL,KAAK,CAAC,MAAM,IAAI,eAAe;QAC/B,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3G,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,MAAmB,EAAW,EAAE,CACrE,MAAM,KAAK,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,UAAmB,EAAE,MAAmB,EAAW,EAAE,CACxF,UAAU,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAExH;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAe,EAAE,IAAY,EAAE,MAAmB,EAAW,EAAE,CAC5H,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IACjD,YAAY,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chaffjs",
3
- "version": "0.35.0",
3
+ "version": "0.36.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.32.0",
92
- "@chaffjs/lang-ja": "0.34.0",
91
+ "@chaffjs/lang-en": "0.33.0",
92
+ "@chaffjs/lang-ja": "0.35.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",
@@ -41,8 +41,8 @@ example:
41
41
  Do not delete the log. Do not delete this file before the audit.
42
42
 
43
43
  not_flagged:
44
- ja: 三語以上の連なりだけを見ます。略語の並び(文書のほかの所で小文字で書かれない語)とコードは見ません。仕様書の MUST や SHALL は慣習の大文字として数えません。段落の頭に置いた大文字の見出し語(「AGENCY:」「WORKING GROUP MEMBERS」のように、コロンで終わるか一行で段落になるもの)と、本文でその見出し語を挙げた所も見ません。法令と文学の文書では既定で止めています(大文字で目立たせる決まりや、題を大文字で組む慣習があるため)。
45
- en: Only runs of three or more words. Runs of acronyms (words never written in lower case elsewhere) and code are not reported, and MUST or SHALL in a specification count as conventional capitals. A caption in capitals that opens a paragraph and ends in a colon or stands alone ("AGENCY:", "WORKING GROUP MEMBERS"), and prose naming such a caption, are not reported either. The legal and literature presets turn it off, since contracts set disclaimers in capitals by rule and older texts set titles that way.
44
+ ja: 三語以上の連なりだけを見ます。略語の並び(文書のほかの所で小文字で書かれない語)とコードは見ません。仕様書の MUST や SHALL は慣習の大文字として数えません。段落の頭に置いた大文字の見出し語(「AGENCY:」「WORKING GROUP MEMBERS」のように、コロンで終わるか一行で段落になるもの)と、本文でその見出し語を挙げた所も見ません。文書の頭で最初の文より前にある、全部の行が大文字で文で終わらない段落(「BOARD OF GOVERNORS」で始まるレターヘッドや宛名)も見ません。法令と文学の文書では既定で止めています(大文字で目立たせる決まりや、題を大文字で組む慣習があるため)。
45
+ en: Only runs of three or more words. Runs of acronyms (words never written in lower case elsewhere) and code are not reported, and MUST or SHALL in a specification count as conventional capitals. A caption in capitals that opens a paragraph and ends in a colon or stands alone ("AGENCY:", "WORKING GROUP MEMBERS"), and prose naming such a caption, are not reported either. Nor is a paragraph at the head of the document, before its first sentence, whose lines are all in capitals and end no sentence, such as a letterhead or an addressee block ("BOARD OF GOVERNORS"). The legal and literature presets turn it off, since contracts set disclaimers in capitals by rule and older texts set titles that way.
46
46
  level_meaning:
47
47
  ja: "{limit} 箇所あれば指摘"
48
48
  en: reported once there are {limit}
@@ -9,8 +9,8 @@ name:
9
9
  en: A list that does not have the number of items announced
10
10
 
11
11
  why:
12
- ja: 「以下の3点」と書いたのに、すぐ下の箇条書きが2つや4つだと、読み手は抜けた項目があるのか、数え間違いなのかを確かめることになります。項目を足したり消したりしたあとに、予告の数を直し忘れると起きます。箇条書きのすぐ前の文が、「以下の」「次の」のような先を指す語か、終わりのコロン(:)と一緒に数(3点、2つ、4項目)を書いているときだけ、その数を箇条書きのいちばん外側の項目の数と比べます。「出席者(6名):田中、鈴木、…」のように、ラベルの後ろの括弧に数を書き、コロンの後ろに読点やコンマで区切って名前を並べた行も、括弧の数と並べた名前の数を比べます。
13
- en: 'When a sentence says "the following three steps" and the list right below it has two or four, the reader has to check whether an item is missing or the count is wrong. It happens when an item is added or removed and the count is not updated. The number is compared with the items at the top level of the list only when the sentence right before the list announces it, with a word pointing ahead ("following", "below") or a colon at its end, and the number names what the list holds ("three steps", "two reasons"). A line with a count in brackets after a label and names after the colon, split at commas ("Attendees (6): Tanaka, Suzuki, ..."), is checked the same way: the count against the names listed.'
12
+ ja: 「以下の3点」と書いたのに、すぐ下の箇条書きが2つや4つだと、読み手は抜けた項目があるのか、数え間違いなのかを確かめることになります。項目を足したり消したりしたあとに、予告の数を直し忘れると起きます。箇条書きのすぐ前の文が、「以下の」「次の」のような先を指す語か、終わりのコロン(:)と一緒に数(3点、2つ、4項目)を書いているときだけ、その数を箇条書きのいちばん外側の項目の数と比べます。箇条書きのすぐ上が「3行要約」のように数と見出しの語だけの一行なら、その数も比べます。「出席者(6名):田中、鈴木、…」のように、ラベルの後ろの括弧に数を書き、コロンの後ろに読点やコンマで区切って名前を並べた行も、括弧の数と並べた名前の数を比べます。
13
+ en: 'When a sentence says "the following three steps" and the list right below it has two or four, the reader has to check whether an item is missing or the count is wrong. It happens when an item is added or removed and the count is not updated. The number is compared with the items at the top level of the list only when the sentence right before the list announces it, with a word pointing ahead ("following", "below") or a colon at its end, and the number names what the list holds ("three steps", "two reasons"). A line right above the list that holds only a number and a heading word ("Three-line summary") is compared too. A line with a count in brackets after a label and names after the colon, split at commas ("Attendees (6): Tanaka, Suzuki, ..."), is checked the same way: the count against the names listed.'
14
14
 
15
15
  message:
16
16
  ja: 「{phrase}」と予告していますが、すぐ下の箇条書きは{listed}項目です
@@ -51,8 +51,8 @@ example:
51
51
  Prices are on [the pricing page](https://example.com/pricing). Send questions through [the contact form](https://example.com/contact) today.
52
52
 
53
53
  not_flagged:
54
- ja: 山括弧で囲んだ URL(<https://…>)、言葉が URL のリンク、コードと引用の中の URL は指しません。参照の形のリンク([言葉][1])は言葉のリンクに数えません。言葉のリンクが指摘に要る数に届かない文書と、URL をそのまま書くほうが多い文書も指しません。
55
- en: A URL in angle brackets ("<https://…>"), a link whose text is the URL, and URLs in code or quotations are not reported; reference-style links ("[text][1]") are not counted as worded links; nor is a document with fewer worded links than the level needs, or one where bare URLs are not the few.
54
+ ja: 山括弧で囲んだ URL(<https://…>)、言葉が URL のリンク、コードと引用の中の URL、項目の値として行に一つだけ書いた URL(**ライセンス本文** https://…)は指しません。参照の形のリンク([言葉][1])は言葉のリンクに数えません。言葉のリンクが指摘に要る数に届かない文書と、URL をそのまま書くほうが多い文書も指しません。
55
+ en: A URL in angle brackets ("<https://…>"), a link whose text is the URL, URLs in code or quotations, and a URL that is a field's value alone on its line ("**Licence text** https://…") are not reported; reference-style links ("[text][1]") are not counted as worded links; nor is a document with fewer worded links than the level needs, or one where bare URLs are not the few.
56
56
  level_meaning:
57
57
  ja: 言葉のリンクが {limit} 個以上ある文書で指摘
58
58
  en: reported in a document with {limit} or more worded links
@@ -41,8 +41,8 @@ example:
41
41
  The fee is waived on request for members, including student members under 25.
42
42
 
43
43
  not_flagged:
44
- ja: 二重までの括弧、開きの無い閉じ括弧(「1)」)、コードと数式($…$)の中の括弧、波括弧は数えません。
45
- en: Two levels of brackets, a closing bracket with no opener ("1)"), brackets in code or in a formula ($…$), and curly braces are not counted.
44
+ ja: 二重までの括弧、開きの無い閉じ括弧(「1)」)、コードと数式($…$)の中の括弧、波括弧は数えません。そのとおりに打ち込む文字列の引用(件名に「応募(総務課)」と記載、「【様式】(氏名)」とファイル名を変更)は、中の括弧が文字列の一部で外せないので、一つの括弧として数えます。
45
+ en: Two levels of brackets, a closing bracket with no opener ("1)"), brackets in code or in a formula ($…$), and curly braces are not counted. A quotation of a string to type as it stands (an e-mail subject, a file name, as in with the subject line “Entry (Training)”) counts as one bracket, since its own brackets cannot be taken out.
46
46
  level_meaning:
47
47
  ja: 括弧の重なり {limit} 重まで
48
48
  en: brackets nested up to {limit} deep
@@ -44,8 +44,8 @@ example:
44
44
  会議(定例)は月曜です。報告(月次)は金曜です。資料(最新版)を配ります。
45
45
 
46
46
  not_flagged:
47
- ja: 日本語の字に接する括弧だけを数えます。英語の中の括弧(f(x)、API(s))、コード、鉤括弧で引いたものの中は数えません。
48
- en: Only brackets touching Japanese text. Brackets in English text (f(x)), code, and 「」 quotations are not counted.
47
+ ja: 日本語の字に接する括弧だけを数えます。英語の中の括弧(f(x)、API(s))、式の括弧(賃金 × (1 - 時間 ÷ 月平均))、コード、鉤括弧で引いたものの中、行の頭のリンクで引いた外のページの題名(- [題名 (版)](https://…))は数えません。
48
+ en: Only brackets touching Japanese text. Brackets in English text (f(x)), brackets in a formula (賃金 × (1 - 時間 ÷ 月平均)), code, 「」 quotations, and the title of an outside page quoted by a link at a line's head (- [Title (draft)](https://…)) are not counted.
49
49
  level_meaning:
50
50
  ja: 少ないほうの書き方が {limit} 箇所あれば指摘
51
51
  en: reported once the less common way appears {limit} times
@@ -61,5 +61,5 @@ example:
61
61
  Gather the tools. See [Setup](#setup) for more.
62
62
 
63
63
  not_flagged:
64
- ja: 見出しの名前は字と数字だけで比べ、大文字小文字や記号の違いは問いません。「[1][2]」のような文献の番号、「A[i][j]」のような添字、使われていない定義も指しません。
65
- en: Heading anchors are compared on letters and digits only, ignoring case and punctuation. Citation numbers ("[1][2]"), subscripts ("A[i][j]") and definitions no link uses are not reported.
64
+ ja: 見出しの名前は字と数字だけで比べ、大文字小文字や記号の違いは問いません。「[1][2]」のような文献の番号、「A[i][j]」のような添字、使われていない定義、サイトが定義を足す名前を省いた画像の参照(「![完了][]」の印)も指しません。
65
+ en: Heading anchors are compared on letters and digits only, ignoring case and punctuation. Citation numbers ("[1][2]"), subscripts ("A[i][j]"), definitions no link uses and an image reference with its label left out ("![Complete][]", a status icon the site defines) are not reported.
package/rules/cliche.yaml CHANGED
@@ -1,8 +1,9 @@
1
1
  id: cliche
2
2
  layer: L2
3
3
  status: stable
4
- how_to_find: phrase-match
4
+ how_to_find: phrase-in-use
5
5
  word_list: cliche
6
+ extra_word_lists: [mention-cue]
6
7
  requires: [pos]
7
8
  languages: [ja, en]
8
9
  severity: info
@@ -47,8 +48,8 @@ example:
47
48
  The new cache cuts load time from 2 seconds to 0.5.
48
49
 
49
50
  not_flagged:
50
- ja: 一覧にある言い回しだけを見ます。見出しの中は見ず、本文の文だけを見ます。ほかの規則が見る言い回し(closing-cliche の「いかがでしたか」、ai-tell の「深く掘り下げる」「game-changer」、empty-intensifier の「needless to say」)は入れていません。「結論から言うと」は人の記事にも同じくらいあるので、「〜まとめ」「〜な件」は普通の文(まとめました、重要な件)と分けられないので見ません。文学と講演の書き起こしは対象にしません。
51
- en: Only the phrases on chaff's list are checked, in body sentences; headings are not read. Phrases another rule reads (いかがでしたか in closing-cliche, "game-changer" in ai-tell, "needless to say" in empty-intensifier) are not on it. In Japanese, 結論から言うと is left out because human articles use it as often, and 〜まとめ and 〜な件 because ordinary sentences share them (まとめました, 重要な件). Literature and speech transcripts are not checked.
51
+ ja: 一覧にある言い回しだけを見ます。見出しの中は見ず、本文の文だけを見ます。ほかの規則が見る言い回し(closing-cliche の「いかがでしたか」、ai-tell の「深く掘り下げる」「game-changer」、empty-intensifier の「needless to say」)は入れていません。「結論から言うと」は人の記事にも同じくらいあるので、「〜まとめ」「〜な件」は普通の文(まとめました、重要な件)と分けられないので見ません。文学と講演の書き起こしは対象にしません。言い回しを言葉として名指しているだけのもの(「徹底解説」という言い方、the phrase "low-hanging fruit")も指しません。
52
+ en: Only the phrases on chaff's list are checked, in body sentences; headings are not read. Phrases another rule reads (いかがでしたか in closing-cliche, "game-changer" in ai-tell, "needless to say" in empty-intensifier) are not on it. In Japanese, 結論から言うと is left out because human articles use it as often, and 〜まとめ and 〜な件 because ordinary sentences share them (まとめました, 重要な件). Literature and speech transcripts are not checked. A phrase that is only named as a term ("when saying raising the bar", the phrase "low-hanging fruit", 「徹底解説」という言い方) is not reported.
52
53
  level_meaning:
53
54
  ja: 当てはまる言い回しが {limit} 箇所あれば指摘
54
55
  en: reported once there are {limit}
@@ -121,8 +121,8 @@ example:
121
121
  ```
122
122
 
123
123
  not_flagged:
124
- ja: 字下げだけのコードブロック、引用の中のブロックは見ません。言語名の無いブロックが {limit} 個を超えるとき、または言語名のあるブロックより多いときは、使い分けとみなして指しません。
125
- en: Indented code blocks and blocks inside a quotation are not read. When more than {limit} blocks lack a language, or they are as many as those with one, it is taken as a choice and not reported.
124
+ ja: 字下げだけのコードブロック、引用の中のブロック、書式の型だけを書いたブロック(<MAJOR>.<MINOR>.<PATCH>)は見ません。言語名の無いブロックが {limit} 個を超えるとき、または言語名のあるブロックより多いときは、使い分けとみなして指しません。
125
+ en: Indented code blocks, blocks inside a quotation, and blocks that hold only a format template (<MAJOR>.<MINOR>.<PATCH>) are not read. When more than {limit} blocks lack a language, or they are as many as those with one, it is taken as a choice and not reported.
126
126
  level_meaning:
127
127
  ja: 言語名の無いブロックが {limit} 個以下で、ある方より少ないとき指摘
128
128
  en: reported when {limit} or fewer blocks lack a language and they are fewer than those with one
@@ -42,8 +42,8 @@ example:
42
42
  after: We rewrote the parser. The new engine is twice as fast as version 2.
43
43
 
44
44
  not_flagged:
45
- ja: 同じ文か直前の文に比べる相手(従来、以前、前回、昨年、「〜より」「〜に比べて」)がある比較、「より多くの」「より詳しく」のような決まった言い方、程度を言う語が続かない「さらに」(さらに、〜します)、条件の下の比較(入れるとより良くなる)は指しません。
46
- en: 'A comparison whose sentence or the one before names a baseline ("than", "previous", "before", "compared"), a comparative before a noun ("better results", read only in Japanese), a comparative that does not close its clause ("runs faster on large files"), and one under a condition or a hypothesis ("if it looks better", "would be easier") are not reported.'
45
+ ja: 同じ文か直前の文に比べる相手(従来、以前、前回、昨年、「〜より」「〜に比べて」「〜一方」)がある比較、「より多くの」「より詳しく」のような決まった言い方、程度を言う語が続かない「さらに」(さらに、〜します)、条件の下の比較(入れるとより良くなる)、今より良くする目当て(より良い社会、より良いものにする、より簡単にする)は指しません。
46
+ en: 'A comparison whose sentence or the one before names a baseline ("than", "previous", "before", "compared", "whereas"), one that goes past what was just named ("even better", "still faster"), a comparative before a noun ("better results", read only in Japanese), a comparative that does not close its clause ("runs faster on large files"), one under a condition or a hypothesis ("if it looks better", "would be easier"), and an aim to make something better than it is now (より良い社会, より良いものにする, より簡単にする in Japanese) are not reported.'
47
47
 
48
48
  rewrite:
49
49
  depth: light
@@ -59,5 +59,5 @@ example:
59
59
  Figure 2: Costs by month
60
60
 
61
61
  not_flagged:
62
- ja: 図や表を行の頭に一つも書いていない文書、長い語の一部(地図3、一覧表2)、別の法令の別表(法別表第二)、図の数(図3枚)、コードの中は見ません。
63
- en: 'A document that labels no figure or table at the start of a line, a figure of another document ("Figure 5 of the 2024 report"), and code are not checked.'
62
+ ja: 図や表を行の頭に一つも書いていない文書、長い語の一部(地図3、一覧表2)、別の法令の別表(法別表第二)、図の数(図3枚)、コードの中は見ません。前後を空行に挟まれた、題だけの短い行(Exhibit A to Merger Agreement)も見出しとして、そこにあるとみなします。
63
+ en: 'A document that labels no figure or table at the start of a line, a figure of another document ("Figure 5 of the 2024 report"), and code are not checked. A short title on a line of its own between blank lines ("Exhibit A to Merger Agreement") is read as a heading, so that exhibit is there.'
@@ -29,6 +29,14 @@ how_to_fix:
29
29
 
30
30
  levels: { strict: warning, normal: info, relaxed: info }
31
31
 
32
+ options:
33
+ dated_genres:
34
+ kind: words
35
+ default: [business/meeting-notes, business/email]
36
+ about:
37
+ ja: 頭の日付が、書かれたことの起きた日(会議の日、手紙の日)になっている genre。その日付から5か月以内の月日は、その年と読む。Web ページの頭の日付は載せた日で、月日はどの年のこともある
38
+ en: Genres whose date at the top is the day the text is about (the meeting, the letter). A day and month within five months of it is read as that year's. A web page's date at the top is the day it was posted, and its days and months may be any year's
39
+
32
40
  use_for: [business, technical, blog, legal, docs, academic, literature, speech]
33
41
 
34
42
  group: structure
@@ -64,8 +72,8 @@ example:
64
72
  - October 28, 2026: results sent
65
73
 
66
74
  not_flagged:
67
- ja: 年のある日付がみな同じ年の文書では、年の無い日付を指しません(どの年か読み手に分かるため)。年を一度だけ書いて、あとの日付は月と日だけで書く文書(年の無い日付のほうが多い文書)も、書き方の選び方として指しません。ただしどちらの場合も、年をまたぐ日付は指します。見出しが年を名指す節(「2026年度の予定」「令和8年の行事」「FY27」)の日付は、見出しから年が決まるので指しません。どの年のものでもない日付も指しません。毎年の日(毎年4月1日、決算日は12月31日、年末年始閉庁日(12月29日~1月3日)、4月1日から翌年3月31日まで、1月1日から12月31日までのような一年の期間)と、例の日付(例えば…4月1日に届いた場合、例:のあとの日付、例の項目に続く「もし…」の項目)です。年のある日付が一つも無い文書、月だけ・年だけの日付は見ません。
68
- en: A document whose dated dates are all in one year is not reported, since the reader can tell the year. A document that writes the year once and the rest as month and day (more yearless dates than dated ones) is a style, and not reported either. In both, a date across the turn of a year is still reported. A date in a section whose heading names the year ("2026 events", "FY27-Q2") takes its year from the heading and is not reported. Nor is a date of no one year, such as a day that comes round every year ("every year on April 1", "each December 31", "the fiscal year end is March 31", "April 1 to March 31 of the following year", a whole year such as "January 1 to December 31") and a date in a worked example ("for example, a request received on April 1", the dates after "e.g.", a list item opening with "If" just after an example's item). A document with no dated date, and month-only and year-only dates, are not checked.
75
+ ja: 年のある日付がみな同じ年の文書では、年の無い日付を指しません(どの年か読み手に分かるため)。年を一度だけ書いて、あとの日付は月と日だけで書く文書(年の無い日付のほうが多い文書)も、書き方の選び方として指しません。ただしどちらの場合も、年をまたぐ日付は指します。見出しが年を名指す節(「2026年度の予定」「令和8年の行事」「FY27」)の日付は、見出しから年が決まるので指しません。文書の日付を頭に書いた議事録や手紙(dated_genres の genre。題の下の「2024年1月17日」の行)では、その日付から5か月以内に収まる月日もその年と読めるので指しません。どの年のものでもない日付も指しません。毎年の日(毎年4月1日、決算日は12月31日、年末年始閉庁日(12月29日~1月3日)、4月1日から翌年3月31日まで、1月1日から12月31日までのような一年の期間)と、例の日付(例えば…4月1日に届いた場合、例:のあとの日付、例の項目に続く「もし…」の項目)です。年のある日付が一つも無い文書、月だけ・年だけの日付は見ません。
76
+ en: A document whose dated dates are all in one year is not reported, since the reader can tell the year. A document that writes the year once and the rest as month and day (more yearless dates than dated ones) is a style, and not reported either. In both, a date across the turn of a year is still reported. A date in a section whose heading names the year ("2026 events", "FY27-Q2") takes its year from the heading and is not reported. In minutes or a letter (the genres of the dated_genres option) that carry their own date at the top ("January 17, 2024" under the title), a day and month within five months of that date takes the year that puts it there, and is not reported. Nor is a date of no one year, such as a day that comes round every year ("every year on April 1", "each December 31", "the fiscal year end is March 31", "April 1 to March 31 of the following year", a whole year such as "January 1 to December 31") and a date in a worked example ("for example, a request received on April 1", the dates after "e.g.", a list item opening with "If" just after an example's item). A document with no dated date, and month-only and year-only dates, are not checked.
69
77
  rewrite:
70
78
  depth: light
71
79
  ja:
@@ -83,8 +83,8 @@ example:
83
83
  3. You must not resell the Services.
84
84
 
85
85
  not_flagged:
86
- ja: 定義そのもの(以下「本サービス」という、「本サービス」とは)、定義より前の使用(use-before-definition が見ます)、文の頭の大文字、小文字の使用が {limit} 個を超えるか大文字の使用より多い語(ふつうの意味で使っているとみなす)は指しません。定義の文の中の使用(「顧客」とは、表紙に「顧客」と書いた者をいう)も見ません。法令・規程(statute の profile で読む文書)は、語そのものを指すために語をかぎ括弧に入れる(「株主」とあるのは、「個人情報」の定義)ので、かぎ括弧に入れ直した語は指しません。小文字の語句は、形容詞で始まるもの、形容詞や所有の語が前に付くもの(its own confidential information、additional terms of service)は普通の語句として見ません。「本」と「本件」を入れ替えた形は、その形も定義した語であるとき、長い語の一部(見本物品)のときは見ません。長くした語は、指す語(当該・前記・同・各)が前に付いただけのもの、二字以下の語(提供、登録)を長くしたもの、定義の文がその長い語を書いているもの(東京都(以下「都」という。))、その長い語も定義した語であるもの、複数形(Boxes)は見ません。
87
- en: 'The definitions themselves ("Services" means, (the "Services")), uses before the definition (use-before-definition reads those), capitals at the start of a sentence, and terms written in lower case more than {limit} times or more often than capitalised (taken as the ordinary word used on purpose) are not reported, nor is a use inside the defining sentence ("Customer" means the party named "Customer"). A statute or a regulation (a document read with the statute profile) quotes a term to talk about the term itself ("controller" has the same meaning as in Part 3), so a quoted term is not reported there. A lower-case phrase that starts with an adjective, or that an adjective or a possessive comes before (its own confidential information, additional terms of service), is the ordinary phrase and is not reported. A term with its other prefix (本件業務 for 本業務) is not reported when that form is defined too, or inside a longer word (見本物品). A longer word is not reported when only a pointing word comes before the term (当該管理責任者), when the term has two characters or fewer (提供, 登録), when the definition itself writes the longer word (東京都(以下「都」という。)), when the longer word is defined too, or when it is a plural (Boxes).'
86
+ ja: 定義そのもの(以下「本サービス」という、「本サービス」とは)、定義より前の使用(use-before-definition が見ます)、文の頭の大文字、小文字の使用が {limit} 個を超えるか大文字の使用より多い語(ふつうの意味で使っているとみなす)は指しません。定義の文の中の使用(「顧客」とは、表紙に「顧客」と書いた者をいう)も見ません。法令・規程(statute の profile で読む文書)は、語そのものを指すために語をかぎ括弧に入れる(「株主」とあるのは、「個人情報」の定義)ので、かぎ括弧に入れ直した語は指しません。小文字の語句は、形容詞で始まるもの、形容詞や所有の語や名詞が前に付くもの(its own confidential information、additional terms of service、a common parent、a limited liability company)、of と冠詞の無い名詞が後ろに続くもの(certificates of deposit)、別の定義した語の一部であるもの(Certificate of Merger と定義した文書の certificate of merger)は普通の語句として見ません。ただし、the other party、such company のように指す語が前に付くものは指します。引用符に入れた語でも、前の語がその語を語として挙げているもの(the definition of "Material Adverse Effect"、the term "Affiliate")は見ません。「本」と「本件」を入れ替えた形は、その形も定義した語であるとき、長い語の一部(見本物品)のときは見ません。長くした語は、指す語(当該・前記・同・各)が前に付いただけのもの、二字以下の語(提供、登録)を長くしたもの、定義の文がその長い語を書いているもの(東京都(以下「都」という。))、その長い語も定義した語であるもの、複数形(Boxes)は見ません。
87
+ en: 'The definitions themselves ("Services" means, (the "Services")), uses before the definition (use-before-definition reads those), capitals at the start of a sentence, and terms written in lower case more than {limit} times or more often than capitalised (taken as the ordinary word used on purpose) are not reported, nor is a use inside the defining sentence ("Customer" means the party named "Customer"). A statute or a regulation (a document read with the statute profile) quotes a term to talk about the term itself ("controller" has the same meaning as in Part 3), so a quoted term is not reported there. A lower-case phrase that starts with an adjective, or that an adjective, a possessive or a noun comes before (its own confidential information, additional terms of service, a common parent, a limited liability company), one followed by "of" and a bare noun (certificates of deposit), and one inside another defined term (certificate of merger where Certificate of Merger is defined) is the ordinary phrase and is not reported; after a pointing word (the other party, such company) it is. Nor is a quoted term that the words before it name as a term (the definition of "Material Adverse Effect", the term "Affiliate"). A term with its other prefix (本件業務 for 本業務) is not reported when that form is defined too, or inside a longer word (見本物品). A longer word is not reported when only a pointing word comes before the term (当該管理責任者), when the term has two characters or fewer (提供, 登録), when the definition itself writes the longer word (東京都(以下「都」という。)), when the longer word is defined too, or when it is a plural (Boxes).'
88
88
  level_meaning:
89
89
  ja: 小文字の使用が {limit} 個以下で、大文字の使用より少ないとき指摘
90
90
  en: lower-case uses reported when they are {limit} or fewer and fewer than the capitalised ones
@@ -9,8 +9,8 @@ name:
9
9
  en: Doubled punctuation
10
10
 
11
11
  why:
12
- ja: 「。。」「、、」「、。」のように句読点が二つ並ぶのは、打ち直しや貼り付けで残った印です。読み手はそこで止まり、急いで書いた文書に見えます。同じ印を三つ以上並べたもの(「...」「。。。」)はわざと伸ばした書き方なので数えません。「e.g.,」「etc.;」のような略語の点の後ろの読点、「、.NET」のように次の語の頭の点、「1..10」「../」のような範囲や道のり、コードと URL も数えません。「!!」「??」は文体の選び方なので見ません。
13
- en: Two punctuation marks side by side ("..", ",,", "i.e.,,") are left over from an edit or a paste. The reader stops there, and the document looks rushed. Three or more of the same mark ("...") are drawn out on purpose and are not counted, nor is the comma or semicolon after an abbreviation's period ("e.g.,", "etc.;"), a period that starts the next word (".NET"), a range or path ("1..10", "../"), code or a URL. "!!" and "??" are a matter of style and are not checked.
12
+ ja: 「。。」「、、」「、。」のように句読点が二つ並ぶのは、打ち直しや貼り付けで残った印です。読み手はそこで止まり、急いで書いた文書に見えます。同じ印を三つ以上並べたもの(「...」「。。。」)はわざと伸ばした書き方なので数えません。「e.g.,」「etc.;」のような略語の点の後ろの読点、英字の会社の名前の形の点と「,」(INC.、 CO.,LTD.)、「、.NET」のように次の語の頭の点、「1..10」「../」のような範囲や道のり、コードと URL も数えません。「!!」「??」は文体の選び方なので見ません。
13
+ en: Two punctuation marks side by side ("..", ",,", "i.e.,,") are left over from an edit or a paste. The reader stops there, and the document looks rushed. Three or more of the same mark ("...") are drawn out on purpose and are not counted, nor is the comma or semicolon after an abbreviation's period ("e.g.,", "etc.;"), the points and comma of a company form in a Japanese sentence ("INC.、", "CO.,LTD."), a period that starts the next word (".NET"), a range or path ("1..10", "../"), code or a URL. "!!" and "??" are a matter of style and are not checked.
14
14
 
15
15
  message:
16
16
  ja: 「{marks}」と句読点が重なっています
@@ -41,5 +41,5 @@ example:
41
41
  We will send the file today, as agreed.
42
42
 
43
43
  not_flagged:
44
- ja: 「...」「。。。」のように三つ以上並べたものと、そのすぐ後ろの一つの印(「...。」「、、、。」)、「e.g.,」「etc.;」のような略語の後ろ、「1..10」「../」のような範囲と道のり、「!!」「??」とコロンは指しません。
45
- en: Three or more of one mark ("...", "。。。") and one mark right after them ("...。", "、、、。"), the mark after an abbreviation ("e.g.,", "etc.;"), ranges and paths ("1..10", "../"), "!!", "??" and colons are not reported.
44
+ ja: 「...」「。。。」のように三つ以上並べたものと、そのすぐ後ろの一つの印(「...。」「、、、。」)、「e.g.,」「etc.;」のような略語の後ろ、英字の会社の形(INC.、 CO.,LTD.)、「1..10」「../」のような範囲と道のり、「!!」「??」とコロンは指しません。
45
+ en: Three or more of one mark ("...", "。。。") and one mark right after them ("...。", "、、、。"), the mark after an abbreviation ("e.g.,", "etc.;") or a company form ("CO.,LTD."), ranges and paths ("1..10", "../"), "!!", "??" and colons are not reported.
@@ -11,8 +11,8 @@ name:
11
11
  en: Word written twice
12
12
 
13
13
  why:
14
- ja: 「資料をを送ります」「確認確認します」のように同じ語が続くのは、消し忘れか、書き換えの途中で残った語です。読み手はつまずき、急いで書いた文書に見えます。重ねて「それぞれの」を言う名詞(人・単位・時・場所。「個人個人」「一行一行」「毎年毎年」)、名詞や形容詞を重ねて強める形(「駄目駄目」「若い若い」)、擬音・擬態語(「ムクムク」「もちもち」)、笑い声(「ははは」)、決まった言い回し(「などなど」「あるある」)は、重ねるのが正しい書き方なので数えていません。
15
- en: The same word twice in a row ("the the"), or two words where English takes one ("our the platform"), is left over from an edit. The reader stumbles, and the document looks rushed. Repeats that grammar allows ("had had", "that that", "is, is") and repeats for emphasis ("very very") are not counted.
14
+ ja: 「資料をを送ります」「確認確認します」のように同じ語が続くのは、消し忘れか、書き換えの途中で残った語です。読み手はつまずき、急いで書いた文書に見えます。括弧の注を挟んで同じ助詞が二度ある形(「本規約は(以下、規約)は」)も、注を書き足したときの消し忘れです。重ねて「それぞれの」を言う名詞(人・単位・時・場所。「個人個人」「一行一行」「毎年毎年」)、名詞や形容詞を重ねて強める形(「駄目駄目」「若い若い」)、擬音・擬態語(「ムクムク」「もちもち」)、笑い声(「ははは」)、決まった言い回し(「などなど」「あるある」)は、重ねるのが正しい書き方なので数えていません。
15
+ en: The same word twice in a row ("the the"), or two words where English takes one ("our the platform"), is left over from an edit. The reader stumbles, and the document looks rushed. In Japanese, the same particle on both sides of a parenthetical aside (本規約は(以下、規約)は) is left over the same way. Repeats that grammar allows ("had had", "that that", "is, is") and repeats for emphasis ("very very") are not counted.
16
16
 
17
17
  message:
18
18
  ja: 「{word}」で語が重なっています。どちらかが余分です
@@ -82,5 +82,5 @@ example:
82
82
  Users may use the Service free of charge.
83
83
 
84
84
  not_flagged:
85
- ja: 二つの定義が食い違っているかは決めません。二つ目を指すだけです。語を名前にした見出しは定義に数えません。英語で、括弧に引用符だけで入れた語句のうち、名前らしく大文字で始めていない語を含むもの(("The key point is"))は、例を引いたものとして定義に数えません。
86
- en: 'Whether the two definitions conflict is not decided; only the second is pointed at. A heading that names the term is not a definition. In English, a phrase quoted alone in brackets with a word a name would capitalise left in lower case ("The key point is") quotes an example, and is not a definition.'
85
+ ja: 二つの定義が食い違っているかは決めません。二つ目を指すだけです。語を名前にした見出しは定義に数えません。英語で、括弧に引用符だけで入れた語句のうち、名前らしく大文字で始めていない語を含むもの(("The key point is"))は、例を引いたものとして定義に数えません。添付した文書(前後を空行に挟まれた「Exhibit A to Merger Agreement」のような題の行から後ろ)は別の文書なので、その中の定義は、本文の定義とは比べず、添付した文書の中でだけ比べます。
86
+ en: 'Whether the two definitions conflict is not decided; only the second is pointed at. A heading that names the term is not a definition. In English, a phrase quoted alone in brackets with a word a name would capitalise left in lower case ("The key point is") quotes an example, and is not a definition. An attached instrument (from a title line such as "Exhibit A to Merger Agreement" between blank lines) is a separate document: its definitions are compared only with each other, not with those of the body.'
@@ -62,8 +62,8 @@ example:
62
62
  The trial runs for 3 months from April 1, 2026 (until June 30, 2026).
63
63
 
64
64
  not_flagged:
65
- ja: 三通りの数え方(終わりを含める、含めない、初日を数えずに過ぎた日)のどれとも合わないときだけ指します。「約3か月」「3か月程度」のような目安の期間、日付が三つ以上か期間が二つ以上ある文、年を書いた日付と書かない日付の組は見ません。「最大3泊」のような目安の泊数と、日付の無い泊数も見ません。勤務時間は、実働の書いていない所、長さの無い休憩(休憩あり)、一行に時間の範囲が二つ以上ある所(シフト表は行ごとに実働を書いた行だけ)、「翌」などの印の無い日をまたぐ範囲を見ません。勤務表は、休憩か実働の列の無い表、読めない升(休憩なし、単位の無い休憩の数、片方にだけ午前・午後を書いた時刻)のある行、夜勤などの印の無い文書で日をまたぐ行を見ません。
66
- en: Only an end that matches none of the three ways of counting is pointed out. A rough length ("about 3 months"), a sentence with three or more dates or two or more lengths, and a pair of one date with a year and one without are left alone. So are a rough number of nights ("up to 3 nights") and nights written without dates. Working hours are left alone without a stated total, with a break of no length ("breaks provided"), with two or more ranges of time on a line (a shift table only on rows that state their own hours), and across midnight without a next-day mark. In a timesheet, a table without a Break or an Hours column, a row with a cell that cannot be read exactly (no break, a bare number of break, a.m. or p.m. on only one time), and a row across midnight in a document that does not mention night work are left alone.
65
+ ja: 三通りの数え方(終わりを含める、含めない、初日を数えずに過ぎた日)のどれとも合わないときだけ指します。「約3か月」「3か月程度」のような目安の期間、「週3日」「月10日」のような期間あたりの日数と「週休2日制」「4週8休」の中の数、日付が三つ以上か期間が二つ以上ある文、年を書いた日付と書かない日付の組は見ません。「最大3泊」のような目安の泊数と、日付の無い泊数も見ません。勤務時間は、実働の書いていない所、長さの無い休憩(休憩あり)、一行に時間の範囲が二つ以上ある所(シフト表は行ごとに実働を書いた行だけ)、「翌」などの印の無い日をまたぐ範囲を見ません。勤務表は、休憩か実働の列の無い表、読めない升(休憩なし、単位の無い休憩の数、片方にだけ午前・午後を書いた時刻)のある行、夜勤などの印の無い文書で日をまたぐ行を見ません。
66
+ en: Only an end that matches none of the three ways of counting is pointed out. A rough length ("about 3 months"), a count in each period ("3 days a week"), a sentence with three or more dates or two or more lengths, and a pair of one date with a year and one without are left alone. So are a rough number of nights ("up to 3 nights") and nights written without dates. Working hours are left alone without a stated total, with a break of no length ("breaks provided"), with two or more ranges of time on a line (a shift table only on rows that state their own hours), and across midnight without a next-day mark. In a timesheet, a table without a Break or an Hours column, a row with a cell that cannot be read exactly (no break, a bare number of break, a.m. or p.m. on only one time), and a row across midnight in a document that does not mention night work are left alone.
67
67
  rewrite:
68
68
  depth: light
69
69
  ja:
@@ -76,8 +76,8 @@ example:
76
76
  Best regards,
77
77
  Ichiro
78
78
  not_flagged:
79
- ja: 引用した返信(「>」の行)と、ヘッダーと署名(「-- 」の後ろ)は見ません。手紙の頭(日付、「保護者各位」のような宛名、差出人、表題)のように文で終わらない行が続くときは、挨拶をその後ろの最初の文までに探します。挨拶と結びの言い方は決めず、語彙表のどれかがあれば足ります。メール・手紙のジャンルでだけ見ます。
80
- en: 'Quoted replies (lines starting with ">"), the header and the signature after "-- " are not read. When a letter opens with lines that end no sentence (the date, the address block, the sender, a title), the greeting is looked for up to the first sentence after them. Which greeting or closing is used is not decided; any word in the lexicon will do. Only the email and letter genre runs this rule.'
79
+ ja: 引用した返信(「>」の行)と、ヘッダーと署名(「-- 」の後ろ)は見ません。手紙の頭(日付、「保護者各位」のような宛名、差出人、表題)のように文で終わらない行が続くときは、挨拶をその後ろの最初の文までに探します。最初の文より前に「発信者:」のようなメモの形の項目名があれば、メモとして挨拶も結びも求めません。挨拶と結びの言い方は決めず、語彙表のどれかがあれば足ります。メール・手紙のジャンルでだけ見ます。
80
+ en: 'Quoted replies (lines starting with ">"), the header and the signature after "-- " are not read. When a letter opens with lines that end no sentence (the date, the address block, the sender, a title), the greeting is looked for up to the first sentence after them. A memo, with a label such as "TO:" or "SUBJECT:" in capitals before the first sentence, is asked for neither a greeting nor a closing. Which greeting or closing is used is not decided; any word in the lexicon will do. Only the email and letter genre runs this rule.'
81
81
  rewrite:
82
82
  depth: light
83
83
  ja:
@@ -77,8 +77,8 @@ example:
77
77
  Best regards,
78
78
  Ichiro
79
79
  not_flagged:
80
- ja: 「件名:」の行が無いメールや手紙、引用した返信の中の件名は見ません。メール・手紙のジャンルでだけ見ます。
81
- en: 'An email or letter without a "Subject:" line, and subjects inside a quoted reply, are not checked. Only the email and letter genre runs this rule.'
80
+ ja: 「件名:」の行が無いメールや手紙、引用した返信の中の件名は見ません。「件名:」の後ろが空なら次の行を件名として読みます(項目名と値を二段に組んだ文書)。ただし次の行が挨拶、文、別の項目なら件名は空です。メール・手紙のジャンルでだけ見ます。
81
+ en: 'An email or letter without a "Subject:" line, and subjects inside a quoted reply, are not checked. When nothing follows the colon, the next line with text is read as the subject (a form that sets the label and the value in two columns), unless that line is a greeting, a sentence or another field. Only the email and letter genre runs this rule.'
82
82
  level_meaning:
83
83
  ja: 件名 {limit} 字まで
84
84
  en: up to {limit} characters in the subject
@@ -58,8 +58,8 @@ example:
58
58
  | Oct 28 | Takahashi | Set the briefing date |
59
59
 
60
60
  not_flagged:
61
- ja: 一番左の列は見ません(空欄で「上と同じ」を表す書き方があるため)。同じ列に空欄が二つ以上ある列、本文の行が三つより少ない表、「—」「なし」と書いたセルは指しません。合計・小計・税の行(「| 合計 | | | 48,400円 |」)、期間の合計の行(週計)、差し引きで決まる金額の行(総支給額)の数量や単価の空欄も指しません。金額の列(ほかの行がどれも数字を書いている一番右の列)の空欄は指します。Markdown の表でだけ動きます。
62
- en: The first column is not checked, since a blank there often means "same as above". A column with two or more blanks, a table with fewer than three body rows, and a cell holding "—" or "none" are not reported. Nor are the quantity and unit-price blanks of a total, subtotal or tax row ("| Total | | | $612.00 |"), a period total ("Week total") or a computed amount ("Gross pay"); a blank in its amount column (the rightmost column every other row fills with a figure) still is. Markdown tables only.
61
+ ja: 一番左の列は見ません(空欄で「上と同じ」を表す書き方があるため)。同じ列に空欄が二つ以上ある列、本文の行が三つより少ない表、「—」「なし」と書いたセルは指しません。合計・小計・税の行(「| 合計 | | | 48,400円 |」)、期間の合計の行(週計)、差し引きで決まる金額の行(総支給額)の数量や単価の空欄も指しません。金額の列(ほかの行がどれも数字を書いている一番右の列)の空欄は指します。合計の語で始まるか終わる見出し、またはコロンで終わる見出しのすぐ後ろの空欄も、その後ろの升が埋まっていれば指しません(元の表で二つの列にまたがっていた見出しを Markdown に直すと、こう空くため。「| 得点合計 | | 8 |」)。Markdown の表でだけ動きます。
62
+ en: The first column is not checked, since a blank there often means "same as above". A column with two or more blanks, a table with fewer than three body rows, and a cell holding "—" or "none" are not reported. Nor are the quantity and unit-price blanks of a total, subtotal or tax row ("| Total | | | $612.00 |"), a period total ("Week total") or a computed amount ("Gross pay"); a blank in its amount column (the rightmost column every other row fills with a figure) still is. Nor is a blank right after a label that starts or ends with a total word or ends in a colon, when the cell after it is filled, since a label that spanned two columns in the source table leaves that blank once written as Markdown ("| Total score | | 8 |"). Markdown tables only.
63
63
  rewrite:
64
64
  depth: light
65
65
  ja:
@@ -59,8 +59,8 @@ example:
59
59
  [^2]: During the trial period.
60
60
 
61
61
  not_flagged:
62
- ja: Markdown の脚注([^1] と行頭の [^1]:)と、※ に一桁か二桁の番号を付けた印(※1、(※2))を読みます。※ の注が文書に一つも無いときは、注を別の所(表や別紙)に置いた文書と読んで言いません。※ の後ろに数が続くもの(※2018年度)は注の番号ではありません。コードの中は読みません。
63
- en: Markdown footnotes ([^1] and a line starting "[^1]:") and a ※ with a one- or two-digit number (※1, (※2)) are read. When a document has no ※ note at all, its notes are taken to be elsewhere (a table, an annex) and nothing is reported for ※. A ※ before a longer number ("※2018") is not a note mark. Code is not read.
62
+ ja: Markdown の脚注([^1] と行頭の [^1]:)と、※ に一桁か二桁の番号を付けた印(※1、(※2))を読みます。※ の注が文書に一つも無いときは、注を別の所(表や別紙)に置いた文書と読んで言いません。※ の後ろに数が続くもの(※2018年度)と英語の序数(※1st Party)は注の番号ではありません。引用(>)の中の印も注を指していると読みます。コードの中は読みません。
63
+ en: Markdown footnotes ([^1] and a line starting "[^1]:") and a ※ with a one- or two-digit number (※1, (※2)) are read. When a document has no ※ note at all, its notes are taken to be elsewhere (a table, an annex) and nothing is reported for ※. A ※ before a longer number ("※2018") or an English ordinal ("※1st Party") is not a note mark. A mark inside a quotation (">") still points to its note. Code is not read.
64
64
 
65
65
  rewrite:
66
66
  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. 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.
63
+ ja: 短い見出し(言葉が少なく、重なりを測れないもの)は見ません。見出しの頭の番号の札(例 3:、Step 3:、1.、第2章)は重なりに数えません。中身の置き場所(リンク、URL、コードで書いたファイルのパス)へ読者を渡す文(詳しくは `docs/api.md` にあります。)は繰り返しではありません。見出しの直後が名前だけの行(レターヘッド)や項目と値の行(担当者:山田)なら、書式の頭で、繰り返しではありません。見出しが扱うものの名前だけの行(「実施要綱について」の下の「実施要綱」、「ご意見をお聞かせください」一覧)は、リンクや添付の札で、繰り返しではありません。行頭の項目名(「## Project Status」の下の「Current project status:Ongoing」)は報告の書式の札なので、重なりは値の側だけで測ります。
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. A line that only names what the heading is about (Annual maintenance schedule under About the annual maintenance schedule, or a list titled with the quoted heading) is the label of a link or an attachment, not an echo. A field label opening the line (the Current project status field under Project Status) belongs to a report template, so only the value is measured against the heading.
65
65
  level_meaning:
66
66
  ja: 見出しと直後の文の重なりが {limit}% 以上なら指摘
67
67
  en: reported when the first sentence overlaps the heading by {limit}% or more
@@ -37,8 +37,8 @@ example:
37
37
  この資料はとてもおもしろいです。
38
38
 
39
39
  not_flagged:
40
- ja: 大文字(A 社、B さん)、二字以上の英字(while 文、note)、コードの中は指しません。後ろに助詞が続く一字(変数 x が、まず x を、を x で)は変数の名と読み、一字の後ろが漢字のもの(の x 座標)も指しません。片仮名の後ろの一字(サイズ m、プラン b)は記号と読み、パスの中(/docs/…)も見ません。
41
- en: Capitals (A社, Bさん), runs of two or more letters (while文, note) and code are not reported. A letter followed by a particle (変数xが, まずxを, をxで) is read as the name of a variable, and a letter followed by a kanji (のx座標) is not reported either. A letter after katakana (サイズm, プランb) is read as a label, and paths (/docs/…) are not read.
40
+ ja: 大文字(A 社、B さん)、二字以上の英字(while 文、note)、コードの中は指しません。後ろに助詞が続く一字(変数 x が、まず x を、を x で)は変数の名と読み、一字の後ろが漢字のもの(の x 座標)も指しません。片仮名の後ろの一字(サイズ m、プラン b)は記号と読み、パスの中(/docs/…)も見ません。母音の一字(e ラーニング、i モード)は、ローマ字入力ならすぐ仮名になるので残りではなく、語の一部と読みます。
41
+ en: Capitals (A社, Bさん), runs of two or more letters (while文, note) and code are not reported. A letter followed by a particle (変数xが, まずxを, をxで) is read as the name of a variable, and a letter followed by a kanji (のx座標) is not reported either. A letter after katakana (サイズm, プランb) is read as a label, and paths (/docs/…) are not read. A lone vowel (eラーニング, iモード) is part of the word, since romaji input turns a vowel into kana at once and never leaves it behind.
42
42
  sources: [textlint-ja-presets]
43
43
  rewrite:
44
44
  depth: light