chaffjs 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +179 -42
  2. package/dist/adapter-import.d.ts +2 -0
  3. package/dist/adapter-import.d.ts.map +1 -0
  4. package/dist/adapter-import.js +11 -0
  5. package/dist/adapter-import.js.map +1 -0
  6. package/dist/adapter-load.d.ts.map +1 -1
  7. package/dist/adapter-load.js +2 -9
  8. package/dist/adapter-load.js.map +1 -1
  9. package/dist/ai-score/human-shares.d.ts +4 -0
  10. package/dist/ai-score/human-shares.d.ts.map +1 -0
  11. package/dist/ai-score/human-shares.js +205 -0
  12. package/dist/ai-score/human-shares.js.map +1 -0
  13. package/dist/ai-score/lint-line.d.ts +4 -0
  14. package/dist/ai-score/lint-line.d.ts.map +1 -0
  15. package/dist/ai-score/lint-line.js +9 -0
  16. package/dist/ai-score/lint-line.js.map +1 -0
  17. package/dist/ai-score/of-document.d.ts +7 -0
  18. package/dist/ai-score/of-document.d.ts.map +1 -0
  19. package/dist/ai-score/of-document.js +40 -0
  20. package/dist/ai-score/of-document.js.map +1 -0
  21. package/dist/ai-score/render.d.ts +24 -0
  22. package/dist/ai-score/render.d.ts.map +1 -0
  23. package/dist/ai-score/render.js +100 -0
  24. package/dist/ai-score/render.js.map +1 -0
  25. package/dist/ai-score/score.d.ts +77 -0
  26. package/dist/ai-score/score.d.ts.map +1 -0
  27. package/dist/ai-score/score.js +52 -0
  28. package/dist/ai-score/score.js.map +1 -0
  29. package/dist/ai-score/signals.d.ts +19 -0
  30. package/dist/ai-score/signals.d.ts.map +1 -0
  31. package/dist/ai-score/signals.js +30 -0
  32. package/dist/ai-score/signals.js.map +1 -0
  33. package/dist/ai-score/text.d.ts +37 -0
  34. package/dist/ai-score/text.d.ts.map +1 -0
  35. package/dist/ai-score/text.js +59 -0
  36. package/dist/ai-score/text.js.map +1 -0
  37. package/dist/ai-score/view.d.ts +5 -0
  38. package/dist/ai-score/view.d.ts.map +1 -0
  39. package/dist/ai-score/view.js +19 -0
  40. package/dist/ai-score/view.js.map +1 -0
  41. package/dist/backends/anthropic.d.ts +0 -1
  42. package/dist/backends/anthropic.d.ts.map +1 -1
  43. package/dist/backends/anthropic.js +0 -1
  44. package/dist/backends/anthropic.js.map +1 -1
  45. package/dist/backends/default-model.d.ts +3 -0
  46. package/dist/backends/default-model.d.ts.map +1 -0
  47. package/dist/backends/default-model.js +5 -0
  48. package/dist/backends/default-model.js.map +1 -0
  49. package/dist/backends/openai.d.ts +0 -1
  50. package/dist/backends/openai.d.ts.map +1 -1
  51. package/dist/backends/openai.js +0 -1
  52. package/dist/backends/openai.js.map +1 -1
  53. package/dist/browser/adapter-import.d.ts +2 -0
  54. package/dist/browser/adapter-import.d.ts.map +1 -0
  55. package/dist/browser/adapter-import.js +17 -0
  56. package/dist/browser/adapter-import.js.map +1 -0
  57. package/dist/browser/bounded-match.d.ts +3 -0
  58. package/dist/browser/bounded-match.d.ts.map +1 -0
  59. package/dist/browser/bounded-match.js +4 -0
  60. package/dist/browser/bounded-match.js.map +1 -0
  61. package/dist/browser/check-text.d.ts +43 -0
  62. package/dist/browser/check-text.d.ts.map +1 -0
  63. package/dist/browser/check-text.js +50 -0
  64. package/dist/browser/check-text.js.map +1 -0
  65. package/dist/browser/detectors.d.ts +4 -0
  66. package/dist/browser/detectors.d.ts.map +1 -0
  67. package/dist/browser/detectors.js +22 -0
  68. package/dist/browser/detectors.js.map +1 -0
  69. package/dist/browser/package-files.d.ts +5 -0
  70. package/dist/browser/package-files.d.ts.map +1 -0
  71. package/dist/browser/package-files.js +8 -0
  72. package/dist/browser/package-files.js.map +1 -0
  73. package/dist/browser/path.d.ts +9 -0
  74. package/dist/browser/path.d.ts.map +1 -0
  75. package/dist/browser/path.js +70 -0
  76. package/dist/browser/path.js.map +1 -0
  77. package/dist/browser/working-dir.d.ts +2 -0
  78. package/dist/browser/working-dir.d.ts.map +1 -0
  79. package/dist/browser/working-dir.js +3 -0
  80. package/dist/browser/working-dir.js.map +1 -0
  81. package/dist/browser-files.d.ts +21 -0
  82. package/dist/browser-files.d.ts.map +1 -0
  83. package/dist/browser-files.js +65 -0
  84. package/dist/browser-files.js.map +1 -0
  85. package/dist/browser.d.ts +9 -0
  86. package/dist/browser.d.ts.map +1 -0
  87. package/dist/browser.js +13 -0
  88. package/dist/browser.js.map +1 -0
  89. package/dist/cli-text.d.ts.map +1 -1
  90. package/dist/cli-text.js +2 -0
  91. package/dist/cli-text.js.map +1 -1
  92. package/dist/cli.d.ts.map +1 -1
  93. package/dist/cli.js +4 -1
  94. package/dist/cli.js.map +1 -1
  95. package/dist/commands/ai-score.d.ts +8 -0
  96. package/dist/commands/ai-score.d.ts.map +1 -0
  97. package/dist/commands/ai-score.js +59 -0
  98. package/dist/commands/ai-score.js.map +1 -0
  99. package/dist/commands/document-commands.d.ts.map +1 -1
  100. package/dist/commands/document-commands.js +2 -0
  101. package/dist/commands/document-commands.js.map +1 -1
  102. package/dist/config/by-path-problems.d.ts +5 -0
  103. package/dist/config/by-path-problems.d.ts.map +1 -0
  104. package/dist/config/by-path-problems.js +11 -0
  105. package/dist/config/by-path-problems.js.map +1 -0
  106. package/dist/config/load.d.ts +9 -2
  107. package/dist/config/load.d.ts.map +1 -1
  108. package/dist/config/load.js +21 -8
  109. package/dist/config/load.js.map +1 -1
  110. package/dist/config/read.d.ts +2 -0
  111. package/dist/config/read.d.ts.map +1 -1
  112. package/dist/config/read.js +4 -1
  113. package/dist/config/read.js.map +1 -1
  114. package/dist/config/warnings.d.ts +1 -1
  115. package/dist/config/warnings.d.ts.map +1 -1
  116. package/dist/config/warnings.js +3 -1
  117. package/dist/config/warnings.js.map +1 -1
  118. package/dist/config/working-dir.d.ts +2 -0
  119. package/dist/config/working-dir.d.ts.map +1 -0
  120. package/dist/config/working-dir.js +3 -0
  121. package/dist/config/working-dir.js.map +1 -0
  122. package/dist/custom/bounded-match.d.ts +1 -12
  123. package/dist/custom/bounded-match.d.ts.map +1 -1
  124. package/dist/custom/bounded-match.js +1 -11
  125. package/dist/custom/bounded-match.js.map +1 -1
  126. package/dist/custom/pattern-timeout.d.ts +13 -0
  127. package/dist/custom/pattern-timeout.d.ts.map +1 -0
  128. package/dist/custom/pattern-timeout.js +13 -0
  129. package/dist/custom/pattern-timeout.js.map +1 -0
  130. package/dist/detect.d.ts.map +1 -1
  131. package/dist/detect.js +4 -5
  132. package/dist/detect.js.map +1 -1
  133. package/dist/detectors/date-year.d.ts +10 -2
  134. package/dist/detectors/date-year.d.ts.map +1 -1
  135. package/dist/detectors/date-year.js +44 -8
  136. package/dist/detectors/date-year.js.map +1 -1
  137. package/dist/detectors/defined-term-form.d.ts +5 -0
  138. package/dist/detectors/defined-term-form.d.ts.map +1 -1
  139. package/dist/detectors/defined-term-form.js +22 -5
  140. package/dist/detectors/defined-term-form.js.map +1 -1
  141. package/dist/detectors/orthographic-variant.d.ts.map +1 -1
  142. package/dist/detectors/orthographic-variant.js +44 -17
  143. package/dist/detectors/orthographic-variant.js.map +1 -1
  144. package/dist/detectors/party-role-name.d.ts +3 -0
  145. package/dist/detectors/party-role-name.d.ts.map +1 -0
  146. package/dist/detectors/party-role-name.js +35 -0
  147. package/dist/detectors/party-role-name.js.map +1 -0
  148. package/dist/detectors/quote-without-source.d.ts +17 -0
  149. package/dist/detectors/quote-without-source.d.ts.map +1 -0
  150. package/dist/detectors/quote-without-source.js +64 -0
  151. package/dist/detectors/quote-without-source.js.map +1 -0
  152. package/dist/detectors/reference-text.js +1 -1
  153. package/dist/detectors/reference-text.js.map +1 -1
  154. package/dist/detectors/registry/party-role-name.d.ts +3 -0
  155. package/dist/detectors/registry/party-role-name.d.ts.map +1 -0
  156. package/dist/detectors/registry/party-role-name.js +3 -0
  157. package/dist/detectors/registry/party-role-name.js.map +1 -0
  158. package/dist/detectors/registry/quote-without-source.d.ts +3 -0
  159. package/dist/detectors/registry/quote-without-source.d.ts.map +1 -0
  160. package/dist/detectors/registry/quote-without-source.js +3 -0
  161. package/dist/detectors/registry/quote-without-source.js.map +1 -0
  162. package/dist/detectors/registry/vague-deadline.d.ts +3 -0
  163. package/dist/detectors/registry/vague-deadline.d.ts.map +1 -0
  164. package/dist/detectors/registry/vague-deadline.js +3 -0
  165. package/dist/detectors/registry/vague-deadline.js.map +1 -0
  166. package/dist/detectors/run-in-label.d.ts +7 -0
  167. package/dist/detectors/run-in-label.d.ts.map +1 -0
  168. package/dist/detectors/run-in-label.js +53 -0
  169. package/dist/detectors/run-in-label.js.map +1 -0
  170. package/dist/detectors/sentence-counts.d.ts +3 -1
  171. package/dist/detectors/sentence-counts.d.ts.map +1 -1
  172. package/dist/detectors/sentence-counts.js +11 -4
  173. package/dist/detectors/sentence-counts.js.map +1 -1
  174. package/dist/detectors/sentence-ending.d.ts +1 -1
  175. package/dist/detectors/sentence-ending.d.ts.map +1 -1
  176. package/dist/detectors/sentence-ending.js +2 -1
  177. package/dist/detectors/sentence-ending.js.map +1 -1
  178. package/dist/detectors/structure-tree.d.ts +4 -1
  179. package/dist/detectors/structure-tree.d.ts.map +1 -1
  180. package/dist/detectors/structure-tree.js +21 -2
  181. package/dist/detectors/structure-tree.js.map +1 -1
  182. package/dist/detectors/unbalanced-bracket.d.ts +1 -1
  183. package/dist/detectors/unbalanced-bracket.d.ts.map +1 -1
  184. package/dist/detectors/unbalanced-bracket.js +23 -11
  185. package/dist/detectors/unbalanced-bracket.js.map +1 -1
  186. package/dist/detectors/vague-deadline.d.ts +25 -0
  187. package/dist/detectors/vague-deadline.d.ts.map +1 -0
  188. package/dist/detectors/vague-deadline.js +97 -0
  189. package/dist/detectors/vague-deadline.js.map +1 -0
  190. package/dist/furigana.d.ts +7 -0
  191. package/dist/furigana.d.ts.map +1 -0
  192. package/dist/furigana.js +16 -0
  193. package/dist/furigana.js.map +1 -0
  194. package/dist/genre-load.d.ts.map +1 -1
  195. package/dist/genre-load.js +5 -7
  196. package/dist/genre-load.js.map +1 -1
  197. package/dist/grade/ai-score.d.ts +16 -0
  198. package/dist/grade/ai-score.d.ts.map +1 -0
  199. package/dist/grade/ai-score.js +17 -0
  200. package/dist/grade/ai-score.js.map +1 -0
  201. package/dist/grade/finding.d.ts +6 -0
  202. package/dist/grade/finding.d.ts.map +1 -0
  203. package/dist/grade/finding.js +13 -0
  204. package/dist/grade/finding.js.map +1 -0
  205. package/dist/grade/grade-item.d.ts.map +1 -1
  206. package/dist/grade/grade-item.js +4 -11
  207. package/dist/grade/grade-item.js.map +1 -1
  208. package/dist/grade/render-variants.d.ts.map +1 -1
  209. package/dist/grade/render-variants.js +3 -0
  210. package/dist/grade/render-variants.js.map +1 -1
  211. package/dist/grade/render.d.ts.map +1 -1
  212. package/dist/grade/render.js +1 -0
  213. package/dist/grade/render.js.map +1 -1
  214. package/dist/grade/result.d.ts +3 -0
  215. package/dist/grade/result.d.ts.map +1 -1
  216. package/dist/grade/results-read.d.ts.map +1 -1
  217. package/dist/grade/results-read.js +13 -2
  218. package/dist/grade/results-read.js.map +1 -1
  219. package/dist/grade/summary.d.ts +3 -0
  220. package/dist/grade/summary.d.ts.map +1 -1
  221. package/dist/grade/summary.js +6 -0
  222. package/dist/grade/summary.js.map +1 -1
  223. package/dist/grade/text.d.ts +2 -0
  224. package/dist/grade/text.d.ts.map +1 -1
  225. package/dist/grade/text.js +2 -0
  226. package/dist/grade/text.js.map +1 -1
  227. package/dist/grade/variants-text.d.ts +3 -0
  228. package/dist/grade/variants-text.d.ts.map +1 -1
  229. package/dist/grade/variants-text.js +4 -0
  230. package/dist/grade/variants-text.js.map +1 -1
  231. package/dist/grade/variants.d.ts +3 -0
  232. package/dist/grade/variants.d.ts.map +1 -1
  233. package/dist/grade/variants.js +1 -0
  234. package/dist/grade/variants.js.map +1 -1
  235. package/dist/grade-api.d.ts +1 -0
  236. package/dist/grade-api.d.ts.map +1 -1
  237. package/dist/grade-api.js +2 -1
  238. package/dist/grade-api.js.map +1 -1
  239. package/dist/judge.d.ts +0 -1
  240. package/dist/judge.d.ts.map +1 -1
  241. package/dist/judge.js +0 -1
  242. package/dist/judge.js.map +1 -1
  243. package/dist/known-genres.js +2 -2
  244. package/dist/known-genres.js.map +1 -1
  245. package/dist/package-files.d.ts +6 -0
  246. package/dist/package-files.d.ts.map +1 -0
  247. package/dist/package-files.js +11 -0
  248. package/dist/package-files.js.map +1 -0
  249. package/dist/profile/load.d.ts.map +1 -1
  250. package/dist/profile/load.js +5 -6
  251. package/dist/profile/load.js.map +1 -1
  252. package/dist/rule-load.d.ts.map +1 -1
  253. package/dist/rule-load.js +5 -6
  254. package/dist/rule-load.js.map +1 -1
  255. package/dist/rule-offs.js +3 -3
  256. package/dist/rule-offs.js.map +1 -1
  257. package/dist/run.js +1 -1
  258. package/dist/run.js.map +1 -1
  259. package/dist/structure/date-range.d.ts +4 -0
  260. package/dist/structure/date-range.d.ts.map +1 -1
  261. package/dist/structure/date-range.js +23 -3
  262. package/dist/structure/date-range.js.map +1 -1
  263. package/dist/structure/issues.d.ts +17 -1
  264. package/dist/structure/issues.d.ts.map +1 -1
  265. package/dist/structure/issues.js +54 -5
  266. package/dist/structure/issues.js.map +1 -1
  267. package/dist/structure/party-role.d.ts +30 -0
  268. package/dist/structure/party-role.d.ts.map +1 -0
  269. package/dist/structure/party-role.js +58 -0
  270. package/dist/structure/party-role.js.map +1 -0
  271. package/dist/structure/prose-total.d.ts +28 -0
  272. package/dist/structure/prose-total.d.ts.map +1 -0
  273. package/dist/structure/prose-total.js +99 -0
  274. package/dist/structure/prose-total.js.map +1 -0
  275. package/dist/structure/reference-text.d.ts +5 -0
  276. package/dist/structure/reference-text.d.ts.map +1 -1
  277. package/dist/structure/reference-text.js +17 -4
  278. package/dist/structure/reference-text.js.map +1 -1
  279. package/dist/structure/term-prefix.d.ts +18 -0
  280. package/dist/structure/term-prefix.d.ts.map +1 -0
  281. package/dist/structure/term-prefix.js +40 -0
  282. package/dist/structure/term-prefix.js.map +1 -0
  283. package/dist/structure/total.d.ts +2 -0
  284. package/dist/structure/total.d.ts.map +1 -1
  285. package/dist/structure/total.js +2 -0
  286. package/dist/structure/total.js.map +1 -1
  287. package/dist/structure-shape/baseline-load.d.ts.map +1 -1
  288. package/dist/structure-shape/baseline-load.js +4 -5
  289. package/dist/structure-shape/baseline-load.js.map +1 -1
  290. package/dist/style-load.d.ts.map +1 -1
  291. package/dist/style-load.js +5 -6
  292. package/dist/style-load.js.map +1 -1
  293. package/package.json +24 -3
  294. package/rules/cliche.yaml +28 -8
  295. package/rules/date-without-year.yaml +28 -3
  296. package/rules/defined-term-form.yaml +9 -6
  297. package/rules/demonstrative-opener-run.yaml +24 -7
  298. package/rules/no-mixed-desumasu.yaml +2 -2
  299. package/rules/orthographic-variant.yaml +2 -2
  300. package/rules/party-role-name.yaml +94 -0
  301. package/rules/quote-without-source.yaml +61 -0
  302. package/rules/total-mismatch.yaml +8 -8
  303. package/rules/vague-deadline.yaml +95 -0
  304. package/rules/weasel-word.yaml +25 -7
  305. package/skills/chaff/SKILL.md +12 -2
  306. package/src/adapter-import.ts +3 -0
  307. package/src/adapter-load.ts +2 -1
  308. package/src/ai-score/human-shares.ts +207 -0
  309. package/src/ai-score/lint-line.ts +10 -0
  310. package/src/ai-score/of-document.ts +46 -0
  311. package/src/ai-score/render.ts +124 -0
  312. package/src/ai-score/score.ts +121 -0
  313. package/src/ai-score/signals.ts +39 -0
  314. package/src/ai-score/text.ts +103 -0
  315. package/src/ai-score/view.ts +21 -0
  316. package/src/backends/anthropic.ts +0 -2
  317. package/src/backends/default-model.ts +9 -0
  318. package/src/backends/openai.ts +0 -2
  319. package/src/browser/adapter-import.ts +19 -0
  320. package/src/browser/bounded-match.ts +9 -0
  321. package/src/browser/check-text.ts +106 -0
  322. package/src/browser/detectors.ts +40 -0
  323. package/src/browser/import-meta-glob.d.ts +5 -0
  324. package/src/browser/package-files.ts +13 -0
  325. package/src/browser/path.ts +73 -0
  326. package/src/browser/working-dir.ts +3 -0
  327. package/src/browser-files.ts +87 -0
  328. package/src/browser.ts +19 -0
  329. package/src/cli-text.ts +2 -0
  330. package/src/cli.ts +4 -1
  331. package/src/commands/ai-score.ts +77 -0
  332. package/src/commands/document-commands.ts +2 -0
  333. package/src/config/by-path-problems.ts +17 -0
  334. package/src/config/load.ts +21 -8
  335. package/src/config/read.ts +5 -1
  336. package/src/config/warnings.ts +3 -1
  337. package/src/config/working-dir.ts +3 -0
  338. package/src/custom/bounded-match.ts +1 -16
  339. package/src/custom/pattern-timeout.ts +17 -0
  340. package/src/detect.ts +4 -5
  341. package/src/detectors/date-year.ts +51 -12
  342. package/src/detectors/defined-term-form.ts +28 -6
  343. package/src/detectors/orthographic-variant.ts +59 -18
  344. package/src/detectors/party-role-name.ts +44 -0
  345. package/src/detectors/quote-without-source.ts +90 -0
  346. package/src/detectors/reference-text.ts +1 -1
  347. package/src/detectors/registry/party-role-name.ts +4 -0
  348. package/src/detectors/registry/quote-without-source.ts +4 -0
  349. package/src/detectors/registry/vague-deadline.ts +4 -0
  350. package/src/detectors/run-in-label.ts +60 -0
  351. package/src/detectors/sentence-counts.ts +13 -4
  352. package/src/detectors/sentence-ending.ts +3 -2
  353. package/src/detectors/structure-tree.ts +28 -6
  354. package/src/detectors/unbalanced-bracket.ts +25 -10
  355. package/src/detectors/vague-deadline.ts +132 -0
  356. package/src/furigana.ts +20 -0
  357. package/src/genre-load.ts +5 -7
  358. package/src/grade/ai-score.ts +32 -0
  359. package/src/grade/finding.ts +16 -0
  360. package/src/grade/grade-item.ts +4 -13
  361. package/src/grade/render-variants.ts +5 -0
  362. package/src/grade/render.ts +1 -0
  363. package/src/grade/result.ts +3 -0
  364. package/src/grade/results-read.ts +17 -2
  365. package/src/grade/summary.ts +9 -0
  366. package/src/grade/text.ts +6 -0
  367. package/src/grade/variants-text.ts +7 -0
  368. package/src/grade/variants.ts +4 -0
  369. package/src/grade-api.ts +3 -1
  370. package/src/judge.ts +0 -2
  371. package/src/known-genres.ts +2 -2
  372. package/src/package-files.ts +15 -0
  373. package/src/profile/load.ts +5 -6
  374. package/src/rule-load.ts +5 -6
  375. package/src/rule-offs.ts +3 -3
  376. package/src/run.ts +1 -1
  377. package/src/structure/date-range.ts +28 -3
  378. package/src/structure/issues.ts +61 -6
  379. package/src/structure/party-role.ts +94 -0
  380. package/src/structure/prose-total.ts +135 -0
  381. package/src/structure/reference-text.ts +17 -4
  382. package/src/structure/term-prefix.ts +54 -0
  383. package/src/structure/total.ts +4 -0
  384. package/src/structure-shape/baseline-load.ts +4 -5
  385. package/src/style-load.ts +5 -6
