chaffjs 0.13.0 → 0.15.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 (323) hide show
  1. package/dist/address-chain.d.ts +4 -1
  2. package/dist/address-chain.d.ts.map +1 -1
  3. package/dist/address-chain.js +5 -2
  4. package/dist/address-chain.js.map +1 -1
  5. package/dist/cli-text.d.ts +4 -1
  6. package/dist/cli-text.d.ts.map +1 -1
  7. package/dist/cli-text.js +14 -2
  8. package/dist/cli-text.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +21 -21
  11. package/dist/cli.js.map +1 -1
  12. package/dist/commands/eval.d.ts +4 -0
  13. package/dist/commands/eval.d.ts.map +1 -1
  14. package/dist/commands/eval.js +20 -6
  15. package/dist/commands/eval.js.map +1 -1
  16. package/dist/commands/feedback.d.ts.map +1 -1
  17. package/dist/commands/feedback.js +2 -1
  18. package/dist/commands/feedback.js.map +1 -1
  19. package/dist/commands/test.d.ts.map +1 -1
  20. package/dist/commands/test.js +3 -2
  21. package/dist/commands/test.js.map +1 -1
  22. package/dist/commands/tree.d.ts.map +1 -1
  23. package/dist/commands/tree.js +2 -1
  24. package/dist/commands/tree.js.map +1 -1
  25. package/dist/detectors/acronym-compound.d.ts +8 -0
  26. package/dist/detectors/acronym-compound.d.ts.map +1 -0
  27. package/dist/detectors/acronym-compound.js +8 -0
  28. package/dist/detectors/acronym-compound.js.map +1 -0
  29. package/dist/detectors/acronym-context.d.ts +6 -0
  30. package/dist/detectors/acronym-context.d.ts.map +1 -1
  31. package/dist/detectors/acronym-context.js +24 -1
  32. package/dist/detectors/acronym-context.js.map +1 -1
  33. package/dist/detectors/acronym-expansion.d.ts +10 -0
  34. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  35. package/dist/detectors/acronym-expansion.js +63 -5
  36. package/dist/detectors/acronym-expansion.js.map +1 -1
  37. package/dist/detectors/char-shape.d.ts.map +1 -1
  38. package/dist/detectors/char-shape.js +38 -16
  39. package/dist/detectors/char-shape.js.map +1 -1
  40. package/dist/detectors/citation-key.d.ts +13 -0
  41. package/dist/detectors/citation-key.d.ts.map +1 -0
  42. package/dist/detectors/citation-key.js +9 -0
  43. package/dist/detectors/citation-key.js.map +1 -0
  44. package/dist/detectors/cited-name.d.ts +11 -0
  45. package/dist/detectors/cited-name.d.ts.map +1 -0
  46. package/dist/detectors/cited-name.js +15 -0
  47. package/dist/detectors/cited-name.js.map +1 -0
  48. package/dist/detectors/concrete-evidence.d.ts +7 -0
  49. package/dist/detectors/concrete-evidence.d.ts.map +1 -0
  50. package/dist/detectors/concrete-evidence.js +21 -0
  51. package/dist/detectors/concrete-evidence.js.map +1 -0
  52. package/dist/detectors/conjugated-form.d.ts +3 -0
  53. package/dist/detectors/conjugated-form.d.ts.map +1 -0
  54. package/dist/detectors/conjugated-form.js +29 -0
  55. package/dist/detectors/conjugated-form.js.map +1 -0
  56. package/dist/detectors/counter-edge.d.ts +8 -0
  57. package/dist/detectors/counter-edge.d.ts.map +1 -0
  58. package/dist/detectors/counter-edge.js +27 -0
  59. package/dist/detectors/counter-edge.js.map +1 -0
  60. package/dist/detectors/dotted-name.d.ts +13 -0
  61. package/dist/detectors/dotted-name.d.ts.map +1 -0
  62. package/dist/detectors/dotted-name.js +10 -0
  63. package/dist/detectors/dotted-name.js.map +1 -0
  64. package/dist/detectors/doubled-word.d.ts +6 -1
  65. package/dist/detectors/doubled-word.d.ts.map +1 -1
  66. package/dist/detectors/doubled-word.js +22 -2
  67. package/dist/detectors/doubled-word.js.map +1 -1
  68. package/dist/detectors/en-shape.d.ts +1 -1
  69. package/dist/detectors/en-shape.d.ts.map +1 -1
  70. package/dist/detectors/en-shape.js +11 -22
  71. package/dist/detectors/en-shape.js.map +1 -1
  72. package/dist/detectors/enumerated-runs.d.ts +22 -0
  73. package/dist/detectors/enumerated-runs.d.ts.map +1 -0
  74. package/dist/detectors/enumerated-runs.js +53 -0
  75. package/dist/detectors/enumerated-runs.js.map +1 -0
  76. package/dist/detectors/gram-place.d.ts +0 -4
  77. package/dist/detectors/gram-place.d.ts.map +1 -1
  78. package/dist/detectors/gram-place.js +6 -1
  79. package/dist/detectors/gram-place.js.map +1 -1
  80. package/dist/detectors/gram-predicate.d.ts +7 -0
  81. package/dist/detectors/gram-predicate.d.ts.map +1 -0
  82. package/dist/detectors/gram-predicate.js +44 -0
  83. package/dist/detectors/gram-predicate.js.map +1 -0
  84. package/dist/detectors/heading-case.d.ts +21 -0
  85. package/dist/detectors/heading-case.d.ts.map +1 -0
  86. package/dist/detectors/heading-case.js +38 -0
  87. package/dist/detectors/heading-case.js.map +1 -0
  88. package/dist/detectors/heading-echo.d.ts.map +1 -1
  89. package/dist/detectors/heading-echo.js +4 -1
  90. package/dist/detectors/heading-echo.js.map +1 -1
  91. package/dist/detectors/lexicon.d.ts.map +1 -1
  92. package/dist/detectors/lexicon.js +7 -4
  93. package/dist/detectors/lexicon.js.map +1 -1
  94. package/dist/detectors/middle-dot.d.ts +6 -0
  95. package/dist/detectors/middle-dot.d.ts.map +1 -0
  96. package/dist/detectors/middle-dot.js +9 -0
  97. package/dist/detectors/middle-dot.js.map +1 -0
  98. package/dist/detectors/name-numeral.d.ts +16 -0
  99. package/dist/detectors/name-numeral.d.ts.map +1 -0
  100. package/dist/detectors/name-numeral.js +30 -0
  101. package/dist/detectors/name-numeral.js.map +1 -0
  102. package/dist/detectors/name-part.d.ts +8 -0
  103. package/dist/detectors/name-part.d.ts.map +1 -0
  104. package/dist/detectors/name-part.js +20 -0
  105. package/dist/detectors/name-part.js.map +1 -0
  106. package/dist/detectors/name-run.d.ts +8 -0
  107. package/dist/detectors/name-run.d.ts.map +1 -0
  108. package/dist/detectors/name-run.js +13 -0
  109. package/dist/detectors/name-run.js.map +1 -0
  110. package/dist/detectors/orthography.d.ts.map +1 -1
  111. package/dist/detectors/orthography.js +18 -6
  112. package/dist/detectors/orthography.js.map +1 -1
  113. package/dist/detectors/placeholder.d.ts +14 -0
  114. package/dist/detectors/placeholder.d.ts.map +1 -0
  115. package/dist/detectors/placeholder.js +24 -0
  116. package/dist/detectors/placeholder.js.map +1 -0
  117. package/dist/detectors/polite-word.d.ts +4 -0
  118. package/dist/detectors/polite-word.d.ts.map +1 -0
  119. package/dist/detectors/polite-word.js +10 -0
  120. package/dist/detectors/polite-word.js.map +1 -0
  121. package/dist/detectors/quoted-variant.d.ts +7 -0
  122. package/dist/detectors/quoted-variant.d.ts.map +1 -0
  123. package/dist/detectors/quoted-variant.js +18 -0
  124. package/dist/detectors/quoted-variant.js.map +1 -0
  125. package/dist/detectors/register.d.ts +7 -5
  126. package/dist/detectors/register.d.ts.map +1 -1
  127. package/dist/detectors/register.js +6 -4
  128. package/dist/detectors/register.js.map +1 -1
  129. package/dist/detectors/roman-numeral.d.ts +6 -0
  130. package/dist/detectors/roman-numeral.d.ts.map +1 -0
  131. package/dist/detectors/roman-numeral.js +6 -0
  132. package/dist/detectors/roman-numeral.js.map +1 -0
  133. package/dist/detectors/sentence-ending.d.ts.map +1 -1
  134. package/dist/detectors/sentence-ending.js +14 -4
  135. package/dist/detectors/sentence-ending.js.map +1 -1
  136. package/dist/detectors/series-label.d.ts +13 -0
  137. package/dist/detectors/series-label.d.ts.map +1 -0
  138. package/dist/detectors/series-label.js +26 -0
  139. package/dist/detectors/series-label.js.map +1 -0
  140. package/dist/detectors/signals.d.ts.map +1 -1
  141. package/dist/detectors/signals.js +37 -25
  142. package/dist/detectors/signals.js.map +1 -1
  143. package/dist/detectors/structure-tree.js +1 -1
  144. package/dist/detectors/structure-tree.js.map +1 -1
  145. package/dist/detectors/structure.d.ts.map +1 -1
  146. package/dist/detectors/structure.js +2 -1
  147. package/dist/detectors/structure.js.map +1 -1
  148. package/dist/detectors/superlative-name.d.ts +9 -0
  149. package/dist/detectors/superlative-name.d.ts.map +1 -0
  150. package/dist/detectors/superlative-name.js +24 -0
  151. package/dist/detectors/superlative-name.js.map +1 -0
  152. package/dist/detectors/token-shape.d.ts.map +1 -1
  153. package/dist/detectors/token-shape.js +10 -2
  154. package/dist/detectors/token-shape.js.map +1 -1
  155. package/dist/document.d.ts.map +1 -1
  156. package/dist/document.js +10 -4
  157. package/dist/document.js.map +1 -1
  158. package/dist/genre-check.d.ts +34 -0
  159. package/dist/genre-check.d.ts.map +1 -0
  160. package/dist/genre-check.js +21 -0
  161. package/dist/genre-check.js.map +1 -0
  162. package/dist/genre.d.ts +8 -1
  163. package/dist/genre.d.ts.map +1 -1
  164. package/dist/genre.js +29 -5
  165. package/dist/genre.js.map +1 -1
  166. package/dist/init.d.ts +0 -1
  167. package/dist/init.d.ts.map +1 -1
  168. package/dist/init.js +0 -12
  169. package/dist/init.js.map +1 -1
  170. package/dist/joined-view.d.ts +25 -0
  171. package/dist/joined-view.d.ts.map +1 -0
  172. package/dist/joined-view.js +76 -0
  173. package/dist/joined-view.js.map +1 -0
  174. package/dist/line-continues.d.ts +6 -0
  175. package/dist/line-continues.d.ts.map +1 -0
  176. package/dist/line-continues.js +33 -0
  177. package/dist/line-continues.js.map +1 -0
  178. package/dist/measure.d.ts +1 -0
  179. package/dist/measure.d.ts.map +1 -1
  180. package/dist/measure.js +5 -1
  181. package/dist/measure.js.map +1 -1
  182. package/dist/number-name.d.ts +7 -3
  183. package/dist/number-name.d.ts.map +1 -1
  184. package/dist/number-name.js +51 -15
  185. package/dist/number-name.js.map +1 -1
  186. package/dist/orthography.d.ts +4 -0
  187. package/dist/orthography.d.ts.map +1 -1
  188. package/dist/orthography.js +11 -9
  189. package/dist/orthography.js.map +1 -1
  190. package/dist/plain-source.d.ts +6 -0
  191. package/dist/plain-source.d.ts.map +1 -0
  192. package/dist/plain-source.js +6 -0
  193. package/dist/plain-source.js.map +1 -0
  194. package/dist/plugin.d.ts +18 -1
  195. package/dist/plugin.d.ts.map +1 -1
  196. package/dist/preamble-paragraphs.d.ts +7 -0
  197. package/dist/preamble-paragraphs.d.ts.map +1 -0
  198. package/dist/preamble-paragraphs.js +7 -0
  199. package/dist/preamble-paragraphs.js.map +1 -0
  200. package/dist/quoted-span.d.ts +10 -0
  201. package/dist/quoted-span.d.ts.map +1 -0
  202. package/dist/quoted-span.js +20 -0
  203. package/dist/quoted-span.js.map +1 -0
  204. package/dist/render/eval.d.ts +2 -1
  205. package/dist/render/eval.d.ts.map +1 -1
  206. package/dist/render/eval.js +84 -43
  207. package/dist/render/eval.js.map +1 -1
  208. package/dist/resolve-genre.d.ts +11 -0
  209. package/dist/resolve-genre.d.ts.map +1 -0
  210. package/dist/resolve-genre.js +18 -0
  211. package/dist/resolve-genre.js.map +1 -0
  212. package/dist/soft-break.d.ts +19 -0
  213. package/dist/soft-break.d.ts.map +1 -0
  214. package/dist/soft-break.js +78 -0
  215. package/dist/soft-break.js.map +1 -0
  216. package/dist/structure/build.d.ts.map +1 -1
  217. package/dist/structure/build.js +23 -10
  218. package/dist/structure/build.js.map +1 -1
  219. package/dist/structure/date-order.d.ts +3 -0
  220. package/dist/structure/date-order.d.ts.map +1 -1
  221. package/dist/structure/date-order.js +9 -1
  222. package/dist/structure/date-order.js.map +1 -1
  223. package/dist/structure/heading-leaves.d.ts +7 -0
  224. package/dist/structure/heading-leaves.d.ts.map +1 -0
  225. package/dist/structure/heading-leaves.js +6 -0
  226. package/dist/structure/heading-leaves.js.map +1 -0
  227. package/dist/structure/issues.d.ts +1 -1
  228. package/dist/structure/issues.d.ts.map +1 -1
  229. package/dist/structure/issues.js +14 -3
  230. package/dist/structure/issues.js.map +1 -1
  231. package/dist/structure/listed-tags.d.ts +3 -0
  232. package/dist/structure/listed-tags.d.ts.map +1 -0
  233. package/dist/structure/listed-tags.js +6 -0
  234. package/dist/structure/listed-tags.js.map +1 -0
  235. package/dist/structure/number-in-sentence.d.ts +15 -0
  236. package/dist/structure/number-in-sentence.d.ts.map +1 -0
  237. package/dist/structure/number-in-sentence.js +13 -0
  238. package/dist/structure/number-in-sentence.js.map +1 -0
  239. package/dist/structure/unit-word.d.ts +8 -0
  240. package/dist/structure/unit-word.d.ts.map +1 -0
  241. package/dist/structure/unit-word.js +10 -0
  242. package/dist/structure/unit-word.js.map +1 -0
  243. package/dist/structure/wrapped-tail.d.ts +18 -0
  244. package/dist/structure/wrapped-tail.d.ts.map +1 -0
  245. package/dist/structure/wrapped-tail.js +11 -0
  246. package/dist/structure/wrapped-tail.js.map +1 -0
  247. package/package.json +3 -3
  248. package/rules/dangling-reference.yaml +2 -2
  249. package/rules/date-order.yaml +2 -2
  250. package/rules/duplicate-definition.yaml +2 -2
  251. package/rules/latin-spacing.yaml +4 -2
  252. package/rules/max-kanji-continuous.yaml +1 -1
  253. package/rules/no-doubled-joshi.yaml +2 -2
  254. package/rules/no-nakaguro-parallel.yaml +2 -2
  255. package/rules/title-case-consistency.yaml +2 -2
  256. package/rules/undefined-acronym.yaml +15 -1
  257. package/rules/unqualified-superlative.yaml +1 -1
  258. package/src/address-chain.ts +5 -2
  259. package/src/cli-text.ts +19 -3
  260. package/src/cli.ts +22 -19
  261. package/src/commands/eval.ts +26 -5
  262. package/src/commands/feedback.ts +2 -1
  263. package/src/commands/test.ts +3 -2
  264. package/src/commands/tree.ts +2 -1
  265. package/src/detectors/acronym-compound.ts +9 -0
  266. package/src/detectors/acronym-context.ts +32 -1
  267. package/src/detectors/acronym-expansion.ts +72 -5
  268. package/src/detectors/char-shape.ts +44 -17
  269. package/src/detectors/citation-key.ts +13 -0
  270. package/src/detectors/cited-name.ts +23 -0
  271. package/src/detectors/concrete-evidence.ts +31 -0
  272. package/src/detectors/conjugated-form.ts +40 -0
  273. package/src/detectors/counter-edge.ts +29 -0
  274. package/src/detectors/dotted-name.ts +14 -0
  275. package/src/detectors/doubled-word.ts +25 -2
  276. package/src/detectors/en-shape.ts +17 -30
  277. package/src/detectors/enumerated-runs.ts +68 -0
  278. package/src/detectors/gram-place.ts +8 -1
  279. package/src/detectors/gram-predicate.ts +55 -0
  280. package/src/detectors/heading-case.ts +41 -0
  281. package/src/detectors/heading-echo.ts +5 -1
  282. package/src/detectors/lexicon.ts +8 -5
  283. package/src/detectors/middle-dot.ts +10 -0
  284. package/src/detectors/name-numeral.ts +37 -0
  285. package/src/detectors/name-part.ts +24 -0
  286. package/src/detectors/name-run.ts +16 -0
  287. package/src/detectors/orthography.ts +20 -9
  288. package/src/detectors/placeholder.ts +38 -0
  289. package/src/detectors/polite-word.ts +14 -0
  290. package/src/detectors/quoted-variant.ts +20 -0
  291. package/src/detectors/register.ts +11 -7
  292. package/src/detectors/roman-numeral.ts +5 -0
  293. package/src/detectors/sentence-ending.ts +23 -6
  294. package/src/detectors/series-label.ts +33 -0
  295. package/src/detectors/signals.ts +44 -31
  296. package/src/detectors/structure-tree.ts +2 -2
  297. package/src/detectors/structure.ts +2 -1
  298. package/src/detectors/superlative-name.ts +30 -0
  299. package/src/detectors/token-shape.ts +12 -3
  300. package/src/document.ts +12 -5
  301. package/src/genre-check.ts +46 -0
  302. package/src/genre.ts +34 -5
  303. package/src/init.ts +0 -13
  304. package/src/joined-view.ts +96 -0
  305. package/src/line-continues.ts +43 -0
  306. package/src/measure.ts +9 -1
  307. package/src/number-name.ts +65 -15
  308. package/src/orthography.ts +15 -9
  309. package/src/plain-source.ts +5 -0
  310. package/src/plugin.ts +23 -2
  311. package/src/preamble-paragraphs.ts +9 -0
  312. package/src/quoted-span.ts +25 -0
  313. package/src/render/eval.ts +101 -38
  314. package/src/resolve-genre.ts +20 -0
  315. package/src/soft-break.ts +94 -0
  316. package/src/structure/build.ts +29 -17
  317. package/src/structure/date-order.ts +16 -1
  318. package/src/structure/heading-leaves.ts +7 -0
  319. package/src/structure/issues.ts +18 -3
  320. package/src/structure/listed-tags.ts +7 -0
  321. package/src/structure/number-in-sentence.ts +20 -0
  322. package/src/structure/unit-word.ts +11 -0
  323. package/src/structure/wrapped-tail.ts +22 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/commands/tree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../src/commands/tree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** - で繋いだ略語(RT-PCR)の部品。繋いでいなければ、その語だけ。 */
