chaffjs 0.36.0 → 0.37.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 (257) hide show
  1. package/dist/detectors/acronym-expansion.d.ts.map +1 -1
  2. package/dist/detectors/acronym-expansion.js +10 -3
  3. package/dist/detectors/acronym-expansion.js.map +1 -1
  4. package/dist/detectors/acronym-link.d.ts +5 -0
  5. package/dist/detectors/acronym-link.d.ts.map +1 -1
  6. package/dist/detectors/acronym-link.js +33 -0
  7. package/dist/detectors/acronym-link.js.map +1 -1
  8. package/dist/detectors/acronym-mention.d.ts +5 -0
  9. package/dist/detectors/acronym-mention.d.ts.map +1 -0
  10. package/dist/detectors/acronym-mention.js +34 -0
  11. package/dist/detectors/acronym-mention.js.map +1 -0
  12. package/dist/detectors/acronym-name.js +2 -2
  13. package/dist/detectors/acronym-name.js.map +1 -1
  14. package/dist/detectors/addressee-title-edge.d.ts +21 -0
  15. package/dist/detectors/addressee-title-edge.d.ts.map +1 -0
  16. package/dist/detectors/addressee-title-edge.js +22 -0
  17. package/dist/detectors/addressee-title-edge.js.map +1 -0
  18. package/dist/detectors/capitalised-term.d.ts +4 -0
  19. package/dist/detectors/capitalised-term.d.ts.map +1 -1
  20. package/dist/detectors/capitalised-term.js +18 -1
  21. package/dist/detectors/capitalised-term.js.map +1 -1
  22. package/dist/detectors/caps-caption.d.ts +14 -4
  23. package/dist/detectors/caps-caption.d.ts.map +1 -1
  24. package/dist/detectors/caps-caption.js +36 -9
  25. package/dist/detectors/caps-caption.js.map +1 -1
  26. package/dist/detectors/char-shape.d.ts.map +1 -1
  27. package/dist/detectors/char-shape.js +37 -14
  28. package/dist/detectors/char-shape.js.map +1 -1
  29. package/dist/detectors/citation-sentence.d.ts +8 -0
  30. package/dist/detectors/citation-sentence.d.ts.map +1 -0
  31. package/dist/detectors/citation-sentence.js +40 -0
  32. package/dist/detectors/citation-sentence.js.map +1 -0
  33. package/dist/detectors/contraction-mention.d.ts +3 -0
  34. package/dist/detectors/contraction-mention.d.ts.map +1 -0
  35. package/dist/detectors/contraction-mention.js +22 -0
  36. package/dist/detectors/contraction-mention.js.map +1 -0
  37. package/dist/detectors/dash-break.d.ts +7 -0
  38. package/dist/detectors/dash-break.d.ts.map +1 -0
  39. package/dist/detectors/dash-break.js +30 -0
  40. package/dist/detectors/dash-break.js.map +1 -0
  41. package/dist/detectors/date-any-year.d.ts.map +1 -1
  42. package/dist/detectors/date-any-year.js +5 -3
  43. package/dist/detectors/date-any-year.js.map +1 -1
  44. package/dist/detectors/definition-use.d.ts.map +1 -1
  45. package/dist/detectors/definition-use.js +9 -4
  46. package/dist/detectors/definition-use.js.map +1 -1
  47. package/dist/detectors/document-shape.d.ts +5 -0
  48. package/dist/detectors/document-shape.d.ts.map +1 -1
  49. package/dist/detectors/document-shape.js +15 -1
  50. package/dist/detectors/document-shape.js.map +1 -1
  51. package/dist/detectors/duplicate-heading.d.ts +1 -0
  52. package/dist/detectors/duplicate-heading.d.ts.map +1 -1
  53. package/dist/detectors/duplicate-heading.js +25 -3
  54. package/dist/detectors/duplicate-heading.js.map +1 -1
  55. package/dist/detectors/email-letter.d.ts +9 -2
  56. package/dist/detectors/email-letter.d.ts.map +1 -1
  57. package/dist/detectors/email-letter.js +39 -8
  58. package/dist/detectors/email-letter.js.map +1 -1
  59. package/dist/detectors/fullwidth-alnum.d.ts.map +1 -1
  60. package/dist/detectors/fullwidth-alnum.js +7 -1
  61. package/dist/detectors/fullwidth-alnum.js.map +1 -1
  62. package/dist/detectors/gram-openers.d.ts +4 -3
  63. package/dist/detectors/gram-openers.d.ts.map +1 -1
  64. package/dist/detectors/gram-openers.js +26 -2
  65. package/dist/detectors/gram-openers.js.map +1 -1
  66. package/dist/detectors/heading-record-rhythm.d.ts +9 -0
  67. package/dist/detectors/heading-record-rhythm.d.ts.map +1 -0
  68. package/dist/detectors/heading-record-rhythm.js +57 -0
  69. package/dist/detectors/heading-record-rhythm.js.map +1 -0
  70. package/dist/detectors/kutoten-consistency.d.ts.map +1 -1
  71. package/dist/detectors/kutoten-consistency.js +7 -0
  72. package/dist/detectors/kutoten-consistency.js.map +1 -1
  73. package/dist/detectors/lexicon.d.ts.map +1 -1
  74. package/dist/detectors/lexicon.js +5 -2
  75. package/dist/detectors/lexicon.js.map +1 -1
  76. package/dist/detectors/mark-shape.d.ts +3 -1
  77. package/dist/detectors/mark-shape.d.ts.map +1 -1
  78. package/dist/detectors/mark-shape.js +20 -5
  79. package/dist/detectors/mark-shape.js.map +1 -1
  80. package/dist/detectors/name-variant.d.ts.map +1 -1
  81. package/dist/detectors/name-variant.js +6 -0
  82. package/dist/detectors/name-variant.js.map +1 -1
  83. package/dist/detectors/organisation-run.d.ts +0 -6
  84. package/dist/detectors/organisation-run.d.ts.map +1 -1
  85. package/dist/detectors/organisation-run.js +4 -1
  86. package/dist/detectors/organisation-run.js.map +1 -1
  87. package/dist/detectors/orthographic-variant.d.ts.map +1 -1
  88. package/dist/detectors/orthographic-variant.js +33 -4
  89. package/dist/detectors/orthographic-variant.js.map +1 -1
  90. package/dist/detectors/orthography.d.ts.map +1 -1
  91. package/dist/detectors/orthography.js +4 -2
  92. package/dist/detectors/orthography.js.map +1 -1
  93. package/dist/detectors/oxford-comma.d.ts.map +1 -1
  94. package/dist/detectors/oxford-comma.js +33 -3
  95. package/dist/detectors/oxford-comma.js.map +1 -1
  96. package/dist/detectors/range-notation.d.ts +2 -2
  97. package/dist/detectors/range-notation.d.ts.map +1 -1
  98. package/dist/detectors/range-notation.js +18 -7
  99. package/dist/detectors/range-notation.js.map +1 -1
  100. package/dist/detectors/requirement-smell.d.ts.map +1 -1
  101. package/dist/detectors/requirement-smell.js +10 -6
  102. package/dist/detectors/requirement-smell.js.map +1 -1
  103. package/dist/detectors/sentence-counts.d.ts +10 -2
  104. package/dist/detectors/sentence-counts.d.ts.map +1 -1
  105. package/dist/detectors/sentence-counts.js +34 -4
  106. package/dist/detectors/sentence-counts.js.map +1 -1
  107. package/dist/detectors/sentence-length.d.ts.map +1 -1
  108. package/dist/detectors/sentence-length.js +13 -4
  109. package/dist/detectors/sentence-length.js.map +1 -1
  110. package/dist/detectors/signals.d.ts.map +1 -1
  111. package/dist/detectors/signals.js +15 -3
  112. package/dist/detectors/signals.js.map +1 -1
  113. package/dist/detectors/superlative-name.d.ts +5 -0
  114. package/dist/detectors/superlative-name.d.ts.map +1 -1
  115. package/dist/detectors/superlative-name.js +9 -0
  116. package/dist/detectors/superlative-name.js.map +1 -1
  117. package/dist/detectors/token-shape.d.ts.map +1 -1
  118. package/dist/detectors/token-shape.js +3 -1
  119. package/dist/detectors/token-shape.js.map +1 -1
  120. package/dist/detectors/undefined-term.d.ts.map +1 -1
  121. package/dist/detectors/undefined-term.js +5 -0
  122. package/dist/detectors/undefined-term.js.map +1 -1
  123. package/dist/detectors/unknown-word.d.ts +4 -1
  124. package/dist/detectors/unknown-word.d.ts.map +1 -1
  125. package/dist/detectors/unknown-word.js +1 -1
  126. package/dist/detectors/unknown-word.js.map +1 -1
  127. package/dist/html/html-site-chrome.d.ts.map +1 -1
  128. package/dist/html/html-site-chrome.js +35 -12
  129. package/dist/html/html-site-chrome.js.map +1 -1
  130. package/dist/latin-word-boundary.d.ts +5 -0
  131. package/dist/latin-word-boundary.d.ts.map +1 -1
  132. package/dist/latin-word-boundary.js +17 -0
  133. package/dist/latin-word-boundary.js.map +1 -1
  134. package/dist/leading-label.d.ts +4 -0
  135. package/dist/leading-label.d.ts.map +1 -0
  136. package/dist/leading-label.js +14 -0
  137. package/dist/leading-label.js.map +1 -0
  138. package/dist/link-shape.d.ts +3 -2
  139. package/dist/link-shape.d.ts.map +1 -1
  140. package/dist/link-shape.js +12 -3
  141. package/dist/link-shape.js.map +1 -1
  142. package/dist/name-misspelt-usual.d.ts +5 -0
  143. package/dist/name-misspelt-usual.d.ts.map +1 -0
  144. package/dist/name-misspelt-usual.js +19 -0
  145. package/dist/name-misspelt-usual.js.map +1 -0
  146. package/dist/notice-header.d.ts +19 -0
  147. package/dist/notice-header.d.ts.map +1 -0
  148. package/dist/notice-header.js +31 -0
  149. package/dist/notice-header.js.map +1 -0
  150. package/dist/sentence-load.d.ts +2 -1
  151. package/dist/sentence-load.d.ts.map +1 -1
  152. package/dist/sentence-load.js +11 -3
  153. package/dist/sentence-load.js.map +1 -1
  154. package/dist/structure/attached-parts.d.ts +2 -1
  155. package/dist/structure/attached-parts.d.ts.map +1 -1
  156. package/dist/structure/attached-parts.js +22 -9
  157. package/dist/structure/attached-parts.js.map +1 -1
  158. package/dist/structure/definition-use.d.ts +5 -2
  159. package/dist/structure/definition-use.d.ts.map +1 -1
  160. package/dist/structure/definition-use.js +24 -7
  161. package/dist/structure/definition-use.js.map +1 -1
  162. package/dist/structure/gerund-phrase.d.ts +8 -0
  163. package/dist/structure/gerund-phrase.d.ts.map +1 -0
  164. package/dist/structure/gerund-phrase.js +30 -0
  165. package/dist/structure/gerund-phrase.js.map +1 -0
  166. package/dist/structure/universal.d.ts +7 -3
  167. package/dist/structure/universal.d.ts.map +1 -1
  168. package/dist/structure/universal.js +17 -5
  169. package/dist/structure/universal.js.map +1 -1
  170. package/dist/title-line.d.ts +2 -0
  171. package/dist/title-line.d.ts.map +1 -1
  172. package/dist/title-line.js +2 -1
  173. package/dist/title-line.js.map +1 -1
  174. package/dist/topic-clause.d.ts +7 -0
  175. package/dist/topic-clause.d.ts.map +1 -0
  176. package/dist/topic-clause.js +87 -0
  177. package/dist/topic-clause.js.map +1 -0
  178. package/dist/uncounted-particles.d.ts +18 -0
  179. package/dist/uncounted-particles.d.ts.map +1 -0
  180. package/dist/uncounted-particles.js +47 -0
  181. package/dist/uncounted-particles.js.map +1 -0
  182. package/package.json +3 -3
  183. package/rules/adversative-ga-repeat.yaml +1 -0
  184. package/rules/all-caps-shouting.yaml +2 -2
  185. package/rules/bare-url-mix.yaml +2 -2
  186. package/rules/concrete-evidence-density.yaml +1 -0
  187. package/rules/contraction-consistency.yaml +2 -2
  188. package/rules/duplicate-definition.yaml +2 -2
  189. package/rules/duplicate-heading.yaml +2 -2
  190. package/rules/fullwidth-alnum-consistency.yaml +2 -2
  191. package/rules/kutoten-consistency.yaml +2 -2
  192. package/rules/latin-spacing.yaml +2 -2
  193. package/rules/max-kanji-continuous.yaml +1 -1
  194. package/rules/max-sentence-length.yaml +2 -2
  195. package/rules/ngram-repetition.yaml +2 -2
  196. package/rules/orthographic-variant.yaml +2 -2
  197. package/rules/oxford-comma-consistency.yaml +2 -2
  198. package/rules/preamble-length.yaml +3 -2
  199. package/rules/range-notation-consistency.yaml +2 -2
  200. package/rules/requirement-smell.yaml +2 -2
  201. package/rules/title-length.yaml +2 -2
  202. package/rules/topic-predicate-distance.yaml +2 -2
  203. package/rules/undefined-acronym.yaml +3 -2
  204. package/rules/undefined-term.yaml +2 -2
  205. package/rules/unqualified-superlative.yaml +1 -1
  206. package/rules/unused-definition.yaml +2 -2
  207. package/rules/use-before-definition.yaml +2 -2
  208. package/src/detectors/acronym-expansion.ts +10 -3
  209. package/src/detectors/acronym-link.ts +38 -0
  210. package/src/detectors/acronym-mention.ts +44 -0
  211. package/src/detectors/acronym-name.ts +2 -2
  212. package/src/detectors/addressee-title-edge.ts +39 -0
  213. package/src/detectors/capitalised-term.ts +26 -2
  214. package/src/detectors/caps-caption.ts +43 -9
  215. package/src/detectors/char-shape.ts +55 -17
  216. package/src/detectors/citation-sentence.ts +44 -0
  217. package/src/detectors/contraction-mention.ts +24 -0
  218. package/src/detectors/dash-break.ts +45 -0
  219. package/src/detectors/date-any-year.ts +7 -3
  220. package/src/detectors/definition-use.ts +12 -8
  221. package/src/detectors/document-shape.ts +20 -1
  222. package/src/detectors/duplicate-heading.ts +26 -3
  223. package/src/detectors/email-letter.ts +50 -7
  224. package/src/detectors/fullwidth-alnum.ts +9 -1
  225. package/src/detectors/gram-openers.ts +36 -7
  226. package/src/detectors/heading-record-rhythm.ts +57 -0
  227. package/src/detectors/kutoten-consistency.ts +9 -0
  228. package/src/detectors/lexicon.ts +6 -2
  229. package/src/detectors/mark-shape.ts +30 -5
  230. package/src/detectors/name-variant.ts +6 -0
  231. package/src/detectors/organisation-run.ts +6 -1
  232. package/src/detectors/orthographic-variant.ts +45 -6
  233. package/src/detectors/orthography.ts +6 -2
  234. package/src/detectors/oxford-comma.ts +35 -3
  235. package/src/detectors/range-notation.ts +26 -6
  236. package/src/detectors/requirement-smell.ts +12 -8
  237. package/src/detectors/sentence-counts.ts +40 -4
  238. package/src/detectors/sentence-length.ts +17 -4
  239. package/src/detectors/signals.ts +18 -3
  240. package/src/detectors/superlative-name.ts +10 -0
  241. package/src/detectors/token-shape.ts +3 -1
  242. package/src/detectors/undefined-term.ts +8 -0
  243. package/src/detectors/unknown-word.ts +1 -1
  244. package/src/html/html-site-chrome.ts +70 -13
  245. package/src/latin-word-boundary.ts +18 -0
  246. package/src/leading-label.ts +15 -0
  247. package/src/link-shape.ts +15 -3
  248. package/src/name-misspelt-usual.ts +25 -0
  249. package/src/notice-header.ts +57 -0
  250. package/src/sentence-load.ts +14 -3
  251. package/src/structure/attached-parts.ts +24 -9
  252. package/src/structure/definition-use.ts +33 -7
  253. package/src/structure/gerund-phrase.ts +31 -0
  254. package/src/structure/universal.ts +22 -7
  255. package/src/title-line.ts +2 -1
  256. package/src/topic-clause.ts +109 -0
  257. package/src/uncounted-particles.ts +72 -0
