chaffjs 0.8.0 → 0.9.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 (135) hide show
  1. package/dist/address-chain.d.ts +9 -0
  2. package/dist/address-chain.d.ts.map +1 -0
  3. package/dist/address-chain.js +105 -0
  4. package/dist/address-chain.js.map +1 -0
  5. package/dist/cli-args.d.ts.map +1 -1
  6. package/dist/cli-args.js +1 -1
  7. package/dist/cli-args.js.map +1 -1
  8. package/dist/cli-text.d.ts.map +1 -1
  9. package/dist/cli-text.js +4 -0
  10. package/dist/cli-text.js.map +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +19 -1
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/eval.d.ts.map +1 -1
  15. package/dist/commands/eval.js +2 -1
  16. package/dist/commands/eval.js.map +1 -1
  17. package/dist/commands/feedback.d.ts +35 -0
  18. package/dist/commands/feedback.d.ts.map +1 -0
  19. package/dist/commands/feedback.js +157 -0
  20. package/dist/commands/feedback.js.map +1 -0
  21. package/dist/commands/test.d.ts.map +1 -1
  22. package/dist/commands/test.js +3 -2
  23. package/dist/commands/test.js.map +1 -1
  24. package/dist/commands/tree.d.ts.map +1 -1
  25. package/dist/commands/tree.js +3 -1
  26. package/dist/commands/tree.js.map +1 -1
  27. package/dist/config/by-path.d.ts +5 -1
  28. package/dist/config/by-path.d.ts.map +1 -1
  29. package/dist/config/by-path.js +1 -4
  30. package/dist/config/by-path.js.map +1 -1
  31. package/dist/config/load.d.ts +2 -0
  32. package/dist/config/load.d.ts.map +1 -1
  33. package/dist/config/load.js +3 -1
  34. package/dist/config/load.js.map +1 -1
  35. package/dist/detectors/char-shape.d.ts.map +1 -1
  36. package/dist/detectors/char-shape.js +3 -2
  37. package/dist/detectors/char-shape.js.map +1 -1
  38. package/dist/document.d.ts +2 -2
  39. package/dist/document.d.ts.map +1 -1
  40. package/dist/document.js +4 -2
  41. package/dist/document.js.map +1 -1
  42. package/dist/feedback/draft.d.ts +28 -0
  43. package/dist/feedback/draft.d.ts.map +1 -0
  44. package/dist/feedback/draft.js +66 -0
  45. package/dist/feedback/draft.js.map +1 -0
  46. package/dist/feedback/excerpt.d.ts +10 -0
  47. package/dist/feedback/excerpt.d.ts.map +1 -0
  48. package/dist/feedback/excerpt.js +20 -0
  49. package/dist/feedback/excerpt.js.map +1 -0
  50. package/dist/legal-address.d.ts +2 -0
  51. package/dist/legal-address.d.ts.map +1 -0
  52. package/dist/legal-address.js +16 -0
  53. package/dist/legal-address.js.map +1 -0
  54. package/dist/orthography.d.ts.map +1 -1
  55. package/dist/orthography.js +15 -0
  56. package/dist/orthography.js.map +1 -1
  57. package/dist/plugin.d.ts +88 -0
  58. package/dist/plugin.d.ts.map +1 -1
  59. package/dist/profile/for-file.d.ts +7 -0
  60. package/dist/profile/for-file.d.ts.map +1 -0
  61. package/dist/profile/for-file.js +6 -0
  62. package/dist/profile/for-file.js.map +1 -0
  63. package/dist/profile/load.d.ts +4 -0
  64. package/dist/profile/load.d.ts.map +1 -0
  65. package/dist/profile/load.js +25 -0
  66. package/dist/profile/load.js.map +1 -0
  67. package/dist/profile/parse.d.ts +19 -0
  68. package/dist/profile/parse.d.ts.map +1 -0
  69. package/dist/profile/parse.js +82 -0
  70. package/dist/profile/parse.js.map +1 -0
  71. package/dist/profile/select.d.ts +22 -0
  72. package/dist/profile/select.d.ts.map +1 -0
  73. package/dist/profile/select.js +21 -0
  74. package/dist/profile/select.js.map +1 -0
  75. package/dist/reasons.d.ts +1 -0
  76. package/dist/reasons.d.ts.map +1 -1
  77. package/dist/reasons.js +2 -0
  78. package/dist/reasons.js.map +1 -1
  79. package/dist/run.d.ts.map +1 -1
  80. package/dist/run.js +24 -3
  81. package/dist/run.js.map +1 -1
  82. package/dist/structure/build.d.ts +2 -1
  83. package/dist/structure/build.d.ts.map +1 -1
  84. package/dist/structure/build.js +94 -7
  85. package/dist/structure/build.js.map +1 -1
  86. package/dist/structure/issues.d.ts.map +1 -1
  87. package/dist/structure/issues.js +9 -2
  88. package/dist/structure/issues.js.map +1 -1
  89. package/dist/structure/of.d.ts +2 -1
  90. package/dist/structure/of.d.ts.map +1 -1
  91. package/dist/structure/of.js +7 -1
  92. package/dist/structure/of.js.map +1 -1
  93. package/dist/structure/relative-find.d.ts +6 -0
  94. package/dist/structure/relative-find.d.ts.map +1 -0
  95. package/dist/structure/relative-find.js +179 -0
  96. package/dist/structure/relative-find.js.map +1 -0
  97. package/dist/structure/relative-resolve.d.ts +3 -0
  98. package/dist/structure/relative-resolve.d.ts.map +1 -0
  99. package/dist/structure/relative-resolve.js +175 -0
  100. package/dist/structure/relative-resolve.js.map +1 -0
  101. package/dist/structure/unread.d.ts +8 -0
  102. package/dist/structure/unread.d.ts.map +1 -0
  103. package/dist/structure/unread.js +34 -0
  104. package/dist/structure/unread.js.map +1 -0
  105. package/package.json +4 -3
  106. package/profiles/statute.yaml +62 -0
  107. package/skills/chaff/SKILL.md +24 -4
  108. package/src/address-chain.ts +113 -0
  109. package/src/cli-args.ts +1 -1
  110. package/src/cli-text.ts +4 -0
  111. package/src/cli.ts +20 -1
  112. package/src/commands/eval.ts +2 -1
  113. package/src/commands/feedback.ts +210 -0
  114. package/src/commands/test.ts +3 -2
  115. package/src/commands/tree.ts +3 -1
  116. package/src/config/by-path.ts +11 -3
  117. package/src/config/load.ts +5 -1
  118. package/src/detectors/char-shape.ts +5 -4
  119. package/src/document.ts +11 -3
  120. package/src/feedback/draft.ts +102 -0
  121. package/src/feedback/excerpt.ts +23 -0
  122. package/src/orthography.ts +15 -0
  123. package/src/plugin.ts +82 -0
  124. package/src/profile/for-file.ts +11 -0
  125. package/src/profile/load.ts +26 -0
  126. package/src/profile/parse.ts +106 -0
  127. package/src/profile/select.ts +35 -0
  128. package/src/reasons.ts +5 -0
  129. package/src/run.ts +25 -3
  130. package/src/structure/build.ts +118 -10
  131. package/src/structure/issues.ts +10 -2
  132. package/src/structure/of.ts +15 -3
  133. package/src/structure/relative-find.ts +224 -0
  134. package/src/structure/relative-resolve.ts +209 -0
  135. package/src/structure/unread.ts +39 -0