@@ -0,0 +1,99 @@
1
+ import { shownTotal } from "./total.js";
2
+ const CENTS = 100;
3
+ const MIN_PARTS = 2;
4
+ /** 合計の語と金額のあいだに書いてよいもの: 空白と、コロンか読点一つ。 */
5
+ const isTotalGap = (gap) => /^[::、,,]?$/u.test(gap.trim());
6
+ const OPENERS = "((";
7
+ const CLOSERS = "))";
8
+ const CLOSER = /[))]/u;
9
+ const centsOf = (amount) => Math.round(amount.value * CENTS);
10
+ const sumOf = (values) => values.reduce((sum, value) => sum + value, 0);
11
+ /** 英字で始まる語は、英字の続き(subtotal の total)では語と読まない。 */
12
+ const LATIN = /[A-Za-z0-9]/u;
13
+ const occurrences = (lower, phrase) => [...lower.matchAll(new RegExp(phrase.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"), "gu"))].map((match) => match.index);
14
+ /** 語の文の中の位置。重なるときは前から、同じ所から始まるなら長いほうを取る。大文字小文字は区別しない。 */
15
+ export const phraseSpans = (text, start, phrases) => {
16
+ const lower = text.toLowerCase();
17
+ const found = phrases
18
+ .map((phrase) => phrase.toLowerCase())
19
+ .filter((phrase) => phrase !== "")
20
+ .flatMap((phrase) => occurrences(lower, phrase)
21
+ .filter((at) => !(LATIN.test(phrase[0] ?? "") && LATIN.test(lower[at - 1] ?? "")))
22
+ .map((at) => ({ start: at, end: at + phrase.length })))
23
+ .toSorted((left, right) => left.start - right.start || right.end - left.end);
24
+ return found
25
+ .filter((span, index) => found.slice(0, index).every((before) => before.end <= span.start))
26
+ .map((span) => ({ start: start + span.start, end: start + span.end }));
27
+ };
28
+ /** 金額の前に書いた単位($9,000 の $)を除いた、語と金額のあいだ。 */
29
+ const gapBefore = (source, from, amount) => {
30
+ const gap = source.slice(from, amount.offset);
31
+ const trimmed = gap.trimEnd();
32
+ return trimmed.endsWith(amount.unit) ? trimmed.slice(0, trimmed.length - amount.unit.length) : gap;
33
+ };
34
+ /** 合計の語に近いほうから続く、二つ以上の並び(後ろ寄せ: 合計の前の内訳、前寄せ: 合計の後ろの内訳)。 */
35
+ const nearRuns = (parts, nearEnd) => parts.slice(MIN_PARTS - 1).map((_, index) => (nearEnd ? parts.slice(parts.length - MIN_PARTS - index) : parts.slice(0, MIN_PARTS + index)));
36
+ /** 内訳の金額。前の金額(並びの始まり)からこの金額までに値引きの語があれば、負の数。 */
37
+ const signedValues = (source, parts, from, discounts) => parts.map((part, index) => {
38
+ const start = parts[index - 1]?.end ?? from;
39
+ const discounted = phraseSpans(source.slice(start, part.offset), start, discounts).length > 0;
40
+ return discounted ? -centsOf(part) : centsOf(part);
41
+ });
42
+ const mismatch = (source, breakdown, discounts) => {
43
+ const { total, from, nearEnd } = breakdown;
44
+ const parts = breakdown.parts.filter((part) => part.unit === total.unit);
45
+ if (parts.length < MIN_PARTS)
46
+ return [];
47
+ const values = signedValues(source, parts, from, discounts);
48
+ const written = centsOf(total);
49
+ if (nearRuns(values, nearEnd).some((run) => sumOf(run) === written))
50
+ return [];
51
+ return [{ offset: total.offset, values: shownTotal(source, total, sumOf(values)) }];
52
+ };
53
+ /** 内訳の語が括弧の中にあれば、その括弧の終わり。無ければ文の終わり。 */
54
+ const breakdownEnd = (source, total, marker, sentence) => {
55
+ const between = source.slice(total.end, marker.start);
56
+ const opened = [...between].filter((char) => OPENERS.includes(char)).length > [...between].filter((char) => CLOSERS.includes(char)).length;
57
+ if (!opened)
58
+ return sentence.end;
59
+ const close = CLOSER.exec(source.slice(marker.end, sentence.end));
60
+ return close === null ? sentence.end : marker.end + close.index;
61
+ };
62
+ const inside = (amounts, start, end) => amounts.filter((amount) => amount.offset >= start && amount.end <= end);
63
+ /** 合計の語のすぐ後ろの金額を、その前の内訳と比べる。内訳は、前の合計の語か内訳の語より後ろから。 */
64
+ const totalsAfterParts = (source, sentence, amounts, words) => {
65
+ const text = source.slice(sentence.start, sentence.end);
66
+ const markers = phraseSpans(text, sentence.start, words.totals);
67
+ const breakdowns = phraseSpans(text, sentence.start, words.breakdowns);
68
+ return markers.flatMap((marker, index) => {
69
+ const total = amounts.find((amount) => amount.offset >= marker.end && isTotalGap(gapBefore(source, marker.end, amount)));
70
+ if (total === undefined)
71
+ return [];
72
+ const from = Math.max(sentence.start, markers[index - 1]?.end ?? 0, ...breakdowns.filter((span) => span.end <= marker.start).map((span) => span.end));
73
+ return mismatch(source, { total, parts: inside(amounts, from, marker.start), from, nearEnd: true }, words.discounts);
74
+ });
75
+ };
76
+ /** 内訳の語のすぐ前の金額を合計とし、内訳の語の後ろ(括弧の中なら括弧の終わりまで、次の合計の語まで)の金額と比べる。 */
77
+ const totalsBeforeParts = (source, sentence, amounts, words) => {
78
+ const text = source.slice(sentence.start, sentence.end);
79
+ const totalMarkers = phraseSpans(text, sentence.start, words.totals);
80
+ return phraseSpans(text, sentence.start, words.breakdowns).flatMap((marker) => {
81
+ const total = amounts.findLast((amount) => amount.end <= marker.start);
82
+ if (total === undefined || phraseSpans(source.slice(total.end, marker.start), total.end, words.joiners).length > 0)
83
+ return [];
84
+ const nextTotal = totalMarkers.find((span) => span.start >= marker.end)?.start ?? sentence.end;
85
+ const parts = inside(amounts, marker.end, Math.min(nextTotal, breakdownEnd(source, total, marker, sentence)));
86
+ return mismatch(source, { total, parts, from: marker.end, nearEnd: false }, words.discounts);
87
+ });
88
+ };
89
+ /** 文ごとに、書いた合計が内訳の和と合わない所。一つの金額は一度だけ言う。 */
90
+ export const proseTotalMismatches = (source, sentences, amounts, words) => {
91
+ const issues = sentences.flatMap((sentence) => {
92
+ const inSentence = inside(amounts, sentence.start, sentence.end);
93
+ if (inSentence.length <= MIN_PARTS)
94
+ return [];
95
+ return [...totalsAfterParts(source, sentence, inSentence, words), ...totalsBeforeParts(source, sentence, inSentence, words)];
96
+ });
97
+ return issues.filter((issue, index) => issues.findIndex((other) => other.offset === issue.offset) === index);
98
+ };
99
+ //# sourceMappingURL=prose-total.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prose-total.js","sourceRoot":"","sources":["../../src/structure/prose-total.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AAqBrD,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,yCAAyC;AACzC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5E,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,MAAM,GAAG,OAAO,CAAC;AAEvB,MAAM,OAAO,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAE7E,MAAM,KAAK,GAAG,CAAC,MAAyB,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;AAEnG,gDAAgD;AAChD,MAAM,KAAK,GAAG,cAAc,CAAC;AAE7B,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,MAAc,EAAY,EAAE,CAC9D,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAEpH,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,OAA0B,EAAU,EAAE;IAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACrC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC;SACjC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC;SACvB,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACjF,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CACzD;SACA,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/E,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1F,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,2CAA2C;AAC3C,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,MAAc,EAAU,EAAE;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC9B,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACrG,CAAC,CAAC;AAEF,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,OAAgB,EAAc,EAAE,CAC1E,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAE9I,gDAAgD;AAChD,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,KAAwB,EAAE,IAAY,EAAE,SAA4B,EAAY,EAAE,CACtH,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC;IAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9F,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAIL,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAE,SAA4B,EAAoB,EAAE;IACxG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/E,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,wCAAwC;AACxC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,MAAY,EAAE,QAAc,EAAU,EAAE;IAC3F,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3I,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,OAA0B,EAAE,KAAa,EAAE,GAAW,EAAY,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AAE7J,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,QAAc,EAAE,OAA0B,EAAE,KAAiB,EAAoB,EAAE;IAC3H,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACvE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACvC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACzH,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACtJ,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,QAAc,EAAE,OAA0B,EAAE,KAAiB,EAAoB,EAAE;IAC5H,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,OAAO,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC9H,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC;QAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9G,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,SAA0B,EAAE,OAA0B,EAAE,KAAiB,EAAoB,EAAE;IAClJ,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS;YAAE,OAAO,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/H,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;AAC/G,CAAC,CAAC"}
@@ -22,6 +22,11 @@ export type ReferenceInput = {
22
22
  readonly targetOf: (reference: StructureNode) => StructureNode | undefined;
23
23
  readonly words: ReferenceWords;
24
24
  };
25
+ /**
26
+ * The name holds the aside. An English aside is a whole word or phrase: "or" in "Return of Information" is not the aside
27
+ * "or". Other asides are found anywhere (上記 in 上記参照).
28
+ */
29
+ export declare const holdsAside: (name: string, aside: string) => boolean;
25
30
  /** 名前を添えた参照で、名前が参照先の見出しと合わない。 */
26
31
  export declare const titleMismatches: (input: ReferenceInput) => StructureIssue[];
27
32
  /** 参照先の見出しにも本文にも無い話題。 */
@@ -1 +1 @@
1
- {"version":3,"file":"reference-text.d.ts","sourceRoot":"","sources":["../../src/structure/reference-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC,CAAC;AA0CF,iCAAiC;AACjC,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAAc,EAOlE,CAAC;AA8BL,yBAAyB;AACzB,eAAO,MAAM,WAAW,GAAI,OAAO,cAAc,KAAG,cAAc,EAO9D,CAAC"}
1
+ {"version":3,"file":"reference-text.d.ts","sourceRoot":"","sources":["../../src/structure/reference-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,aAAa,GAAG,SAAS,CAAC;IAC3E,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC,CAAC;AAiCF;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,OAQxD,CAAC;AAUF,iCAAiC;AACjC,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,cAAc,EAOlE,CAAC;AA8BL,yBAAyB;AACzB,eAAO,MAAM,WAAW,GAAI,OAAO,cAAc,KAAG,cAAc,EAO9D,CAAC"}
@@ -23,10 +23,23 @@ const nameAfter = (source, end) => {
23
23
  };
24
24
  /** 項や号の札((a)、(ii)、(イ))。名前ではなく、参照の続き。 */
25
25
  const ITEM_LABEL = /^(?:[a-z]{1,2}|[ivxlcdm]{1,5}|.)$/iu;
26
- const isName = (name, words) => LETTER.test(name) &&
27
- !DIGIT.test(name) &&
28
- !ITEM_LABEL.test(name.normalize("NFKC")) &&
29
- !words.asides.some((aside) => normalized(name).includes(normalized(aside)));
26
+ const LATIN_ASIDE = /^[\p{Script=Latin}\s.]+$/u;
27
+ /**
28
+ * The name holds the aside. An English aside is a whole word or phrase: "or" in "Return of Information" is not the aside
29
+ * "or". Other asides are found anywhere (上記 in 上記参照).
30
+ */
31
+ export const holdsAside = (name, aside) => {
32
+ if (aside.trim() === "")
33
+ return false;
34
+ if (!LATIN_ASIDE.test(aside))
35
+ return normalized(name).includes(normalized(aside));
36
+ const words = ` ${name
37
+ .normalize("NFKC")
38
+ .toLowerCase()
39
+ .replaceAll(/[^\p{L}\p{N}]+/gu, " ")} `;
40
+ return aside.trim() !== "" && words.includes(` ${aside.trim().toLowerCase()} `);
41
+ };
42
+ const isName = (name, words) => LETTER.test(name) && !DIGIT.test(name) && !ITEM_LABEL.test(name.normalize("NFKC")) && !words.asides.some((aside) => holdsAside(name, aside));
30
43
  const agrees = (name, heading) => {
31
44
  const [a, b] = [normalized(name), normalized(heading)];
32
45
  return a.includes(b) || b.includes(a);
@@ -1 +1 @@
1
- {"version":3,"file":"reference-text.js","sourceRoot":"","sources":["../../src/structure/reference-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference-text.js","sourceRoot":"","sources":["../../src/structure/reference-text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BodyText } from "./definition-use.ts";
2
+ /**
3
+ * 定義した語の頭の語(本・本件)を、同じ組のほかの語に替えた形。「本業務」と定義して「本件業務」と書くと、
4
+ * 読み手は別のものを指しているのかと迷う。組は言語パッケージの語彙表(defined-term-prefix)の group から取る。
5
+ */
6
+ export type PrefixGroups = readonly (readonly string[])[];
7
+ /** 語彙表の項目を group ごとにまとめる。group の無い項目と、一つしかない組は外す。 */
8
+ export declare const prefixGroupsOf: (entries: readonly {
9
+ readonly pattern: string;
10
+ readonly group?: string | undefined;
11
+ }[]) => string[][];
12
+ /** 語の頭の語を同じ組のほかの語に替えた形。頭の語は長いほうから当て、頭の語のあとが一字の語には形が無い。 */
13
+ export declare const prefixVariants: (term: string, groups: PrefixGroups) => string[];
14
+ /**
15
+ * 定義の後ろ(after より後)で、形の違う語を書いた位置。長い語の一部と、定義した語の始まり(本件物品明細と定義した所の本件物品)は除く。
16
+ */
17
+ export declare const variantUses: (source: string, texts: readonly BodyText[], variant: string, after: number, defined: readonly string[]) => number[];
18
+ //# sourceMappingURL=term-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-prefix.d.ts","sourceRoot":"","sources":["../../src/structure/term-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;AAQ1D,qDAAqD;AACrD,eAAO,MAAM,cAAc,GAAI,SAAS,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,KAAG,MAAM,EAAE,EAO9H,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,QAAQ,YAAY,KAAG,MAAM,EAQtE,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,OAAO,SAAS,QAAQ,EAAE,EAAE,SAAS,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,SAAS,MAAM,EAAE,KAAG,MAAM,EAevI,CAAC"}
@@ -0,0 +1,40 @@
1
+ /** 語の前後の一字がこれなら、語は長い語の一部(見本物品の「本物品」、本業務委託契約の「本業務」)。 */
2
+ const WORD_CHAR = /[\p{Script=Han}\p{Script=Katakana}\p{Script=Latin}\p{N}ー]/u;
3
+ /** 頭の語のあとがこれより短い語(本件人、本件日)を替えると、普通の語(本人、本日)になる。 */
4
+ const MIN_REST = 2;
5
+ /** 語彙表の項目を group ごとにまとめる。group の無い項目と、一つしかない組は外す。 */
6
+ export const prefixGroupsOf = (entries) => {
7
+ const groups = new Map();
8
+ entries.forEach((entry) => {
9
+ if (entry.group === undefined || entry.pattern === "")
10
+ return;
11
+ groups.set(entry.group, [...(groups.get(entry.group) ?? []), entry.pattern]);
12
+ });
13
+ return [...groups.values()].filter((group) => group.length > 1);
14
+ };
15
+ /** 語の頭の語を同じ組のほかの語に替えた形。頭の語は長いほうから当て、頭の語のあとが一字の語には形が無い。 */
16
+ export const prefixVariants = (term, groups) => groups.flatMap((group) => {
17
+ const prefix = group
18
+ .filter((candidate) => term.startsWith(candidate) && term.length > candidate.length)
19
+ .toSorted((left, right) => right.length - left.length)[0];
20
+ const rest = prefix === undefined ? "" : term.slice(prefix.length);
21
+ if (prefix === undefined || [...rest].length < MIN_REST)
22
+ return [];
23
+ return group.filter((other) => other !== prefix).map((other) => `${other}${rest}`);
24
+ });
25
+ /**
26
+ * 定義の後ろ(after より後)で、形の違う語を書いた位置。長い語の一部と、定義した語の始まり(本件物品明細と定義した所の本件物品)は除く。
27
+ */
28
+ export const variantUses = (source, texts, variant, after, defined) => texts.flatMap((text) => {
29
+ const offsets = [];
30
+ let at = text.text.indexOf(variant);
31
+ while (at !== -1) {
32
+ offsets.push(text.start + at);
33
+ at = text.text.indexOf(variant, at + variant.length);
34
+ }
35
+ return offsets.filter((offset) => offset > after &&
36
+ !WORD_CHAR.test(source.charAt(offset - 1)) &&
37
+ !WORD_CHAR.test(source.charAt(offset + variant.length)) &&
38
+ !defined.some((term) => source.startsWith(term, offset)));
39
+ });
40
+ //# sourceMappingURL=term-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-prefix.js","sourceRoot":"","sources":["../../src/structure/term-prefix.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,7 @@ export type Amount = {
14
14
  };
15
15
  export declare const columnOf: (source: string, line: Line, offset: number) => number;
16
16
  export declare const isTotalLabel: (text: string, labels: readonly string[]) => boolean;
17
+ /** 文の中の合計の金額(符号の無い、単位付きの金額)と和を、合計の書き方で見せる。 */
18
+ export declare const shownTotal: (source: string, total: Amount, sumCents: number) => Record<string, string>;
17
19
  export declare const totalMismatches: (source: string, amounts: readonly Amount[], labels: readonly string[]) => StructureIssue[];
18
20
  //# sourceMappingURL=total.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"total.d.ts","sourceRoot":"","sources":["../../src/structure/total.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBtH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAG,MAA2E,CAAC;AAqBlJ,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,OAGtE,CAAC;AA0HF,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,MAAM,EAAE,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,cAAc,EAOlH,CAAC"}
1
+ {"version":3,"file":"total.d.ts","sourceRoot":"","sources":["../../src/structure/total.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAG9C;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBtH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAG,MAA2E,CAAC;AAqBlJ,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,OAGtE,CAAC;AAuGF,8CAA8C;AAC9C,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CACD,CAAC;AAqBlG,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,SAAS,SAAS,MAAM,EAAE,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,cAAc,EAOlH,CAAC"}
@@ -118,6 +118,8 @@ const shownAmounts = (source, total, sumCents) => {
118
118
  return { written, sum: `${sumSign}${source.slice(unitStart, total.offset)}${sum}` };
119
119
  return { written, sum: `${sumSign}${sum}${written.endsWith(total.unit) ? total.unit : ""}` };
120
120
  };
121
+ /** 文の中の合計の金額(符号の無い、単位付きの金額)と和を、合計の書き方で見せる。 */
122
+ export const shownTotal = (source, total, sumCents) => shownAmounts(source, { ...total, column: 0, cents: Math.round(total.value * CENTS) }, sumCents);
121
123
  /**
122
124
  * 数だけの列で、合計の行の数が項目のどれかより大きくなければ、和ではなく平均や率や年の列と読んで足さない。
123
125
  * 項目に負の数があれば、和が項目より小さいこともあるので足す。
@@ -1 +1 @@
1
- {"version":3,"file":"total.js","sourceRoot":"","sources":["../../src/structure/total.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"total.js","sourceRoot":"","sources":["../../src/structure/total.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-load.d.ts","sourceRoot":"","sources":["../../src/structure-shape/baseline-load.ts"],"names":[],"mappings":"AAIA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAY/E,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAE,iBAAkC,CAAC"}
1
+ {"version":3,"file":"baseline-load.d.ts","sourceRoot":"","sources":["../../src/structure-shape/baseline-load.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAY/E,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,EAAE,iBAAkC,CAAC"}
@@ -1,12 +1,11 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
1
+ import { join } from "node:path";
4
2
  import { parse } from "yaml";
3
+ import { PACKAGE_DIR, readText } from "../package-files.js";
5
4
  import { parseStructureBaseline } from "./baseline.js";
6
- const BASELINE_FILE = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "structure-baseline.yaml");
5
+ const BASELINE_FILE = join(PACKAGE_DIR, "structure-baseline.yaml");
7
6
  const readBaseline = () => {
8
7
  try {
9
- return parseStructureBaseline(parse(readFileSync(BASELINE_FILE, "utf8")));
8
+ return parseStructureBaseline(parse(readText(BASELINE_FILE)));
10
9
  }
11
10
  catch (error) {
12
11
  throw new Error(`cannot read the structure baseline ${BASELINE_FILE}`, { cause: error });
@@ -1 +1 @@
1
- {"version":3,"file":"baseline-load.js","sourceRoot":"","sources":["../../src/structure-shape/baseline-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAA0B,MAAM,eAAe,CAAC;AAE/E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;AAE3G,MAAM,YAAY,GAAG,GAAsB,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAsB,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"baseline-load.js","sourceRoot":"","sources":["../../src/structure-shape/baseline-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAA0B,MAAM,eAAe,CAAC;AAE/E,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;AAEnE,MAAM,YAAY,GAAG,GAAsB,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,sCAAsC,aAAa,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC,CAAC;AAEF,oFAAoF;AACpF,MAAM,CAAC,MAAM,kBAAkB,GAAsB,YAAY,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"style-load.d.ts","sourceRoot":"","sources":["../src/style-load.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAcpE,yEAAyE;AACzE,eAAO,MAAM,UAAU,GAAI,MAAK,MAAmB,KAAG,SAAS,eAAe,EAQ7E,CAAC"}
1
+ {"version":3,"file":"style-load.d.ts","sourceRoot":"","sources":["../src/style-load.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAcpE,yEAAyE;AACzE,eAAO,MAAM,UAAU,GAAI,MAAK,MAAmB,KAAG,SAAS,eAAe,EAQ7E,CAAC"}
@@ -1,13 +1,12 @@
1
- import { readFileSync, readdirSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
1
+ import { join } from "node:path";
4
2
  import { parse } from "yaml";
3
+ import { PACKAGE_DIR, readDir, readText } from "./package-files.js";
5
4
  import { parseStyle } from "./style-parse.js";
6
- const STYLES_DIR = join(dirname(fileURLToPath(import.meta.url)), "..", "styles");
5
+ const STYLES_DIR = join(PACKAGE_DIR, "styles");
7
6
  const loaded = { value: undefined };
8
7
  const readStyle = (dir, file) => {
9
8
  try {
10
- return parseStyle(parse(readFileSync(join(dir, file), "utf8")), file);
9
+ return parseStyle(parse(readText(join(dir, file))), file);
11
10
  }
12
11
  catch (error) {
13
12
  throw new Error(`cannot read ${join(dir, file)}: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
@@ -17,7 +16,7 @@ const readStyle = (dir, file) => {
17
16
  export const loadStyles = (dir = STYLES_DIR) => {
18
17
  if (dir === STYLES_DIR && loaded.value !== undefined)
19
18
  return loaded.value;
20
- const styles = readdirSync(dir)
19
+ const styles = readDir(dir)
21
20
  .filter((file) => file.endsWith(".yaml"))
22
21
  .toSorted((left, right) => left.localeCompare(right, "en"))
23
22
  .map((file) => readStyle(dir, file));
@@ -1 +1 @@
1
- {"version":3,"file":"style-load.js","sourceRoot":"","sources":["../src/style-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEjF,MAAM,MAAM,GAAsD,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAEvF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAmB,EAAE;IAC/D,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjI,CAAC;AACH,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,UAAU,EAA8B,EAAE;IACjF,IAAI,GAAG,KAAK,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;SAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,UAAU;QAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
1
+ {"version":3,"file":"style-load.js","sourceRoot":"","sources":["../src/style-load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AAEpE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE/C,MAAM,MAAM,GAAsD,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAEvF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,IAAY,EAAmB,EAAE;IAC/D,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjI,CAAC;AACH,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,UAAU,EAA8B,EAAE;IACjF,IAAI,GAAG,KAAK,UAAU,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;SACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACxC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACvC,IAAI,GAAG,KAAK,UAAU;QAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chaffjs",
3
- "version": "0.25.0",
3
+ "version": "0.26.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",
@@ -41,8 +41,29 @@
41
41
  "./grade": {
42
42
  "types": "./src/grade-api.ts",
43
43
  "import": "./dist/grade-api.js"
44
+ },
45
+ "./browser": {
46
+ "types": "./src/browser.ts",
47
+ "import": "./dist/browser.js"
48
+ },
49
+ "./browser-files": {
50
+ "types": "./src/browser-files.ts",
51
+ "import": "./dist/browser-files.js"
44
52
  }
45
53
  },
54
+ "browser": {
55
+ "./src/package-files.ts": "./src/browser/package-files.ts",
56
+ "./src/adapter-import.ts": "./src/browser/adapter-import.ts",
57
+ "./src/detectors/index.ts": "./src/browser/detectors.ts",
58
+ "./src/custom/bounded-match.ts": "./src/browser/bounded-match.ts",
59
+ "./src/config/working-dir.ts": "./src/browser/working-dir.ts",
60
+ "./dist/package-files.js": "./dist/browser/package-files.js",
61
+ "./dist/adapter-import.js": "./dist/browser/adapter-import.js",
62
+ "./dist/detectors/index.js": "./dist/browser/detectors.js",
63
+ "./dist/custom/bounded-match.js": "./dist/browser/bounded-match.js",
64
+ "./dist/config/working-dir.js": "./dist/browser/working-dir.js",
65
+ "node:path": "./dist/browser/path.js"
66
+ },
46
67
  "files": [
47
68
  "LICENSE",
48
69
  "README.md",
@@ -66,8 +87,8 @@
66
87
  },
67
88
  "dependencies": {
68
89
  "@anthropic-ai/sdk": "^0.125.0",
69
- "@chaffjs/lang-en": "0.22.0",
70
- "@chaffjs/lang-ja": "0.24.0",
90
+ "@chaffjs/lang-en": "0.23.0",
91
+ "@chaffjs/lang-ja": "0.25.0",
71
92
  "mdast-util-from-markdown": "^2.0.3",
72
93
  "mdast-util-frontmatter": "^2.0.1",
73
94
  "mdast-util-gfm-table": "^2.0.0",
package/rules/cliche.yaml CHANGED
@@ -4,7 +4,7 @@ status: stable
4
4
  how_to_find: phrase-match
5
5
  word_list: cliche
6
6
  requires: [pos]
7
- languages: [en]
7
+ languages: [ja, en]
8
8
  severity: info
9
9
 
10
10
  name:
@@ -12,15 +12,15 @@ name:
12
12
  en: Cliché
13
13
 
14
14
  why:
15
- ja: 英語の「at the end of the day」「low-hanging fruit」「move the needle」のような決まり文句は、使われすぎて中身が抜けた比喩です。読み手は見慣れた形を読み飛ばし、この文書で何が言いたいのかが残りません。言い回しの一覧は言語ごとの語彙表にあり、それぞれに何を書けばよいかが付いています。
16
- en: '"At the end of the day", "low-hanging fruit" and "move the needle" are figures of speech worn down to filler. The reader skims the familiar shape and learns nothing about this document. The phrases are listed in the lexicon, each with what to write instead.'
15
+ ja: 「今さら聞けない」「徹底解説」「〜の極意」や、英語の「at the end of the day」「low-hanging fruit」のような決まり文句は、使われすぎて中身が抜けた言い回しです。読み手は見慣れた形を読み飛ばし、この文書で何が言いたいのかが残りません。言い回しの一覧は言語ごとの語彙表にあり、それぞれに何を書けばよいかが付いています。
16
+ en: '"At the end of the day", "low-hanging fruit" and "move the needle" (今さら聞けない, 徹底解説) are figures of speech worn down to filler. The reader skims the familiar shape and learns nothing about this document. The phrases are listed in the lexicon, each with what to write instead.'
17
17
 
18
18
  message:
19
19
  ja: 「{matched}」は使い古された決まり文句です
20
20
  en: '"{matched}" is a cliché'
21
21
 
22
22
  how_to_fix:
23
- ja: 決まり文句が指していた中身を、そのまま書いてください(low-hanging fruit → 簡単に済む作業の名前)。
23
+ ja: 決まり文句が指していた中身を、そのまま書いてください(徹底解説 → 何を説明するのか、low-hanging fruit → 簡単に済む作業の名前)。
24
24
  en: Say what the phrase stood for ("low-hanging fruit" → name the easy tasks).
25
25
 
26
26
  levels: { strict: 1, normal: 1, relaxed: 2 }
@@ -32,9 +32,14 @@ off_for:
32
32
 
33
33
  group: wording
34
34
  summary:
35
- ja: 英語で、「at the end of the day」「low-hanging fruit」のような使い古された決まり文句
36
- en: A worn phrase such as "at the end of the day" or "low-hanging fruit"
35
+ ja: 「今さら聞けない」「徹底解説」や「at the end of the day」のような、使い古された決まり文句
36
+ en: A worn phrase such as "at the end of the day" or "low-hanging fruit" (今さら聞けない, 徹底解説)
37
37
  example:
38
+ ja:
39
+ before: |
40
+ この記事では、今さら聞けない Git の基本を徹底解説します。
41
+ after: |
42
+ この記事では、Git を初めて使う人向けに、コミットとブランチの使い方を説明します。
38
43
  en:
39
44
  before: |
40
45
  At the end of the day, the new cache is faster.
@@ -42,14 +47,29 @@ example:
42
47
  The new cache cuts load time from 2 seconds to 0.5.
43
48
 
44
49
  not_flagged:
45
- ja: 一覧にある言い回しだけを見ます。ほかの規則が見る言い回し(ai-tell の「game-changer」、empty-intensifier の「needless to say」)は入れていません。英語の文書だけで動き、文学と講演の書き起こしは対象にしません。
46
- en: Only the phrases on chaff's list are checked. Phrases another rule reads ("game-changer" in ai-tell, "needless to say" in empty-intensifier) are not on it. English documents only; literature and speech transcripts are not checked.
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.
47
52
  level_meaning:
48
53
  ja: 当てはまる言い回しが {limit} 箇所あれば指摘
49
54
  en: reported once there are {limit}
50
55
  sources: [write-good, proselint]
51
56
  rewrite:
52
57
  depth: light
58
+ ja:
59
+ direction: 決まり文句を、この文書でそれが指している中身に置き換えてください。語彙表の言い回しごとの書き方に従います。本文が中身を言っていなければ、作らずに書き手に聞いてください。
60
+ pairs:
61
+ - before: この記事では、Docker の設定を徹底解説します。
62
+ after: この記事では、Docker のネットワーク設定の手順を説明します。
63
+ - before: 今さら聞けない SQL の書き方を紹介します。
64
+ after: SQL を初めて書く人向けに、SELECT 文の書き方を紹介します。
65
+ - before: 速く書くための極意は、毎日書くことです。
66
+ after: 速く書くには、毎日書いてください。
67
+ keep:
68
+ - 文が言っている主張
69
+ - 文の中の数・名前・日付
70
+ avoid:
71
+ - 決まり文句を別の決まり文句に替える
72
+ - 本文に無い数や日付を作る
53
73
  en:
54
74
  direction: Replace the cliché with what it stood for in this document, following the lexicon's note for the phrase. If the text does not say what that is, ask the writer rather than invent it.
55
75
  pairs:
@@ -3,9 +3,8 @@ layer: L1
3
3
  status: stable
4
4
  how_to_find: date-without-year
5
5
  requires: [dates]
6
- # The dates come from the language package's date reader. English does not read a date written without its year yet,
7
- # so the rule checks Japanese only until it does.
8
- languages: [ja]
6
+ # The dates come from the language package's date reader.
7
+ languages: [ja, en]
9
8
  severity: info
10
9
 
11
10
  name:
@@ -50,6 +49,19 @@ example:
50
49
  - 2026年10月14日(水):説明会
51
50
  - 2026年10月21日(水):申込の締め切り
52
51
  - 2026年10月28日(水):結果の連絡
52
+ en:
53
+ before: |
54
+ # Schedule
55
+
56
+ - October 14, 2026: briefing
57
+ - October 21, 2026: applications close
58
+ - October 28: results sent
59
+ after: |
60
+ # Schedule
61
+
62
+ - October 14, 2026: briefing
63
+ - October 21, 2026: applications close
64
+ - October 28, 2026: results sent
53
65
 
54
66
  not_flagged:
55
67
  ja: 年を一度だけ書いて、あとの日付は月と日だけで書く文書(年の無い日付のほうが多い文書)は、書き方の選び方として指しません。ただしその場合も、年をまたぐ日付は指します。月だけ・年だけの日付は見ません。
@@ -69,3 +81,16 @@ rewrite:
69
81
  avoid:
70
82
  - 曜日と合わない年を書く
71
83
  - 本文から決まらない年を推して書く
84
+ en:
85
+ direction: Add the year to the date that lacks one. Take it from the document's other dates and from the weekday, if one is written. Where the text does not settle it, leave "[year]" for the writer rather than inventing one.
86
+ pairs:
87
+ - before: "October 28: results sent"
88
+ after: "October 28, 2026: results sent"
89
+ - before: The next meeting is on January 15.
90
+ after: The next meeting is on January 15, 2027.
91
+ keep:
92
+ - the month, the day and the weekday
93
+ - how the other dates are written
94
+ avoid:
95
+ - a year that does not match the weekday
96
+ - guessing a year the text does not give