@tricoteuses/tisseuse 0.19.1 → 0.19.2
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.
- package/dist/server.js +484 -466
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as
|
|
2
|
-
import { A as
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as C, j as w, k as ne, kt as T, m as re, n as ie, p as ae, s as oe, t as se, u as ce, ut as E, v as le, w as ue, x as de } from "./html-EuDDYMr2.js";
|
|
2
|
+
import { A as fe, Dt as D, Ft as O, I as pe, L as me, Nt as k, Ot as A, P as he, _t as ge, bt as j, jt as _e, k as ve, kt as M, n as ye, nt as be, o as xe, r as Se, t as Ce, ut as we } from "./resolver-tBQRf8TL.js";
|
|
3
|
+
import * as Te from "node:crypto";
|
|
4
|
+
import { createHash as Ee } from "node:crypto";
|
|
5
|
+
import N from "fs-extra";
|
|
6
|
+
import De from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function Oe(e, t) {
|
|
9
9
|
let n = e;
|
|
10
10
|
for (let e of t) {
|
|
11
11
|
if (typeof n != "object" || !n) return null;
|
|
@@ -13,34 +13,34 @@ function Ae(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function ke(e) {
|
|
17
17
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function Ae(e) {
|
|
20
|
+
return ke(E(e).text());
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
|
|
22
|
+
function je(e) {
|
|
23
|
+
let t = ke([
|
|
24
|
+
Oe(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
Oe(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
Oe(e, [
|
|
35
35
|
"corps",
|
|
36
36
|
"contenuAuteur",
|
|
37
37
|
"dispositifAmdtCreditPLFR"
|
|
38
38
|
])
|
|
39
|
-
].filter((e) => e !== null).map((e) =>
|
|
39
|
+
].filter((e) => e !== null).map((e) => Ae(e)).join("\n")), n = Oe(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : Ae(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Ne(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Me(e, t) {
|
|
55
|
+
return Ee("sha256").update(JSON.stringify({
|
|
56
56
|
item: e,
|
|
57
57
|
metadata: t
|
|
58
58
|
})).digest("hex");
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region src/lib/extractors/article_action_targets.ts
|
|
62
|
-
function
|
|
62
|
+
function P(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return P(e.reference);
|
|
65
|
+
case "enumeration": return [...P(e.left), ...P(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
67
|
let t = [...r(e.parent)].filter((e) => e.type === "article");
|
|
68
68
|
return t.length === 1 ? [{
|
|
69
69
|
article: t[0],
|
|
70
70
|
reference: e
|
|
71
|
-
}] : t.length > 1 ? [] :
|
|
71
|
+
}] : t.length > 1 ? [] : P(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,11 +89,11 @@ function M(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/extractors/article_action_effects.ts
|
|
92
|
-
function
|
|
92
|
+
function Ne(e, t) {
|
|
93
93
|
if (t < 2) return null;
|
|
94
|
-
let n =
|
|
94
|
+
let n = fe(e), r = S(e);
|
|
95
95
|
if (r.length !== t) return null;
|
|
96
|
-
let i = u(new
|
|
96
|
+
let i = u(new D(n.output)), a = (e) => me(n, [e])[0].position;
|
|
97
97
|
return r.map((t, n) => ({
|
|
98
98
|
sourceText: e,
|
|
99
99
|
referencePosition: a({
|
|
@@ -103,20 +103,20 @@ function Fe(e, t) {
|
|
|
103
103
|
actionPosition: a(t.position)
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function Pe(e, t, n) {
|
|
107
107
|
if (t.length < 2) return null;
|
|
108
|
-
let r =
|
|
108
|
+
let r = fe(e), i = r.output, a = (e) => me(r, [e])[0].position, o = u(new D(i)), s = o.flatMap(P);
|
|
109
109
|
if (s.length !== t.length || s.length < 2) return null;
|
|
110
|
-
let c =
|
|
110
|
+
let c = de(i);
|
|
111
111
|
if (c.length > 0) return n?.kind !== "replace_portion" || c.length !== s.length || c.some((e, t) => {
|
|
112
112
|
let n = s[t];
|
|
113
|
-
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !
|
|
113
|
+
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !C(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
|
|
114
114
|
}) ? null : s.map((r, i) => ({
|
|
115
115
|
targetId: t[i],
|
|
116
116
|
directive: {
|
|
117
117
|
...n,
|
|
118
118
|
reference: r.reference,
|
|
119
|
-
portionSelectors:
|
|
119
|
+
portionSelectors: C(r.reference),
|
|
120
120
|
tableTarget: {
|
|
121
121
|
type: "table",
|
|
122
122
|
rowIndex: c[i].rowIndex,
|
|
@@ -161,12 +161,12 @@ function Ie(e, t, n) {
|
|
|
161
161
|
let d = [], f = 0;
|
|
162
162
|
for (let e = 1; e < o.length; e += 1) {
|
|
163
163
|
let t = o[e];
|
|
164
|
-
t.type !== "reference_et_action" ||
|
|
164
|
+
t.type !== "reference_et_action" || P(t).length === 0 || o.slice(f, e).flatMap(P).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
|
|
165
165
|
}
|
|
166
166
|
d.push(o.length - 1);
|
|
167
167
|
let p = [], m = 0, h = 0;
|
|
168
168
|
for (let n of d) {
|
|
169
|
-
let r = o.slice(m, n + 1).flatMap(
|
|
169
|
+
let r = o.slice(m, n + 1).flatMap(P);
|
|
170
170
|
if (r.length === 0) {
|
|
171
171
|
m = n + 1;
|
|
172
172
|
continue;
|
|
@@ -195,7 +195,7 @@ function Ie(e, t, n) {
|
|
|
195
195
|
stop: i.length
|
|
196
196
|
},
|
|
197
197
|
reference: n.reference,
|
|
198
|
-
portionSelectors:
|
|
198
|
+
portionSelectors: C(n.reference)
|
|
199
199
|
}
|
|
200
200
|
});
|
|
201
201
|
}
|
|
@@ -203,16 +203,16 @@ function Ie(e, t, n) {
|
|
|
203
203
|
}
|
|
204
204
|
return h === t.length ? p : null;
|
|
205
205
|
}
|
|
206
|
-
var
|
|
206
|
+
var Fe = _e("dans sa rédaction", M([M([O("dans sa rédaction ", { flags: "i" }), A(O("issue ", { flags: "i" }), O("résultante ", { flags: "i" }), O("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), A(M([O("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
|
|
207
207
|
//#endregion
|
|
208
208
|
//#region src/lib/extractors/qualified_versions.ts
|
|
209
|
-
function
|
|
210
|
-
let t =
|
|
211
|
-
for (let e of
|
|
209
|
+
function Ie(e) {
|
|
210
|
+
let t = fe(e), n = [];
|
|
211
|
+
for (let e of Fe.extract(new D(t.output), { jumpExact: !0 })) for (let i of _(e)) {
|
|
212
212
|
if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
|
|
213
213
|
let e = [...r(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
|
|
214
214
|
if (e.length === 1) {
|
|
215
|
-
n.push(
|
|
215
|
+
n.push(me(t, [e[0].position])[0].position);
|
|
216
216
|
break;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
@@ -220,29 +220,29 @@ function Re(e) {
|
|
|
220
220
|
}
|
|
221
221
|
//#endregion
|
|
222
222
|
//#region src/lib/server/parsed_bills.ts
|
|
223
|
-
var
|
|
224
|
-
function
|
|
223
|
+
var Le = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
224
|
+
function F(e) {
|
|
225
225
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
return
|
|
227
|
+
function I(e) {
|
|
228
|
+
return F(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
229
229
|
}
|
|
230
|
-
function
|
|
231
|
-
return s(
|
|
230
|
+
function Re(e) {
|
|
231
|
+
return s(F(e));
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
return `_TocArt${
|
|
233
|
+
function L(e) {
|
|
234
|
+
return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
|
|
235
235
|
}
|
|
236
|
-
function
|
|
236
|
+
function ze(e, t) {
|
|
237
237
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
238
238
|
}
|
|
239
|
-
function
|
|
240
|
-
return
|
|
239
|
+
function Be(e) {
|
|
240
|
+
return I(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
241
241
|
}
|
|
242
|
-
function
|
|
243
|
-
return
|
|
242
|
+
function Ve(e) {
|
|
243
|
+
return Be(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
244
244
|
}
|
|
245
|
-
function
|
|
245
|
+
function He(e) {
|
|
246
246
|
switch (e.kind) {
|
|
247
247
|
case "insert_after":
|
|
248
248
|
case "insert_before": return e.insertText;
|
|
@@ -260,12 +260,12 @@ function We(e) {
|
|
|
260
260
|
default: return;
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
let t =
|
|
263
|
+
function Ue(e) {
|
|
264
|
+
let t = F(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
|
|
265
265
|
if (n?.[1] !== void 0) return h(n[1]);
|
|
266
266
|
}
|
|
267
|
-
function
|
|
268
|
-
let t =
|
|
267
|
+
function We(e) {
|
|
268
|
+
let t = He(e), n = a(t ?? "");
|
|
269
269
|
if (n.length > 0 && t !== void 0) return n.map((e, r) => {
|
|
270
270
|
let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
|
|
271
271
|
return {
|
|
@@ -273,58 +273,58 @@ function Ke(e) {
|
|
|
273
273
|
text: o
|
|
274
274
|
};
|
|
275
275
|
});
|
|
276
|
-
let r =
|
|
276
|
+
let r = Ue(e);
|
|
277
277
|
return r === void 0 ? [] : [{
|
|
278
278
|
num: r,
|
|
279
279
|
text: t ?? e.sourceText
|
|
280
280
|
}];
|
|
281
281
|
}
|
|
282
|
-
function
|
|
282
|
+
function Ge(e, t = /* @__PURE__ */ new Set()) {
|
|
283
283
|
if (e == null) return t;
|
|
284
284
|
if (Array.isArray(e)) {
|
|
285
|
-
for (let n of e)
|
|
285
|
+
for (let n of e) Ge(n, t);
|
|
286
286
|
return t;
|
|
287
287
|
}
|
|
288
288
|
if (typeof e != "object") return t;
|
|
289
289
|
let n = e;
|
|
290
290
|
n.type === "article" && typeof n.num == "string" && t.add(n.num);
|
|
291
|
-
for (let e of Object.values(n))
|
|
291
|
+
for (let e of Object.values(n)) Ge(e, t);
|
|
292
292
|
return t;
|
|
293
293
|
}
|
|
294
|
-
function
|
|
295
|
-
let t =
|
|
294
|
+
function Ke(e) {
|
|
295
|
+
let t = I(e.sourceText);
|
|
296
296
|
return /\b(?:cree|cree[e]?s?|resultant|issu|prevu|mentionne)\b[\s\S]{0,80}\b(?:present|presente|pjl|projet\s+de\s+loi)\b/u.test(t);
|
|
297
297
|
}
|
|
298
|
-
function
|
|
299
|
-
return
|
|
298
|
+
function qe(e) {
|
|
299
|
+
return F(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
300
300
|
}
|
|
301
|
-
function
|
|
302
|
-
let n = new
|
|
301
|
+
function Je(e, t) {
|
|
302
|
+
let n = new D(e, t), r = be(n);
|
|
303
303
|
return typeof r != "string" || n.offset <= t ? null : {
|
|
304
304
|
date: r,
|
|
305
305
|
start: t,
|
|
306
306
|
stop: n.offset
|
|
307
307
|
};
|
|
308
308
|
}
|
|
309
|
-
function
|
|
309
|
+
function Ye(e, t) {
|
|
310
310
|
let n = /\d/u.exec(e.slice(t));
|
|
311
311
|
if (!n) return null;
|
|
312
312
|
let r = t + n.index;
|
|
313
|
-
return e.slice(t, r).trim().length > 0 ? null :
|
|
313
|
+
return e.slice(t, r).trim().length > 0 ? null : Je(e, r);
|
|
314
314
|
}
|
|
315
|
-
function
|
|
315
|
+
function Xe(e) {
|
|
316
316
|
let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
|
|
317
317
|
for (; o !== -1;) {
|
|
318
318
|
let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
|
|
319
319
|
if (l) {
|
|
320
|
-
let e =
|
|
320
|
+
let e = Ye(c, l[0].length);
|
|
321
321
|
e && i.push(e.date);
|
|
322
322
|
}
|
|
323
323
|
let u = n.exec(c);
|
|
324
324
|
if (u) {
|
|
325
325
|
let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
|
|
326
326
|
for (r.lastIndex = 0; r.exec(t) !== null;) {
|
|
327
|
-
let e =
|
|
327
|
+
let e = Ye(t, r.lastIndex);
|
|
328
328
|
e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
|
|
329
329
|
}
|
|
330
330
|
}
|
|
@@ -332,20 +332,20 @@ function Qe(e) {
|
|
|
332
332
|
}
|
|
333
333
|
return i;
|
|
334
334
|
}
|
|
335
|
-
function
|
|
336
|
-
let t =
|
|
335
|
+
function Ze(e) {
|
|
336
|
+
let t = Xe(qe(e).toLowerCase()), n = Array.from(new Set(t));
|
|
337
337
|
return n.length === 1 ? n[0] : void 0;
|
|
338
338
|
}
|
|
339
|
-
function
|
|
340
|
-
return
|
|
339
|
+
function Qe(e) {
|
|
340
|
+
return I(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
341
341
|
}
|
|
342
|
-
function
|
|
342
|
+
function R(e) {
|
|
343
343
|
return e?.type === "tag";
|
|
344
344
|
}
|
|
345
|
-
function
|
|
345
|
+
function $e(e, t) {
|
|
346
346
|
return e.html(t) ?? "";
|
|
347
347
|
}
|
|
348
|
-
function
|
|
348
|
+
function et(e, t) {
|
|
349
349
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
350
350
|
for (let i of e(t).find("a").get()) {
|
|
351
351
|
let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
|
|
@@ -353,43 +353,43 @@ function nt(e, t) {
|
|
|
353
353
|
let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
|
|
354
354
|
if (r.has(l)) continue;
|
|
355
355
|
r.add(l);
|
|
356
|
-
let u =
|
|
356
|
+
let u = F(e(i).text());
|
|
357
357
|
n.push({
|
|
358
358
|
id: c,
|
|
359
|
-
...
|
|
359
|
+
...tt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
|
|
360
360
|
...u ? { text: u } : {},
|
|
361
361
|
type: s
|
|
362
362
|
});
|
|
363
363
|
}
|
|
364
364
|
return n;
|
|
365
365
|
}
|
|
366
|
-
function
|
|
367
|
-
let r =
|
|
366
|
+
function tt(e, t, n) {
|
|
367
|
+
let r = nt(e, t, n);
|
|
368
368
|
return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function nt(e, t, n) {
|
|
371
371
|
if (t === n) return "";
|
|
372
372
|
if (t.type === "text") return t.data ?? "";
|
|
373
|
-
if (!
|
|
373
|
+
if (!R(t)) return "";
|
|
374
374
|
let r = "";
|
|
375
375
|
for (let i of e(t).contents().get()) {
|
|
376
376
|
if (i === n) return r;
|
|
377
|
-
if (
|
|
377
|
+
if (R(i) && e.contains(i, n)) return r + nt(e, i, n);
|
|
378
378
|
r += e(i).text();
|
|
379
379
|
}
|
|
380
380
|
return r;
|
|
381
381
|
}
|
|
382
|
-
function
|
|
383
|
-
return t.map((t) =>
|
|
382
|
+
function rt(e, t) {
|
|
383
|
+
return t.map((t) => F(e(t).text())).filter(Boolean).join("\n");
|
|
384
384
|
}
|
|
385
|
-
function
|
|
386
|
-
let t =
|
|
387
|
-
return !t ||
|
|
385
|
+
function it(e) {
|
|
386
|
+
let t = I(e);
|
|
387
|
+
return !t || Le.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
|
|
388
388
|
}
|
|
389
|
-
async function
|
|
389
|
+
async function at(e, t, n) {
|
|
390
390
|
if (n === void 0) throw Error("A document date is required to add links to legal references.");
|
|
391
391
|
if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
|
|
392
|
-
let r = t.legiResolver ?? new
|
|
392
|
+
let r = t.legiResolver ?? new ae(t.canutesDb), { output: i } = await ie({
|
|
393
393
|
date: n,
|
|
394
394
|
html: e,
|
|
395
395
|
includeInternalArticleLinks: t.includeInternalArticleLinks,
|
|
@@ -402,53 +402,60 @@ async function st(e, t, n) {
|
|
|
402
402
|
});
|
|
403
403
|
return i ?? e;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
405
|
+
function ot(e, t) {
|
|
406
406
|
let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
|
|
407
|
-
return
|
|
407
|
+
return R(r) && R(n) && e(n).parents("table").get(0) === r ? r : R(n) ? n : t;
|
|
408
408
|
}
|
|
409
|
-
function
|
|
410
|
-
if (
|
|
411
|
-
let
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
409
|
+
function st(e, t, n, r, i) {
|
|
410
|
+
if (n.has(i.container)) return;
|
|
411
|
+
let a = i.id ?? L(i.num ?? i.label);
|
|
412
|
+
if (r.has(a)) return;
|
|
413
|
+
r.add(a), n.add(i.container);
|
|
414
|
+
let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = R(o) ? lt(e, o) : null, c = s ? e(o).text() : "", l = R(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => I(e) === I(c)) ? {
|
|
415
|
+
element: o,
|
|
416
|
+
text: `${s.label}\n${s.title}`
|
|
417
|
+
} : void 0;
|
|
418
|
+
t.push({
|
|
419
|
+
id: a,
|
|
420
|
+
label: i.label,
|
|
421
|
+
num: i.num,
|
|
422
|
+
title: i.title,
|
|
423
|
+
element: i.element,
|
|
424
|
+
container: i.container,
|
|
425
|
+
splitAtBreak: l
|
|
426
|
+
});
|
|
420
427
|
}
|
|
421
|
-
function
|
|
428
|
+
function ct(e) {
|
|
422
429
|
let t = /* @__PURE__ */ new Map();
|
|
423
430
|
return e("body *").each((e, n) => {
|
|
424
431
|
t.set(n, e);
|
|
425
432
|
}), t;
|
|
426
433
|
}
|
|
427
|
-
function
|
|
434
|
+
function z(e, t) {
|
|
428
435
|
return e.get(t) ?? 2 ** 53 - 1;
|
|
429
436
|
}
|
|
430
|
-
function
|
|
431
|
-
if (!e(t).hasClass("assnat9ArticleNum") && !
|
|
437
|
+
function lt(e, t) {
|
|
438
|
+
if (!e(t).hasClass("assnat9ArticleNum") && !dt(e, t) || e(t).find("br").length !== 1) return null;
|
|
432
439
|
let n = "", r = "", i = !1, a = (e) => {
|
|
433
440
|
if (e.type === "text") i ? r += e.data : n += e.data;
|
|
434
|
-
else if (
|
|
441
|
+
else if (R(e)) if (e.tagName.toLowerCase() === "br") i = !0;
|
|
435
442
|
else for (let t of e.children) a(t);
|
|
436
443
|
};
|
|
437
444
|
a(t);
|
|
438
|
-
let o =
|
|
445
|
+
let o = T(F(n)), s = F(r);
|
|
439
446
|
return o && !o.title && s ? {
|
|
440
447
|
...o,
|
|
441
448
|
title: s
|
|
442
449
|
} : null;
|
|
443
450
|
}
|
|
444
|
-
function
|
|
451
|
+
function ut(e) {
|
|
445
452
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
446
453
|
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
447
|
-
if (
|
|
448
|
-
let o =
|
|
454
|
+
if (ze(e, a)) return;
|
|
455
|
+
let o = F(e(a).text()), s = e(a).attr("id");
|
|
449
456
|
if (!s || r.has(s)) return;
|
|
450
|
-
let c =
|
|
451
|
-
u &&
|
|
457
|
+
let c = ot(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = T(o) ?? (R(l) && (a === l || e(a).find("br").length === 1) ? lt(e, l) : null);
|
|
458
|
+
u && st(e, t, n, r, {
|
|
452
459
|
id: s,
|
|
453
460
|
...u,
|
|
454
461
|
element: a,
|
|
@@ -456,37 +463,37 @@ function dt(e) {
|
|
|
456
463
|
});
|
|
457
464
|
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
458
465
|
if (n.has(a)) return;
|
|
459
|
-
let o =
|
|
460
|
-
o &&
|
|
466
|
+
let o = T(F(e(a).text())) ?? lt(e, a);
|
|
467
|
+
o && st(e, t, n, r, {
|
|
461
468
|
...o,
|
|
462
469
|
element: a,
|
|
463
470
|
container: a
|
|
464
471
|
});
|
|
465
472
|
});
|
|
466
|
-
let i =
|
|
467
|
-
return t.sort((e, t) =>
|
|
473
|
+
let i = ct(e);
|
|
474
|
+
return t.sort((e, t) => z(i, e.container) - z(i, t.container)), t;
|
|
468
475
|
}
|
|
469
|
-
function
|
|
470
|
-
if (
|
|
476
|
+
function dt(e, t) {
|
|
477
|
+
if (ze(e, t)) return !1;
|
|
471
478
|
let n = t.tagName?.toLowerCase();
|
|
472
479
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
473
480
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
474
481
|
return /text-align\s*:\s*center/iu.test(r) && (/font-weight\s*:\s*bold/iu.test(r) || /font-weight\s*:\s*bold/iu.test(i) || /<(?:strong|b)(?:\s|>)/iu.test(i));
|
|
475
482
|
}
|
|
476
|
-
function
|
|
483
|
+
function ft(e) {
|
|
477
484
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
478
485
|
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
479
|
-
if (
|
|
480
|
-
let o =
|
|
481
|
-
o &&
|
|
486
|
+
if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !dt(e, a)) return;
|
|
487
|
+
let o = T(e(a).text()) ?? lt(e, a);
|
|
488
|
+
o && st(e, t, n, r, {
|
|
482
489
|
...o,
|
|
483
490
|
element: a,
|
|
484
491
|
container: a
|
|
485
492
|
});
|
|
486
493
|
}), t;
|
|
487
494
|
}
|
|
488
|
-
function
|
|
489
|
-
let t =
|
|
495
|
+
function pt(e) {
|
|
496
|
+
let t = Re(e ?? "").replace(/[()]/gu, "").trim();
|
|
490
497
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
491
498
|
if (t.toLowerCase() === "unique") return {
|
|
492
499
|
base: 1,
|
|
@@ -495,7 +502,7 @@ function mt(e) {
|
|
|
495
502
|
};
|
|
496
503
|
let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
|
|
497
504
|
if (!n) return;
|
|
498
|
-
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 :
|
|
505
|
+
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ht(i);
|
|
499
506
|
if (a !== void 0) return {
|
|
500
507
|
base: r,
|
|
501
508
|
suffixOrder: a,
|
|
@@ -503,7 +510,7 @@ function mt(e) {
|
|
|
503
510
|
text: t
|
|
504
511
|
};
|
|
505
512
|
}
|
|
506
|
-
function
|
|
513
|
+
function mt(e, t) {
|
|
507
514
|
if (t.base !== e.base) return t.base - e.base;
|
|
508
515
|
if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
|
|
509
516
|
for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
|
|
@@ -512,14 +519,14 @@ function ht(e, t) {
|
|
|
512
519
|
}
|
|
513
520
|
return 0;
|
|
514
521
|
}
|
|
515
|
-
function
|
|
516
|
-
let t = new
|
|
522
|
+
function ht(e) {
|
|
523
|
+
let t = new D(e), n = we(t);
|
|
517
524
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
518
525
|
}
|
|
519
|
-
function
|
|
526
|
+
function gt(e) {
|
|
520
527
|
let t = [], n = e.map((e) => ({
|
|
521
528
|
heading: e,
|
|
522
|
-
token:
|
|
529
|
+
token: pt(e.num)
|
|
523
530
|
}));
|
|
524
531
|
n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
|
|
525
532
|
code: "article_toc_out_of_order",
|
|
@@ -528,7 +535,7 @@ function _t(e) {
|
|
|
528
535
|
let r;
|
|
529
536
|
for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
|
|
530
537
|
if (r !== void 0) {
|
|
531
|
-
let n =
|
|
538
|
+
let n = mt(r, i);
|
|
532
539
|
n === 0 ? t.push({
|
|
533
540
|
code: "article_toc_duplicate_number",
|
|
534
541
|
message: `Article ${e.num ?? e.label} is repeated`,
|
|
@@ -557,60 +564,60 @@ function _t(e) {
|
|
|
557
564
|
}
|
|
558
565
|
return t;
|
|
559
566
|
}
|
|
560
|
-
function
|
|
561
|
-
let t =
|
|
567
|
+
function _t(e) {
|
|
568
|
+
let t = gt(e);
|
|
562
569
|
t.length > 0 && process.env.TISSEUSE_WARN_ASSEMBLEE_HEADING_SEQUENCE === "1" && console.warn("Incoherent Assemblée article heading sequence", { issues: t.map((e) => e.message) });
|
|
563
570
|
}
|
|
564
|
-
function
|
|
565
|
-
let n =
|
|
566
|
-
if (n.length === 0) return t &&
|
|
567
|
-
let i =
|
|
568
|
-
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) =>
|
|
571
|
+
function vt(e, { warn: t = !0 } = {}) {
|
|
572
|
+
let n = ut(e), r = ft(e);
|
|
573
|
+
if (n.length === 0) return t && _t(r), r;
|
|
574
|
+
let i = ct(e), a = (e, t) => {
|
|
575
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => L(e.num ?? e.label)));
|
|
569
576
|
for (let i of t) {
|
|
570
|
-
let t =
|
|
577
|
+
let t = L(i.num ?? i.label);
|
|
571
578
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
572
579
|
}
|
|
573
|
-
return e.sort((e, t) =>
|
|
574
|
-
}, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 &&
|
|
575
|
-
return t &&
|
|
580
|
+
return e.sort((e, t) => z(i, e.container) - z(i, t.container)), e;
|
|
581
|
+
}, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && gt(c).length > gt(s).length ? s : c;
|
|
582
|
+
return t && _t(l), l;
|
|
576
583
|
}
|
|
577
|
-
function
|
|
584
|
+
function yt(e) {
|
|
578
585
|
let t = e.next;
|
|
579
586
|
for (; t !== null;) {
|
|
580
|
-
if (
|
|
587
|
+
if (R(t)) return t;
|
|
581
588
|
t = t.next;
|
|
582
589
|
}
|
|
583
590
|
return null;
|
|
584
591
|
}
|
|
585
|
-
function
|
|
592
|
+
function bt(e, t, n) {
|
|
586
593
|
let r = e(t.container);
|
|
587
594
|
if (!r.is("p.assnat9ArticleNum")) return;
|
|
588
595
|
let i = r.parent(), a = i.parent();
|
|
589
596
|
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
590
597
|
let o = a.children().get();
|
|
591
|
-
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" ||
|
|
598
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || F(e(o[1]).text()) !== "") return;
|
|
592
599
|
let s = o.length === 4 ? o[2] : void 0;
|
|
593
|
-
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(
|
|
600
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(F(e(s).text())))) return;
|
|
594
601
|
let c = o.at(-1);
|
|
595
|
-
if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) =>
|
|
602
|
+
if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => T(e(t).text()) !== null))) return [
|
|
596
603
|
t.container,
|
|
597
604
|
...s === void 0 ? [] : [s],
|
|
598
605
|
c
|
|
599
606
|
];
|
|
600
607
|
}
|
|
601
|
-
function
|
|
608
|
+
function xt(e, t, n, r = ct(e)) {
|
|
602
609
|
let i = [t.container], a = n?.container;
|
|
603
|
-
for (let e =
|
|
610
|
+
for (let e = yt(t.container); e !== null && e !== a; e = yt(e)) i.push(e);
|
|
604
611
|
if (i.length > 1) return i;
|
|
605
|
-
let o =
|
|
612
|
+
let o = bt(e, t, n);
|
|
606
613
|
if (o !== void 0) return o;
|
|
607
|
-
let s =
|
|
614
|
+
let s = z(r, t.container), c = a ? z(r, a) : -1;
|
|
608
615
|
return e("body > *").get().filter((e) => {
|
|
609
|
-
let t =
|
|
616
|
+
let t = z(r, e);
|
|
610
617
|
return t >= s && (c === -1 || t < c);
|
|
611
618
|
});
|
|
612
619
|
}
|
|
613
|
-
function
|
|
620
|
+
function St(e, t) {
|
|
614
621
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
615
622
|
for (let i of t) {
|
|
616
623
|
let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
|
|
@@ -618,97 +625,97 @@ function Ct(e, t) {
|
|
|
618
625
|
}
|
|
619
626
|
return n;
|
|
620
627
|
}
|
|
621
|
-
function
|
|
622
|
-
let
|
|
623
|
-
for (let
|
|
624
|
-
let n = e(
|
|
625
|
-
if (!n) continue;
|
|
626
|
-
|
|
627
|
-
let
|
|
628
|
-
e(
|
|
629
|
-
id:
|
|
628
|
+
function Ct(e, t, n, r) {
|
|
629
|
+
let i = [], a = !1;
|
|
630
|
+
for (let o of St(e, n)) {
|
|
631
|
+
let n = e(o).is("table.akn-quoted-table") ? dn(e, o) : F(e(o).text());
|
|
632
|
+
if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
|
|
633
|
+
Le.test(n) && (a = !0);
|
|
634
|
+
let s = a ? "noise" : it(n), c = `${t}-b${i.length + 1}`;
|
|
635
|
+
e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
|
|
636
|
+
id: c,
|
|
630
637
|
articleId: t,
|
|
631
|
-
kind:
|
|
632
|
-
links:
|
|
638
|
+
kind: s,
|
|
639
|
+
links: et(e, o),
|
|
633
640
|
text: n,
|
|
634
|
-
html:
|
|
641
|
+
html: $e(e, o)
|
|
635
642
|
});
|
|
636
643
|
}
|
|
637
|
-
return
|
|
644
|
+
return i;
|
|
638
645
|
}
|
|
639
|
-
function
|
|
646
|
+
function wt(e, t) {
|
|
640
647
|
if (t.length === 0) return e;
|
|
641
648
|
let n = `<div style="display: none;">\n${t.map((e) => `<p class="assnatTOC6"><a href="#${e.id}"><span class="assnatHyperlink" style="font-weight:bold; text-decoration:none; color:#000000">${e.label.toUpperCase()}</span></a></p>`).join("\n")}\n</div>`;
|
|
642
649
|
return e.includes("class=\"assnatSection3\"") ? e.replace(/(<div class="assnatSection3">)/u, `${n}$1`) : e.includes("id=\"formCorrection:panel:1:table\"") ? e.replace(/(<div id="formCorrection:panel:1:table">)/u, `${n}$1`) : `${n}\n${e}`;
|
|
643
650
|
}
|
|
644
|
-
function
|
|
645
|
-
let t =
|
|
646
|
-
for (let e of
|
|
647
|
-
let r =
|
|
651
|
+
function Tt(e) {
|
|
652
|
+
let t = E(e), n = Et(t);
|
|
653
|
+
for (let e of vt(t, { warn: !1 })) {
|
|
654
|
+
let r = L(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
648
655
|
if (a !== r) {
|
|
649
|
-
if (a?.startsWith("_Toc") && !
|
|
656
|
+
if (a?.startsWith("_Toc") && !Ot(n, a, e.element)) {
|
|
650
657
|
let e = t("<span></span>").attr("id", a);
|
|
651
658
|
i.before(e);
|
|
652
659
|
let r = e.get(0);
|
|
653
|
-
|
|
660
|
+
R(r) && B(n, a, r);
|
|
654
661
|
}
|
|
655
|
-
a &&
|
|
662
|
+
a && Dt(n, a, e.element), i.attr("id", r), B(n, r, e.element);
|
|
656
663
|
}
|
|
657
664
|
}
|
|
658
|
-
let r =
|
|
665
|
+
let r = vt(t), i = ct(t);
|
|
659
666
|
for (let [e, a] of r.entries()) {
|
|
660
|
-
let o =
|
|
667
|
+
let o = xt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
|
|
661
668
|
for (let e of o) {
|
|
662
669
|
let r = t(e).attr("data-alinea")?.trim();
|
|
663
670
|
if (!r) continue;
|
|
664
671
|
let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
|
|
665
|
-
if (
|
|
672
|
+
if (Ot(n, i, e)) continue;
|
|
666
673
|
let o = t(e).attr("id");
|
|
667
674
|
if (o && o !== i) {
|
|
668
675
|
let r = t("<span></span>").attr("id", i);
|
|
669
676
|
t(e).before(r);
|
|
670
677
|
let a = r.get(0);
|
|
671
|
-
|
|
672
|
-
} else o &&
|
|
678
|
+
R(a) && B(n, i, a);
|
|
679
|
+
} else o && Dt(n, o, e), t(e).attr("id", i), B(n, i, e);
|
|
673
680
|
}
|
|
674
681
|
}
|
|
675
682
|
return t.html();
|
|
676
683
|
}
|
|
677
|
-
function
|
|
684
|
+
function Et(e) {
|
|
678
685
|
let t = /* @__PURE__ */ new Map();
|
|
679
686
|
for (let n of e("[id]").get()) {
|
|
680
687
|
let r = e(n).attr("id");
|
|
681
|
-
r &&
|
|
688
|
+
r && B(t, r, n);
|
|
682
689
|
}
|
|
683
690
|
return t;
|
|
684
691
|
}
|
|
685
|
-
function
|
|
692
|
+
function B(e, t, n) {
|
|
686
693
|
let r = e.get(t);
|
|
687
694
|
r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
|
|
688
695
|
}
|
|
689
|
-
function
|
|
696
|
+
function Dt(e, t, n) {
|
|
690
697
|
let r = e.get(t);
|
|
691
698
|
r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
|
|
692
699
|
}
|
|
693
|
-
function
|
|
700
|
+
function Ot(e, t, n) {
|
|
694
701
|
for (let r of e.get(t) ?? []) if (r !== n) return !0;
|
|
695
702
|
return !1;
|
|
696
703
|
}
|
|
697
|
-
function
|
|
698
|
-
let n =
|
|
704
|
+
function kt(e, t) {
|
|
705
|
+
let n = Qe("sourceText" in t ? t.sourceText : "");
|
|
699
706
|
if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
|
|
700
|
-
let t =
|
|
707
|
+
let t = Qe(e.text);
|
|
701
708
|
return t.length > 0 && (n.includes(t) || t.includes(n));
|
|
702
709
|
});
|
|
703
710
|
}
|
|
704
|
-
function
|
|
711
|
+
function At(e, t) {
|
|
705
712
|
if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
|
|
706
713
|
}
|
|
707
|
-
function
|
|
714
|
+
function jt(e) {
|
|
708
715
|
return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
|
|
709
716
|
}
|
|
710
|
-
function
|
|
711
|
-
let t =
|
|
717
|
+
function Mt(e) {
|
|
718
|
+
let t = Ie(e.text);
|
|
712
719
|
if (t.length !== 1) return;
|
|
713
720
|
let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
|
|
714
721
|
let r = n.text ?? "", i = e.text.indexOf(r);
|
|
@@ -722,21 +729,21 @@ function Nt(e) {
|
|
|
722
729
|
modifyingArticleLabel: i.text ?? ""
|
|
723
730
|
};
|
|
724
731
|
}
|
|
725
|
-
function
|
|
726
|
-
let n =
|
|
732
|
+
function Nt(e, t) {
|
|
733
|
+
let n = F(e);
|
|
727
734
|
if (!n) return;
|
|
728
735
|
let r = x(n);
|
|
729
736
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
730
737
|
}
|
|
731
|
-
function
|
|
732
|
-
let t = /* @__PURE__ */ new Map(), n = [], r =
|
|
738
|
+
function Pt(e) {
|
|
739
|
+
let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
|
|
733
740
|
for (let [a, o] of e.entries()) {
|
|
734
741
|
let e = r.get(a);
|
|
735
742
|
if (e && (i = e.endIndex), a <= i) {
|
|
736
743
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
737
744
|
continue;
|
|
738
745
|
}
|
|
739
|
-
let s =
|
|
746
|
+
let s = Nt(o.text, n.at(-1)?.level);
|
|
740
747
|
if (s === void 0) {
|
|
741
748
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
742
749
|
continue;
|
|
@@ -749,14 +756,14 @@ function Ft(e) {
|
|
|
749
756
|
}
|
|
750
757
|
return t;
|
|
751
758
|
}
|
|
752
|
-
function
|
|
759
|
+
function Ft(e, t) {
|
|
753
760
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
754
761
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
755
762
|
return n;
|
|
756
763
|
}
|
|
757
|
-
function
|
|
764
|
+
function It(e, t, n) {
|
|
758
765
|
if (!t) return;
|
|
759
|
-
let r =
|
|
766
|
+
let r = Ft(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
760
767
|
if (r.length === 0) return;
|
|
761
768
|
let i = r.map((e) => e.id);
|
|
762
769
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -771,7 +778,7 @@ function Lt(e, t, n) {
|
|
|
771
778
|
}
|
|
772
779
|
};
|
|
773
780
|
}
|
|
774
|
-
function
|
|
781
|
+
function Lt(e) {
|
|
775
782
|
let t = [], n = 0;
|
|
776
783
|
for (let r of e.blocks) {
|
|
777
784
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -785,7 +792,7 @@ function Rt(e) {
|
|
|
785
792
|
}
|
|
786
793
|
return t;
|
|
787
794
|
}
|
|
788
|
-
function
|
|
795
|
+
function Rt(e, t, n) {
|
|
789
796
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
790
797
|
if (a.length === 0) return;
|
|
791
798
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -799,7 +806,7 @@ function zt(e, t, n) {
|
|
|
799
806
|
}
|
|
800
807
|
};
|
|
801
808
|
}
|
|
802
|
-
function
|
|
809
|
+
function zt(e, t, n) {
|
|
803
810
|
if (!t) return;
|
|
804
811
|
let r = e.directiveText.indexOf(t.text);
|
|
805
812
|
if (r === -1) return;
|
|
@@ -812,15 +819,26 @@ function Bt(e, t, n) {
|
|
|
812
819
|
stop: a
|
|
813
820
|
};
|
|
814
821
|
}
|
|
815
|
-
function
|
|
816
|
-
let n = performance.now(), r = performance.now(), i =
|
|
822
|
+
function Bt(e, t) {
|
|
823
|
+
let n = performance.now(), r = performance.now(), i = Lt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Pt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
|
|
817
824
|
for (let t of e.blocks) {
|
|
818
|
-
t.qualifiedVersion =
|
|
819
|
-
let e =
|
|
825
|
+
t.qualifiedVersion = Mt(t);
|
|
826
|
+
let e = jt(t);
|
|
820
827
|
(e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
|
|
821
828
|
}
|
|
822
|
-
let p = performance.now() - o, m = performance.now(), h = te(), g =
|
|
823
|
-
|
|
829
|
+
let p = performance.now() - o, m = performance.now(), h = te(), g = e.blocks[0], _ = e.title !== void 0 && g?.text.startsWith(`${e.label}\n`) && (e.directiveText === g.text || e.directiveText.startsWith(`${g.text}\n`)), v = _ && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", y = le(_ ? `${e.label}${v}${e.title}${e.directiveText.slice(g.text.length)}` : e.directiveText, t === void 0 ? void 0 : h);
|
|
830
|
+
if (_ && !v) {
|
|
831
|
+
let t = e.label.length;
|
|
832
|
+
y = y.map((e) => ({
|
|
833
|
+
...e,
|
|
834
|
+
sourcePosition: {
|
|
835
|
+
start: e.sourcePosition.start > t ? e.sourcePosition.start + 1 : e.sourcePosition.start,
|
|
836
|
+
stop: e.sourcePosition.stop > t ? e.sourcePosition.stop + 1 : e.sourcePosition.stop
|
|
837
|
+
}
|
|
838
|
+
}));
|
|
839
|
+
}
|
|
840
|
+
let b = performance.now() - m, x = performance.now(), ee = y.map((t) => {
|
|
841
|
+
let n = Rt(e, i, t), r = At(s, n) ?? kt(e.blocks, t), a = jt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = zt(e, r, t), f = It(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
|
|
824
842
|
return {
|
|
825
843
|
articleId: e.id,
|
|
826
844
|
blockId: r?.id,
|
|
@@ -839,19 +857,19 @@ function Vt(e, t) {
|
|
|
839
857
|
...o.length > 0 ? { targetIds: o } : {},
|
|
840
858
|
...r?.id !== void 0 && u.get(r.id) ? { qualifiedVersion: u.get(r.id) } : {}
|
|
841
859
|
};
|
|
842
|
-
}),
|
|
860
|
+
}), S = /* @__PURE__ */ new Set(), C = /* @__PURE__ */ new Map(), w = ee.flatMap((e) => {
|
|
843
861
|
let t = e.blockId ? s.get(e.blockId) : void 0;
|
|
844
862
|
if (!t) return [e];
|
|
845
|
-
if (
|
|
846
|
-
let n =
|
|
847
|
-
if (n === void 0 && (n =
|
|
848
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
863
|
+
if (S.has(t.id)) return [];
|
|
864
|
+
let n = C.get(t.id);
|
|
865
|
+
if (n === void 0 && (n = Pe(t.text, jt(t), e.directive), C.set(t.id, n)), !n) {
|
|
866
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ne(t.text, n.operations.length) : null;
|
|
849
867
|
return [r ? {
|
|
850
868
|
...e,
|
|
851
869
|
sourceAnnotations: r
|
|
852
870
|
} : e];
|
|
853
871
|
}
|
|
854
|
-
return
|
|
872
|
+
return S.add(t.id), [{
|
|
855
873
|
...e,
|
|
856
874
|
effects: n.map((t) => ({
|
|
857
875
|
...t,
|
|
@@ -862,27 +880,27 @@ function Vt(e, t) {
|
|
|
862
880
|
}
|
|
863
881
|
}))
|
|
864
882
|
}];
|
|
865
|
-
}),
|
|
883
|
+
}), ne = performance.now() - x;
|
|
866
884
|
return t?.push({
|
|
867
885
|
actionDirectiveExtraction: h,
|
|
868
886
|
articleId: e.id,
|
|
869
887
|
blockCount: e.blocks.length,
|
|
870
888
|
buildRangesMs: Math.round(a * 10) / 10,
|
|
871
|
-
directiveCount:
|
|
889
|
+
directiveCount: w.length,
|
|
872
890
|
directiveTextSize: e.directiveText.length,
|
|
873
|
-
extractActionDirectivesMs: Math.round(
|
|
874
|
-
mapDirectivesMs: Math.round(
|
|
891
|
+
extractActionDirectivesMs: Math.round(b * 10) / 10,
|
|
892
|
+
mapDirectivesMs: Math.round(ne * 10) / 10,
|
|
875
893
|
prepareBlockIndexesMs: Math.round(p * 10) / 10,
|
|
876
894
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
877
|
-
}),
|
|
895
|
+
}), w;
|
|
878
896
|
}
|
|
879
|
-
function
|
|
897
|
+
function Vt(e) {
|
|
880
898
|
let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
|
|
881
899
|
for (let i of e) {
|
|
882
|
-
let e =
|
|
900
|
+
let e = We(i.directive);
|
|
883
901
|
if (e.length === 0) continue;
|
|
884
902
|
let a = e.map(({ num: e }) => ({
|
|
885
|
-
definitionId: `${i.articleId}:article:${
|
|
903
|
+
definitionId: `${i.articleId}:article:${Ve(e)}`,
|
|
886
904
|
num: e
|
|
887
905
|
}));
|
|
888
906
|
t.set(i, a);
|
|
@@ -905,13 +923,13 @@ function Ht(e) {
|
|
|
905
923
|
definitions: n
|
|
906
924
|
};
|
|
907
925
|
}
|
|
908
|
-
function
|
|
909
|
-
let r = new Map(t.map((e) => [
|
|
926
|
+
function Ht(e, t, n) {
|
|
927
|
+
let r = new Map(t.map((e) => [Be(e.num), e]));
|
|
910
928
|
return e.map((e) => {
|
|
911
|
-
let t = n.get(e), i = t?.[0], a = [...
|
|
929
|
+
let t = n.get(e), i = t?.[0], a = [...Ge(e.directive.reference)].map((e) => r.get(Be(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
|
|
912
930
|
definitionId: a.definitionId,
|
|
913
931
|
num: a.num
|
|
914
|
-
}, s =
|
|
932
|
+
}, s = Ke(e.directive), c = (e.targetIds?.length ?? 0) > 0;
|
|
915
933
|
return {
|
|
916
934
|
...e,
|
|
917
935
|
...i === void 0 ? {} : { createdArticle: i },
|
|
@@ -924,7 +942,7 @@ function Ut(e, t, n) {
|
|
|
924
942
|
};
|
|
925
943
|
});
|
|
926
944
|
}
|
|
927
|
-
function
|
|
945
|
+
function Ut(e) {
|
|
928
946
|
switch (e.kind) {
|
|
929
947
|
case "insert_after":
|
|
930
948
|
case "insert_before": return [e.insertText];
|
|
@@ -942,8 +960,8 @@ function Wt(e) {
|
|
|
942
960
|
default: return [];
|
|
943
961
|
}
|
|
944
962
|
}
|
|
945
|
-
function
|
|
946
|
-
return e.flatMap((e) =>
|
|
963
|
+
function Wt(e) {
|
|
964
|
+
return e.flatMap((e) => Ut(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
947
965
|
code: "nested_french_quote_in_redaction",
|
|
948
966
|
message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
|
|
949
967
|
details: {
|
|
@@ -955,18 +973,18 @@ function Gt(e) {
|
|
|
955
973
|
}
|
|
956
974
|
})));
|
|
957
975
|
}
|
|
958
|
-
function
|
|
959
|
-
return
|
|
976
|
+
function Gt(e) {
|
|
977
|
+
return Ut(e).map((t) => ({
|
|
960
978
|
directiveKind: e.kind,
|
|
961
979
|
text: t
|
|
962
980
|
}));
|
|
963
981
|
}
|
|
964
|
-
function
|
|
982
|
+
function Kt(e) {
|
|
965
983
|
let t = /* @__PURE__ */ new Set();
|
|
966
984
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
967
985
|
return Array.from(t);
|
|
968
986
|
}
|
|
969
|
-
function
|
|
987
|
+
function qt(e, t) {
|
|
970
988
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
971
989
|
for (let e of r) {
|
|
972
990
|
let t = n.get(e);
|
|
@@ -978,11 +996,11 @@ function Jt(e, t) {
|
|
|
978
996
|
}
|
|
979
997
|
return i;
|
|
980
998
|
}
|
|
981
|
-
function
|
|
999
|
+
function Jt(e, t, n) {
|
|
982
1000
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
983
1001
|
}
|
|
984
|
-
function
|
|
985
|
-
let r =
|
|
1002
|
+
function Yt(e, t, n) {
|
|
1003
|
+
let r = Kt(n), i = r.flatMap((t) => {
|
|
986
1004
|
for (let n of e.blocks) {
|
|
987
1005
|
let e = n.text.indexOf(t);
|
|
988
1006
|
if (e !== -1) return [{
|
|
@@ -1001,7 +1019,7 @@ function Xt(e, t, n) {
|
|
|
1001
1019
|
e.directiveText
|
|
1002
1020
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
1003
1021
|
if (!o) return [];
|
|
1004
|
-
let s =
|
|
1022
|
+
let s = qt(e, t);
|
|
1005
1023
|
if (s.length === 0) return [];
|
|
1006
1024
|
let c = [], l = 0;
|
|
1007
1025
|
for (let e of r) {
|
|
@@ -1009,7 +1027,7 @@ function Xt(e, t, n) {
|
|
|
1009
1027
|
if (t === -1) continue;
|
|
1010
1028
|
let n = t + e.length;
|
|
1011
1029
|
l = n;
|
|
1012
|
-
let r =
|
|
1030
|
+
let r = Jt(s, t, n);
|
|
1013
1031
|
r && c.push({
|
|
1014
1032
|
blockId: r.block.id,
|
|
1015
1033
|
start: t - r.start,
|
|
@@ -1019,15 +1037,15 @@ function Xt(e, t, n) {
|
|
|
1019
1037
|
}
|
|
1020
1038
|
return c;
|
|
1021
1039
|
}
|
|
1022
|
-
function
|
|
1040
|
+
function Xt(e, t) {
|
|
1023
1041
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
1024
1042
|
return t.flatMap((e) => {
|
|
1025
1043
|
let t = n.get(e.articleId);
|
|
1026
|
-
return t ?
|
|
1044
|
+
return t ? Gt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
1027
1045
|
articleId: e.articleId,
|
|
1028
1046
|
code: "nested_french_quote_in_redaction",
|
|
1029
1047
|
message: "Écart à la règle légistique détecté : une citation imbriquée dans une rédaction devrait utiliser des guillemets anglais et non des guillemets français.",
|
|
1030
|
-
ranges:
|
|
1048
|
+
ranges: Yt(t, e, r),
|
|
1031
1049
|
severity: "warning",
|
|
1032
1050
|
details: {
|
|
1033
1051
|
blockId: e.blockId,
|
|
@@ -1038,8 +1056,8 @@ function Zt(e, t) {
|
|
|
1038
1056
|
})) : [];
|
|
1039
1057
|
});
|
|
1040
1058
|
}
|
|
1041
|
-
function
|
|
1042
|
-
let n = new Map(e.flatMap((e) => [...
|
|
1059
|
+
function Zt(e, t) {
|
|
1060
|
+
let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
1043
1061
|
articleId: e.id,
|
|
1044
1062
|
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
1045
1063
|
...n
|
|
@@ -1061,8 +1079,8 @@ function Qt(e, t) {
|
|
|
1061
1079
|
}];
|
|
1062
1080
|
});
|
|
1063
1081
|
}
|
|
1064
|
-
function
|
|
1065
|
-
let c = new
|
|
1082
|
+
function Qt(e, t, n, r, i, a, o = !0, s) {
|
|
1083
|
+
let c = new xe("parsedBill.buildParsedDocument"), l = i.reduce((e, t) => e + t.blocks.length, 0), u = c.timeSync("buildDirectiveText", () => i.map((e) => e.directiveText).filter(Boolean).join("\n")), d = {
|
|
1066
1084
|
sourceFormat: e,
|
|
1067
1085
|
documentDate: r,
|
|
1068
1086
|
html: t,
|
|
@@ -1083,14 +1101,14 @@ function $t(e, t, n, r, i, a, o = !0, s) {
|
|
|
1083
1101
|
directiveTextSize: u.length
|
|
1084
1102
|
}), e;
|
|
1085
1103
|
}
|
|
1086
|
-
let f = c.timeSync("extractGlobalApplicabilityDate", () =>
|
|
1104
|
+
let f = c.timeSync("extractGlobalApplicabilityDate", () => Ze(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
1087
1105
|
let e = [];
|
|
1088
1106
|
for (let t of i) {
|
|
1089
|
-
let n =
|
|
1107
|
+
let n = Bt(t, c.enabled ? p : void 0);
|
|
1090
1108
|
e.push(...n);
|
|
1091
1109
|
}
|
|
1092
1110
|
return e;
|
|
1093
|
-
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () =>
|
|
1111
|
+
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Vt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ht(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Wt(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Xt(i, _), ...Zt(i, _)], { count: _.length }), ee = {
|
|
1094
1112
|
...d,
|
|
1095
1113
|
...f ? { globalApplicabilityDate: f } : {},
|
|
1096
1114
|
...g.length > 0 ? { internalArticleDefinitions: g } : {},
|
|
@@ -1184,18 +1202,18 @@ function $t(e, t, n, r, i, a, o = !0, s) {
|
|
|
1184
1202
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1185
1203
|
}), ee;
|
|
1186
1204
|
}
|
|
1187
|
-
function
|
|
1205
|
+
function $t(e) {
|
|
1188
1206
|
return { items: e.map((e) => ({
|
|
1189
1207
|
id: e.id,
|
|
1190
1208
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1191
1209
|
type: "article"
|
|
1192
1210
|
})) };
|
|
1193
1211
|
}
|
|
1194
|
-
function
|
|
1195
|
-
return Array.from(
|
|
1212
|
+
function en(e) {
|
|
1213
|
+
return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => I(e.line.split(/[::]/u)[0]));
|
|
1196
1214
|
}
|
|
1197
|
-
function
|
|
1198
|
-
let i =
|
|
1215
|
+
function tn(e, t, n, r) {
|
|
1216
|
+
let i = gt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ce(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? L(e.num) : E(e.html)("p.TCNumArticle").first().attr("id") ?? L(e.label) : e.id), c = o.map((e) => e.id);
|
|
1199
1217
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1200
1218
|
code: "article_toc_source_heading_mismatch",
|
|
1201
1219
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1211,8 +1229,8 @@ function nn(e, t, n, r) {
|
|
|
1211
1229
|
});
|
|
1212
1230
|
return i;
|
|
1213
1231
|
}
|
|
1214
|
-
function
|
|
1215
|
-
let r =
|
|
1232
|
+
function nn(e, t, n) {
|
|
1233
|
+
let r = en(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => I(e.label)), a = $t(e), o = [...n, ...tn(e, a, t, "assemblee-html")];
|
|
1216
1234
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1217
1235
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1218
1236
|
o.push({
|
|
@@ -1236,24 +1254,24 @@ function rn(e, t, n) {
|
|
|
1236
1254
|
tableOfContents: a
|
|
1237
1255
|
};
|
|
1238
1256
|
}
|
|
1239
|
-
async function
|
|
1240
|
-
let n = new
|
|
1257
|
+
async function rn(e, t) {
|
|
1258
|
+
let n = new xe("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => an(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Tt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => E(i)), o = n.timeSync("extractArticleHeadings", () => vt(a)), s = new Set(o.map((e) => e.id)), c = ft(a).filter((e) => !s.has(L(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1241
1259
|
code: "article_toc_source_heading_mismatch",
|
|
1242
1260
|
message: "Some structural article headings were not retained",
|
|
1243
1261
|
details: { discardedCandidates: c }
|
|
1244
|
-
}] : [], u =
|
|
1245
|
-
let n =
|
|
1262
|
+
}] : [], u = ct(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
|
|
1263
|
+
let n = xt(a, e, o[t + 1], u), r = Ct(a, e.id, n, e), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1246
1264
|
return {
|
|
1247
1265
|
id: e.id,
|
|
1248
1266
|
label: e.label,
|
|
1249
1267
|
num: e.num,
|
|
1250
1268
|
title: e.title,
|
|
1251
|
-
text:
|
|
1252
|
-
html: n.map((e) =>
|
|
1269
|
+
text: rt(a, n),
|
|
1270
|
+
html: n.map((e) => $e(a, e)).join("\n"),
|
|
1253
1271
|
directiveText: i,
|
|
1254
1272
|
blocks: r
|
|
1255
1273
|
};
|
|
1256
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1274
|
+
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => wt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => nn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => Qt("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
|
|
1257
1275
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1258
1276
|
articleCount: h.articles.length,
|
|
1259
1277
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1261,18 +1279,18 @@ async function an(e, t) {
|
|
|
1261
1279
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1262
1280
|
}), h;
|
|
1263
1281
|
}
|
|
1264
|
-
async function
|
|
1282
|
+
async function an(e, t) {
|
|
1265
1283
|
return {
|
|
1266
1284
|
sourceFormat: "assemblee-html",
|
|
1267
1285
|
documentDate: t.date,
|
|
1268
1286
|
html: e,
|
|
1269
|
-
linkedHtml: await
|
|
1287
|
+
linkedHtml: await at(e, t, t.date)
|
|
1270
1288
|
};
|
|
1271
1289
|
}
|
|
1272
|
-
function
|
|
1290
|
+
function V(e) {
|
|
1273
1291
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1274
1292
|
}
|
|
1275
|
-
function
|
|
1293
|
+
function on(e) {
|
|
1276
1294
|
let t = e;
|
|
1277
1295
|
for (let e = 0; e < 3; e++) {
|
|
1278
1296
|
let e = t;
|
|
@@ -1280,27 +1298,27 @@ function sn(e) {
|
|
|
1280
1298
|
}
|
|
1281
1299
|
return t;
|
|
1282
1300
|
}
|
|
1283
|
-
function
|
|
1301
|
+
function sn(e) {
|
|
1284
1302
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1285
1303
|
}
|
|
1286
|
-
function
|
|
1304
|
+
function H(e) {
|
|
1287
1305
|
return e.name.replace(/^.*:/u, "");
|
|
1288
1306
|
}
|
|
1289
|
-
function
|
|
1290
|
-
return t.children.map((t) =>
|
|
1307
|
+
function cn(e, t) {
|
|
1308
|
+
return t.children.map((t) => U(e, t)).filter(Boolean).join("");
|
|
1291
1309
|
}
|
|
1292
|
-
function
|
|
1293
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1310
|
+
function ln(e, t) {
|
|
1311
|
+
return t.children.map((t) => t.type === "text" && sn(t.data) ? on(t.data) : U(e, t)).filter(Boolean).join("");
|
|
1294
1312
|
}
|
|
1295
|
-
function
|
|
1313
|
+
function U(e, t) {
|
|
1296
1314
|
if (t.type === "text") {
|
|
1297
1315
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1298
|
-
return
|
|
1316
|
+
return sn(e) ? on(e) : V(e);
|
|
1299
1317
|
}
|
|
1300
|
-
if (!
|
|
1301
|
-
let n =
|
|
1318
|
+
if (!R(t)) return "";
|
|
1319
|
+
let n = H(t), r = cn(e, t);
|
|
1302
1320
|
switch (n) {
|
|
1303
|
-
case "p": return `<p${
|
|
1321
|
+
case "p": return `<p${fn(e, t, [
|
|
1304
1322
|
"id",
|
|
1305
1323
|
"class",
|
|
1306
1324
|
"align",
|
|
@@ -1314,13 +1332,13 @@ function H(e, t) {
|
|
|
1314
1332
|
case "u":
|
|
1315
1333
|
case "sup":
|
|
1316
1334
|
case "sub":
|
|
1317
|
-
case "abbr": return `<${n}${
|
|
1335
|
+
case "abbr": return `<${n}${fn(e, t, [
|
|
1318
1336
|
"id",
|
|
1319
1337
|
"class",
|
|
1320
1338
|
"title",
|
|
1321
1339
|
"style"
|
|
1322
1340
|
])}>${r}</${n}>`;
|
|
1323
|
-
case "a": return `<a href="${
|
|
1341
|
+
case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${fn(e, t, [
|
|
1324
1342
|
"id",
|
|
1325
1343
|
"class",
|
|
1326
1344
|
"title",
|
|
@@ -1332,7 +1350,7 @@ function H(e, t) {
|
|
|
1332
1350
|
case "tr":
|
|
1333
1351
|
case "th":
|
|
1334
1352
|
case "td": return pn(e, t, n, r);
|
|
1335
|
-
case "caption": return `<caption${
|
|
1353
|
+
case "caption": return `<caption${fn(e, t, [
|
|
1336
1354
|
"id",
|
|
1337
1355
|
"class",
|
|
1338
1356
|
"align",
|
|
@@ -1340,7 +1358,7 @@ function H(e, t) {
|
|
|
1340
1358
|
])}>${r}</caption>`;
|
|
1341
1359
|
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1342
1360
|
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1343
|
-
case "content": return
|
|
1361
|
+
case "content": return ln(e, t);
|
|
1344
1362
|
case "alinea": return On(e, t, "div", "akn-alinea");
|
|
1345
1363
|
case "article": return On(e, t, "article", "akn-article");
|
|
1346
1364
|
case "blockList":
|
|
@@ -1366,7 +1384,7 @@ function H(e, t) {
|
|
|
1366
1384
|
default: return r;
|
|
1367
1385
|
}
|
|
1368
1386
|
}
|
|
1369
|
-
function
|
|
1387
|
+
function un(e, t) {
|
|
1370
1388
|
let n = e(t).text();
|
|
1371
1389
|
if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
|
|
1372
1390
|
let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
|
|
@@ -1377,39 +1395,39 @@ function dn(e, t) {
|
|
|
1377
1395
|
let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
|
|
1378
1396
|
if (l) {
|
|
1379
1397
|
let t = Number(e(l).attr("rowspan") ?? "1");
|
|
1380
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 &&
|
|
1398
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && F(e(l).text()) !== "«") return [];
|
|
1381
1399
|
i = t - 1;
|
|
1382
1400
|
}
|
|
1383
1401
|
if (u) {
|
|
1384
1402
|
let t = Number(e(u).attr("rowspan") ?? "1");
|
|
1385
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(
|
|
1403
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(F(e(u).text()))) return [];
|
|
1386
1404
|
a = t - 1;
|
|
1387
1405
|
}
|
|
1388
1406
|
return [l, u];
|
|
1389
1407
|
});
|
|
1390
1408
|
if (o.some((e) => e.length !== 2)) return;
|
|
1391
|
-
let s = o.map(([t]) => t ?
|
|
1409
|
+
let s = o.map(([t]) => t ? F(e(t).text()) : ""), c = o.map(([, t]) => t ? F(e(t).text()) : "");
|
|
1392
1410
|
if (!(s.filter((e) => e === "«").length !== 1 || c.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || s.some((e) => e !== "" && e !== "«") || c.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || o.some(([t, n]) => [t, n].some((t) => t && e(t).attr("colspan") !== void 0))) && !(s.indexOf("«") > c.findIndex((e) => e.startsWith("»")))) {
|
|
1393
1411
|
e(t).addClass("akn-quoted-table");
|
|
1394
1412
|
for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
|
|
1395
1413
|
}
|
|
1396
1414
|
}
|
|
1397
|
-
function
|
|
1398
|
-
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(
|
|
1399
|
-
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) =>
|
|
1415
|
+
function dn(e, t) {
|
|
1416
|
+
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(F(e(t).text())))).text();
|
|
1417
|
+
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => F(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
|
|
1400
1418
|
}
|
|
1401
|
-
function
|
|
1419
|
+
function fn(e, t, n, r = {}) {
|
|
1402
1420
|
let i = [];
|
|
1403
1421
|
for (let r of n) {
|
|
1404
1422
|
if (r === "style") continue;
|
|
1405
1423
|
let n = e(t).attr(r);
|
|
1406
|
-
n !== void 0 && i.push(`${r}="${
|
|
1424
|
+
n !== void 0 && i.push(`${r}="${V(n)}"`);
|
|
1407
1425
|
}
|
|
1408
1426
|
let a = r.style ?? e(t).attr("style");
|
|
1409
|
-
return a && i.push(`style="${
|
|
1427
|
+
return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1410
1428
|
}
|
|
1411
1429
|
function pn(e, t, n, r) {
|
|
1412
|
-
return `<${n}${
|
|
1430
|
+
return `<${n}${fn(e, t, [
|
|
1413
1431
|
"id",
|
|
1414
1432
|
"class",
|
|
1415
1433
|
"colspan",
|
|
@@ -1433,16 +1451,16 @@ function hn(e, t, n) {
|
|
|
1433
1451
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1434
1452
|
}
|
|
1435
1453
|
function gn(e, t) {
|
|
1436
|
-
let n = [
|
|
1437
|
-
return n.length === 0 ? "" : `<p class="akn-heading">${
|
|
1454
|
+
let n = [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean);
|
|
1455
|
+
return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
|
|
1438
1456
|
}
|
|
1439
1457
|
function _n(e, t) {
|
|
1440
1458
|
if (!t) return !1;
|
|
1441
|
-
let n = (e) =>
|
|
1442
|
-
return n(
|
|
1459
|
+
let n = (e) => F(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1460
|
+
return n(F(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1443
1461
|
}
|
|
1444
1462
|
function vn(e) {
|
|
1445
|
-
let t =
|
|
1463
|
+
let t = V(e);
|
|
1446
1464
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
|
|
1447
1465
|
}
|
|
1448
1466
|
function yn(e, t) {
|
|
@@ -1455,12 +1473,12 @@ function bn(e) {
|
|
|
1455
1473
|
return `<table class="fixed-size large akn-pastille-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
|
|
1456
1474
|
}
|
|
1457
1475
|
function xn({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1458
|
-
let i = n ? ` style="${
|
|
1459
|
-
return `<tr${r ? ` class="${
|
|
1476
|
+
let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
|
|
1477
|
+
return `<tr${r ? ` class="${V(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${vn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
|
|
1460
1478
|
}
|
|
1461
1479
|
function Sn({ content: e, style: t, contextClass: n }) {
|
|
1462
|
-
let r = t ? ` style="${
|
|
1463
|
-
return `<tr${n ? ` class="${
|
|
1480
|
+
let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
|
|
1481
|
+
return `<tr${n ? ` class="${V(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
|
|
1464
1482
|
}
|
|
1465
1483
|
function Cn(e, t) {
|
|
1466
1484
|
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
@@ -1469,21 +1487,21 @@ function wn(e, t) {
|
|
|
1469
1487
|
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1470
1488
|
}
|
|
1471
1489
|
function Tn(e, t) {
|
|
1472
|
-
return e(t).children().get().filter((e) =>
|
|
1490
|
+
return e(t).children().get().filter((e) => R(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
|
|
1473
1491
|
}
|
|
1474
1492
|
function En(e, t) {
|
|
1475
1493
|
let n = [];
|
|
1476
1494
|
return e(t).children().each((t, r) => {
|
|
1477
|
-
if (!
|
|
1478
|
-
let i =
|
|
1479
|
-
i === "num" || i === "heading" || i === "content" || n.push(
|
|
1495
|
+
if (!R(r)) return;
|
|
1496
|
+
let i = H(r);
|
|
1497
|
+
i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
|
|
1480
1498
|
}), n.filter(Boolean);
|
|
1481
1499
|
}
|
|
1482
1500
|
function Dn(e, t) {
|
|
1483
|
-
let n = [], r =
|
|
1501
|
+
let n = [], r = H(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = kn(e, t, r, i), s = Fn(e, t);
|
|
1484
1502
|
if (i) {
|
|
1485
|
-
let r = [_n(a,
|
|
1486
|
-
|
|
1503
|
+
let r = [_n(a, F(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
|
|
1504
|
+
F(r) && n.push(xn({
|
|
1487
1505
|
content: r,
|
|
1488
1506
|
pastille: i,
|
|
1489
1507
|
style: o,
|
|
@@ -1495,18 +1513,18 @@ function Dn(e, t) {
|
|
|
1495
1513
|
contextClass: s
|
|
1496
1514
|
}));
|
|
1497
1515
|
for (let r of e(t).children().get()) {
|
|
1498
|
-
if (!
|
|
1499
|
-
let t =
|
|
1516
|
+
if (!R(r)) continue;
|
|
1517
|
+
let t = H(r);
|
|
1500
1518
|
t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
|
|
1501
1519
|
}
|
|
1502
1520
|
return n;
|
|
1503
1521
|
}
|
|
1504
1522
|
function On(e, t, n, r) {
|
|
1505
|
-
let i =
|
|
1506
|
-
a ? `id="${
|
|
1523
|
+
let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Cn(e, t), s = kn(e, t, i, o), c = [`<${n} ${[
|
|
1524
|
+
a ? `id="${V(a)}"` : void 0,
|
|
1507
1525
|
`class="${r}"`,
|
|
1508
|
-
o ? `data-pastille="${
|
|
1509
|
-
s ? `style="${
|
|
1526
|
+
o ? `data-pastille="${V(o)}"` : void 0,
|
|
1527
|
+
s ? `style="${V(s)}"` : void 0
|
|
1510
1528
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1511
1529
|
if (i === "part" || i === "title") {
|
|
1512
1530
|
let r = Mn(e, t, i), a = Pn(e, t), o = r ? [Sn({
|
|
@@ -1516,22 +1534,22 @@ function On(e, t, n, r) {
|
|
|
1516
1534
|
o.length !== 0 && (c.push(jn(o)), o = []);
|
|
1517
1535
|
};
|
|
1518
1536
|
return e(t).children().each((t, n) => {
|
|
1519
|
-
if (!
|
|
1520
|
-
let r =
|
|
1537
|
+
if (!R(n)) return;
|
|
1538
|
+
let r = H(n);
|
|
1521
1539
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1522
1540
|
if (r === "alinea") {
|
|
1523
1541
|
o.push(...Dn(e, n));
|
|
1524
1542
|
return;
|
|
1525
1543
|
}
|
|
1526
|
-
s(), c.push(
|
|
1544
|
+
s(), c.push(U(e, n));
|
|
1527
1545
|
}
|
|
1528
1546
|
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1529
1547
|
}
|
|
1530
1548
|
if (i === "article") {
|
|
1531
|
-
let r =
|
|
1549
|
+
let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = T(r) ?? {
|
|
1532
1550
|
label: r,
|
|
1533
1551
|
num: r
|
|
1534
|
-
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${
|
|
1552
|
+
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${V(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${V(a.label)}${i ? ` : ${V(i)}` : ""}</p>`;
|
|
1535
1553
|
if (wn(e, t)) {
|
|
1536
1554
|
let r = [Sn({
|
|
1537
1555
|
content: o,
|
|
@@ -1545,13 +1563,13 @@ function On(e, t, n, r) {
|
|
|
1545
1563
|
}
|
|
1546
1564
|
let l = [];
|
|
1547
1565
|
for (let n of ["content", "children"]) e(t).children().each((t, r) => {
|
|
1548
|
-
if (!
|
|
1549
|
-
let i =
|
|
1550
|
-
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(
|
|
1566
|
+
if (!R(r)) return;
|
|
1567
|
+
let i = H(r);
|
|
1568
|
+
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(U(e, r));
|
|
1551
1569
|
});
|
|
1552
1570
|
let u = l.join("\n");
|
|
1553
1571
|
if (i !== "article") {
|
|
1554
|
-
let n = _n(u,
|
|
1572
|
+
let n = _n(u, F(e(t).children("num").first().text())) ? "" : gn(e, t);
|
|
1555
1573
|
n && c.push(n);
|
|
1556
1574
|
}
|
|
1557
1575
|
return c.push(o ? yn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
@@ -1567,8 +1585,8 @@ function jn(e) {
|
|
|
1567
1585
|
return `<table class="fixed-size large akn-section-table"><colgroup><col style="width: 5.0%;" class="texte-col-0 texte-col-pastille"><col style="width: 95.0%;" class="texte-col-1"></colgroup><tbody>${e.join("\n")}</tbody></table>`;
|
|
1568
1586
|
}
|
|
1569
1587
|
function Mn(e, t, n) {
|
|
1570
|
-
let r =
|
|
1571
|
-
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${
|
|
1588
|
+
let r = F(e(t).children("num").first().text()), i = F(e(t).children("heading").first().text()), a = Nn(n), o = [];
|
|
1589
|
+
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${V(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${V(i)}</span></p>`), o.join("\n");
|
|
1572
1590
|
}
|
|
1573
1591
|
function Nn(e) {
|
|
1574
1592
|
switch (e) {
|
|
@@ -1595,13 +1613,13 @@ function Nn(e) {
|
|
|
1595
1613
|
}
|
|
1596
1614
|
}
|
|
1597
1615
|
function Pn(e, t) {
|
|
1598
|
-
let n = In(
|
|
1616
|
+
let n = In(F(e(t).children("num").first().text()));
|
|
1599
1617
|
if (n) return n;
|
|
1600
1618
|
for (let n of e(t).parents().get()) {
|
|
1601
|
-
if (!
|
|
1602
|
-
let t =
|
|
1619
|
+
if (!R(n)) continue;
|
|
1620
|
+
let t = H(n);
|
|
1603
1621
|
if (t !== "title" && t !== "part") continue;
|
|
1604
|
-
let r = In(
|
|
1622
|
+
let r = In(F(e(n).children("num").first().text()));
|
|
1605
1623
|
if (r) return r;
|
|
1606
1624
|
}
|
|
1607
1625
|
}
|
|
@@ -1609,7 +1627,7 @@ function Fn(e, t) {
|
|
|
1609
1627
|
return Pn(e, t);
|
|
1610
1628
|
}
|
|
1611
1629
|
function In(e) {
|
|
1612
|
-
let [t, ...n] =
|
|
1630
|
+
let [t, ...n] = F(e).split(/\s+/u);
|
|
1613
1631
|
if (!t || n.length === 0) return;
|
|
1614
1632
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1615
1633
|
if ([
|
|
@@ -1620,7 +1638,7 @@ function In(e) {
|
|
|
1620
1638
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1621
1639
|
}
|
|
1622
1640
|
function Ln(e) {
|
|
1623
|
-
return `article-${
|
|
1641
|
+
return `article-${F(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1624
1642
|
}
|
|
1625
1643
|
function Rn(e) {
|
|
1626
1644
|
switch (e) {
|
|
@@ -1635,10 +1653,10 @@ function Rn(e) {
|
|
|
1635
1653
|
}
|
|
1636
1654
|
}
|
|
1637
1655
|
function zn(e, t) {
|
|
1638
|
-
return [
|
|
1656
|
+
return [F(e(t).children("num").first().text()), F(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1639
1657
|
}
|
|
1640
1658
|
function Bn(e, t) {
|
|
1641
|
-
let n =
|
|
1659
|
+
let n = F(e(t).children("num").first().text()), r = F(e(t).children("heading").first().text()), i = T(n) ?? {
|
|
1642
1660
|
label: n,
|
|
1643
1661
|
num: n
|
|
1644
1662
|
};
|
|
@@ -1654,8 +1672,8 @@ function Vn(e, t) {
|
|
|
1654
1672
|
function Hn(e, t) {
|
|
1655
1673
|
let n = { items: [] };
|
|
1656
1674
|
return e(t).children().each((t, r) => {
|
|
1657
|
-
if (!
|
|
1658
|
-
let i =
|
|
1675
|
+
if (!R(r)) return;
|
|
1676
|
+
let i = H(r);
|
|
1659
1677
|
if (i === "article") {
|
|
1660
1678
|
n.items.push(Bn(e, r));
|
|
1661
1679
|
return;
|
|
@@ -1682,14 +1700,14 @@ function Wn(e) {
|
|
|
1682
1700
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1683
1701
|
}
|
|
1684
1702
|
function Gn(e) {
|
|
1685
|
-
e("table").each((t, n) =>
|
|
1703
|
+
e("table").each((t, n) => un(e, n));
|
|
1686
1704
|
let t = e("preamble").first(), n = e("body").first(), r = ["<div class=\"akn-bill\">", "<style>.akn-bill p.pastille span:empty::before{content:attr(data-pastille)}</style>"];
|
|
1687
|
-
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(
|
|
1688
|
-
|
|
1705
|
+
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(cn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
|
|
1706
|
+
R(n) && r.push(H(n) === "article" ? On(e, n, "article", "akn-article") : U(e, n));
|
|
1689
1707
|
}), r.push("</section></div>"), r.join("\n");
|
|
1690
1708
|
}
|
|
1691
1709
|
function Kn(e) {
|
|
1692
|
-
let t =
|
|
1710
|
+
let t = E(e, { xml: {
|
|
1693
1711
|
decodeEntities: !1,
|
|
1694
1712
|
lowerCaseTags: !1,
|
|
1695
1713
|
lowerCaseAttributeNames: !1,
|
|
@@ -1703,41 +1721,41 @@ function Kn(e) {
|
|
|
1703
1721
|
};
|
|
1704
1722
|
}
|
|
1705
1723
|
function qn(e) {
|
|
1706
|
-
return Jn(
|
|
1724
|
+
return Jn(E(e));
|
|
1707
1725
|
}
|
|
1708
1726
|
function Jn(e) {
|
|
1709
1727
|
let t = [];
|
|
1710
1728
|
return e("article.akn-article").each((n, r) => {
|
|
1711
|
-
let i = e(r).find("p.TCNumArticle").first().get(0), a =
|
|
1729
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = F(i ? e(i).text() : ""), o = T(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Ct(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1712
1730
|
t.push({
|
|
1713
1731
|
id: s,
|
|
1714
1732
|
label: o.label,
|
|
1715
1733
|
num: o.num,
|
|
1716
1734
|
title: o.title,
|
|
1717
|
-
text:
|
|
1718
|
-
html:
|
|
1735
|
+
text: rt(e, c),
|
|
1736
|
+
html: $e(e, r),
|
|
1719
1737
|
directiveText: u,
|
|
1720
1738
|
blocks: l
|
|
1721
1739
|
});
|
|
1722
1740
|
}), t;
|
|
1723
1741
|
}
|
|
1724
1742
|
function Yn(e) {
|
|
1725
|
-
let t =
|
|
1743
|
+
let t = E(e);
|
|
1726
1744
|
return {
|
|
1727
1745
|
articles: Jn(t),
|
|
1728
1746
|
htmlWithLinks: t.html()
|
|
1729
1747
|
};
|
|
1730
1748
|
}
|
|
1731
1749
|
async function Xn(e, t) {
|
|
1732
|
-
let n = new
|
|
1750
|
+
let n = new xe("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => E(e, { xml: {
|
|
1733
1751
|
decodeEntities: !1,
|
|
1734
1752
|
lowerCaseTags: !1,
|
|
1735
1753
|
lowerCaseAttributeNames: !1,
|
|
1736
1754
|
xmlMode: !0
|
|
1737
|
-
} })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () =>
|
|
1755
|
+
} })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => at(a, {
|
|
1738
1756
|
...t,
|
|
1739
1757
|
date: i
|
|
1740
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1758
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () => wt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Yn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Un(r)), p = n.timeSync("buildParsedDocument", () => Qt("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, tn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
|
|
1741
1759
|
return n.log({
|
|
1742
1760
|
articleCount: p.articles.length,
|
|
1743
1761
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1751,7 +1769,7 @@ async function Zn(e, t) {
|
|
|
1751
1769
|
sourceFormat: "akoma-ntoso",
|
|
1752
1770
|
documentDate: r,
|
|
1753
1771
|
html: n.html,
|
|
1754
|
-
linkedHtml: await
|
|
1772
|
+
linkedHtml: await at(n.html, t, r)
|
|
1755
1773
|
};
|
|
1756
1774
|
}
|
|
1757
1775
|
//#endregion
|
|
@@ -1761,7 +1779,7 @@ function er(e) {
|
|
|
1761
1779
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1762
1780
|
}
|
|
1763
1781
|
function tr(e) {
|
|
1764
|
-
let t = er(
|
|
1782
|
+
let t = er(E(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1765
1783
|
for (let [e, a] of n.entries()) {
|
|
1766
1784
|
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = $n.exec(s), l = er(s.slice(0, c?.index ?? s.length));
|
|
1767
1785
|
if (l.length < 20 || r.has(l)) continue;
|
|
@@ -1780,7 +1798,7 @@ function tr(e) {
|
|
|
1780
1798
|
return i;
|
|
1781
1799
|
}
|
|
1782
1800
|
async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1783
|
-
let i = await
|
|
1801
|
+
let i = await rn(t, {
|
|
1784
1802
|
date: e,
|
|
1785
1803
|
includeDirectiveAnalysis: !1,
|
|
1786
1804
|
linkBaseUrl: n,
|
|
@@ -1804,7 +1822,7 @@ async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1804
1822
|
};
|
|
1805
1823
|
}
|
|
1806
1824
|
function rr(e, t) {
|
|
1807
|
-
return
|
|
1825
|
+
return Ee("sha256").update(JSON.stringify({
|
|
1808
1826
|
item: e,
|
|
1809
1827
|
metadata: t
|
|
1810
1828
|
})).digest("hex");
|
|
@@ -1825,7 +1843,7 @@ function ir(e) {
|
|
|
1825
1843
|
//#endregion
|
|
1826
1844
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1827
1845
|
function ar(e) {
|
|
1828
|
-
return e?.trim() ?
|
|
1846
|
+
return e?.trim() ? E(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1829
1847
|
}
|
|
1830
1848
|
function or({ dispositifHtml: e, objetHtml: t }) {
|
|
1831
1849
|
let n = ar(e), r = ar(t);
|
|
@@ -1840,7 +1858,7 @@ function or({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1840
1858
|
}] : []];
|
|
1841
1859
|
}
|
|
1842
1860
|
function sr(e, t) {
|
|
1843
|
-
return
|
|
1861
|
+
return Ee("sha256").update(JSON.stringify({
|
|
1844
1862
|
item: e,
|
|
1845
1863
|
metadata: t
|
|
1846
1864
|
})).digest("hex");
|
|
@@ -1857,73 +1875,73 @@ function W(e, t) {
|
|
|
1857
1875
|
function cr(e, t) {
|
|
1858
1876
|
return {
|
|
1859
1877
|
type: e === "start" ? "head_of_target" : "tail_after_target",
|
|
1860
|
-
unit: t ?
|
|
1878
|
+
unit: t ? ue(t) : "article"
|
|
1861
1879
|
};
|
|
1862
1880
|
}
|
|
1863
1881
|
function lr(e) {
|
|
1864
1882
|
return e === "start" ? "insert_before" : "insert_after";
|
|
1865
1883
|
}
|
|
1866
|
-
var ur =
|
|
1884
|
+
var ur = k(O("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = A(t, M([O("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), dr = A(M([O("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
|
|
1867
1885
|
let t = e[1];
|
|
1868
1886
|
return {
|
|
1869
1887
|
targetReference: t,
|
|
1870
1888
|
targetScope: {
|
|
1871
1889
|
type: "tail_after_target",
|
|
1872
|
-
unit:
|
|
1890
|
+
unit: ue(t)
|
|
1873
1891
|
}
|
|
1874
1892
|
};
|
|
1875
|
-
} }),
|
|
1876
|
-
|
|
1877
|
-
|
|
1893
|
+
} }), M([i], { value: (e) => ({ targetScope: e[0] }) })), K = k(M([
|
|
1894
|
+
k(O("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1895
|
+
k(O("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1878
1896
|
G,
|
|
1879
|
-
|
|
1897
|
+
k(O("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
1880
1898
|
], { value: (e, t) => ({
|
|
1881
1899
|
reference: e[2],
|
|
1882
1900
|
text: t.text()
|
|
1883
|
-
}) }), { default: null }), fr =
|
|
1901
|
+
}) }), { default: null }), fr = k(O(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ge})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
1884
1902
|
function q(e) {
|
|
1885
1903
|
return e?.text ?? "";
|
|
1886
1904
|
}
|
|
1887
1905
|
function pr(e) {
|
|
1888
1906
|
return { citation: ee(e.position()) };
|
|
1889
1907
|
}
|
|
1890
|
-
var J =
|
|
1908
|
+
var J = A(M([v], { value: (e) => ({ citation: e[0] }) }), O("\\S[\\s\\S]*", { value: (e, t) => pr(t) })), mr = O("\\S[\\s\\S]*", { value: (e, t) => pr(t) }), Y = O("[^:«“\"]*(?::\\s*)?", { flags: "i" }), hr = O("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
1891
1909
|
flags: "i",
|
|
1892
1910
|
value: (e, t) => pr(t)
|
|
1893
|
-
}), gr =
|
|
1911
|
+
}), gr = O("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
1894
1912
|
flags: "i",
|
|
1895
1913
|
value: (e, t) => pr(t)
|
|
1896
|
-
}), _r =
|
|
1914
|
+
}), _r = O("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
1897
1915
|
flags: "i",
|
|
1898
1916
|
value: (e, t) => pr(t)
|
|
1899
|
-
}), vr =
|
|
1917
|
+
}), vr = A(M([v], { value: (e) => ({ citation: e[0] }) }), hr), yr = A(M([v], { value: (e) => ({ citation: e[0] }) }), _r), br = M([O(`${o}s?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = M([O(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), yr], { value: (e) => e[1] }), Sr = A(M([v], { value: (e) => ({ citation: e[0] }) }), gr), Cr = M([
|
|
1900
1918
|
fr,
|
|
1901
|
-
|
|
1919
|
+
O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1902
1920
|
Sr
|
|
1903
|
-
], { value: (e) => e[2] }), wr =
|
|
1921
|
+
], { value: (e) => e[2] }), wr = M([
|
|
1904
1922
|
fr,
|
|
1905
|
-
|
|
1906
|
-
|
|
1923
|
+
O(`${o}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1924
|
+
A(M([v], { value: (e) => ({ citation: e[0] }) }), mr)
|
|
1907
1925
|
], { value: (e) => e[2] });
|
|
1908
1926
|
function X(e) {
|
|
1909
1927
|
return e?.reference;
|
|
1910
1928
|
}
|
|
1911
|
-
var Tr =
|
|
1929
|
+
var Tr = M([ur, O("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
|
|
1912
1930
|
contextText: e[0],
|
|
1913
1931
|
kind: "delete_article"
|
|
1914
|
-
}) }), Er =
|
|
1932
|
+
}) }), Er = M([
|
|
1915
1933
|
K,
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1934
|
+
O("supprimer", { flags: "i" }),
|
|
1935
|
+
k(M([j, G], { value: (e) => e[1] }), { default: null }),
|
|
1936
|
+
k(M([j, wr], { value: (e) => e[1] }), { default: null })
|
|
1919
1937
|
], { value: (e, t) => W(t, {
|
|
1920
1938
|
contextText: q(e[0]),
|
|
1921
1939
|
kind: "delete_portion",
|
|
1922
1940
|
targetCitation: e[3]?.citation ?? void 0,
|
|
1923
1941
|
targetReference: e[2] ?? X(e[0])
|
|
1924
|
-
}) }), Dr =
|
|
1942
|
+
}) }), Dr = M([
|
|
1925
1943
|
K,
|
|
1926
|
-
O(
|
|
1944
|
+
A(O("r[eé]diger\\s+ainsi", { flags: "i" }), O("r[eé]tablir", { flags: "i" })),
|
|
1927
1945
|
Y,
|
|
1928
1946
|
J
|
|
1929
1947
|
], { value: (e, t) => W(t, {
|
|
@@ -1931,14 +1949,14 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1931
1949
|
kind: "rewrite_portion",
|
|
1932
1950
|
replacementCitation: e[3].citation,
|
|
1933
1951
|
targetReference: X(e[0])
|
|
1934
|
-
}) }), Or =
|
|
1952
|
+
}) }), Or = M([
|
|
1935
1953
|
K,
|
|
1936
|
-
O(
|
|
1937
|
-
|
|
1954
|
+
A(O("substituer", { flags: "i" }), O("remplacer", { flags: "i" })),
|
|
1955
|
+
j,
|
|
1938
1956
|
fr,
|
|
1939
1957
|
br,
|
|
1940
|
-
|
|
1941
|
-
|
|
1958
|
+
O("\\s*,?\\s*"),
|
|
1959
|
+
k(O("par\\s+", { flags: "i" }), { default: "" }),
|
|
1942
1960
|
xr
|
|
1943
1961
|
], { value: (e, t) => W(t, {
|
|
1944
1962
|
contextText: q(e[0]),
|
|
@@ -1946,61 +1964,61 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1946
1964
|
replacementCitation: e[7].citation,
|
|
1947
1965
|
targetCitation: e[4].citation,
|
|
1948
1966
|
targetReference: X(e[0])
|
|
1949
|
-
}) }), kr =
|
|
1967
|
+
}) }), kr = M([
|
|
1950
1968
|
K,
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1969
|
+
O("substituer", { flags: "i" }),
|
|
1970
|
+
j,
|
|
1971
|
+
k(O("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
1954
1972
|
G,
|
|
1955
|
-
|
|
1973
|
+
O("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
1956
1974
|
J
|
|
1957
1975
|
], { value: (e, t) => W(t, {
|
|
1958
1976
|
contextText: q(e[0]),
|
|
1959
1977
|
kind: "rewrite_portion",
|
|
1960
1978
|
replacementCitation: e[6].citation,
|
|
1961
1979
|
targetReference: e[4] ?? X(e[0])
|
|
1962
|
-
}) }), Ar =
|
|
1980
|
+
}) }), Ar = M([
|
|
1963
1981
|
d,
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1982
|
+
j,
|
|
1983
|
+
O("l['’ ]article", { flags: "i" }),
|
|
1984
|
+
O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1985
|
+
O("ins[eé]rer", { flags: "i" }),
|
|
1968
1986
|
Y,
|
|
1969
1987
|
J
|
|
1970
1988
|
], { value: (e, t) => W(t, {
|
|
1971
1989
|
contextText: "",
|
|
1972
1990
|
insertCitation: e[6].citation,
|
|
1973
1991
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
1974
|
-
}) }), jr =
|
|
1992
|
+
}) }), jr = M([
|
|
1975
1993
|
d,
|
|
1976
|
-
|
|
1994
|
+
j,
|
|
1977
1995
|
G,
|
|
1978
|
-
|
|
1979
|
-
O(
|
|
1996
|
+
O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1997
|
+
A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
|
|
1980
1998
|
Y,
|
|
1981
1999
|
J
|
|
1982
2000
|
], { value: (e, t) => W(t, {
|
|
1983
2001
|
contextText: "",
|
|
1984
2002
|
insertCitation: e[6].citation,
|
|
1985
|
-
kind:
|
|
2003
|
+
kind: w(e[0]),
|
|
1986
2004
|
targetReference: e[2]
|
|
1987
|
-
}) }), Mr =
|
|
2005
|
+
}) }), Mr = M([
|
|
1988
2006
|
d,
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
2007
|
+
j,
|
|
2008
|
+
O("l['’ ]alin[eé]a", { flags: "i" }),
|
|
2009
|
+
O("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
2010
|
+
O("ins[eé]rer", { flags: "i" }),
|
|
1993
2011
|
Y,
|
|
1994
2012
|
J
|
|
1995
2013
|
], { value: (e, t) => W(t, {
|
|
1996
2014
|
contextText: "",
|
|
1997
2015
|
insertCitation: e[6].citation,
|
|
1998
|
-
kind:
|
|
1999
|
-
}) }), Nr =
|
|
2016
|
+
kind: w(e[0])
|
|
2017
|
+
}) }), Nr = M([
|
|
2000
2018
|
K,
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
O(
|
|
2019
|
+
ne,
|
|
2020
|
+
O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2021
|
+
A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
|
|
2004
2022
|
Y,
|
|
2005
2023
|
J
|
|
2006
2024
|
], { value: (e, t) => {
|
|
@@ -2012,57 +2030,57 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2012
2030
|
targetReference: r,
|
|
2013
2031
|
targetScope: cr(i, r)
|
|
2014
2032
|
});
|
|
2015
|
-
} }), Pr =
|
|
2033
|
+
} }), Pr = M([
|
|
2016
2034
|
K,
|
|
2017
2035
|
d,
|
|
2018
|
-
|
|
2036
|
+
j,
|
|
2019
2037
|
Cr,
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2038
|
+
O("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
2039
|
+
O("ins[eé]rer", { flags: "i" }),
|
|
2040
|
+
j,
|
|
2023
2041
|
xr
|
|
2024
2042
|
], { value: (e, t) => W(t, {
|
|
2025
2043
|
contextText: q(e[0]),
|
|
2026
2044
|
insertCitation: e[7].citation,
|
|
2027
|
-
kind:
|
|
2045
|
+
kind: w(e[1]),
|
|
2028
2046
|
targetCitation: e[3].citation,
|
|
2029
2047
|
targetReference: X(e[0])
|
|
2030
|
-
}) }), Fr =
|
|
2048
|
+
}) }), Fr = M([
|
|
2031
2049
|
K,
|
|
2032
2050
|
d,
|
|
2033
|
-
|
|
2051
|
+
j,
|
|
2034
2052
|
G,
|
|
2035
|
-
|
|
2036
|
-
O(
|
|
2053
|
+
O("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2054
|
+
A(O("ins[eé]rer", { flags: "i" }), O("ajouter", { flags: "i" })),
|
|
2037
2055
|
Y,
|
|
2038
2056
|
J
|
|
2039
2057
|
], { value: (e, t) => W(t, {
|
|
2040
2058
|
contextText: q(e[0]),
|
|
2041
2059
|
insertCitation: e[7].citation,
|
|
2042
|
-
kind:
|
|
2060
|
+
kind: w(e[1]),
|
|
2043
2061
|
targetReference: X(e[0]) ?? e[3]
|
|
2044
|
-
}) }), Ir =
|
|
2062
|
+
}) }), Ir = A(Nr, Ar, jr, Mr, kr, M([
|
|
2045
2063
|
K,
|
|
2046
2064
|
d,
|
|
2047
|
-
|
|
2065
|
+
j,
|
|
2048
2066
|
Cr,
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2067
|
+
O("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
2068
|
+
A(M([
|
|
2069
|
+
O("supprimer", {
|
|
2052
2070
|
flags: "i",
|
|
2053
2071
|
value: "delete_portion"
|
|
2054
2072
|
}),
|
|
2055
|
-
|
|
2073
|
+
j,
|
|
2056
2074
|
dr
|
|
2057
2075
|
], { value: (e) => ({
|
|
2058
2076
|
kind: e[0],
|
|
2059
2077
|
...e[2]
|
|
2060
|
-
}) }),
|
|
2061
|
-
|
|
2078
|
+
}) }), M([
|
|
2079
|
+
O("r[eé]diger\\s+ainsi", {
|
|
2062
2080
|
flags: "i",
|
|
2063
2081
|
value: "rewrite_portion"
|
|
2064
2082
|
}),
|
|
2065
|
-
|
|
2083
|
+
j,
|
|
2066
2084
|
dr,
|
|
2067
2085
|
Y,
|
|
2068
2086
|
J
|
|
@@ -2081,10 +2099,10 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2081
2099
|
targetReference: X(e[0]) ?? n.targetReference,
|
|
2082
2100
|
targetScope: n.targetScope
|
|
2083
2101
|
});
|
|
2084
|
-
} }), Pr, Fr,
|
|
2102
|
+
} }), Pr, Fr, M([
|
|
2085
2103
|
ur,
|
|
2086
|
-
|
|
2087
|
-
|
|
2104
|
+
O("ins[eé]rer", { flags: "i" }),
|
|
2105
|
+
O(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
|
|
2088
2106
|
d,
|
|
2089
2107
|
Y,
|
|
2090
2108
|
v,
|
|
@@ -2093,12 +2111,12 @@ var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2093
2111
|
], { value: (e, t) => W(t, {
|
|
2094
2112
|
contextText: e[0],
|
|
2095
2113
|
insertCitation: e[8],
|
|
2096
|
-
kind:
|
|
2114
|
+
kind: w(e[3]),
|
|
2097
2115
|
targetCitation: e[6]
|
|
2098
|
-
}) }), Or, Dr,
|
|
2116
|
+
}) }), Or, Dr, M([
|
|
2099
2117
|
K,
|
|
2100
|
-
|
|
2101
|
-
|
|
2118
|
+
O("compl[eé]ter", { flags: "i" }),
|
|
2119
|
+
k(M([j, G], { value: (e) => e[1] }), { default: null }),
|
|
2102
2120
|
Y,
|
|
2103
2121
|
J
|
|
2104
2122
|
], { value: (e, t) => W(t, {
|
|
@@ -2125,7 +2143,7 @@ function zr(e, t) {
|
|
|
2125
2143
|
} : null;
|
|
2126
2144
|
}
|
|
2127
2145
|
function Br(e, t) {
|
|
2128
|
-
return he(
|
|
2146
|
+
return pe(he(e), t);
|
|
2129
2147
|
}
|
|
2130
2148
|
function Vr(e) {
|
|
2131
2149
|
return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
|
|
@@ -2172,7 +2190,7 @@ function Gr(e, t, n, r = Rr(e.slice(n.start, n.stop))) {
|
|
|
2172
2190
|
function Kr(e) {
|
|
2173
2191
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2174
2192
|
if (!t) return null;
|
|
2175
|
-
let n = e.dispositifHtml ?
|
|
2193
|
+
let n = e.dispositifHtml ? ve()(t) : fe(t), r = n.output, i = zr(r, {
|
|
2176
2194
|
start: 0,
|
|
2177
2195
|
stop: r.length
|
|
2178
2196
|
});
|
|
@@ -2251,7 +2269,7 @@ function ti(e) {
|
|
|
2251
2269
|
return g(e);
|
|
2252
2270
|
}
|
|
2253
2271
|
function ni(e, t) {
|
|
2254
|
-
return Ir(new
|
|
2272
|
+
return Ir(new D(e.slice(0, t.stop), t.start)) ?? null;
|
|
2255
2273
|
}
|
|
2256
2274
|
function $(t, n, r) {
|
|
2257
2275
|
if (r) return Gr(t, n, r.position, Rr(e(t, r)));
|
|
@@ -2463,7 +2481,7 @@ function si(e) {
|
|
|
2463
2481
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2464
2482
|
}
|
|
2465
2483
|
function ci(e) {
|
|
2466
|
-
let t =
|
|
2484
|
+
let t = T(e);
|
|
2467
2485
|
if (!t) return {
|
|
2468
2486
|
articleNumber: null,
|
|
2469
2487
|
label: e,
|
|
@@ -2477,7 +2495,7 @@ function ci(e) {
|
|
|
2477
2495
|
};
|
|
2478
2496
|
}
|
|
2479
2497
|
function li(e) {
|
|
2480
|
-
let t =
|
|
2498
|
+
let t = E(e), n = [], r = si(t("section.akn-preamble").text());
|
|
2481
2499
|
return r && n.push({
|
|
2482
2500
|
anchor: "senat-expose-des-motifs",
|
|
2483
2501
|
articleNumber: null,
|
|
@@ -2502,7 +2520,7 @@ function li(e) {
|
|
|
2502
2520
|
}), n;
|
|
2503
2521
|
}
|
|
2504
2522
|
function ui(e, t) {
|
|
2505
|
-
return
|
|
2523
|
+
return Ee("sha256").update(JSON.stringify({
|
|
2506
2524
|
item: e,
|
|
2507
2525
|
metadata: t
|
|
2508
2526
|
})).digest("hex");
|
|
@@ -21634,7 +21652,7 @@ function wi(e) {
|
|
|
21634
21652
|
return null;
|
|
21635
21653
|
}
|
|
21636
21654
|
function Ti(e) {
|
|
21637
|
-
return
|
|
21655
|
+
return Te.createHash("md5").update(e).digest("hex");
|
|
21638
21656
|
}
|
|
21639
21657
|
function Ei(e) {
|
|
21640
21658
|
return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
|
|
@@ -21706,7 +21724,7 @@ function Ni(e) {
|
|
|
21706
21724
|
return null;
|
|
21707
21725
|
}
|
|
21708
21726
|
function Pi(e, t = {}) {
|
|
21709
|
-
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a =
|
|
21727
|
+
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = E(e, { xml: { decodeEntities: !1 } });
|
|
21710
21728
|
a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
|
|
21711
21729
|
let n = a(t).closest("table");
|
|
21712
21730
|
n.length > 0 && n.remove();
|
|
@@ -21959,15 +21977,15 @@ ${Pi(e, t)}
|
|
|
21959
21977
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
21960
21978
|
function zi(e, t) {
|
|
21961
21979
|
let n = "transformation_", r = {};
|
|
21962
|
-
for (let e of
|
|
21980
|
+
for (let e of N.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
21963
21981
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
21964
21982
|
for (let e of a.slice(1)) {
|
|
21965
21983
|
let t = o.transformations ??= [];
|
|
21966
21984
|
for (; e >= t.length;) t.push({});
|
|
21967
21985
|
o = t[e];
|
|
21968
21986
|
}
|
|
21969
|
-
o.output =
|
|
21970
|
-
let { sourceMap: s, title: c } =
|
|
21987
|
+
o.output = N.readFileSync(De.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
21988
|
+
let { sourceMap: s, title: c } = N.readJsonSync(De.join(t, e), { encoding: "utf-8" });
|
|
21971
21989
|
o.sourceMap = s ?? [], o.title = c;
|
|
21972
21990
|
}
|
|
21973
21991
|
return Bi(r, e), r;
|
|
@@ -21977,7 +21995,7 @@ function Bi(e, t) {
|
|
|
21977
21995
|
return t;
|
|
21978
21996
|
}
|
|
21979
21997
|
function Vi(e, t, n = "1") {
|
|
21980
|
-
if (
|
|
21998
|
+
if (N.ensureDirSync(t), e.transformations === void 0) N.writeJsonSync(De.join(t, `transformation_${n}.json`), {
|
|
21981
21999
|
sourceMap: e.sourceMap,
|
|
21982
22000
|
title: e.title
|
|
21983
22001
|
}, {
|
|
@@ -21985,24 +22003,24 @@ function Vi(e, t, n = "1") {
|
|
|
21985
22003
|
spaces: 2
|
|
21986
22004
|
});
|
|
21987
22005
|
else {
|
|
21988
|
-
|
|
22006
|
+
N.writeJsonSync(De.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
21989
22007
|
encoding: "utf-8",
|
|
21990
22008
|
spaces: 2
|
|
21991
22009
|
});
|
|
21992
22010
|
for (let [r, i] of e.transformations.entries()) Vi(i, t, `${n}.${r + 1}`);
|
|
21993
22011
|
}
|
|
21994
|
-
e.output !== void 0 &&
|
|
22012
|
+
e.output !== void 0 && N.writeFileSync(De.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
21995
22013
|
}
|
|
21996
22014
|
//#endregion
|
|
21997
22015
|
//#region src/lib/server/linkers/html.ts
|
|
21998
22016
|
async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
|
|
21999
|
-
let _ = t ?? (e === void 0 ? void 0 : new
|
|
22017
|
+
let _ = t ?? (e === void 0 ? void 0 : new ae(e));
|
|
22000
22018
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
22001
|
-
let v = await
|
|
22002
|
-
a === void 0 ? (y =
|
|
22019
|
+
let v = await N.readFile(i, { encoding: "utf-8" }), y;
|
|
22020
|
+
a === void 0 ? (y = ve({ removeAWithHref: !0 })(v), o !== void 0 && Vi(y, o)) : y = zi(v, a);
|
|
22003
22021
|
let b = [];
|
|
22004
22022
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
22005
|
-
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await
|
|
22023
|
+
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await se({
|
|
22006
22024
|
legiResolver: _,
|
|
22007
22025
|
date: n,
|
|
22008
22026
|
defaultTextId: r,
|
|
@@ -22019,9 +22037,9 @@ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22019
22037
|
s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
|
|
22020
22038
|
for (let [e, t] of Object.entries(x)) {
|
|
22021
22039
|
let n = S[e];
|
|
22022
|
-
n !== void 0 && await
|
|
22040
|
+
n !== void 0 && await N.writeFile(n, t.html, { encoding: "utf-8" });
|
|
22023
22041
|
}
|
|
22024
|
-
x.links !== void 0 && l !== void 0 && Vi(
|
|
22042
|
+
x.links !== void 0 && l !== void 0 && Vi(ve()(x.links.html), l), g !== void 0 && await N.writeJson(g, ee, {
|
|
22025
22043
|
encoding: "utf-8",
|
|
22026
22044
|
spaces: 2
|
|
22027
22045
|
});
|
|
@@ -22029,20 +22047,20 @@ async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22029
22047
|
//#endregion
|
|
22030
22048
|
//#region src/lib/server/tables_of_contents.ts
|
|
22031
22049
|
async function Ui(e, t, n, r) {
|
|
22032
|
-
let i = zi(await
|
|
22033
|
-
for await (let e of
|
|
22050
|
+
let i = zi(await N.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await N.readJson(n, { encoding: "utf-8" });
|
|
22051
|
+
for await (let e of oe({
|
|
22034
22052
|
context: o,
|
|
22035
22053
|
tableOfContents: s,
|
|
22036
22054
|
transformation: i
|
|
22037
22055
|
}));
|
|
22038
|
-
await
|
|
22056
|
+
await N.writeJson(r, s, {
|
|
22039
22057
|
encoding: "utf-8",
|
|
22040
22058
|
spaces: 2
|
|
22041
22059
|
});
|
|
22042
22060
|
}
|
|
22043
22061
|
async function Wi(e, t, n) {
|
|
22044
|
-
let r = zi(await
|
|
22045
|
-
await
|
|
22062
|
+
let r = zi(await N.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
|
|
22063
|
+
await N.writeJson(n, i, {
|
|
22046
22064
|
encoding: "utf-8",
|
|
22047
22065
|
spaces: 2
|
|
22048
22066
|
});
|
|
@@ -22050,7 +22068,7 @@ async function Wi(e, t, n) {
|
|
|
22050
22068
|
//#endregion
|
|
22051
22069
|
//#region src/lib/server/legi/resolvers.ts
|
|
22052
22070
|
function Gi({ canutesDb: e }) {
|
|
22053
|
-
return new
|
|
22071
|
+
return new ae(e);
|
|
22054
22072
|
}
|
|
22055
22073
|
//#endregion
|
|
22056
|
-
export {
|
|
22074
|
+
export { Ce as LegiResolver, Hi as addLinksOrReferencesToHtmlFile, Ui as addPositionsToTableOfContentsFile, ye as buildAndInstallTextTitlesInfos, Se as buildTextTitlesInfos, Gi as createLegiResolver, je as extractAssembleeAmendmentSearchItems, tr as extractAssembleeExposesDesMotifs, or as extractSenatAmendmentSearchItems, Me as hashAssembleeAmendmentSearchItem, rr as hashAssembleeSearchItem, sr as hashSenatAmendmentSearchItem, ui as hashSenatSearchItem, gi as isAkomaNtosoXml, ir as isoDateFromAssembleeDocument, Zn as linkAkomaNtosoBillRaw, an as linkAssembleeBillRaw, Xn as parseAkomaNtosoBillRaw, oi as parseAmendment, rn as parseAssembleeBillRaw, nr as parseAssembleeDocumentSearchContent, li as parseSenatDocumentSearchContent, zi as readTransformation, Kn as renderAkomaNtosoBillRaw, hi as resolveSenatAkomaNtosoSource, Wi as simplifiedHtmlBillFileToTableOfContentsFile, Pi as simplifyWordHtml, Ri as simplifyWordHtmlToDocument, Vi as writeTransformation };
|