@@ -1,5 +1,5 @@
1
1
  import type { Heading } from "../document.ts";
2
- import type { Span, StructureNode, StructurePatterns } from "../plugin.ts";
2
+ import type { DocumentProfile, Span, StructureNode, StructurePatterns } from "../plugin.ts";
3
3
  /** Markdown から取った手がかり。見出しと、中を読まない範囲(コード)。.txt はどちらも空。 */
4
4
  export type Outline = {
5
5
  readonly headings: readonly Heading[];
@@ -11,6 +11,7 @@ export type StructureInput = {
11
11
  readonly source: string;
12
12
  readonly language: string;
13
13
  readonly outline: Outline;
14
+ readonly profile?: DocumentProfile | undefined;
14
15
  };
15
16
  /**
16
17
  * 文書を番地の付いた木にする。番号の書き方は言語パッケージが読み、ここは入れ子と番地だけを決める。
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/structure/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAA2C,IAAI,EAAiB,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAkJnI,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,CAAC;AAElG,eAAO,MAAM,UAAU,EAAE,OAAsC,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAuCtI;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,EAAE,UAAU,iBAAiB,KAAG,aAe9E,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/structure/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9C,OAAO,KAAK,EAAE,eAAe,EAA2C,IAAI,EAAiB,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAwNpJ,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,CAAC;AAElG,eAAO,MAAM,UAAU,EAAE,OAAsC,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD,CAAC;AA0DF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,cAAc,EAAE,UAAU,iBAAiB,KAAG,aAyB9E,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import { atxHeadingText, headingText } from "../heading-text.js";
2
+ import { addressSpans } from "../address-chain.js";
3
+ import { relativeMentions } from "./relative-find.js";
4
+ import { resolveRelative } from "./relative-resolve.js";
2
5
  import { maskSpans } from "../mask.js";
3
6
  import { lineNumberAt, linesOf } from "./lines.js";
4
7
  import { dottedNumber } from "./universal.js";
@@ -66,6 +69,7 @@ const openNumbered = (state, line, numbered, headingDepth) => {
66
69
  ordinal: numbered.ordinal,
67
70
  level: numbered.depth,
68
71
  ordinalTo: numbered.ordinalTo,
72
+ numbering: numbered.numbering,
69
73
  };
70
74
  open(state, { draft, rank, numbered });
71
75
  };
@@ -74,11 +78,25 @@ const openSection = (state, line, heading) => {
74
78
  state.stack.pop();
75
79
  open(state, { draft: draftOf("section", headingAddress(state, heading.depth), line, { heading: heading.text }), rank: heading.depth });
76
80
  };
81
+ /** 番地(文書の種類が決める「前二項」など)の中の数は、数量ではない。 */
82
+ const outsideAddresses = (mentions, text, profile) => {
83
+ const spans = addressSpans(text, profile);
84
+ return spans.length === 0 ? mentions : mentions.filter((mention) => !spans.some((span) => span.start <= mention.start && mention.end <= span.end));
85
+ };
86
+ /** 番地を名指しした参照(第百五十七条第一項)の一部は、相対の参照ではない。 */
87
+ const withoutAbsolute = (relative, absolute) => relative.filter((mention) => !absolute.some((other) => mention.start < other.end && other.start < mention.end));
77
88
  const LEAVES = [
78
89
  { kind: "definition", find: (patterns, text) => patterns.definitions(text) },
79
90
  { kind: "reference", find: (patterns, text) => patterns.references(text) },
91
+ {
92
+ kind: "reference",
93
+ find: (patterns, text, profile) => {
94
+ const absolute = patterns.references(text);
95
+ return withoutAbsolute(relativeMentions(text, profile, patterns.number, absolute), absolute);
96
+ },
97
+ },
80
98
  { kind: "obligation", find: (patterns, text) => patterns.obligations(text) },
81
- { kind: "quantity", find: (patterns, text) => patterns.quantities(text) },
99
+ { kind: "quantity", find: (patterns, text, profile) => outsideAddresses(patterns.quantities(text), text, profile) },
82
100
  { kind: "date", find: (patterns, text) => patterns.dates?.(text) ?? [] },
83
101
  ];
84
102
  /** 言語を問わない通し番号。後ろが単位なら数量なので番号にしない。 */
@@ -87,10 +105,49 @@ const universalNumber = (patterns, text, context) => {
87
105
  return dotted !== undefined && patterns.countedAfter?.(dotted.number, dotted.rest) === true ? undefined : dotted;
88
106
  };
89
107
  /** 行の中の定義・参照・義務・数量を、いま開いている最も内側の節点の子にする。 */
108
+ const enclosingArticle = (state) => [...state.stack].reverse().find((frame) => frame.draft.kind === "article")?.draft;
109
+ /** 条より広い範囲(「In this Part」)なら、その深さの開いているまとまり。開いていなければ(Part の見出しの無い文書)無い。 */
110
+ const widerScope = (state, patterns, text) => {
111
+ const depth = patterns.definitionScopeDepth?.(text);
112
+ return depth === undefined ? undefined : [...state.stack].reverse().find((frame) => frame.numbered?.depth === depth)?.draft;
113
+ };
114
+ /** 範囲を宣言した行を持つまとまり。条の中なら条、条の外(Markdown の見出しの下、Part の直下)なら開いている一番内側のもの。 */
115
+ const holderOf = (state) => enclosingArticle(state) ?? top(state).draft;
116
+ /**
117
+ * 定義の範囲。範囲を宣言した行(In this section— / In this Part—)を含むまとまりの定義が対象。宣言が Part なら、比べるのは
118
+ * その Part の中(within に番地を残す)。条の外で宣言したものは、そのまとまりの中。宣言の無いところの定義は、文書全体で比べる。
119
+ */
120
+ const scopeOf = (state, patterns, text) => {
121
+ const holder = holderOf(state);
122
+ if (patterns.opensDefinitionScope?.(text) === true) {
123
+ state.scopedArticles.add(holder);
124
+ const wider = widerScope(state, patterns, text);
125
+ if (wider !== undefined)
126
+ state.widerScopes.set(holder, wider);
127
+ }
128
+ if (!state.scopedArticles.has(holder))
129
+ return {};
130
+ const within = state.widerScopes.get(holder) ?? (holder.kind === "article" ? undefined : holder);
131
+ return within === undefined ? { scope: "local" } : { scope: "local", within: within.address };
132
+ };
90
133
  const addLeaves = (state, patterns, line, text, offset) => {
91
134
  const parent = top(state).draft;
92
- const leaves = LEAVES.flatMap(({ kind, find }) => find(patterns, text).map((mention) => ({ kind, start: line.start + offset + mention.start, end: line.start + offset + mention.end, attrs: mention.attrs }))).sort((left, right) => left.start - right.start);
93
- leaves.forEach((leaf) => parent.children.push({ kind: leaf.kind, address: "", start: leaf.start, end: leaf.end, line: line.number, attrs: leaf.attrs, children: [] }));
135
+ const scope = scopeOf(state, patterns, text);
136
+ const leaves = LEAVES.flatMap(({ kind, find }) => find(patterns, text, state.profile).map((mention) => ({
137
+ kind,
138
+ start: line.start + offset + mention.start,
139
+ end: line.start + offset + mention.end,
140
+ attrs: mention.attrs,
141
+ }))).sort((left, right) => left.start - right.start);
142
+ leaves.forEach((leaf) => parent.children.push({
143
+ kind: leaf.kind,
144
+ address: "",
145
+ start: leaf.start,
146
+ end: leaf.end,
147
+ line: line.number,
148
+ attrs: leaf.kind === "definition" ? { ...leaf.attrs, ...scope } : leaf.attrs,
149
+ children: [],
150
+ }));
94
151
  };
95
152
  const extend = (state, end) => {
96
153
  state.stack.forEach((frame) => {
@@ -107,6 +164,7 @@ const freeze = (draft) => ({
107
164
  ...(draft.ordinal === undefined ? {} : { ordinal: draft.ordinal }),
108
165
  ...(draft.level === undefined ? {} : { level: draft.level }),
109
166
  ...(draft.ordinalTo === undefined ? {} : { ordinalTo: draft.ordinalTo }),
167
+ ...(draft.numbering === undefined ? {} : { numbering: draft.numbering }),
110
168
  });
111
169
  export const NO_OUTLINE = { headings: [], opaque: [] };
112
170
  /** 見出しのある行を、行番号から引けるようにする。見出しごとに全行を探し直さない。 */
@@ -127,11 +185,30 @@ const headingLineText = (text) => {
127
185
  return headingText(line);
128
186
  return atxHeadingText(line.replace(/^#{1,6}(?=[ \t]|$)/u, "").trim());
129
187
  };
188
+ const captionPatterns = new WeakMap();
189
+ /** 文書の種類が決めた見出しだけの行なら、その言葉(最初の括弧の中、括弧が無ければ行全体)。 */
190
+ const captionOf = (profile, text) => {
191
+ if (profile === undefined)
192
+ return undefined;
193
+ if (!captionPatterns.has(profile))
194
+ captionPatterns.set(profile, profile.caption === undefined ? undefined : new RegExp(profile.caption, "u"));
195
+ const found = captionPatterns.get(profile)?.exec(text);
196
+ const words = (found?.[1] ?? found?.[0])?.trim();
197
+ return words === "" ? undefined : words;
198
+ };
199
+ /** 見出しの無い条のすぐ前の行が見出しだけの行なら、それを条の見出しにする。 */
200
+ const withCaption = (state, line, numbered) => {
201
+ const caption = numbered?.kind === "article" && numbered.heading === "" ? state.captions.get(line.number - 1) : undefined;
202
+ return numbered === undefined || caption === undefined ? numbered : { ...numbered, heading: caption };
203
+ };
130
204
  const readLine = (state, patterns, line, heading) => {
131
205
  const text = heading === undefined ? line.text : headingLineText(line.text);
132
206
  const openNumbers = state.stack.flatMap((frame) => (frame.numbered === undefined ? [] : [frame.numbered]));
133
207
  const context = { open: openNumbers, isHeading: heading !== undefined };
134
- const numbered = patterns.numbered(text, context) ?? universalNumber(patterns, text, context);
208
+ const numbered = withCaption(state, line, patterns.numbered(text, context) ?? universalNumber(patterns, text, context));
209
+ const caption = numbered === undefined && heading === undefined ? captionOf(state.profile, text) : undefined;
210
+ if (caption !== undefined)
211
+ state.captions.set(line.number, caption);
135
212
  // 番号付きの見出しも見出しの通し番号を進める。進めないと、その下の「### 詳細」が前の見出しの番地を名乗る。
136
213
  if (numbered !== undefined && heading !== undefined)
137
214
  headingAddress(state, heading.depth);
@@ -156,9 +233,17 @@ export const buildTree = (input, patterns) => {
156
233
  // 文中の `第99条` は参照として拾われない。位置は元の文書のまま。
157
234
  const lines = linesOf(maskSpans(input.source, outline.opaque));
158
235
  const headings = headingsByLine(lines, outline.headings);
159
- const doc = draftOf("doc", "", { text: "", start: 0, number: 1 }, { path: input.path, language: input.language });
236
+ const attrs = { path: input.path, language: input.language, ...(input.profile === undefined ? {} : { profile: input.profile.id }) };
237
+ const doc = draftOf("doc", "", { text: "", start: 0, number: 1 }, attrs);
160
238
  doc.end = input.source.length;
161
- const state = { stack: [{ draft: doc, rank: 0 }], headingCounts: [] };
239
+ const state = {
240
+ stack: [{ draft: doc, rank: 0 }],
241
+ headingCounts: [],
242
+ scopedArticles: new Set(),
243
+ widerScopes: new Map(),
244
+ profile: input.profile,
245
+ captions: new Map(),
246
+ };
162
247
  lines.forEach((line) => {
163
248
  if (line.text.trim() !== "")
164
249
  readLine(state, patterns, line, headings.get(line.number));
@@ -166,6 +251,8 @@ export const buildTree = (input, patterns) => {
166
251
  else if (input.source.slice(line.start, line.start + line.text.length).trim() !== "")
167
252
  extend(state, line.start + line.text.length);
168
253
  });
169
- return freeze(doc);
254
+ const tree = freeze(doc);
255
+ const relative = input.profile?.relative;
256
+ return relative === undefined ? tree : resolveRelative(tree, relative.implicitFirst);
170
257
  };
171
258
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/structure/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/structure/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/structure/issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAIrH,8DAA8D;AAC9D,eAAO,MAAM,eAAe,GAAI,MAAM,aAAa,KAAG,aAAa,EAUlE,CAAC;AAcF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,aAAa,KAAG,cAAc,EAStE,CAAC;AAkBF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,aAAa,KAAG,cAAc,EAYxE,CAAC"}
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/structure/issues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC;AAIrH,8DAA8D;AAC9D,eAAO,MAAM,eAAe,GAAI,MAAM,aAAa,KAAG,aAAa,EAUlE,CAAC;AAcF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,aAAa,KAAG,cAAc,EAgBtE,CAAC;AAkBF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,MAAM,aAAa,KAAG,cAAc,EAaxE,CAAC"}
@@ -31,8 +31,14 @@ export const danglingReferences = (tree) => {
31
31
  if (!nodes.some((node) => node.kind === "article"))
32
32
  return [];
33
33
  const addresses = new Set(nodes.filter((node) => NUMBERED.includes(node.kind)).map((node) => node.address));
34
+ // Section で組んだ法令が "Articles 13 to 21 of the UK GDPR" と別の文書の Article を名指ししていれば、名の無い "Article 6(3)" もそちら。
35
+ // 名指しがあれば、名の無い "Article 9" が書き間違いか向こうの条かは区別できないので黙る。名指しが無い文書では報告する。
36
+ const numbering = (node) => node.attrs["numbering"];
37
+ const numberings = new Set(nodes.flatMap((node) => (node.kind === "article" && node.numbering !== undefined ? [node.numbering] : [])));
38
+ const citedElsewhere = new Set(nodes.filter((node) => node.kind === "reference" && node.attrs["document"] !== undefined).map(numbering));
39
+ const otherNumbering = (node) => numberings.size > 0 && typeof numbering(node) === "string" && !numberings.has(String(numbering(node))) && citedElsewhere.has(numbering(node));
34
40
  return nodes
35
- .filter((node) => node.kind === "reference" && node.attrs["document"] === undefined)
41
+ .filter((node) => node.kind === "reference" && node.attrs["document"] === undefined && !otherNumbering(node))
36
42
  .filter((node) => !resolves(node, addresses))
37
43
  .map((node) => ({ offset: node.span.start, values: { label: textOf(node, "label"), target: textOf(node, "target") } }));
38
44
  };
@@ -59,7 +65,8 @@ export const duplicateDefinitions = (tree) => {
59
65
  const first = new Map();
60
66
  return definitionsInOrder(tree).flatMap(({ node, article }) => {
61
67
  const term = textOf(node, "term");
62
- const key = node.attrs["scope"] === "local" ? `${article}\u0000${term}` : term;
68
+ const within = node.attrs["within"] === undefined ? article : textOf(node, "within");
69
+ const key = node.attrs["scope"] === "local" ? `${within}\u0000${term}` : term;
63
70
  const earlier = first.get(key);
64
71
  if (earlier === undefined) {
65
72
  first.set(key, node);
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/structure/issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/structure/issues.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import type { StructureNode, StructurePatterns } from "../plugin.ts";
1
+ import type { DocumentProfile, StructureNode, StructurePatterns } from "../plugin.ts";
2
2
  export type SourceInput = {
3
3
  readonly path: string;
4
4
  readonly source: string;
5
5
  readonly language: string;
6
6
  readonly markdown: boolean;
7
+ readonly profile?: DocumentProfile | undefined;
7
8
  };
8
9
  /**
9
10
  * 文字列から木を作る。Markdown なら見出しとコードの範囲を先に取る。
@@ -1 +1 @@
1
- {"version":3,"file":"of.d.ts","sourceRoot":"","sources":["../../src/structure/of.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGrE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpI;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,UAAU,iBAAiB,KAAG,aAI9E,CAAC"}
1
+ {"version":3,"file":"of.d.ts","sourceRoot":"","sources":["../../src/structure/of.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAChD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,WAAW,EAAE,UAAU,iBAAiB,KAAG,aAU9E,CAAC"}
@@ -4,5 +4,11 @@ import { buildTree, NO_OUTLINE } from "./build.js";
4
4
  * 文字列から木を作る。Markdown なら見出しとコードの範囲を先に取る。
5
5
  * lint は文書モデルを作るときの解析を使い回すので、ここを通らずに buildTree を呼ぶ。
6
6
  */
7
- export const buildStructure = (input, patterns) => buildTree({ path: input.path, source: input.source, language: input.language, outline: input.markdown ? markdownOutline(input.source) : NO_OUTLINE }, patterns);
7
+ export const buildStructure = (input, patterns) => buildTree({
8
+ path: input.path,
9
+ source: input.source,
10
+ language: input.language,
11
+ outline: input.markdown ? markdownOutline(input.source) : NO_OUTLINE,
12
+ profile: input.profile,
13
+ }, patterns);
8
14
  //# sourceMappingURL=of.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"of.js","sourceRoot":"","sources":["../../src/structure/of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAInD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,QAA2B,EAAiB,EAAE,CAC/F,SAAS,CACP,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAC1I,QAAQ,CACT,CAAC"}
1
+ {"version":3,"file":"of.js","sourceRoot":"","sources":["../../src/structure/of.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAUnD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,QAA2B,EAAiB,EAAE,CAC/F,SAAS,CACP;IACE,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;IACpE,OAAO,EAAE,KAAK,CAAC,OAAO;CACvB,EACD,QAAQ,CACT,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { DocumentProfile, Mention } from "../plugin.ts";
2
+ type NumberReader = (text: string) => number | undefined;
3
+ /** absolute は同じ行の番地を名指しした参照。条を書かない番地が、その続きかどうかを決めるのに使う。 */
4
+ export declare const relativeMentions: (text: string, profile: DocumentProfile | undefined, number: NumberReader | undefined, absolute?: readonly Mention[]) => Mention[];
5
+ export {};
6
+ //# sourceMappingURL=relative-find.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-find.d.ts","sourceRoot":"","sources":["../../src/structure/relative-find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAA4B,MAAM,cAAc,CAAC;AAQvF,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAqMzD,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,SAAS,eAAe,GAAG,SAAS,EACpC,QAAQ,YAAY,GAAG,SAAS,EAChC,WAAU,SAAS,OAAO,EAAO,KAChC,OAAO,EAYT,CAAC"}
@@ -0,0 +1,179 @@
1
+ const escape = (word) => word.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
2
+ const oneOf = (words) => (words.length === 0 ? "(?!)" : words.map(escape).join("|"));
3
+ const waysOf = (vocabulary) => new Map([
4
+ ...vocabulary.before.map((word) => [word, "before"]),
5
+ ...vocabulary.after.map((word) => [word, "after"]),
6
+ ...vocabulary.same.map((word) => [word, "same"]),
7
+ ...vocabulary.current.map((word) => [word, "current"]),
8
+ ]);
9
+ /** 後ろの決まり: 番地の並びと同じく、つなぎの語を挟んで address_end。「前条件」の「前条」を参照にしない。 */
10
+ const endOf = (profile) => {
11
+ const connectives = profile.connectives.length === 0 ? "" : `(?:${oneOf(profile.connectives)})*`;
12
+ return profile.addressEnd === undefined ? "" : `(?=${connectives}(?:${profile.addressEnd}))`;
13
+ };
14
+ const compile = (profile, vocabulary) => {
15
+ const units = oneOf(Object.keys(vocabulary.units));
16
+ const suffix = `${escape(vocabulary.suffixPrefix)}(?:${vocabulary.count})(?:${units})`;
17
+ const end = endOf(profile);
18
+ const start = vocabulary.notAfter === undefined ? "" : `(?<!${vocabulary.notAfter})`;
19
+ const way = oneOf([...vocabulary.before, ...vocabulary.after, ...vocabulary.same, ...vocabulary.current]);
20
+ const count = `${oneOf(vocabulary.every)}|${vocabulary.count}`;
21
+ const inside = `${escape(vocabulary.suffixPrefix)}(?:${vocabulary.count})(?:${oneOf(vocabulary.inside)})`;
22
+ return {
23
+ named: new RegExp(`${start}(?<way>${way})(?<count>${count})?(?<unit>${units})(?<suffix>(?:${suffix})*)${end}`, "gu"),
24
+ // 前の文字は見ない。語に続くもの(別表第一第一号)も見つけて、並びの続きを止めるのに使う。
25
+ bare: vocabulary.inside.length === 0 ? undefined : new RegExp(`(?<suffix>${inside}(?:${suffix})*)${end}`, "gu"),
26
+ suffix: new RegExp(`${escape(vocabulary.suffixPrefix)}(?<n>${vocabulary.count})(?<unit>${units})`, "gu"),
27
+ notAfter: vocabulary.notAfter === undefined ? undefined : new RegExp(`(?:${vocabulary.notAfter})$`, "u"),
28
+ joins: new RegExp(`(?:${[...vocabulary.joiners, ...profile.connectives.map(escape)].join("|") || "(?!)"})`, "gu"),
29
+ ways: waysOf(vocabulary),
30
+ };
31
+ };
32
+ const compiled = new WeakMap();
33
+ /** 「第二項第三号」を「2:2,3:3」(深さ:番号)にする。読めない数があれば undefined。 */
34
+ const suffixOf = (text, patterns, vocabulary, number) => {
35
+ const parts = [...text.matchAll(patterns.suffix)].map((match) => {
36
+ const value = number(match.groups?.["n"] ?? "");
37
+ const depth = vocabulary.units[match.groups?.["unit"] ?? ""];
38
+ return value === undefined || depth === undefined ? undefined : `${String(depth)}:${String(value)}`;
39
+ });
40
+ return parts.includes(undefined) ? undefined : parts.join(",");
41
+ };
42
+ /** 「各」は前の全部(0)、数が無ければ 1。 */
43
+ const countOf = (count, vocabulary, number) => {
44
+ if (count === undefined)
45
+ return 1;
46
+ return vocabulary.every.includes(count) ? 0 : number(count);
47
+ };
48
+ /** 文字と、その位置(UTF-16 の単位で)。絵文字のような 2 単位の文字も 1 文字として読む。 */
49
+ const characters = (text) => {
50
+ const found = [];
51
+ let at = 0;
52
+ for (const char of text) {
53
+ found.push({ char, at });
54
+ at += char.length;
55
+ }
56
+ return found;
57
+ };
58
+ /** 一番外側の括弧の範囲。閉じの無い開きは捨てる。 */
59
+ const outerQuotes = (text, quote) => {
60
+ const spans = [];
61
+ const opens = [];
62
+ characters(text).forEach(({ char, at }) => {
63
+ if (char === quote.open)
64
+ opens.push(at);
65
+ const start = char === quote.close ? opens.pop() : undefined;
66
+ if (start !== undefined && opens.length === 0)
67
+ spans.push({ start, end: at + char.length });
68
+ });
69
+ return spans;
70
+ };
71
+ /** 読み替えの括弧(閉じの直後か開きの直前に目印があるもの)の範囲。 */
72
+ const substitutionSpans = (text, quote) => quote === undefined
73
+ ? []
74
+ : outerQuotes(text, quote).filter((span) => quote.after.some((marker) => text.startsWith(marker, span.end)) || quote.before.some((marker) => text.slice(0, span.start).endsWith(marker)));
75
+ /** 閉じた括弧書きを内側から外す。 */
76
+ const withoutAsides = (gap, aside) => {
77
+ if (aside === undefined)
78
+ return gap;
79
+ const inner = new RegExp(`${escape(aside.open)}[^${escape(aside.open)}${escape(aside.close)}]*${escape(aside.close)}`, "gu");
80
+ const once = gap.replace(inner, "");
81
+ return once === gap ? gap : withoutAsides(once, aside);
82
+ };
83
+ /** あいだが、並びをつなぐもの・つなぎの語・閉じた括弧書き・空白だけか。 */
84
+ const onlyJoins = (gap, patterns, vocabulary) => withoutAsides(gap, vocabulary.aside).replace(patterns.joins, "").trim() === "";
85
+ const overlaps = (start, end, others) => others.some((other) => start < other.end && other.start < end);
86
+ /** 行き先を決められない番地。並びの続きを止めるためだけに覚え、参照にはしない。 */
87
+ const OPAQUE = "opaque";
88
+ /** すぐ前が not_after に当たる(「別表第一」の「一」に続く「第一号」)。 */
89
+ const glued = (text, start, patterns) => patterns.notAfter?.test(text.slice(0, start)) === true;
90
+ const bareCandidates = (text, patterns, vocabulary, number) => patterns.bare === undefined
91
+ ? []
92
+ : [...text.matchAll(patterns.bare)].flatMap((match) => {
93
+ const suffix = suffixOf(match.groups?.["suffix"] ?? "", patterns, vocabulary, number);
94
+ const first = Number(suffix?.split(":")[0]);
95
+ return suffix === undefined || !Number.isInteger(first)
96
+ ? []
97
+ : [{ start: match.index, end: match.index + match[0].length, label: match[0], suffix, first }];
98
+ });
99
+ /** 並びの中での扱い: 前の参照の続きか、今いるところの中か、行き先を決められないか。続きなら、どの参照の続きか。 */
100
+ const wayOfBare = (text, bare, known, patterns, vocabulary) => {
101
+ if (glued(text, bare.start, patterns))
102
+ return { way: OPAQUE };
103
+ const depth = openAsides(text, bare.start, vocabulary).length;
104
+ const sameDepth = known.filter((other) => other.end <= bare.start && openAsides(text, other.end, vocabulary).length === depth);
105
+ const previous = sameDepth.toSorted((left, right) => left.end - right.end).at(-1);
106
+ const joined = previous !== undefined && onlyJoins(text.slice(previous.end, bare.start), patterns, vocabulary) ? previous : undefined;
107
+ const continues = joined ?? ownerOfAside(text, bare.start, known, vocabulary);
108
+ if (continues === undefined)
109
+ return { way: "current" };
110
+ return continues.attrs["relative"] === OPAQUE ? { way: OPAQUE } : { way: "continue", continues };
111
+ };
112
+ /** at の位置で開いたままの括弧書きの開きの位置。並びは同じ深さの参照どうしでつながる。 */
113
+ const openAsides = (text, at, vocabulary) => {
114
+ const aside = vocabulary.aside;
115
+ const opens = [];
116
+ if (aside === undefined)
117
+ return opens;
118
+ characters(text.slice(0, at)).forEach(({ char, at: position }) => {
119
+ if (char === aside.open)
120
+ opens.push(position);
121
+ if (char === aside.close)
122
+ opens.pop();
123
+ });
124
+ return opens;
125
+ };
126
+ /**
127
+ * 参照の直後に開いた括弧書きの中なら、その参照。「第二十七条(第四項を除き、第五項及び第六項の規定を…)」の番地は、どれも第二十七条の中。
128
+ */
129
+ const ownerOfAside = (text, at, known, vocabulary) => {
130
+ const open = openAsides(text, at, vocabulary).at(-1);
131
+ return open === undefined ? undefined : known.find((other) => other.end === open);
132
+ };
133
+ /**
134
+ * 条を書かない「第一項」。すぐ前の参照とのあいだがつなぎの語だけなら、その参照の続き(continue)。
135
+ * そうでなければ、書いた場所を含む一つ上のまとまり(current)の中。
136
+ */
137
+ const bareMentions = (text, patterns, vocabulary, number, before) => {
138
+ const found = [];
139
+ bareCandidates(text, patterns, vocabulary, number).forEach((bare) => {
140
+ const known = [...before, ...found];
141
+ if (overlaps(bare.start, bare.end, known))
142
+ return;
143
+ const { way, continues } = wayOfBare(text, bare, known, patterns, vocabulary);
144
+ // 条を書かない番地は、その一つ上(level)ではなく、書いた単位(level + 1)から名指しする。「第一項」は「同条」の行き先を変えない。
145
+ // continues は、続きの元の参照がどれだけ前から始まるか。木の中で、その参照を位置で引く。
146
+ const back = continues === undefined ? {} : { continues: bare.start - continues.start };
147
+ const attrs = { label: bare.label, relative: way, level: bare.first - 1, count: 1, suffix: bare.suffix, names: bare.first, ...back };
148
+ found.push({ start: bare.start, end: bare.end, attrs });
149
+ });
150
+ return found.filter((mention) => mention.attrs["relative"] !== OPAQUE);
151
+ };
152
+ const namedMentions = (text, patterns, vocabulary, number) => [...text.matchAll(patterns.named)].flatMap((match) => {
153
+ const groups = match.groups ?? {};
154
+ const way = patterns.ways.get(groups["way"] ?? "");
155
+ const level = vocabulary.units[groups["unit"] ?? ""];
156
+ const count = countOf(groups["count"], vocabulary, number);
157
+ const suffix = suffixOf(groups["suffix"] ?? "", patterns, vocabulary, number);
158
+ if (way === undefined || level === undefined || count === undefined || suffix === undefined)
159
+ return [];
160
+ return [{ start: match.index, end: match.index + match[0].length, attrs: { label: match[0], relative: way, level, count, suffix } }];
161
+ });
162
+ /** absolute は同じ行の番地を名指しした参照。条を書かない番地が、その続きかどうかを決めるのに使う。 */
163
+ export const relativeMentions = (text, profile, number, absolute = []) => {
164
+ const vocabulary = profile?.relative;
165
+ if (profile === undefined || vocabulary === undefined || number === undefined)
166
+ return [];
167
+ if (!compiled.has(profile))
168
+ compiled.set(profile, compile(profile, vocabulary));
169
+ const patterns = compiled.get(profile);
170
+ if (patterns === undefined)
171
+ return [];
172
+ const substituted = substitutionSpans(text, vocabulary.substitution);
173
+ const named = namedMentions(text, patterns, vocabulary, number);
174
+ const bare = bareMentions(text, patterns, vocabulary, number, [...absolute, ...named]);
175
+ return [...named, ...bare]
176
+ .filter((mention) => !substituted.some((span) => span.start <= mention.start && mention.start < span.end))
177
+ .sort((left, right) => left.start - right.start);
178
+ };
179
+ //# sourceMappingURL=relative-find.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-find.js","sourceRoot":"","sources":["../../src/structure/relative-find.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { StructureNode } from "../plugin.ts";
2
+ export declare const resolveRelative: (tree: StructureNode, implicitLevel: number | undefined) => StructureNode;
3
+ //# sourceMappingURL=relative-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relative-resolve.d.ts","sourceRoot":"","sources":["../../src/structure/relative-resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA6MlD,eAAO,MAAM,eAAe,GAAI,MAAM,aAAa,EAAE,eAAe,MAAM,GAAG,SAAS,KAAG,aAGxF,CAAC"}