@@ -1 +1 @@
1
- {"version":3,"file":"latin-word-boundary.js","sourceRoot":"","sources":["../src/latin-word-boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"latin-word-boundary.js","sourceRoot":"","sources":["../src/latin-word-boundary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Span } from "./plugin.ts";
2
+ /** text の頭の印の範囲。印が無ければ空。 */
3
+ export declare const leadingLabelSpans: (text: string) => Span[];
4
+ //# sourceMappingURL=leading-label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leading-label.d.ts","sourceRoot":"","sources":["../src/leading-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAQxC,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,IAAI,EAKpD,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 文の頭で、丸括弧に語を一つ入れた印(問答の(問)(答)、(注)(例))。印は決まった略した形で、本文のその語の書き方
3
+ * (答え、注意)とは比べない。括弧の中は字と数字だけで、句読点や空白、ほかの括弧があれば印と読まない。
4
+ */
5
+ const LEADING_LABEL = /^([ \t\u3000]*)([((][\p{L}\p{N}]{1,4}[))])/u;
6
+ /** text の頭の印の範囲。印が無ければ空。 */
7
+ export const leadingLabelSpans = (text) => {
8
+ const match = LEADING_LABEL.exec(text);
9
+ const [lead, label] = [match?.[1], match?.[2]];
10
+ if (lead === undefined || label === undefined)
11
+ return [];
12
+ return [{ start: lead.length, end: lead.length + label.length }];
13
+ };
14
+ //# sourceMappingURL=leading-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leading-label.js","sourceRoot":"","sources":["../src/leading-label.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,aAAa,GAAG,6CAA6C,CAAC;AAEpE,4BAA4B;AAC5B,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAU,EAAE;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC"}
@@ -18,8 +18,9 @@ export declare const mismatchedHost: (text: string, destination: string) => {
18
18
  */
19
19
  export declare const isFileNameAlt: (alt: string, prefixes: readonly string[]) => boolean;
20
20
  /**
21
- * Whether a URL is the value of a field (`**Licence text** https://…`, `Website: https://…`): on its line only a label comes
22
- * before it and nothing after. There the address is the content, as in a table cell, so writing it bare is right.
21
+ * Whether a URL is the value of a field (`**Licence text** https://…`, `Website: https://…`, `"home": "https://…"`): on its
22
+ * line only a label comes before it and nothing after, or it is a quoted member of a data object. There the address is the
23
+ * content, as in a table cell, so writing it bare is right.
23
24
  */
24
25
  export declare const isFieldValueUrl: (lineBefore: string, lineAfter: string) => boolean;
25
26
  //# sourceMappingURL=link-shape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-shape.d.ts","sourceRoot":"","sources":["../src/link-shape.ts"],"names":[],"mappings":"AASA,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAI3C,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,OAA4C,CAAC;AAKtF,6HAA6H;AAC7H,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SASjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAKxH,CAAC;AAQF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,UAAU,SAAS,MAAM,EAAE,KAAG,OAMxE,CAAC;AAWF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,EAAE,WAAW,MAAM,KAAG,OAIvE,CAAC"}
1
+ {"version":3,"file":"link-shape.d.ts","sourceRoot":"","sources":["../src/link-shape.ts"],"names":[],"mappings":"AASA,4GAA4G;AAC5G,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAI3C,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,OAA4C,CAAC;AAKtF,6HAA6H;AAC7H,eAAO,MAAM,MAAM,GAAI,SAAS,MAAM,KAAG,MAAM,GAAG,SASjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAKxH,CAAC;AAQF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,EAAE,UAAU,SAAS,MAAM,EAAE,KAAG,OAMxE,CAAC;AAyBF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,EAAE,WAAW,MAAM,KAAG,OACsD,CAAC"}
@@ -64,13 +64,22 @@ const LIST_MARKER = /^\s*(?:[-*+]|\d{1,3}[.)])\s+/u;
64
64
  const BOLD_LABEL = /^(?:\*\*[^*\n.!?。!?,,、::]{1,40}\*\*|__[^_\n.!?。!?,,、::]{1,40}__)\s*[::]?$/u;
65
65
  const COLON_LABEL = /^[^.!?。!?,,、::]{1,40}[::]$/u;
66
66
  /**
67
- * Whether a URL is the value of a field (`**Licence text** https://…`, `Website: https://…`): on its line only a label comes
68
- * before it and nothing after. There the address is the content, as in a table cell, so writing it bare is right.
67
+ * A member of a data object written in the text (`"company": "https://…",`), its quotes escaped or not: the line opens with
68
+ * a quoted key (after the object's brace, if any) and a colon, then the URL inside quotes, then at most a comma, a semicolon
69
+ * or the object's close. A sentence before the key makes it prose.
69
70
  */
70
- export const isFieldValueUrl = (lineBefore, lineAfter) => {
71
+ const MEMBER_KEY = /^[\s{]*\\?"[^"\\\n]{1,40}\\?"\s*:\s*\\?"$/u;
72
+ const MEMBER_END = /^\\?"[,;}\]]?$/u;
73
+ const isLabelledValue = (lineBefore, lineAfter) => {
71
74
  if (lineAfter.trim() !== "")
72
75
  return false;
73
76
  const label = lineBefore.replace(LIST_MARKER, "").trim();
74
77
  return BOLD_LABEL.test(label) || COLON_LABEL.test(label);
75
78
  };
79
+ /**
80
+ * Whether a URL is the value of a field (`**Licence text** https://…`, `Website: https://…`, `"home": "https://…"`): on its
81
+ * line only a label comes before it and nothing after, or it is a quoted member of a data object. There the address is the
82
+ * content, as in a table cell, so writing it bare is right.
83
+ */
84
+ export const isFieldValueUrl = (lineBefore, lineAfter) => isLabelledValue(lineBefore, lineAfter) || (MEMBER_KEY.test(lineBefore) && MEMBER_END.test(lineAfter.replaceAll(/\s/gu, "")));
76
85
  //# sourceMappingURL=link-shape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-shape.js","sourceRoot":"","sources":["../src/link-shape.ts"],"names":[],"mappings":"AAAA,yGAAyG;AAEzG,4HAA4H;AAC5H,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AAEnD,wHAAwH;AACxH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAEjD,4GAA4G;AAC5G,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAU,EAAE;IACnD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjH,CAAC,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAEtF,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,UAAU,GAAG,gBAAgB,CAAC;AAEpC,6HAA6H;AAC7H,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAsB,EAAE;IAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IACpE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAmE,EAAE;IACnI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACnC,OAAO,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACzG,CAAC,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,GAAG,8DAA8D,CAAC;AAElF,kIAAkI;AAClI,MAAM,OAAO,GAAG,aAAa,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,QAA2B,EAAW,EAAE;IACjF,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACjC,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3H,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,WAAW,GAAG,+BAA+B,CAAC;AACpD;;;GAGG;AACH,MAAM,UAAU,GAAG,4EAA4E,CAAC;AAChG,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,SAAiB,EAAW,EAAE;IAChF,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC,CAAC"}
1
+ {"version":3,"file":"link-shape.js","sourceRoot":"","sources":["../src/link-shape.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Whether a lower-case word is a dictionary word, with its endings (lords, schedules). */
2
+ export type IsKnown = (word: string) => boolean;
3
+ /** Whether the two forms have the same words in the same places but where the usual one has a one-letter slip of a dictionary word. */
4
+ export declare const usualIsMisspelt: (name: string, usual: string, isKnown: IsKnown) => boolean;
5
+ //# sourceMappingURL=name-misspelt-usual.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-misspelt-usual.d.ts","sourceRoot":"","sources":["../src/name-misspelt-usual.ts"],"names":[],"mappings":"AAKA,2FAA2F;AAC3F,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAWhD,uIAAuI;AACvI,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,OAAO,KAAG,OAM/E,CAAC"}
@@ -0,0 +1,19 @@
1
+ // name-variant points at the less frequent form and names the more frequent one as the usual. When the usual form holds a
2
+ // word the dictionary lacks, one letter from the dictionary word the pointed form has in its place ("Release Sechedule" ×3
3
+ // beside "Release Schedule"), the frequent form is a repeated typo, and the pointed form is the right spelling. Pure.
4
+ import { editsOf } from "./spelling.js";
5
+ /** A word the edits are made on: ASCII letters only, as editsOf makes them. */
6
+ const PLAIN_WORD = /^[a-z]+$/u;
7
+ const wordsOf = (name) => name.toLowerCase().trim().split(/\s+/u);
8
+ /** The usual form's word is a one-letter slip of the pointed form's dictionary word in the same place. */
9
+ const isSlipOf = (usualWord, nameWord, isKnown) => PLAIN_WORD.test(usualWord) && PLAIN_WORD.test(nameWord) && isKnown(nameWord) && !isKnown(usualWord) && editsOf(usualWord).includes(nameWord);
10
+ /** Whether the two forms have the same words in the same places but where the usual one has a one-letter slip of a dictionary word. */
11
+ export const usualIsMisspelt = (name, usual, isKnown) => {
12
+ const nameWords = wordsOf(name);
13
+ const usualWords = wordsOf(usual);
14
+ if (nameWords.length !== usualWords.length)
15
+ return false;
16
+ const differing = usualWords.flatMap((word, index) => (word === nameWords[index] ? [] : [index]));
17
+ return differing.length > 0 && differing.every((index) => isSlipOf(usualWords[index] ?? "", nameWords[index] ?? "", isKnown));
18
+ };
19
+ //# sourceMappingURL=name-misspelt-usual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"name-misspelt-usual.js","sourceRoot":"","sources":["../src/name-misspelt-usual.ts"],"names":[],"mappings":"AAAA,0HAA0H;AAC1H,2HAA2H;AAC3H,sHAAsH;AACtH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKxC,+EAA+E;AAC/E,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B,MAAM,OAAO,GAAG,CAAC,IAAY,EAAY,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpF,0GAA0G;AAC1G,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,QAAgB,EAAE,OAAgB,EAAW,EAAE,CAClF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAE/I,uIAAuI;AACvI,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,OAAgB,EAAW,EAAE;IACxF,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACzD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAChI,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { Lexicon } from "./plugin.ts";
2
+ /** The words of a notice's head, by their group in the notice-header lexicon. */
3
+ export type NoticeWords = {
4
+ /** What a document number starts with (課資2-7: 課). */
5
+ readonly numberPrefixes: readonly string[];
6
+ /** The word before and the word after the number of a document number written 〜第123号. */
7
+ readonly numberHeads: readonly string[];
8
+ readonly numberTails: readonly string[];
9
+ /** The honorific an official notice puts after its addressee (各国税局長 殿). */
10
+ readonly addressees: readonly string[];
11
+ };
12
+ export declare const noticeWordsOf: (lexicon: Lexicon) => NoticeWords;
13
+ /** Whether a line is a document number alone: short, one run of characters with a digit and no hiragana, in one of the lexicon's forms. */
14
+ export declare const isDocumentNumber: (line: string, words: NoticeWords) => boolean;
15
+ /** Whether a line is an addressee: a name, then the notice's honorific at the line's end (各国税局長 殿). */
16
+ export declare const isNoticeAddressee: (line: string, words: NoticeWords) => boolean;
17
+ /** Whether head lines (before the first sentence) hold both a document number and an addressee of a notice. */
18
+ export declare const isNoticeHead: (headLines: readonly string[], words: NoticeWords) => boolean;
19
+ //# sourceMappingURL=notice-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notice-header.d.ts","sourceRoot":"","sources":["../src/notice-header.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,iFAAiF;AACjF,MAAM,MAAM,WAAW,GAAG;IACxB,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,yFAAyF;IACzF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,WAK/C,CAAC;AAoBH,2IAA2I;AAC3I,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,OAAO,WAAW,KAAG,OAGnE,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,EAAE,OAAO,WAAW,KAAG,OAGpE,CAAC;AAEF,+GAA+G;AAC/G,eAAO,MAAM,YAAY,GAAI,WAAW,SAAS,MAAM,EAAE,EAAE,OAAO,WAAW,KAAG,OACqC,CAAC"}
@@ -0,0 +1,31 @@
1
+ const patternsIn = (lexicon, group) => lexicon.filter((entry) => entry.group === group).map((entry) => entry.pattern);
2
+ export const noticeWordsOf = (lexicon) => ({
3
+ numberPrefixes: patternsIn(lexicon, "number-prefix"),
4
+ numberHeads: patternsIn(lexicon, "number-head"),
5
+ numberTails: patternsIn(lexicon, "number-tail"),
6
+ addressees: patternsIn(lexicon, "addressee"),
7
+ });
8
+ /** A document number is one short token of a line: 課資2-7, 総務省発第123号. */
9
+ const MAX_NUMBER_LENGTH = 20;
10
+ const DIGIT = /\p{Nd}/u;
11
+ const BLANK = /\s/u;
12
+ /** A document number is written in kanji, digits and dashes; hiragana makes the line words (課題は3つ). */
13
+ const HIRAGANA = /\p{Script=Hiragana}/u;
14
+ /** What follows the prefix: the office's kanji, then numbers joined by dashes (課資3-7: 資, 3-7). 課題3 has no dash. */
15
+ const PREFIXED_NUMBER_BODY = /^\p{Script=Han}*\p{Nd}+(?:[--‐−–―]\p{Nd}+)+$/u;
16
+ const isNumberedForm = (line, words) => words.numberPrefixes.some((prefix) => prefix !== "" && line.startsWith(prefix) && PREFIXED_NUMBER_BODY.test(line.slice(prefix.length))) ||
17
+ words.numberTails.some((tail) => tail !== "" && line.endsWith(tail) && words.numberHeads.some((head) => head !== "" && line.slice(0, -tail.length).includes(head)));
18
+ const isNumberShaped = (line) => line.length <= MAX_NUMBER_LENGTH && DIGIT.test(line) && !BLANK.test(line) && !HIRAGANA.test(line);
19
+ /** Whether a line is a document number alone: short, one run of characters with a digit and no hiragana, in one of the lexicon's forms. */
20
+ export const isDocumentNumber = (line, words) => {
21
+ const trimmed = line.trim();
22
+ return isNumberShaped(trimmed) && isNumberedForm(trimmed, words);
23
+ };
24
+ /** Whether a line is an addressee: a name, then the notice's honorific at the line's end (各国税局長 殿). */
25
+ export const isNoticeAddressee = (line, words) => {
26
+ const trimmed = line.trim();
27
+ return words.addressees.some((word) => trimmed.endsWith(word) && trimmed.length > word.length);
28
+ };
29
+ /** Whether head lines (before the first sentence) hold both a document number and an addressee of a notice. */
30
+ export const isNoticeHead = (headLines, words) => headLines.some((line) => isDocumentNumber(line, words)) && headLines.some((line) => isNoticeAddressee(line, words));
31
+ //# sourceMappingURL=notice-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notice-header.js","sourceRoot":"","sources":["../src/notice-header.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import type { Token } from "./plugin.ts";
2
2
  /**
3
3
  * The deepest the brackets of a text nest: 「計画(案)」 is one, 「(注(a)を参照)」 two, plain text none. A closer with no
4
4
  * opener (the 1) of a list) is ignored, an opener never closed counts as open until the end, a closer of the other width closes
5
- * its opener ((1) is one), and formulas in $…$ are skipped.
5
+ * its opener ((1) is one), a doubled parenthesis ((題)) is one, and formulas in $…$ are skipped.
6
6
  */
7
7
  export declare const bracketDepth: (text: string) => number;
8
8
  /**
@@ -13,6 +13,7 @@ export declare const clauseCount: (tokens: readonly Token[]) => number;
13
13
  /**
14
14
  * How far the sentence's first topic (会議は, これは) stands from the end of the sentence, where Japanese puts the predicate the
15
15
  * topic belongs to, in characters of the words between them (spaces, and a link's address the document hides, are not read).
16
+ * When the topic gets its own predicate in an earlier clause (topicClauseEnd), the distance is to that clause's end.
16
17
  * undefined when the sentence has no topic. The distance is the reader's wait: everything between has to be held before the
17
18
  * topic is said to do anything.
18
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sentence-load.d.ts","sourceRoot":"","sources":["../src/sentence-load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA0BzC;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAS3C,CAAC;AAiBF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAGtD,CAAC;AAIF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAAM,GAAG,SAKjE,CAAC"}
1
+ {"version":3,"file":"sentence-load.d.ts","sourceRoot":"","sources":["../src/sentence-load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAoCzC;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAS3C,CAAC;AAiBF;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAGtD,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,MAAM,GAAG,SAKjE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { topicClauseEnd } from "./topic-clause.js";
1
2
  /**
2
3
  * Opening brackets and the mark that closes each. Quotation marks that open and close with the same character are left out, and
3
4
  * so are curly braces, which prose rarely uses and code and formulas use everywhere.
@@ -19,15 +20,21 @@ const BRACKETS = {
19
20
  const OTHER_WIDTH = { ")": ")", ")": ")", "]": "]", "]": "]" };
20
21
  /** A formula written in TeX ($d^k = -\nabla f(x^k)$): its brackets are the formula's, not the sentence's. */
21
22
  const FORMULA = /\$\$[^$]*\$\$|\$[^$\n]*\$/gu;
23
+ /**
24
+ * A doubled parenthesis around text with no parenthesis inside (((居住の用に供したとき等)), ((注))): one mark written with two
25
+ * characters, as a directive sets an article's caption, not a bracket inside a bracket.
26
+ */
27
+ const DOUBLED_PAREN = /\(\(([^()()]*)\)\)|((([^()()]*)))/gu;
28
+ const singled = (text) => text.replace(DOUBLED_PAREN, (_whole, half, full) => (half === undefined ? `(${full ?? ""})` : `(${half})`));
22
29
  /**
23
30
  * The deepest the brackets of a text nest: 「計画(案)」 is one, 「(注(a)を参照)」 two, plain text none. A closer with no
24
31
  * opener (the 1) of a list) is ignored, an opener never closed counts as open until the end, a closer of the other width closes
25
- * its opener ((1) is one), and formulas in $…$ are skipped.
32
+ * its opener ((1) is one), a doubled parenthesis ((題)) is one, and formulas in $…$ are skipped.
26
33
  */
27
34
  export const bracketDepth = (text) => {
28
35
  // The closers still awaited, innermost last. Pushed and popped in place: copying it per character is quadratic on deep nesting.
29
36
  const awaited = [];
30
- return [...text.replace(FORMULA, " ")].reduce((deepest, char) => {
37
+ return [...singled(text.replace(FORMULA, " "))].reduce((deepest, char) => {
31
38
  const innermost = awaited.at(-1);
32
39
  if (innermost !== undefined && (innermost === char || innermost === OTHER_WIDTH[char]))
33
40
  awaited.pop();
@@ -61,6 +68,7 @@ const TOPIC_BEFORE = new Set(["NOUN", "PRON", "PROPN"]);
61
68
  /**
62
69
  * How far the sentence's first topic (会議は, これは) stands from the end of the sentence, where Japanese puts the predicate the
63
70
  * topic belongs to, in characters of the words between them (spaces, and a link's address the document hides, are not read).
71
+ * When the topic gets its own predicate in an earlier clause (topicClauseEnd), the distance is to that clause's end.
64
72
  * undefined when the sentence has no topic. The distance is the reader's wait: everything between has to be held before the
65
73
  * topic is said to do anything.
66
74
  */
@@ -69,6 +77,6 @@ export const topicDistance = (tokens) => {
69
77
  const last = tokens.findLastIndex((token) => !TRAILING.has(token.pos));
70
78
  if (topic === -1 || last <= topic)
71
79
  return undefined;
72
- return tokens.slice(topic + 1, last).reduce((sum, token) => sum + [...token.surface.replace(/\s/gu, "")].length, 0);
80
+ return tokens.slice(topic + 1, topicClauseEnd(tokens, topic, last) ?? last).reduce((sum, token) => sum + [...token.surface.replace(/\s/gu, "")].length, 0);
73
81
  };
74
82
  //# sourceMappingURL=sentence-load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sentence-load.js","sourceRoot":"","sources":["../src/sentence-load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentence-load.js","sourceRoot":"","sources":["../src/sentence-load.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import { type TitleNotion } from "../title-line.ts";
3
3
  export declare const INSTRUMENT_TITLE: TitleNotion;
4
4
  /**
5
5
  * The offsets of the lines that open an attached instrument: the line holds a label (Exhibit, Annex), its letter or
6
- * number and at most a short title with no full stop, and a blank line or the document's edge is on both sides.
6
+ * number and at most a short title with no full stop, and it is a Markdown heading or has a blank line or the
7
+ * document's edge on both sides. Bold around the title is ignored.
7
8
  */
8
9
  export declare const attachedPartStarts: (source: string, labels: readonly string[]) => number[];
9
10
  /** Which part an offset falls in: 0 for the document itself, n for the n-th attached instrument. */
@@ -1 +1 @@
1
- {"version":3,"file":"attached-parts.d.ts","sourceRoot":"","sources":["../../src/structure/attached-parts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEjE,iIAAiI;AACjI,eAAO,MAAM,gBAAgB,EAAE,WAAuF,CAAC;AAOvH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,MAAM,EAWpF,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,MAAM,EAAE,EAAE,QAAQ,MAAM,KAAG,MAA0D,CAAC"}
1
+ {"version":3,"file":"attached-parts.d.ts","sourceRoot":"","sources":["../../src/structure/attached-parts.ts"],"names":[],"mappings":"AAGA,OAAO,EAA6B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/E,iIAAiI;AACjI,eAAO,MAAM,gBAAgB,EAAE,WAAuF,CAAC;AA0BvH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,MAAM,EAAE,QAAQ,SAAS,MAAM,EAAE,KAAG,MAAM,EAMpF,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,MAAM,EAAE,EAAE,QAAQ,MAAM,KAAG,MAA0D,CAAC"}
@@ -1,16 +1,35 @@
1
1
  // Where an instrument attached to the document starts: a title line naming it (Exhibit A to Merger Agreement, Annex 1).
2
2
  // What is attached is a separate document (a restated charter, a form of note), so its definitions are its own. Pure.
3
3
  import { escapeRegExp } from "../orthography.js";
4
- import { isTitleLine } from "../title-line.js";
4
+ import { isShortTitle, isTitleLine } from "../title-line.js";
5
5
  /** An instrument's title: any case (EXHIBIT A to the merger agreement), but no `: ; ,` after it, and only blank lines around. */
6
6
  export const INSTRUMENT_TITLE = { sentenceEnd: /[.!?。.?!:;,]$/u, capitalised: false, edge: "blank-line" };
7
+ /** Bold around a title (## **SCHEDULE A**) is only how it is shown. */
8
+ const BOLD = /\*\*/gu;
9
+ /** A Markdown heading is a block of its own, so it needs no blank line around it (a closing fence may sit just above). */
10
+ const MARKDOWN_HEADING = /^ {0,3}#{1,6}[ \t]/u;
7
11
  const linesOf = (source) => {
8
12
  const starts = [0, ...[...source.matchAll(/\n/gu)].map((match) => match.index + 1)];
9
13
  return starts.map((start, index) => ({ start, text: source.slice(start, (starts[index + 1] ?? source.length + 1) - 1) }));
10
14
  };
15
+ const opensInstrument = (source, lines, index, title) => {
16
+ const line = lines[index];
17
+ if (line === undefined)
18
+ return false;
19
+ const text = line.text.replace(BOLD, "");
20
+ const label = title.exec(text);
21
+ if (label === null)
22
+ return false;
23
+ const rest = text.slice(label[0].length);
24
+ if (MARKDOWN_HEADING.test(text))
25
+ return isShortTitle(rest, INSTRUMENT_TITLE);
26
+ const lineEnd = index === lines.length - 1 ? -1 : line.start + line.text.length;
27
+ return isTitleLine(source, line.start, lineEnd, rest, INSTRUMENT_TITLE);
28
+ };
11
29
  /**
12
30
  * The offsets of the lines that open an attached instrument: the line holds a label (Exhibit, Annex), its letter or
13
- * number and at most a short title with no full stop, and a blank line or the document's edge is on both sides.
31
+ * number and at most a short title with no full stop, and it is a Markdown heading or has a blank line or the
32
+ * document's edge on both sides. Bold around the title is ignored.
14
33
  */
15
34
  export const attachedPartStarts = (source, labels) => {
16
35
  const words = labels.filter((label) => label !== "").map(escapeRegExp);
@@ -18,13 +37,7 @@ export const attachedPartStarts = (source, labels) => {
18
37
  return [];
19
38
  const title = new RegExp(String.raw `^[ \t]*(?:#{1,6}[ \t]+)?(?:${words.join("|")})[ \t]+[A-Z0-9](?:[A-Z0-9\-]|\.(?=[A-Z0-9]))*(?=[ \t\r]|$)`, "u");
20
39
  const lines = linesOf(source);
21
- return lines.flatMap((line, index) => {
22
- const label = title.exec(line.text);
23
- if (label === null)
24
- return [];
25
- const lineEnd = index === lines.length - 1 ? -1 : line.start + line.text.length;
26
- return isTitleLine(source, line.start, lineEnd, line.text.slice(label[0].length), INSTRUMENT_TITLE) ? [line.start] : [];
27
- });
40
+ return lines.flatMap((line, index) => (opensInstrument(source, lines, index, title) ? [line.start] : []));
28
41
  };
29
42
  /** Which part an offset falls in: 0 for the document itself, n for the n-th attached instrument. */
30
43
  export const partAt = (starts, offset) => starts.filter((start) => start <= offset).length;
@@ -1 +1 @@
1
- {"version":3,"file":"attached-parts.js","sourceRoot":"","sources":["../../src/structure/attached-parts.ts"],"names":[],"mappings":"AAAA,wHAAwH;AACxH,sHAAsH;AACtH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AAEjE,iIAAiI;AACjI,MAAM,CAAC,MAAM,gBAAgB,GAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAEvH,MAAM,OAAO,GAAG,CAAC,MAAc,EAAuD,EAAE;IACtF,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5H,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,MAAyB,EAAY,EAAE;IACxF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,8BAA8B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,4DAA4D,EAAE,GAAG,CAAC,CAAC;IACnJ,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChF,OAAO,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1H,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,oGAAoG;AACpG,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAyB,EAAE,MAAc,EAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"attached-parts.js","sourceRoot":"","sources":["../../src/structure/attached-parts.ts"],"names":[],"mappings":"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"}
@@ -27,8 +27,11 @@ type CaseMatch = "loose" | "exact";
27
27
  * mentioned が言う現れ(引用符で例として挙げただけ)も数えない。
28
28
  */
29
29
  export declare const usesOf: (term: string, texts: readonly BodyText[], definitionSpans: readonly Span[], caseMatch?: CaseMatch, mentioned?: Mentioned) => number[];
30
- /** 定義したのに、定義の外で一度も使っていない語。同じ語の定義が二つあれば、最初の一つだけを言う(二つ目は duplicate-definition)。 */
31
- export declare const unusedDefinitions: (terms: readonly DefinedTerm[], texts: readonly BodyText[], mentioned?: Mentioned) => DefinedTerm[];
30
+ /**
31
+ * 定義したのに、定義の外で一度も使っていない語。同じ語の定義が二つあれば、最初の一つだけを言う(二つ目は duplicate-definition)。
32
+ * determiners: 動名詞の後ろに来て、それが目的語を取る動詞だと分かる語(英語の a, the, your)。
33
+ */
34
+ export declare const unusedDefinitions: (terms: readonly DefinedTerm[], texts: readonly BodyText[], mentioned?: Mentioned, determiners?: ReadonlySet<string>) => DefinedTerm[];
32
35
  /** 文書の位置が、題・見出し・条の見出しの行にあるか。見出しは節の中身に名前を付けるだけで、語を使った所ではない。 */
33
36
  export type IsTitle = (offset: number) => boolean;
34
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"definition-use.d.ts","sourceRoot":"","sources":["../../src/structure/definition-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAmBxD,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnJ,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;AAIhE,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAY9E,2EAA2E;AAC3E,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,KAAG,WAAW,EAU1D,CAAC;AAML,mGAAmG;AACnG,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAkBnC;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,MAAM,MAAM,EACZ,OAAO,SAAS,QAAQ,EAAE,EAC1B,iBAAiB,SAAS,IAAI,EAAE,EAChC,YAAW,SAAmB,EAC9B,YAAW,SAA2B,KACrC,MAAM,EAQR,CAAC;AAeF,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,WAAW,EAAE,EAAE,OAAO,SAAS,QAAQ,EAAE,EAAE,YAAW,SAA2B,KAAG,WAAW,EAMhJ,CAAC;AAkDF,8DAA8D;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAiJlD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,WAAW,EAAE,EAC7B,OAAO,SAAS,QAAQ,EAAE,EAC1B,YAAW,SAA2B,EACtC,UAAS,OAAqB,EAC9B,eAAc,SAAS,MAAM,EAAO,KACnC,OAAO,EAuBT,CAAC"}
1
+ {"version":3,"file":"definition-use.d.ts","sourceRoot":"","sources":["../../src/structure/definition-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAoBxD,oEAAoE;AACpE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEnJ,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;AAIhE,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAY9E,2EAA2E;AAC3E,eAAO,MAAM,YAAY,GAAI,MAAM,aAAa,KAAG,WAAW,EAU1D,CAAC;AAML,mGAAmG;AACnG,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAkBnC;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,MAAM,MAAM,EACZ,OAAO,SAAS,QAAQ,EAAE,EAC1B,iBAAiB,SAAS,IAAI,EAAE,EAChC,YAAW,SAAmB,EAC9B,YAAW,SAA2B,KACrC,MAAM,EAQR,CAAC;AAmBF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,SAAS,WAAW,EAAE,EAC7B,OAAO,SAAS,QAAQ,EAAE,EAC1B,YAAW,SAA2B,EACtC,cAAa,WAAW,CAAC,MAAM,CAAa,KAC3C,WAAW,EAIb,CAAC;AAiEF,8DAA8D;AAC9D,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;AAiJlD;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,SAAS,WAAW,EAAE,EAC7B,OAAO,SAAS,QAAQ,EAAE,EAC1B,YAAW,SAA2B,EACtC,UAAS,OAAqB,EAC9B,eAAc,SAAS,MAAM,EAAO,KACnC,OAAO,EAuBT,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { escapeRegExp } from "../orthography.js";
2
2
  import { inDocumentOrder } from "./issues.js";
3
3
  import { isTitleWords } from "./contents-lines.js";
4
+ import { verbFormsOf } from "./gerund-phrase.js";
4
5
  import { definingNameOf, echoesName, endsLatinName, followsSelfPrefix, glossedWithName, MIN_ECHO, nameBefore, namesItself, sharedTail, } from "./defining-names.js";
5
6
  const NEVER_MENTIONED = () => false;
6
7
  /** 強調の印("**Agreement**")は語の一部ではない。 */
@@ -63,13 +64,16 @@ const groupsOf = (terms) => {
63
64
  });
64
65
  return [...groups.values()];
65
66
  };
66
- /** 定義したのに、定義の外で一度も使っていない語。同じ語の定義が二つあれば、最初の一つだけを言う(二つ目は duplicate-definition)。 */
67
- export const unusedDefinitions = (terms, texts, mentioned = NEVER_MENTIONED) => {
67
+ /** 語か、動名詞で始まる句の動詞の形(Exercising your options の exercise your options)が、定義の外に一度でも現れるか。 */
68
+ const isUsed = (group, texts, determiners) => [group.first.term, ...verbFormsOf(group.first.term, determiners)].some((form) => usesOf(form, texts, group.spans).length > 0);
69
+ /**
70
+ * 定義したのに、定義の外で一度も使っていない語。同じ語の定義が二つあれば、最初の一つだけを言う(二つ目は duplicate-definition)。
71
+ * determiners: 動名詞の後ろに来て、それが目的語を取る動詞だと分かる語(英語の a, the, your)。
72
+ */
73
+ export const unusedDefinitions = (terms, texts, mentioned = NEVER_MENTIONED, determiners = new Set()) => {
68
74
  const groups = groupsOf(terms);
69
75
  const examples = quotesExamples(groups, texts, mentioned);
70
- return groups
71
- .filter((group) => !(examples && group.first.bare === true) && usesOf(group.first.term, texts, group.spans).length === 0)
72
- .map((group) => group.first);
76
+ return groups.filter((group) => !(examples && group.first.bare === true) && !isUsed(group, texts, determiners)).map((group) => group.first);
73
77
  };
74
78
  /**
75
79
  * 定義の語の無い括弧の引用(("Seller"))を、文書が一つも本文で使っていなければ、それは定義ではなく例の引用
@@ -97,8 +101,21 @@ const sentenceAt = (texts, offset) => {
97
101
  const LETTER = /\p{L}/gu;
98
102
  /** 札の文が語のほかに持ってよい字の数("The Agreement." の The)。 */
99
103
  const LABEL_SLACK = 3;
100
- /** 語だけの札の文(**12.2.** Taxes.、1. The Agreement.)。条の頭に語を掲げただけで、使用ではない。 */
101
- const isLabel = (body, term) => body !== undefined && (body.text.replaceAll(term, "").match(LETTER) ?? []).length <= LABEL_SLACK;
104
+ /**
105
+ * 札の終わりに添えた条の番地の注((第7条関係)、(Section 4))。同じ形の括弧の一組で、入れ子が無く、中身は番号を含む 20 字まで。
106
+ * 長い括弧、番号の無い括弧((if any))、文の途中の括弧は、文の一部として読む。
107
+ */
108
+ const SECTION_NOTE = /(?:([^()()]{0,20})|\([^()()]{0,20}\))[.。.]?\s*$/u;
109
+ const NUMBER = /[\p{N}〇一二三四五六七八九十]/u;
110
+ const withoutSectionNote = (text) => {
111
+ const note = SECTION_NOTE.exec(text);
112
+ return note === null || !NUMBER.test(note[0]) ? text : text.slice(0, note.index);
113
+ };
114
+ /**
115
+ * 語だけの札の文(**12.2.** Taxes.、1. The Agreement.、(1)文化芸術推進基本計画(第7条関係))。条や節の頭に語を掲げただけで、
116
+ * 使用ではない。終わりに添えた条の番地の注は札の字に数えない。
117
+ */
118
+ const isLabel = (body, term) => body !== undefined && (withoutSectionNote(body.text.trimEnd()).replaceAll(term, "").match(LETTER) ?? []).length <= LABEL_SLACK;
102
119
  /** 番地の後ろの、条の題の始まり(Section 1.1 Closing. の Closing)。 */
103
120
  const AFTER_ADDRESS = /\d\.?\s+(?=\p{Lu})/gu;
104
121
  /** 文の終わりまでが、文の終わりの印を一つしか持たない(題の終わりの点)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"definition-use.js","sourceRoot":"","sources":["../../src/structure/definition-use.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition-use.js","sourceRoot":"","sources":["../../src/structure/definition-use.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,GAEX,MAAM,qBAAqB,CAAC;AAU7B,MAAM,eAAe,GAAc,GAAG,EAAE,CAAC,KAAK,CAAC;AAO/C,sCAAsC;AACtC,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,4CAA4C;AAC5C,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,sEAAsE;AACtE,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,cAAc,CAAC;AAEzI,2EAA2E;AAC3E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAiB,EAAE,CACjE,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IACrC,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,KAAK,YAAY;QACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;aAC7B,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;aAC9B,IAAI,EAAE;QACX,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjI,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,GAAG,oDAAoD,CAAC;AACxE,uDAAuD;AACvD,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAKzC;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,SAAoB,EAAU,EAAE;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjH,MAAM,QAAQ,GAAG,SAAS,KAAK,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;IACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;IAC3H,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,sBAAsB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,+BAA+B,IAAI,GAAG,IAAI,4CAA4C,EAAE,IAAI,CAAC,CAAC;AAC5H,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,KAAsB,EAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AAEpI;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,IAAY,EACZ,KAA0B,EAC1B,eAAgC,EAChC,YAAuB,OAAO,EAC9B,YAAuB,eAAe,EAC5B,EAAE;IACZ,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5B,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SACnG,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;SACxC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CACxD,CAAC;AACJ,CAAC,CAAC;AAIF,kDAAkD;AAClD,MAAM,QAAQ,GAAG,CAAC,KAA6B,EAAe,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiD,CAAC;IACxE,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YACxF,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAE,KAA0B,EAAE,WAAgC,EAAW,EAAE,CACzG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEhI;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAA6B,EAC7B,KAA0B,EAC1B,YAAuB,eAAe,EACtC,cAAmC,IAAI,GAAG,EAAE,EAC7B,EAAE;IACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9I,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,MAA4B,EAAE,KAA0B,EAAE,SAAoB,EAAW,EAAE,CACjH,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEpI,8CAA8C;AAC9C,MAAM,UAAU,GAAG,CAAC,KAA0B,EAAE,MAAc,EAAwB,EAAE;IACtF,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACzC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK;YAAE,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;aACtC,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;;YAC9D,OAAO,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,SAAS,CAAC;AACzB,iDAAiD;AACjD,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB;;;GAGG;AACH,MAAM,YAAY,GAAG,kDAAkD,CAAC;AACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC;AAErC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,OAAO,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,GAAG,CAAC,IAA0B,EAAE,IAAY,EAAW,EAAE,CACpE,IAAI,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC;AAEjI,wDAAwD;AACxD,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,0CAA0C;AAC1C,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,IAA0B,EAAE,MAAc,EAAW,EAAE;IAC5E,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9F,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC,CAAC;AAKF,MAAM,WAAW,GAAY,GAAG,EAAE,CAAC,KAAK,CAAC;AAEzC,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAE9B,8DAA8D;AAC9D,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,IAAY,EAAE,MAAc,EAAW,EAAE;IAC3F,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5H,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEzB,mDAAmD;AACnD,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvI;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAE,IAAY,EAAE,MAAc,EAAW,EAAE;IAC/F,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;IAC/B,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,MAAM,YAAY,GAAG,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/G,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC;AAC9G,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,OAAoB,EAAE,MAAc,EAAW,EAAE;IACnG,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACpG,CAAC,CAAC;AAEF,oJAAoJ;AACpJ,MAAM,QAAQ,GAAG,0FAA0F,CAAC;AAE5G;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAE,MAA8B,EAAE,OAAoB,EAAE,MAAc,EAAW,EAAE;IACvI,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,CAChB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI;QACxB,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO;QAC3B,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,yCAAyC,CAAC;AAEvE;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE7G,0BAA0B;AAC1B,MAAM,aAAa,GAAG,CAAC,KAA6B,EAAE,KAA0B,EAAkC,EAAE,CAClH,IAAI,GAAG,CACL,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAiC,EAAE;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrH,CAAC,CAAC,CACH,CAAC;AAQJ,yDAAyD;AACzD,MAAM,WAAW,GAAG,CAAC,KAAsB,EAAiC,EAAE;IAC5E,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnG,OAAO,CAAC,MAAM,EAAE,EAAE;QAChB,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM;gBAAE,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;;gBACxD,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QACjE,OAAO,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAE,KAA6B,EAAE,KAA6C,EAAoB,EAAE;IACxJ,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7H,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IACrD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAqB,EAAE;QACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACtB,IAAI,gBAAgB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACzC,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;QACnC,OAAO,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CACvB,KAA0B,EAC1B,IAAY,EACZ,QAAkC,EAClC,QAA2B,EAC3B,MAAc,EACL,EAAE;IACX,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACnE,MAAM,EAAE,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9I,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAA6B,EAC7B,KAA0B,EAC1B,YAAuB,eAAe,EACtC,UAAmB,WAAW,EAC9B,eAAkC,EAAE,EACzB,EAAE;IACb,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACjE,OAAO,QAAQ,CAAC,KAAK,CAAC;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACxE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACpF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QACpJ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CACrB,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;YACjD,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YACjD,CAAC,OAAO,CAAC,MAAM,CAAC;YAChB,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;YAC5C,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;YAChD,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;YACvC,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;YACnD,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;YACvC,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CACnF,CAAC;QACF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The same phrase with its leading gerund written as the other forms of its verb ("exercise your options",
3
+ * "exercised your options" for "Exercising your options"). Only when a determiner follows the gerund (a, the, your):
4
+ * then it takes an object and is a verb. "Building materials" and "Pricing information" name things, and "Licensing"
5
+ * alone may be a noun. Empty when the phrase does not take that shape.
6
+ */
7
+ export declare const verbFormsOf: (term: string, determiners: ReadonlySet<string>) => string[];
8
+ //# sourceMappingURL=gerund-phrase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gerund-phrase.d.ts","sourceRoot":"","sources":["../../src/structure/gerund-phrase.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,aAAa,WAAW,CAAC,MAAM,CAAC,KAAG,MAAM,EASlF,CAAC"}
@@ -0,0 +1,30 @@
1
+ // A defined phrase led by an English gerund and its object ("Exercising your options" means ...) names an act, and the
2
+ // document then writes the act as a verb: exercise your options, exercised their options. Pure.
3
+ const GERUND = /^(\p{Script=Latin}{2,})ing$/u;
4
+ /** A consonant written twice before -ing (running, setting): the verb has it once. */
5
+ const DOUBLED = /(\p{Script=Latin})\1$/u;
6
+ /** The verb forms a stem takes (file, files, filed, filing for "Filing"; exercise for "Exercising"). */
7
+ const formsOf = (stem) => {
8
+ const single = DOUBLED.test(stem) ? [stem.slice(0, -1)] : [];
9
+ return [...new Set([stem, `${stem}e`, `${stem}es`, `${stem}s`, `${stem}ed`, `${stem}ing`, ...single, ...single.map((verb) => `${verb}s`)])];
10
+ };
11
+ const capitalised = (word) => word.charAt(0) !== word.charAt(0).toLowerCase();
12
+ /**
13
+ * The same phrase with its leading gerund written as the other forms of its verb ("exercise your options",
14
+ * "exercised your options" for "Exercising your options"). Only when a determiner follows the gerund (a, the, your):
15
+ * then it takes an object and is a verb. "Building materials" and "Pricing information" name things, and "Licensing"
16
+ * alone may be a noun. Empty when the phrase does not take that shape.
17
+ */
18
+ export const verbFormsOf = (term, determiners) => {
19
+ const [first, second, ...rest] = term.split(" ");
20
+ if (first === undefined || second === undefined || !determiners.has(second.toLowerCase()))
21
+ return [];
22
+ const stem = GERUND.exec(first.toLowerCase())?.[1];
23
+ if (stem === undefined)
24
+ return [];
25
+ return formsOf(stem)
26
+ .map((form) => (capitalised(first) ? `${form.charAt(0).toUpperCase()}${form.slice(1)}` : form))
27
+ .map((form) => [form, second, ...rest].join(" "))
28
+ .filter((form) => form !== term);
29
+ };
30
+ //# sourceMappingURL=gerund-phrase.js.map