2
+ export declare const partsOf: (acronym: string) => string[];
3
+ /**
4
+ * 略語が説明済みか。- で繋いだ語は、繋いだ形のまま説明されているか、部品がどれも説明済みなら説明済み。
5
+ * US-EU は US も EU も通じるので指摘しない。RT-PCR は RT がどこにも説明されていないので、繋いだ形で指摘する。
6
+ */
7
+ export declare const isExplained: (acronym: string, explainedAlone: (word: string) => boolean) => boolean;
8
+ //# sourceMappingURL=acronym-compound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acronym-compound.d.ts","sourceRoot":"","sources":["../../src/detectors/acronym-compound.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,KAAG,MAAM,EAAwB,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,KAAG,OACtB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** - で繋いだ略語(RT-PCR)の部品。繋いでいなければ、その語だけ。 */
2
+ export const partsOf = (acronym) => acronym.split("-");
3
+ /**
4
+ * 略語が説明済みか。- で繋いだ語は、繋いだ形のまま説明されているか、部品がどれも説明済みなら説明済み。
5
+ * US-EU は US も EU も通じるので指摘しない。RT-PCR は RT がどこにも説明されていないので、繋いだ形で指摘する。
6
+ */
7
+ export const isExplained = (acronym, explainedAlone) => explainedAlone(acronym) || partsOf(acronym).every(explainedAlone);
8
+ //# sourceMappingURL=acronym-compound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acronym-compound.js","sourceRoot":"","sources":["../../src/detectors/acronym-compound.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAY,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,cAAyC,EAAW,EAAE,CACjG,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC"}
@@ -14,6 +14,12 @@ export type NotationWords = {
14
14
  readonly currencies: readonly string[];
15
15
  readonly usStates: readonly string[];
16
16
  readonly emphasis: readonly string[];
17
+ /** 番号を後ろに書く、文書の区切りの名前(Part、Section、Title)。 */
18
+ readonly divisions: readonly string[];
19
+ /** 速記録が大文字で書く発言者の姓の前に置く敬称(Mr.、Mrs.、Madam)。 */
20
+ readonly honorifics: readonly string[];
21
+ /** 日付・時刻の数字の後ろに書く単位(年、月、日、時、分)。その前の同じ大文字の繰り返し(YY年)は書式の置き場所。 */
22
+ readonly dateTimeUnits: readonly string[];
17
23
  };
18
24
  export type NotAcronymSpans = (text: string) => Span[];
19
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"acronym-context.d.ts","sourceRoot":"","sources":["../../src/detectors/acronym-context.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,KAAK,IAAI,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC,CAAC;AAuBF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,eAGxD,CAAC"}
1
+ {"version":3,"file":"acronym-context.d.ts","sourceRoot":"","sources":["../../src/detectors/acronym-context.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH,KAAK,IAAI,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,+DAA+D;IAC/D,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,CAAC;AAkCF,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,eAWxD,CAAC"}
@@ -1,4 +1,10 @@
1
1
  import { escapeRegExp } from "../orthography.js";
2
+ import { ROMAN_NUMERAL } from "./roman-numeral.js";
3
+ import { citationKeySpans } from "./citation-key.js";
4
+ import { dottedNameSpans } from "./dotted-name.js";
5
+ import { loneNumeralSpans, nameNumeralSpans } from "./name-numeral.js";
6
+ import { placeholderSpans } from "./placeholder.js";
7
+ import { seriesLabelSpans } from "./series-label.js";
2
8
  // 空の語彙表は「その書き方が無い」。空の選択肢 (?:) は至る所で空文字に当たるので、何にも当たらない形にする。
3
9
  const oneOf = (words) => (words.length === 0 ? "(?!)" : `(?:${words.map(escapeRegExp).join("|")})`);
4
10
  const MINUTES = String.raw `:[0-5]\d`;
@@ -8,6 +14,13 @@ const CLOCK_24 = String.raw `(?<![\d:.])(?:[01]?\d|2[0-3])${MINUTES}`;
8
14
  const ANY_MERIDIEM = String.raw `[AaPp]\.?[Mm]\.?`;
9
15
  /** 桁区切りは 3 桁ずつ揃っているときだけ金額と読む。「item 1, USD」の 1, は金額ではない。 */
10
16
  const AMOUNT = String.raw `(?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?`;
17
+ /**
18
+ * 区切りの名前のすぐ後ろのローマ数字は番号(Part II、Section VIII、TITLE IV)。名前は語彙表の書き方か、全部大文字。
19
+ * CD や CI のようにローマ数字としても読める略語は、この位置でなければ略語のまま数える。
20
+ */
21
+ const divisionOf = (words) => oneOf(words.flatMap((word) => [word, word.toUpperCase()]));
22
+ /** 敬称のすぐ後ろの大文字の姓(Mr. HAWLEY、Dr. O'NEIL)。速記録は発言者をこう書き、略語ではない。 */
23
+ const SURNAME_IN_CAPITALS = String.raw `[A-Z]+(?:['’-][A-Z]+)*(?![\p{L}\p{N}_])`;
11
24
  // 強調の記号は空白に置き換えてある(**3:30** PM)ので、部品の間の空白は数を問わない。
12
25
  const patternsOf = (words) => [
13
26
  new RegExp(String.raw `${CLOCK_12}\s*${oneOf(words.meridiem)}`, "gu"),
@@ -16,6 +29,8 @@ const patternsOf = (words) => [
16
29
  new RegExp(String.raw `(?<![\w.,])${AMOUNT}\s*${oneOf(words.currencies)}`, "gu"),
17
30
  new RegExp(String.raw `,\s+${oneOf(words.usStates)}\s+\d{5}(?:-\d{4})?(?!\d)`, "gu"),
18
31
  new RegExp(oneOf(words.emphasis), "gu"),
32
+ new RegExp(String.raw `(?<![\p{L}\p{N}_])${divisionOf(words.divisions)}\s+${ROMAN_NUMERAL}(?![\p{L}\p{N}_&])`, "gu"),
33
+ new RegExp(String.raw `(?<![\p{L}\p{N}_])${oneOf(words.honorifics)}\s+${SURNAME_IN_CAPITALS}`, "gu"),
19
34
  ];
20
35
  /**
21
36
  * 文の中で、略語として数えない大文字を含む範囲。語彙表から一度だけ組み立てて、文ごとに呼ぶ。
@@ -23,6 +38,14 @@ const patternsOf = (words) => [
23
38
  */
24
39
  export const notAcronymSpansOf = (words) => {
25
40
  const patterns = patternsOf(words);
26
- return (text) => patterns.flatMap((pattern) => [...text.matchAll(pattern)].map((match) => ({ start: match.index, end: match.index + match[0].length })));
41
+ return (text) => [
42
+ ...patterns.flatMap((pattern) => [...text.matchAll(pattern)].map((match) => ({ start: match.index, end: match.index + match[0].length }))),
43
+ ...citationKeySpans(text),
44
+ ...dottedNameSpans(text),
45
+ ...nameNumeralSpans(text),
46
+ ...loneNumeralSpans(text),
47
+ ...seriesLabelSpans(text),
48
+ ...placeholderSpans(text, words.dateTimeUnits),
49
+ ];
27
50
  };
28
51
  //# sourceMappingURL=acronym-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"acronym-context.js","sourceRoot":"","sources":["../../src/detectors/acronym-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAmBjD,2DAA2D;AAC3D,MAAM,KAAK,GAAG,CAAC,KAAwB,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/H,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA,UAAU,CAAC;AACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,mCAAmC,OAAO,IAAI,CAAC;AAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,gCAAgC,OAAO,EAAE,CAAC;AACrE,6CAA6C;AAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kBAAkB,CAAC;AAClD,2DAA2D;AAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA,sCAAsC,CAAC;AAEhE,kDAAkD;AAClD,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAqB,EAAE,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,QAAQ,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,MAAM,QAAQ,IAAI,QAAQ,MAAM,YAAY,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;IACvG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,MAAM,EAAE,EAAE,IAAI,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,cAAc,MAAM,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/E,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC;IACnF,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACxC,CAAC;AAIF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAoB,EAAmB,EAAE;IACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3J,CAAC,CAAC"}
1
+ {"version":3,"file":"acronym-context.js","sourceRoot":"","sources":["../../src/detectors/acronym-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAyBrD,2DAA2D;AAC3D,MAAM,KAAK,GAAG,CAAC,KAAwB,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/H,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAA,UAAU,CAAC;AACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,mCAAmC,OAAO,IAAI,CAAC;AAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA,gCAAgC,OAAO,EAAE,CAAC;AACrE,6CAA6C;AAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA,kBAAkB,CAAC;AAClD,2DAA2D;AAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA,sCAAsC,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,KAAwB,EAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAEpH,gEAAgE;AAChE,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA,yCAAyC,CAAC;AAEhF,kDAAkD;AAClD,MAAM,UAAU,GAAG,CAAC,KAAoB,EAAqB,EAAE,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,QAAQ,MAAM,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IACpE,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,MAAM,QAAQ,IAAI,QAAQ,MAAM,YAAY,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;IACvG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,MAAM,EAAE,EAAE,IAAI,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,cAAc,MAAM,MAAM,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/E,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC;IACnF,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,qBAAqB,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,aAAa,oBAAoB,EAAE,IAAI,CAAC;IACnH,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,qBAAqB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,mBAAmB,EAAE,EAAE,IAAI,CAAC;CACpG,CAAC;AAIF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAoB,EAAmB,EAAE;IACzE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACf,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1I,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzB,GAAG,eAAe,CAAC,IAAI,CAAC;QACxB,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzB,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzB,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACzB,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;KAC/C,CAAC;AACJ,CAAC,CAAC"}
@@ -1,8 +1,18 @@
1
+ /**
2
+ * 括弧の中で略語と組になる名前の頭文字が、略語とちょうど揃うか。大文字で始まる語だけの頭文字(Data Retention and Reuse Act)か、
3
+ * すべての語の頭文字(single nucleotide polymorphism)で比べる。後者は大文字小文字を問わない。
4
+ */
5
+ export declare const namesAcronym: (name: string, acronym: string) => boolean;
1
6
  /** 言語パッケージの語彙表から読む、括弧の中で略語の前に書く語(以下、hereinafter)と後ろに書く語(という)。 */
2
7
  export type DefinitionWords = {
3
8
  readonly markers: readonly string[];
4
9
  readonly verbs: readonly string[];
5
10
  };
11
+ /**
12
+ * 略語の文字が、名前のどれかの語の頭から始まって、名前の文字の中に順に拾えるか。1 つの略語を空白で分けて書くときは、
13
+ * 語の頭文字ではなく語の途中の文字も使う(overnight reverse repurchase agreement → ON RRP)。見る語は略語の文字数の 2 倍まで。
14
+ */
15
+ export declare const abbreviates: (name: string, acronym: string) => boolean;
6
16
  export type ExpandedAt = (body: string, acronym: string, at: number) => boolean;
7
17
  /** body の at にある略語が、その場で展開・定義されているか。語彙表から一度だけ組み立てて、略語ごとに呼ぶ。 */
8
18
  export declare const expansionAt: (words: DefinitionWords) => ExpandedAt;
@@ -1 +1 @@
1
- {"version":3,"file":"acronym-expansion.d.ts","sourceRoot":"","sources":["../../src/detectors/acronym-expansion.ts"],"names":[],"mappings":"AAuEA,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AA8BzG,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAEhF,+DAA+D;AAC/D,eAAO,MAAM,WAAW,GAAI,OAAO,eAAe,KAAG,UAGpD,CAAC"}
1
+ {"version":3,"file":"acronym-expansion.d.ts","sourceRoot":"","sources":["../../src/detectors/acronym-expansion.ts"],"names":[],"mappings":"AA4DA;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,OAK5D,CAAC;AAwBF,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAgCzG;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,OAI3D,CAAC;AAmCF,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;AAEhF,+DAA+D;AAC/D,eAAO,MAAM,WAAW,GAAI,OAAO,eAAe,KAAG,UAGpD,CAAC"}
@@ -8,7 +8,9 @@ import { escapeRegExp } from "../orthography.js";
8
8
  * Continuous Integration (CI) 括弧の中が略語
9
9
  * Tax Cuts and Jobs Act [TCJA] 角括弧の中が略語で、直前の語の頭文字と揃う
10
10
  * Relief Act (RA; P.L. 112-240) 括弧の最初の項目が略語で、直前の語か区切りの後の語の頭文字と揃う
11
+ * (single nucleotide polymorphism:SNP) 括弧の最後の項目が略語で、コロンの前の語の頭文字と揃う
11
12
  * 人事部(以下「HR」という。) 括弧の中が定義の語と略語だけ
13
+ * overnight reverse repurchase agreement (ON RRP) 括弧の中が空白で繋いだ略語だけで、前の名前から文字が順に拾える
12
14
  * 括弧と略語の間には、引用符((“MNDA”)、(「MNDA」))と空白だけを許す。
13
15
  */
14
16
  const WRAP = String.raw `[\s"“”'‘’「」『』]*`;
@@ -19,7 +21,9 @@ const SQUARE_CLOSES = new RegExp(String.raw `^${WRAP}\]`, "u");
19
21
  const SQUARE_OPENED = new RegExp(String.raw `\[${WRAP}$`, "u");
20
22
  const ANY_OPENED = new RegExp(String.raw `[(([]${WRAP}$`, "u");
21
23
  /** 括弧の最初の項目のあとの区切りと、括弧が閉じるまでの残り((ARRA; P.L. 111-5)、(OP、Originator Profile))。 */
22
- const SEPARATED = new RegExp(String.raw `^${WRAP}[;;,,、](?<rest>[^()()]*)`, "u");
24
+ const SEPARATED = new RegExp(String.raw `^${WRAP}[;;,,、::](?<rest>[^()()]*)`, "u");
25
+ /** 括弧の中の名前とコロンのあと、略語の直前まで((single nucleotide polymorphism:SNP))。名前に区切りがあれば列挙なので外す。 */
26
+ const NAMED_BEFORE = new RegExp(String.raw `[((](?<name>[^()();;,,、::]*)[::]${WRAP}$`, "u");
23
27
  const QUOTES = /["“”'‘’「」『』]/gu;
24
28
  /** 括弧と略語の間の幅。空白は 1 つに畳んであるので、(“ MNDA ”) まで収まる。 */
25
29
  const NEAR = 3;
@@ -31,7 +35,7 @@ const MARKER_GAP = String.raw `(?![A-Za-z])[\s、,]*`;
31
35
  * 角括弧は引用の印にも使う([IANA]、[1])。直前の語のうち大文字で始まる語の頭文字が
32
36
  * 略語と揃うときだけ展開と見なす。見る語は略語の文字数の 2 倍まで(and や of を挟むため)。
33
37
  */
34
- const lettersOf = (acronym) => acronym.replaceAll("&", "");
38
+ const lettersOf = (acronym) => acronym.replaceAll(/[&-]/gu, "");
35
39
  const initialsOf = (words) => words
36
40
  .filter((word) => /^[A-Z]/u.test(word))
37
41
  .map((word) => word.charAt(0))
@@ -45,6 +49,16 @@ const spellsOut = (before, acronym) => {
45
49
  .slice(-letters.length * 2);
46
50
  return initialsOf(words).endsWith(letters);
47
51
  };
52
+ /**
53
+ * 括弧の中で略語と組になる名前の頭文字が、略語とちょうど揃うか。大文字で始まる語だけの頭文字(Data Retention and Reuse Act)か、
54
+ * すべての語の頭文字(single nucleotide polymorphism)で比べる。後者は大文字小文字を問わない。
55
+ */
56
+ export const namesAcronym = (name, acronym) => {
57
+ const words = name.replace(QUOTES, " ").trim().split(/\s+/u);
58
+ const letters = lettersOf(acronym);
59
+ const allInitials = words.map((word) => word.charAt(0)).join("");
60
+ return initialsOf(words) === letters || allInitials.toUpperCase() === letters.toUpperCase();
61
+ };
48
62
  /**
49
63
  * 括弧の最初の項目が略語で、区切りのあとに注記が続く形((ARRA; P.L. 111-5)、(OP、Originator Profile))。
50
64
  * 同じ形で列挙も書く((MR, handbook, etc.)、(EPA, FDIC, GSA))ので、直前の語か、区切りから括弧が閉じるまでの語の
@@ -59,7 +73,14 @@ const isSeparatedAt = (body, acronym, at) => {
59
73
  const rest = separated.groups?.["rest"] ?? "";
60
74
  const end = at + acronym.length + separated[0].length;
61
75
  const closed = CLOSES.test(body.slice(end, end + NEAR));
62
- return spellsOut(body.slice(0, at), acronym) || (closed && initialsOf(rest.replace(QUOTES, " ").trim().split(/\s+/u)) === lettersOf(acronym));
76
+ return spellsOut(body.slice(0, at), acronym) || (closed && namesAcronym(rest, acronym));
77
+ };
78
+ /** 括弧の最後の項目が略語で、コロンの前に名前を書く形((Information-technology Promotion Agency:IPA))。 */
79
+ const isNamedBeforeAt = (body, acronym, at) => {
80
+ const named = NAMED_BEFORE.exec(body.slice(Math.max(0, at - DEFINITION_REACH), at));
81
+ if (named === null || !CLOSES.test(body.slice(at + acronym.length, at + acronym.length + NEAR)))
82
+ return false;
83
+ return namesAcronym(named.groups?.["name"] ?? "", acronym);
63
84
  };
64
85
  const oneOf = (words) => (words.length === 0 ? "(?!)" : words.map(escapeRegExp).join("|"));
65
86
  const definitionPatterns = (words) => ({
@@ -77,6 +98,36 @@ const isDefinedAt = (patterns, body, acronym, at) => {
77
98
  return false;
78
99
  return (opened.groups?.["markers"] ?? "") !== "" || (closes.groups?.["verb"] ?? "") !== "";
79
100
  };
101
+ /** 空白 1 つで繋いだ略語の並びのうち、at の略語の前と後ろに続く分((ON RRP) の ON の後ろの " RRP")。 */
102
+ const CAPITALS = "[A-Z][A-Z&-]*[A-Z]";
103
+ const JOINT_BEFORE = new RegExp(String.raw `(?:(?<![A-Za-z0-9_&-])${CAPITALS} )+$`, "u");
104
+ const JOINT_AFTER = new RegExp(String.raw `^(?: ${CAPITALS}(?![A-Za-z0-9_&-]))+`, "u");
105
+ const LOWER_WORDS = /[a-z]+/gu;
106
+ const isSubsequence = (letters, text) => [...text].reduce((matched, char) => (char === letters.charAt(matched) ? matched + 1 : matched), 0) === letters.length;
107
+ /**
108
+ * 略語の文字が、名前のどれかの語の頭から始まって、名前の文字の中に順に拾えるか。1 つの略語を空白で分けて書くときは、
109
+ * 語の頭文字ではなく語の途中の文字も使う(overnight reverse repurchase agreement → ON RRP)。見る語は略語の文字数の 2 倍まで。
110
+ */
111
+ export const abbreviates = (name, acronym) => {
112
+ const letters = acronym.toLowerCase().replaceAll(/[^a-z]/gu, "");
113
+ const words = (name.toLowerCase().match(LOWER_WORDS) ?? []).slice(-letters.length * 2);
114
+ return letters !== "" && words.some((word, index) => word.startsWith(letters.charAt(0)) && isSubsequence(letters, words.slice(index).join("")));
115
+ };
116
+ /**
117
+ * 括弧の中身が、空白で繋いだ略語の並びだけの形((ON RRP))。1 つの略語を 2 語以上で書いたもの。並びの文字が括弧の前の名前から
118
+ * 順に拾えるときだけ展開と見なす。拾えなければ、空白で並べた略語の列挙((SEC FINRA))。
119
+ * 括弧の外の並び(AWS KMS (Key Management Service))は、括弧の直前の語だけが展開されるので、ここでは見ない。
120
+ */
121
+ const isJointBracketedAt = (body, acronym, at) => {
122
+ const end = at + acronym.length;
123
+ const before = JOINT_BEFORE.exec(body.slice(Math.max(0, at - DEFINITION_REACH), at))?.[0] ?? "";
124
+ const after = JOINT_AFTER.exec(body.slice(end, end + DEFINITION_REACH))?.[0] ?? "";
125
+ const start = at - before.length;
126
+ const close = end + after.length;
127
+ if (!OPENED.test(body.slice(Math.max(0, start - NEAR), start)) || !CLOSES.test(body.slice(close, close + NEAR)))
128
+ return false;
129
+ return abbreviates(body.slice(0, start), body.slice(start, close));
130
+ };
80
131
  const isBracketedAt = (body, acronym, at) => {
81
132
  const after = body.slice(at + acronym.length, at + acronym.length + NEAR);
82
133
  const before = body.slice(Math.max(0, at - NEAR), at);
@@ -84,11 +135,18 @@ const isBracketedAt = (body, acronym, at) => {
84
135
  return true;
85
136
  if (SQUARE_OPENED.test(before) && SQUARE_CLOSES.test(after) && spellsOut(body.slice(0, at), acronym))
86
137
  return true;
87
- return isSeparatedAt(body, acronym, at);
138
+ return isSeparatedAt(body, acronym, at) || isNamedBeforeAt(body, acronym, at) || isJointBracketedAt(body, acronym, at);
88
139
  };
140
+ /**
141
+ * 記号を = で定義する書き方(where N = number of cases, EH = total hours worked)。定義は記号の後ろの語。
142
+ * 値(EH = 2,000)、比べる・矢印(==、=>)、別の略語だけ(EH = SRE)は定義ではない。定義の語は小文字か、大小の無い文字を含む。
143
+ * 語の値(SRE = enabled)は 1 語の定義と見分けられないので、定義と読む。値を入れる大文字の名前は設定の名前で、展開するものが無い。
144
+ */
145
+ const EQUALS_DEFINITION = /^\s*[==]\s*(?=\p{L})\S*?[\p{Ll}\p{Lo}]/u;
146
+ const isEqualsDefinedAt = (body, acronym, at) => EQUALS_DEFINITION.test(body.slice(at + acronym.length, at + acronym.length + DEFINITION_REACH));
89
147
  /** body の at にある略語が、その場で展開・定義されているか。語彙表から一度だけ組み立てて、略語ごとに呼ぶ。 */
90
148
  export const expansionAt = (words) => {
91
149
  const patterns = definitionPatterns(words);
92
- return (body, acronym, at) => isBracketedAt(body, acronym, at) || isDefinedAt(patterns, body, acronym, at);
150
+ return (body, acronym, at) => isBracketedAt(body, acronym, at) || isDefinedAt(patterns, body, acronym, at) || isEqualsDefinedAt(body, acronym, at);
93
151
  };
94
152
  //# sourceMappingURL=acronym-expansion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"acronym-expansion.js","sourceRoot":"","sources":["../../src/detectors/acronym-expansion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acronym-expansion.js","sourceRoot":"","sources":["../../src/detectors/acronym-expansion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"char-shape.d.ts","sourceRoot":"","sources":["../../src/detectors/char-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAsC,MAAM,cAAc,CAAC;AA4BjF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,QAatB,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,QAWjB,CAAC"}
1
+ {"version":3,"file":"char-shape.d.ts","sourceRoot":"","sources":["../../src/detectors/char-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAmD,MAAM,cAAc,CAAC;AAyD9F;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,QAatB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,QAWjB,CAAC"}
@@ -1,25 +1,48 @@
1
- import { compacted, placeOf } from "./gram-place.js";
1
+ import { compacted } from "./gram-place.js";
2
+ import { leadingCounter } from "./counter-edge.js";
2
3
  import { maskAddresses } from "../address-chain.js";
3
4
  import { isAddressRun } from "./place-run.js";
5
+ import { isOneName } from "./name-run.js";
4
6
  import { proseText } from "../measure.js";
7
+ import { parallelDotCount } from "./middle-dot.js";
5
8
  /**
6
- * 文字の並びを見る検出。漢字の連なりが住所かどうかだけは、形態素解析の地名と数で決める。
9
+ * 文字の並びを見る検出。漢字の連なりが住所か名前かだけは、形態素解析の固有名詞と数で決める。
7
10
  * 覆った箇所は空白になっているので、proseText で潰してから数える。
8
11
  */
9
12
  const KANJI_RUN = /[一-鿿]+/gu;
10
- /** 漢字の連なりが住所か(東京都港区新橋二丁目)。形態素解析の地名と数で決める。品詞が無ければ判定しない。 */
11
- const isPlaceName = (sentence, run, topUnits) => {
12
- const tokens = sentence.tokens;
13
- const place = tokens === undefined ? undefined : placeOf(compacted(sentence.text, "word"), run);
14
- if (tokens === undefined || place === undefined)
15
- return false;
16
- const [start, end] = [sentence.span.start + place.start, sentence.span.start + place.end];
17
- const covering = tokens.flatMap((token, index) => (token.span.start < end && start < token.span.end ? [index] : []));
18
- return isAddressRun(tokens, covering, topUnits);
13
+ const SPACE = /\s/gu;
14
+ /**
15
+ * 同じ連なりが文に二度出ても、それぞれの位置で読む。proseText は空白を詰めたり除いたりするだけなので、
16
+ * 空白でない k 文字目は元の文でも空白でない k 文字目。番地の覆いは長さを保つので、proseText の位置がそのまま使える。
17
+ */
18
+ const runsOf = (sentence, profile) => {
19
+ const prose = proseText(sentence);
20
+ const printed = compacted(sentence.text, "char").offsets;
21
+ return [...maskAddresses(prose, profile).matchAll(KANJI_RUN)].map((match) => {
22
+ const before = prose.slice(0, match.index).replace(SPACE, "").length;
23
+ const [start, last] = [printed[before], printed[before + match[0].length - 1]];
24
+ const span = start === undefined || last === undefined ? undefined : { start: sentence.span.start + start, end: sentence.span.start + last + 1 };
25
+ return { text: match[0], span };
26
+ });
27
+ };
28
+ /** 漢字の連なりが住所(東京都港区新橋二丁目)か 1 つの名前(日本銀行)か。形態素解析の地名・人名・組織名と数で決める。 */
29
+ const isPlaceName = (tokens, span, topUnits) => {
30
+ const covering = tokens.flatMap((token, index) => (token.span.start < span.end && span.start < token.span.end ? [index] : []));
31
+ return isAddressRun(tokens, covering, topUnits) || isOneName(tokens, covering);
32
+ };
33
+ /**
34
+ * 数えない連なりは空。頭の、数に付いた助数詞(2日日本弁護士連合会の「日」)は数えない。
35
+ * 住所か名前かは、助数詞を外した残りで決める(1日日本銀行の「日本銀行」)。品詞が無ければ判定しない。
36
+ */
37
+ const measuredRun = (tokens, run, topUnits) => {
38
+ if (tokens === undefined || run.span === undefined)
39
+ return run.text;
40
+ const counter = leadingCounter(tokens, run.span.start, run.text);
41
+ const rest = counter === undefined ? run.span : { start: counter.span.end, end: run.span.end };
42
+ return isPlaceName(tokens, rest, topUnits) ? "" : run.text.slice(counter?.surface.length ?? 0);
19
43
  };
20
- const longestKanji = (sentence, profile, topUnits) => [...maskAddresses(proseText(sentence), profile).matchAll(KANJI_RUN)]
21
- .map((match) => match[0])
22
- .filter((run) => !isPlaceName(sentence, run, topUnits))
44
+ const longestKanji = (sentence, profile, topUnits) => runsOf(sentence, profile)
45
+ .map((run) => measuredRun(sentence.tokens, run, topUnits))
23
46
  .reduce((longest, run) => (run.length > longest.length ? run : longest), "");
24
47
  /**
25
48
  * 漢字が続くと、どこで語が切れるのか読み手が探すことになる。
@@ -39,13 +62,12 @@ export const kanjiRun = (doc, options) => {
39
62
  values: { word: run, count: run.length, limit: options.limit, offset: sentence.span.start },
40
63
  }));
41
64
  };
42
- const MIDDLE_DOT = /・/gu;
43
65
  /**
44
66
  * 中黒で並べると、どこまでが 1 つの項目か分からなくなる。
45
67
  * 「企画・開発・運用・保守体制」は、保守体制が 1 つなのか保守と体制なのか読めない。
46
68
  */
47
69
  export const middleDot = (doc, options) => doc.sentences
48
- .map((sentence) => ({ sentence, count: [...proseText(sentence).matchAll(MIDDLE_DOT)].length }))
70
+ .map((sentence) => ({ sentence, count: parallelDotCount(sentence.text) }))
49
71
  .filter(({ count }) => count > options.limit)
50
72
  .map(({ sentence, count }) => ({
51
73
  rule: "no-nakaguro-parallel",
@@ -1 +1 @@
1
- {"version":3,"file":"char-shape.js","sourceRoot":"","sources":["../../src/detectors/char-shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"char-shape.js","sourceRoot":"","sources":["../../src/detectors/char-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 仕様書が参考文献を指す角括弧の見出し語([RFC9110]、[HPACK]、[SECURING-WEB])。中身は文献一覧の見出しで、読み手はそこへ
3
+ * 飛ぶので、略語として展開を求めない。空白を含まない 1 語だけを見る。Markdown のリンク([DRI](/url)、[DRI][ref])と
4
+ * 参照の定義([DRI]: /url)は括弧の後ろの記号で外し、その中の語は略語のまま数える。
5
+ */
6
+ type Span = {
7
+ readonly start: number;
8
+ readonly end: number;
9
+ };
10
+ /** 文の中の、参考文献の見出し語の範囲(括弧を含む)。 */
11
+ export declare const citationKeySpans: (text: string) => Span[];
12
+ export {};
13
+ //# sourceMappingURL=citation-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citation-key.d.ts","sourceRoot":"","sources":["../../src/detectors/citation-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,KAAK,IAAI,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAI7D,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,IAAI,EAC2D,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 仕様書が参考文献を指す角括弧の見出し語([RFC9110]、[HPACK]、[SECURING-WEB])。中身は文献一覧の見出しで、読み手はそこへ
3
+ * 飛ぶので、略語として展開を求めない。空白を含まない 1 語だけを見る。Markdown のリンク([DRI](/url)、[DRI][ref])と
4
+ * 参照の定義([DRI]: /url)は括弧の後ろの記号で外し、その中の語は略語のまま数える。
5
+ */
6
+ const CITATION_KEY = /(?<![\p{L}\p{N}_!\]])\[[A-Za-z][A-Za-z0-9.-]*[A-Za-z0-9]\](?![([:])/gu;
7
+ /** 文の中の、参考文献の見出し語の範囲(括弧を含む)。 */
8
+ export const citationKeySpans = (text) => [...text.matchAll(CITATION_KEY)].map((match) => ({ start: match.index, end: match.index + match[0].length }));
9
+ //# sourceMappingURL=citation-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"citation-key.js","sourceRoot":"","sources":["../../src/detectors/citation-key.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,YAAY,GAAG,uEAAuE,CAAC;AAE7F,gCAAgC;AAChC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE,CACvD,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { StructureNode, Token } from "../plugin.ts";
2
+ /** 他の文書を指す参照(民法第709条の第709条)の始まりの位置から、その文書の名前(民法)へ。 */
3
+ export type CitedNames = ReadonlyMap<number, string>;
4
+ export declare const citedNamesOf: (structure: StructureNode | undefined) => CitedNames;
5
+ /**
6
+ * 重なった二語が、番地のすぐ前に書いた文書の名前の全部で、頭の一字と種類の一字か。通達の「法法第64条」は法人税法の略で、
7
+ * 略した頭(法)と種類の語(法)がたまたま同じ字になる。名前の一部だけの重なり(就業規則規則第3条)や、種類の語でない語の
8
+ * 重なり(民法民法第709条)は書き損じのまま。
9
+ */
10
+ export declare const endsCitedName: (first: Token, second: Token, cited: CitedNames, kinds: ReadonlySet<string>) => boolean;
11
+ //# sourceMappingURL=cited-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cited-name.d.ts","sourceRoot":"","sources":["../../src/detectors/cited-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEzD,sDAAsD;AACtD,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAQrD,eAAO,MAAM,YAAY,GAAI,WAAW,aAAa,GAAG,SAAS,KAAG,UAAgF,CAAC;AAKrJ;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,EAAE,QAAQ,KAAK,EAAE,OAAO,UAAU,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAG,OACgD,CAAC"}
@@ -0,0 +1,15 @@
1
+ const namedReferences = (node) => {
2
+ const document = node.attrs["document"];
3
+ const own = node.kind === "reference" && typeof document === "string" ? [[node.span.start, document]] : [];
4
+ return [...own, ...node.children.flatMap(namedReferences)];
5
+ };
6
+ export const citedNamesOf = (structure) => new Map(structure === undefined ? [] : namedReferences(structure));
7
+ /** 略した名前は、頭の一字と種類の一字(所法・法法・措令)。二字の種類の語の重なり(規則規則)は略さない書き方。 */
8
+ const ABBREVIATED_KIND_LENGTH = 1;
9
+ /**
10
+ * 重なった二語が、番地のすぐ前に書いた文書の名前の全部で、頭の一字と種類の一字か。通達の「法法第64条」は法人税法の略で、
11
+ * 略した頭(法)と種類の語(法)がたまたま同じ字になる。名前の一部だけの重なり(就業規則規則第3条)や、種類の語でない語の
12
+ * 重なり(民法民法第709条)は書き損じのまま。
13
+ */
14
+ export const endsCitedName = (first, second, cited, kinds) => kinds.has(second.surface) && [...second.surface].length === ABBREVIATED_KIND_LENGTH && cited.get(second.span.end) === `${first.surface}${second.surface}`;
15
+ //# sourceMappingURL=cited-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cited-name.js","sourceRoot":"","sources":["../../src/detectors/cited-name.ts"],"names":[],"mappings":"AAKA,MAAM,eAAe,GAAG,CAAC,IAAmB,EAAiC,EAAE;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,GAAG,GAAkC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1I,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAoC,EAAc,EAAE,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;AAErJ,6DAA6D;AAC7D,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAY,EAAE,MAAa,EAAE,KAAiB,EAAE,KAA0B,EAAW,EAAE,CACnH,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,uBAAuB,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Span, StructureNode, Token } from "../plugin.ts";
2
+ /** 品詞が無ければ何も言わない。数字そのものは呼ぶ側が文字で見る。 */
3
+ export declare const hasNumeral: (tokens: readonly Token[]) => boolean;
4
+ /** 節の中で始まるものがある。節は見出しの直後から次の見出しの前まで。 */
5
+ export declare const startsWithin: (section: Span, spans: readonly Span[]) => boolean;
6
+ export declare const evidenceSpans: (node: StructureNode | undefined) => Span[];
7
+ //# sourceMappingURL=concrete-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concrete-evidence.d.ts","sourceRoot":"","sources":["../../src/detectors/concrete-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAiB,aAAa,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAoB9E,sCAAsC;AACtC,eAAO,MAAM,UAAU,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,OAA0F,CAAC;AAEjJ,wCAAwC;AACxC,eAAO,MAAM,YAAY,GAAI,SAAS,IAAI,EAAE,OAAO,SAAS,IAAI,EAAE,KAAG,OAAwF,CAAC;AAK9J,eAAO,MAAM,aAAa,GAAI,MAAM,aAAa,GAAG,SAAS,KAAG,IAAI,EACoE,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 形態素解析が数と読んだ語(UD の NumType=Card)。漢数字の「二割」「十五分」も、算用数字と同じ具体的な数。
3
+ * 言い回しの「二人三脚」「一人ひとり」は、辞書が一語として持つので数にならない。
4
+ */
5
+ const isCardinal = (token) => token.features?.["NumType"] === "Card";
6
+ const HYPHEN = /^[-‐‑]$/u;
7
+ /** ハイフンで前の語に続く数(one-on-one の後ろの one)は、合成語の部品。 */
8
+ const isCompoundPart = (token, previous) => previous !== undefined && previous.span.end === token.span.start && HYPHEN.test(previous.surface);
9
+ /** 数の語(UPOS の NUM)が、すぐ後ろの複数形の名詞を数えている(five minutes)。one of や two-way は量ではない。 */
10
+ const countsPlural = (tokens, index) => {
11
+ const token = tokens[index];
12
+ return token?.pos === "NUM" && tokens[index + 1]?.features?.["Number"] === "Plur" && !isCompoundPart(token, tokens[index - 1]);
13
+ };
14
+ /** 品詞が無ければ何も言わない。数字そのものは呼ぶ側が文字で見る。 */
15
+ export const hasNumeral = (tokens) => tokens.some((token, index) => isCardinal(token) || countsPlural(tokens, index));
16
+ /** 節の中で始まるものがある。節は見出しの直後から次の見出しの前まで。 */
17
+ export const startsWithin = (section, spans) => spans.some((span) => span.start >= section.start && span.start < section.end);
18
+ /** 構造の木が読んだ参照(第3条・Section VI)・数量・日付。どれも読み手が確かめに行ける具体物。 */
19
+ const EVIDENCE = new Set(["reference", "quantity", "date"]);
20
+ export const evidenceSpans = (node) => node === undefined ? [] : [...(EVIDENCE.has(node.kind) ? [node.span] : []), ...node.children.flatMap((child) => evidenceSpans(child))];
21
+ //# sourceMappingURL=concrete-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"concrete-evidence.js","sourceRoot":"","sources":["../../src/detectors/concrete-evidence.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC;AAErF,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,iDAAiD;AACjD,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,QAA2B,EAAW,EAAE,CAC5E,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEpG,gFAAgF;AAChF,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAE,KAAa,EAAW,EAAE;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACjI,CAAC,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAwB,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAEjJ,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAa,EAAE,KAAsB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9J,0DAA0D;AAC1D,MAAM,QAAQ,GAA+B,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAA+B,EAAU,EAAE,CACvE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Sentence } from "../plugin.ts";
2
+ export declare const conjugatedForms: (sentences: readonly Sentence[], bases: readonly string[]) => string[];
3
+ //# sourceMappingURL=conjugated-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conjugated-form.d.ts","sourceRoot":"","sources":["../../src/detectors/conjugated-form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAS,MAAM,cAAc,CAAC;AAiCpD,eAAO,MAAM,eAAe,GAAI,WAAW,SAAS,QAAQ,EAAE,EAAE,OAAO,SAAS,MAAM,EAAE,KAAG,MAAM,EAMhG,CAAC"}
@@ -0,0 +1,29 @@
1
+ /** 動詞と、そのすぐ後ろに続く助動詞の、文の中の範囲。 */
2
+ const inflectedRun = (sentence, tokens, index, verb) => {
3
+ const rest = tokens.slice(index + 1);
4
+ const stop = rest.findIndex((token) => token.pos !== "AUX");
5
+ const last = (stop === -1 ? rest : rest.slice(0, stop)).at(-1) ?? verb;
6
+ return { start: verb.span.start - sentence.span.start, end: last.span.end - sentence.span.start };
7
+ };
8
+ const formsAt = (sentence, tokens, index, bases) => {
9
+ const verb = tokens[index];
10
+ const lemma = verb?.lemma;
11
+ if (verb?.pos !== "VERB" || lemma === undefined || lemma === "")
12
+ return [];
13
+ const run = inflectedRun(sentence, tokens, index, verb);
14
+ const before = sentence.text.slice(0, run.start);
15
+ const written = sentence.text.slice(run.start, run.end);
16
+ return bases
17
+ .filter((base) => base.endsWith(lemma))
18
+ .map((base) => base.slice(0, base.length - lemma.length))
19
+ .filter((head) => before.endsWith(head))
20
+ .map((head) => `${head}${written}`);
21
+ };
22
+ export const conjugatedForms = (sentences, bases) => {
23
+ const forms = sentences.flatMap((sentence) => {
24
+ const tokens = sentence.tokens ?? [];
25
+ return tokens.flatMap((_token, index) => formsAt(sentence, tokens, index, bases));
26
+ });
27
+ return [...new Set(forms)];
28
+ };
29
+ //# sourceMappingURL=conjugated-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conjugated-form.js","sourceRoot":"","sources":["../../src/detectors/conjugated-form.ts"],"names":[],"mappings":"AAWA,gCAAgC;AAChC,MAAM,YAAY,GAAG,CAAC,QAAkB,EAAE,MAAwB,EAAE,KAAa,EAAE,IAAW,EAAO,EAAE;IACrG,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACvE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,QAAkB,EAAE,MAAwB,EAAE,KAAa,EAAE,KAAwB,EAAY,EAAE;IAClH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC;IAC1B,IAAI,IAAI,EAAE,GAAG,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3E,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACxD,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,SAA8B,EAAE,KAAwB,EAAY,EAAE;IACpG,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Token } from "../plugin.ts";
2
+ /**
3
+ * 漢字の連なり run(文書全体の座標で start から始まる)の頭が、直前の数に付いた助数詞(2日、第76回、24時間)なら、その助数詞の語。
4
+ * 数字が区切りを見せるので、助数詞は数と読まれ、後ろの複合語の一部ではない。そうでなければ undefined。
5
+ * 折り返しをまたぐ語(年\n度)は span が surface より長いので、連なりの残りは span の終わりから始まる。
6
+ */
7
+ export declare const leadingCounter: (tokens: readonly Token[], start: number, run: string) => Token | undefined;
8
+ //# sourceMappingURL=counter-edge.d.ts.map