@tricoteuses/tisseuse 0.17.3 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{html-DMnYXx0o.js → html-B0V8X0v6.js} +3667 -3606
- package/dist/index.js +135 -135
- package/dist/{resolver-CuP8arVX.js → resolver-cn-qJE70.js} +66 -66
- package/dist/server-f-legi.js +1 -1
- package/dist/server.js +530 -530
- package/dist/src/lib/extractors/article_portions.d.ts +11 -0
- package/dist/src/lib/index.d.ts +1 -1
- package/dist/src/lib/text_parsers/portions.d.ts +1 -0
- package/dist/src/lib/text_parsers/prepositions.d.ts +1 -0
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { $ as e, A as t,
|
|
2
|
-
import { Dt as
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { $ as e, A as t, Bt as n, C as r, D as i, Dt as a, E as o, Et as s, I as c, M as l, Mt as u, O as d, Ot as f, Q as p, S as m, St as h, V as g, Y as _, b as v, c as y, g as b, h as x, j as S, k as C, kt as ee, lt as w, m as te, n as ne, p as re, rt as ie, s as ae, st as oe, t as se, u as ce, v as le, w as ue, x as de, z as fe, zt as pe } from "./html-B0V8X0v6.js";
|
|
2
|
+
import { At as me, Dt as T, Et as E, F as he, I as ge, Mt as D, N as _e, O as ve, Ot as O, Pt as k, gt as ye, k as be, lt as xe, n as Se, o as Ce, r as we, t as Te, tt as Ee, yt as A } from "./resolver-cn-qJE70.js";
|
|
3
|
+
import * as De from "node:crypto";
|
|
4
|
+
import { createHash as Oe } from "node:crypto";
|
|
5
|
+
import j from "fs-extra";
|
|
6
|
+
import M from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function ke(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 je(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function Ae(e) {
|
|
17
17
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function je(e) {
|
|
20
|
+
return Ae(w(e).text());
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
|
|
22
|
+
function Me(e) {
|
|
23
|
+
let t = Ae([
|
|
24
|
+
ke(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
ke(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
ke(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) => je(e)).join("\n")), n = ke(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : je(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Pe(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Ne(e, t) {
|
|
55
|
+
return Oe("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 N(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return N(e.reference);
|
|
65
|
+
case "enumeration": return [...N(e.left), ...N(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
|
-
let t = [...
|
|
67
|
+
let t = [...pe(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 ? [] : N(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,11 +89,11 @@ function j(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/extractors/article_action_effects.ts
|
|
92
|
-
function
|
|
92
|
+
function Pe(e, t) {
|
|
93
93
|
if (t < 2) return null;
|
|
94
|
-
let n =
|
|
94
|
+
let n = be(e), r = b(e);
|
|
95
95
|
if (r.length !== t) return null;
|
|
96
|
-
let i =
|
|
96
|
+
let i = c(new E(n.output)), a = (e) => ge(n, [e])[0].position;
|
|
97
97
|
return r.map((t, n) => ({
|
|
98
98
|
sourceText: e,
|
|
99
99
|
referencePosition: a({
|
|
@@ -103,20 +103,20 @@ function Ie(e, t) {
|
|
|
103
103
|
actionPosition: a(t.position)
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function Fe(e, t, n) {
|
|
107
107
|
if (t.length < 2) return null;
|
|
108
|
-
let r =
|
|
109
|
-
if (
|
|
108
|
+
let r = be(e), i = r.output, a = (e) => ge(r, [e])[0].position, o = c(new E(i)), s = o.flatMap(N);
|
|
109
|
+
if (s.length !== t.length || s.length < 2) return null;
|
|
110
110
|
let l = de(i);
|
|
111
|
-
if (l.length > 0) return n?.kind !== "replace_portion" || l.length !==
|
|
112
|
-
let n =
|
|
113
|
-
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !
|
|
114
|
-
}) ? null :
|
|
111
|
+
if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== s.length || l.some((e, t) => {
|
|
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 || !ie(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
|
|
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: ie(r.reference),
|
|
120
120
|
tableTarget: {
|
|
121
121
|
type: "table",
|
|
122
122
|
rowIndex: l[i].rowIndex,
|
|
@@ -132,12 +132,12 @@ function Le(e, t, n) {
|
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
134
|
}));
|
|
135
|
-
let u =
|
|
136
|
-
if (u.length > 0 && u.length <
|
|
137
|
-
let n =
|
|
135
|
+
let u = s.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
|
|
136
|
+
if (u.length > 0 && u.length < s.length) {
|
|
137
|
+
let n = s.filter((e) => !u.includes(e));
|
|
138
138
|
if (n.length !== 1) return null;
|
|
139
|
-
let r = n[0], o = t[
|
|
140
|
-
return !o ||
|
|
139
|
+
let r = n[0], o = t[s.indexOf(r)], c = v(i);
|
|
140
|
+
return !o || c.length !== 1 || c[0].kind === "compound" ? null : [{
|
|
141
141
|
targetId: o,
|
|
142
142
|
sourceAnnotation: {
|
|
143
143
|
sourceText: e,
|
|
@@ -148,7 +148,7 @@ function Le(e, t, n) {
|
|
|
148
148
|
}
|
|
149
149
|
},
|
|
150
150
|
directive: {
|
|
151
|
-
...
|
|
151
|
+
...c[0],
|
|
152
152
|
reference: r.reference,
|
|
153
153
|
sourcePosition: {
|
|
154
154
|
start: 0,
|
|
@@ -161,17 +161,17 @@ function Le(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" || N(t).length === 0 || o.slice(f, e).flatMap(N).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(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(N);
|
|
170
170
|
if (r.length === 0) {
|
|
171
171
|
m = n + 1;
|
|
172
172
|
continue;
|
|
173
173
|
}
|
|
174
|
-
let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l =
|
|
174
|
+
let s = m === 0 ? 0 : o[m].position.start, c = o[n + 1]?.position.start ?? i.length, l = v(i.slice(s, c));
|
|
175
175
|
if (l.length !== 1 || l[0].kind === "compound") return null;
|
|
176
176
|
let u = l[0];
|
|
177
177
|
for (let n of r) {
|
|
@@ -195,7 +195,7 @@ function Le(e, t, n) {
|
|
|
195
195
|
stop: i.length
|
|
196
196
|
},
|
|
197
197
|
reference: n.reference,
|
|
198
|
-
portionSelectors:
|
|
198
|
+
portionSelectors: ie(n.reference)
|
|
199
199
|
}
|
|
200
200
|
});
|
|
201
201
|
}
|
|
@@ -203,46 +203,46 @@ function Le(e, t, n) {
|
|
|
203
203
|
}
|
|
204
204
|
return h === t.length ? p : null;
|
|
205
205
|
}
|
|
206
|
-
var
|
|
206
|
+
var Ie = me("dans sa rédaction", O([O([k("dans sa rédaction ", { flags: "i" }), T(k("issue ", { flags: "i" }), k("résultante ", { flags: "i" }), k("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), T(O([k("de l'", { flags: "i" }), g], { value: (e) => e[1] }), fe)], { 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
|
|
212
|
-
if (
|
|
213
|
-
let e = [...
|
|
209
|
+
function Le(e) {
|
|
210
|
+
let t = be(e), r = [];
|
|
211
|
+
for (let e of Ie.extract(new E(t.output), { jumpExact: !0 })) for (let i of n(e)) {
|
|
212
|
+
if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
|
|
213
|
+
let e = [...pe(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
|
|
214
214
|
if (e.length === 1) {
|
|
215
|
-
|
|
215
|
+
r.push(ge(t, [e[0].position])[0].position);
|
|
216
216
|
break;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
|
-
return
|
|
219
|
+
return r;
|
|
220
220
|
}
|
|
221
221
|
//#endregion
|
|
222
222
|
//#region src/lib/server/parsed_bills.ts
|
|
223
|
-
var
|
|
224
|
-
function
|
|
223
|
+
var Re = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
224
|
+
function P(e) {
|
|
225
225
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
return
|
|
227
|
+
function F(e) {
|
|
228
|
+
return P(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
229
229
|
}
|
|
230
|
-
function
|
|
231
|
-
return
|
|
230
|
+
function ze(e) {
|
|
231
|
+
return s(P(e));
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
return `_TocArt${
|
|
233
|
+
function I(e) {
|
|
234
|
+
return `_TocArt${ze(e).replace(/\s+/gu, "")}`;
|
|
235
235
|
}
|
|
236
|
-
function
|
|
236
|
+
function Be(e, t) {
|
|
237
237
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
238
238
|
}
|
|
239
|
-
function
|
|
240
|
-
return
|
|
239
|
+
function Ve(e) {
|
|
240
|
+
return F(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
241
241
|
}
|
|
242
|
-
function
|
|
243
|
-
return
|
|
242
|
+
function He(e) {
|
|
243
|
+
return Ve(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
244
244
|
}
|
|
245
|
-
function
|
|
245
|
+
function Ue(e) {
|
|
246
246
|
switch (e.kind) {
|
|
247
247
|
case "insert_after":
|
|
248
248
|
case "insert_before": return e.insertText;
|
|
@@ -260,12 +260,12 @@ function Ge(e) {
|
|
|
260
260
|
default: return;
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
let t =
|
|
265
|
-
if (n?.[1] !== void 0) return
|
|
263
|
+
function We(e) {
|
|
264
|
+
let t = P(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
|
+
if (n?.[1] !== void 0) return a(n[1]);
|
|
266
266
|
}
|
|
267
|
-
function
|
|
268
|
-
let t =
|
|
267
|
+
function Ge(e) {
|
|
268
|
+
let t = Ue(e), n = h(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 qe(e) {
|
|
|
273
273
|
text: o
|
|
274
274
|
};
|
|
275
275
|
});
|
|
276
|
-
let r =
|
|
276
|
+
let r = We(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 Ke(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) Ke(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)) Ke(e, t);
|
|
292
292
|
return t;
|
|
293
293
|
}
|
|
294
|
-
function
|
|
295
|
-
let t =
|
|
294
|
+
function qe(e) {
|
|
295
|
+
let t = F(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 Je(e) {
|
|
299
|
+
return P(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
300
300
|
}
|
|
301
|
-
function
|
|
302
|
-
let n = new
|
|
301
|
+
function Ye(e, t) {
|
|
302
|
+
let n = new E(e, t), r = Ee(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 Xe(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 : Ye(e, r);
|
|
314
314
|
}
|
|
315
|
-
function
|
|
315
|
+
function Ze(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 = Xe(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 = Xe(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 $e(e) {
|
|
|
332
332
|
}
|
|
333
333
|
return i;
|
|
334
334
|
}
|
|
335
|
-
function
|
|
336
|
-
let t =
|
|
335
|
+
function Qe(e) {
|
|
336
|
+
let t = Ze(Je(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 $e(e) {
|
|
340
|
+
return F(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
341
341
|
}
|
|
342
|
-
function
|
|
342
|
+
function L(e) {
|
|
343
343
|
return e?.type === "tag";
|
|
344
344
|
}
|
|
345
|
-
function
|
|
345
|
+
function et(e, t) {
|
|
346
346
|
return e.html(t) ?? "";
|
|
347
347
|
}
|
|
348
|
-
function
|
|
348
|
+
function tt(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 rt(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 = P(e(i).text());
|
|
357
357
|
n.push({
|
|
358
358
|
id: c,
|
|
359
|
-
...
|
|
359
|
+
...nt(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 nt(e, t, n) {
|
|
367
|
+
let r = rt(e, t, n);
|
|
368
368
|
return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function rt(e, t, n) {
|
|
371
371
|
if (t === n) return "";
|
|
372
372
|
if (t.type === "text") return t.data ?? "";
|
|
373
|
-
if (!
|
|
373
|
+
if (!L(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 (L(i) && e.contains(i, n)) return r + rt(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 it(e, t) {
|
|
383
|
+
return t.map((t) => P(e(t).text())).filter(Boolean).join("\n");
|
|
384
384
|
}
|
|
385
|
-
function
|
|
386
|
-
let t =
|
|
387
|
-
return !t ||
|
|
385
|
+
function at(e) {
|
|
386
|
+
let t = F(e);
|
|
387
|
+
return !t || Re.test(t) ? "noise" : d.test(e) ? "directive_candidate" : "context";
|
|
388
388
|
}
|
|
389
|
-
async function
|
|
389
|
+
async function ot(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 re(t.canutesDb), { output: i } = await ne({
|
|
393
393
|
date: n,
|
|
394
394
|
html: e,
|
|
395
395
|
includeInternalArticleLinks: t.includeInternalArticleLinks,
|
|
@@ -402,13 +402,13 @@ async function ct(e, t, n) {
|
|
|
402
402
|
});
|
|
403
403
|
return i ?? e;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
405
|
+
function st(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 L(r) && L(n) && e(n).parents("table").get(0) === r ? r : L(n) ? n : t;
|
|
408
408
|
}
|
|
409
|
-
function
|
|
409
|
+
function ct(e, t, n, r) {
|
|
410
410
|
if (t.has(r.container)) return;
|
|
411
|
-
let i = r.id ??
|
|
411
|
+
let i = r.id ?? I(r.num ?? r.label);
|
|
412
412
|
n.has(i) || (n.add(i), t.add(r.container), e.push({
|
|
413
413
|
id: i,
|
|
414
414
|
label: r.label,
|
|
@@ -418,63 +418,63 @@ function ut(e, t, n, r) {
|
|
|
418
418
|
container: r.container
|
|
419
419
|
}));
|
|
420
420
|
}
|
|
421
|
-
function
|
|
421
|
+
function lt(e) {
|
|
422
422
|
let t = /* @__PURE__ */ new Map();
|
|
423
423
|
return e("body *").each((e, n) => {
|
|
424
424
|
t.set(n, e);
|
|
425
425
|
}), t;
|
|
426
426
|
}
|
|
427
|
-
function
|
|
427
|
+
function R(e, t) {
|
|
428
428
|
return e.get(t) ?? 2 ** 53 - 1;
|
|
429
429
|
}
|
|
430
|
-
function
|
|
430
|
+
function ut(e) {
|
|
431
431
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
432
|
-
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((
|
|
433
|
-
if (
|
|
434
|
-
let
|
|
435
|
-
if (!
|
|
436
|
-
let
|
|
437
|
-
if (!
|
|
438
|
-
let
|
|
439
|
-
|
|
440
|
-
id:
|
|
441
|
-
...
|
|
442
|
-
element:
|
|
443
|
-
container:
|
|
432
|
+
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
433
|
+
if (Be(e, a)) return;
|
|
434
|
+
let o = f(P(e(a).text()));
|
|
435
|
+
if (!o) return;
|
|
436
|
+
let s = e(a).attr("id");
|
|
437
|
+
if (!s || r.has(s)) return;
|
|
438
|
+
let c = st(e, a);
|
|
439
|
+
ct(t, n, r, {
|
|
440
|
+
id: s,
|
|
441
|
+
...o,
|
|
442
|
+
element: a,
|
|
443
|
+
container: c
|
|
444
444
|
});
|
|
445
|
-
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((
|
|
446
|
-
if (n.has(
|
|
447
|
-
let
|
|
448
|
-
|
|
449
|
-
...
|
|
450
|
-
element:
|
|
451
|
-
container:
|
|
445
|
+
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
446
|
+
if (n.has(a)) return;
|
|
447
|
+
let o = f(P(e(a).text()));
|
|
448
|
+
o && ct(t, n, r, {
|
|
449
|
+
...o,
|
|
450
|
+
element: a,
|
|
451
|
+
container: a
|
|
452
452
|
});
|
|
453
453
|
});
|
|
454
|
-
let
|
|
455
|
-
return t.sort((e, t) =>
|
|
454
|
+
let i = lt(e);
|
|
455
|
+
return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
|
|
456
456
|
}
|
|
457
|
-
function
|
|
458
|
-
if (
|
|
457
|
+
function dt(e, t) {
|
|
458
|
+
if (Be(e, t)) return !1;
|
|
459
459
|
let n = t.tagName?.toLowerCase();
|
|
460
460
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
461
461
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
462
462
|
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));
|
|
463
463
|
}
|
|
464
|
-
function
|
|
464
|
+
function ft(e) {
|
|
465
465
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
466
|
-
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((
|
|
467
|
-
if (
|
|
468
|
-
let
|
|
469
|
-
|
|
470
|
-
...
|
|
471
|
-
element:
|
|
472
|
-
container:
|
|
466
|
+
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
467
|
+
if (Be(e, a) || !e(a).hasClass("assnat9ArticleNum") && !dt(e, a)) return;
|
|
468
|
+
let o = f(e(a).text());
|
|
469
|
+
o && ct(t, n, r, {
|
|
470
|
+
...o,
|
|
471
|
+
element: a,
|
|
472
|
+
container: a
|
|
473
473
|
});
|
|
474
474
|
}), t;
|
|
475
475
|
}
|
|
476
|
-
function
|
|
477
|
-
let t =
|
|
476
|
+
function pt(e) {
|
|
477
|
+
let t = ze(e ?? "").replace(/[()]/gu, "").trim();
|
|
478
478
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
479
479
|
if (t.toLowerCase() === "unique") return {
|
|
480
480
|
base: 1,
|
|
@@ -483,7 +483,7 @@ function mt(e) {
|
|
|
483
483
|
};
|
|
484
484
|
let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
|
|
485
485
|
if (!n) return;
|
|
486
|
-
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 :
|
|
486
|
+
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ht(i);
|
|
487
487
|
if (a !== void 0) return {
|
|
488
488
|
base: r,
|
|
489
489
|
suffixOrder: a,
|
|
@@ -491,7 +491,7 @@ function mt(e) {
|
|
|
491
491
|
text: t
|
|
492
492
|
};
|
|
493
493
|
}
|
|
494
|
-
function
|
|
494
|
+
function mt(e, t) {
|
|
495
495
|
if (t.base !== e.base) return t.base - e.base;
|
|
496
496
|
if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
|
|
497
497
|
for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
|
|
@@ -500,14 +500,14 @@ function ht(e, t) {
|
|
|
500
500
|
}
|
|
501
501
|
return 0;
|
|
502
502
|
}
|
|
503
|
-
function
|
|
504
|
-
let t = new
|
|
503
|
+
function ht(e) {
|
|
504
|
+
let t = new E(e), n = xe(t);
|
|
505
505
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
506
506
|
}
|
|
507
|
-
function
|
|
507
|
+
function gt(e) {
|
|
508
508
|
let t = [], n = e.map((e) => ({
|
|
509
509
|
heading: e,
|
|
510
|
-
token:
|
|
510
|
+
token: pt(e.num)
|
|
511
511
|
}));
|
|
512
512
|
n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
|
|
513
513
|
code: "article_toc_out_of_order",
|
|
@@ -516,7 +516,7 @@ function _t(e) {
|
|
|
516
516
|
let r;
|
|
517
517
|
for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
|
|
518
518
|
if (r !== void 0) {
|
|
519
|
-
let n =
|
|
519
|
+
let n = mt(r, i);
|
|
520
520
|
n === 0 ? t.push({
|
|
521
521
|
code: "article_toc_duplicate_number",
|
|
522
522
|
message: `Article ${e.num ?? e.label} is repeated`,
|
|
@@ -545,60 +545,60 @@ function _t(e) {
|
|
|
545
545
|
}
|
|
546
546
|
return t;
|
|
547
547
|
}
|
|
548
|
-
function
|
|
549
|
-
let t =
|
|
548
|
+
function _t(e) {
|
|
549
|
+
let t = gt(e);
|
|
550
550
|
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) });
|
|
551
551
|
}
|
|
552
|
-
function
|
|
553
|
-
let n =
|
|
554
|
-
if (n.length === 0) return t &&
|
|
555
|
-
let i =
|
|
556
|
-
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) =>
|
|
552
|
+
function vt(e, { warn: t = !0 } = {}) {
|
|
553
|
+
let n = ut(e), r = ft(e);
|
|
554
|
+
if (n.length === 0) return t && _t(r), r;
|
|
555
|
+
let i = lt(e), a = (e, t) => {
|
|
556
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => I(e.num ?? e.label)));
|
|
557
557
|
for (let i of t) {
|
|
558
|
-
let t =
|
|
558
|
+
let t = I(i.num ?? i.label);
|
|
559
559
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
560
560
|
}
|
|
561
|
-
return e.sort((e, t) =>
|
|
562
|
-
}, 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 &&
|
|
563
|
-
return t &&
|
|
561
|
+
return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
|
|
562
|
+
}, 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;
|
|
563
|
+
return t && _t(l), l;
|
|
564
564
|
}
|
|
565
|
-
function
|
|
565
|
+
function yt(e) {
|
|
566
566
|
let t = e.next;
|
|
567
567
|
for (; t !== null;) {
|
|
568
|
-
if (
|
|
568
|
+
if (L(t)) return t;
|
|
569
569
|
t = t.next;
|
|
570
570
|
}
|
|
571
571
|
return null;
|
|
572
572
|
}
|
|
573
|
-
function
|
|
573
|
+
function bt(e, t, n) {
|
|
574
574
|
let r = e(t.container);
|
|
575
575
|
if (!r.is("p.assnat9ArticleNum")) return;
|
|
576
|
-
let
|
|
577
|
-
if (!
|
|
578
|
-
let
|
|
579
|
-
if (
|
|
580
|
-
let
|
|
581
|
-
if (
|
|
582
|
-
let
|
|
583
|
-
if (!(
|
|
576
|
+
let i = r.parent(), a = i.parent();
|
|
577
|
+
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
578
|
+
let o = a.children().get();
|
|
579
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || P(e(o[1]).text()) !== "") return;
|
|
580
|
+
let s = o.length === 4 ? o[2] : void 0;
|
|
581
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(P(e(s).text())))) return;
|
|
582
|
+
let c = o.at(-1);
|
|
583
|
+
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) => f(e(t).text()) !== null))) return [
|
|
584
584
|
t.container,
|
|
585
|
-
...
|
|
586
|
-
|
|
585
|
+
...s === void 0 ? [] : [s],
|
|
586
|
+
c
|
|
587
587
|
];
|
|
588
588
|
}
|
|
589
|
-
function
|
|
589
|
+
function xt(e, t, n, r = lt(e)) {
|
|
590
590
|
let i = [t.container], a = n?.container;
|
|
591
|
-
for (let e =
|
|
591
|
+
for (let e = yt(t.container); e !== null && e !== a; e = yt(e)) i.push(e);
|
|
592
592
|
if (i.length > 1) return i;
|
|
593
|
-
let o =
|
|
593
|
+
let o = bt(e, t, n);
|
|
594
594
|
if (o !== void 0) return o;
|
|
595
|
-
let s =
|
|
595
|
+
let s = R(r, t.container), c = a ? R(r, a) : -1;
|
|
596
596
|
return e("body > *").get().filter((e) => {
|
|
597
|
-
let t =
|
|
597
|
+
let t = R(r, e);
|
|
598
598
|
return t >= s && (c === -1 || t < c);
|
|
599
599
|
});
|
|
600
600
|
}
|
|
601
|
-
function
|
|
601
|
+
function St(e, t) {
|
|
602
602
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
603
603
|
for (let i of t) {
|
|
604
604
|
let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
|
|
@@ -606,97 +606,97 @@ function Ct(e, t) {
|
|
|
606
606
|
}
|
|
607
607
|
return n;
|
|
608
608
|
}
|
|
609
|
-
function
|
|
609
|
+
function Ct(e, t, n) {
|
|
610
610
|
let r = [], i = !1;
|
|
611
|
-
for (let a of
|
|
612
|
-
let n = e(a).is("table.akn-quoted-table") ?
|
|
611
|
+
for (let a of St(e, n)) {
|
|
612
|
+
let n = e(a).is("table.akn-quoted-table") ? dn(e, a) : P(e(a).text());
|
|
613
613
|
if (!n) continue;
|
|
614
|
-
|
|
615
|
-
let o = i ? "noise" :
|
|
614
|
+
Re.test(n) && (i = !0);
|
|
615
|
+
let o = i ? "noise" : at(n), s = `${t}-b${r.length + 1}`;
|
|
616
616
|
e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
|
|
617
617
|
id: s,
|
|
618
618
|
articleId: t,
|
|
619
619
|
kind: o,
|
|
620
|
-
links:
|
|
620
|
+
links: tt(e, a),
|
|
621
621
|
text: n,
|
|
622
|
-
html:
|
|
622
|
+
html: et(e, a)
|
|
623
623
|
});
|
|
624
624
|
}
|
|
625
625
|
return r;
|
|
626
626
|
}
|
|
627
|
-
function
|
|
627
|
+
function wt(e, t) {
|
|
628
628
|
if (t.length === 0) return e;
|
|
629
629
|
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>`;
|
|
630
630
|
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}`;
|
|
631
631
|
}
|
|
632
|
-
function
|
|
633
|
-
let t =
|
|
634
|
-
for (let e of
|
|
635
|
-
let r =
|
|
632
|
+
function Tt(e) {
|
|
633
|
+
let t = w(e), n = Et(t);
|
|
634
|
+
for (let e of vt(t, { warn: !1 })) {
|
|
635
|
+
let r = I(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
636
636
|
if (a !== r) {
|
|
637
|
-
if (a?.startsWith("_Toc") && !
|
|
637
|
+
if (a?.startsWith("_Toc") && !Ot(n, a, e.element)) {
|
|
638
638
|
let e = t("<span></span>").attr("id", a);
|
|
639
639
|
i.before(e);
|
|
640
640
|
let r = e.get(0);
|
|
641
|
-
|
|
641
|
+
L(r) && z(n, a, r);
|
|
642
642
|
}
|
|
643
|
-
a &&
|
|
643
|
+
a && Dt(n, a, e.element), i.attr("id", r), z(n, r, e.element);
|
|
644
644
|
}
|
|
645
645
|
}
|
|
646
|
-
let r =
|
|
646
|
+
let r = vt(t), i = lt(t);
|
|
647
647
|
for (let [e, a] of r.entries()) {
|
|
648
|
-
let o =
|
|
648
|
+
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());
|
|
649
649
|
for (let e of o) {
|
|
650
650
|
let r = t(e).attr("data-alinea")?.trim();
|
|
651
651
|
if (!r) continue;
|
|
652
652
|
let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
|
|
653
|
-
if (
|
|
653
|
+
if (Ot(n, i, e)) continue;
|
|
654
654
|
let o = t(e).attr("id");
|
|
655
655
|
if (o && o !== i) {
|
|
656
656
|
let r = t("<span></span>").attr("id", i);
|
|
657
657
|
t(e).before(r);
|
|
658
658
|
let a = r.get(0);
|
|
659
|
-
|
|
660
|
-
} else o &&
|
|
659
|
+
L(a) && z(n, i, a);
|
|
660
|
+
} else o && Dt(n, o, e), t(e).attr("id", i), z(n, i, e);
|
|
661
661
|
}
|
|
662
662
|
}
|
|
663
663
|
return t.html();
|
|
664
664
|
}
|
|
665
|
-
function
|
|
665
|
+
function Et(e) {
|
|
666
666
|
let t = /* @__PURE__ */ new Map();
|
|
667
667
|
for (let n of e("[id]").get()) {
|
|
668
668
|
let r = e(n).attr("id");
|
|
669
|
-
r &&
|
|
669
|
+
r && z(t, r, n);
|
|
670
670
|
}
|
|
671
671
|
return t;
|
|
672
672
|
}
|
|
673
|
-
function
|
|
673
|
+
function z(e, t, n) {
|
|
674
674
|
let r = e.get(t);
|
|
675
675
|
r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
|
|
676
676
|
}
|
|
677
|
-
function
|
|
677
|
+
function Dt(e, t, n) {
|
|
678
678
|
let r = e.get(t);
|
|
679
679
|
r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
|
|
680
680
|
}
|
|
681
|
-
function
|
|
681
|
+
function Ot(e, t, n) {
|
|
682
682
|
for (let r of e.get(t) ?? []) if (r !== n) return !0;
|
|
683
683
|
return !1;
|
|
684
684
|
}
|
|
685
|
-
function
|
|
686
|
-
let n =
|
|
685
|
+
function kt(e, t) {
|
|
686
|
+
let n = $e("sourceText" in t ? t.sourceText : "");
|
|
687
687
|
if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
|
|
688
|
-
let t =
|
|
688
|
+
let t = $e(e.text);
|
|
689
689
|
return t.length > 0 && (n.includes(t) || t.includes(n));
|
|
690
690
|
});
|
|
691
691
|
}
|
|
692
|
-
function
|
|
692
|
+
function At(e, t) {
|
|
693
693
|
if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
|
|
694
694
|
}
|
|
695
|
-
function
|
|
695
|
+
function jt(e) {
|
|
696
696
|
return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
|
|
697
697
|
}
|
|
698
|
-
function
|
|
699
|
-
let t =
|
|
698
|
+
function Mt(e) {
|
|
699
|
+
let t = Le(e.text);
|
|
700
700
|
if (t.length !== 1) return;
|
|
701
701
|
let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
|
|
702
702
|
let r = n.text ?? "", i = e.text.indexOf(r);
|
|
@@ -710,13 +710,13 @@ function Nt(e) {
|
|
|
710
710
|
modifyingArticleLabel: i.text ?? ""
|
|
711
711
|
};
|
|
712
712
|
}
|
|
713
|
-
function
|
|
714
|
-
let n =
|
|
713
|
+
function Nt(e, t) {
|
|
714
|
+
let n = P(e);
|
|
715
715
|
if (!n) return;
|
|
716
|
-
let r =
|
|
716
|
+
let r = oe(n);
|
|
717
717
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
718
718
|
}
|
|
719
|
-
function
|
|
719
|
+
function Pt(e) {
|
|
720
720
|
let t = /* @__PURE__ */ new Map(), n = [], r = te(e.map((e) => e.text)), i = -1;
|
|
721
721
|
for (let [a, o] of e.entries()) {
|
|
722
722
|
let e = r.get(a);
|
|
@@ -724,7 +724,7 @@ function Ft(e) {
|
|
|
724
724
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
725
725
|
continue;
|
|
726
726
|
}
|
|
727
|
-
let s =
|
|
727
|
+
let s = Nt(o.text, n.at(-1)?.level);
|
|
728
728
|
if (s === void 0) {
|
|
729
729
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
730
730
|
continue;
|
|
@@ -737,14 +737,14 @@ function Ft(e) {
|
|
|
737
737
|
}
|
|
738
738
|
return t;
|
|
739
739
|
}
|
|
740
|
-
function
|
|
740
|
+
function Ft(e, t) {
|
|
741
741
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
742
742
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
743
743
|
return n;
|
|
744
744
|
}
|
|
745
|
-
function
|
|
745
|
+
function It(e, t, n) {
|
|
746
746
|
if (!t) return;
|
|
747
|
-
let r =
|
|
747
|
+
let r = Ft(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
748
748
|
if (r.length === 0) return;
|
|
749
749
|
let i = r.map((e) => e.id);
|
|
750
750
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -759,7 +759,7 @@ function Lt(e, t, n) {
|
|
|
759
759
|
}
|
|
760
760
|
};
|
|
761
761
|
}
|
|
762
|
-
function
|
|
762
|
+
function Lt(e) {
|
|
763
763
|
let t = [], n = 0;
|
|
764
764
|
for (let r of e.blocks) {
|
|
765
765
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -773,7 +773,7 @@ function Rt(e) {
|
|
|
773
773
|
}
|
|
774
774
|
return t;
|
|
775
775
|
}
|
|
776
|
-
function
|
|
776
|
+
function Rt(e, t, n) {
|
|
777
777
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
778
778
|
if (a.length === 0) return;
|
|
779
779
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -787,7 +787,7 @@ function zt(e, t, n) {
|
|
|
787
787
|
}
|
|
788
788
|
};
|
|
789
789
|
}
|
|
790
|
-
function
|
|
790
|
+
function zt(e, t, n) {
|
|
791
791
|
if (!t) return;
|
|
792
792
|
let r = e.directiveText.indexOf(t.text);
|
|
793
793
|
if (r === -1) return;
|
|
@@ -800,15 +800,15 @@ function Bt(e, t, n) {
|
|
|
800
800
|
stop: a
|
|
801
801
|
};
|
|
802
802
|
}
|
|
803
|
-
function
|
|
804
|
-
let n = performance.now(), r = performance.now(), i =
|
|
803
|
+
function Bt(e, t) {
|
|
804
|
+
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;
|
|
805
805
|
for (let t of e.blocks) {
|
|
806
|
-
t.qualifiedVersion =
|
|
807
|
-
let e =
|
|
806
|
+
t.qualifiedVersion = Mt(t);
|
|
807
|
+
let e = jt(t);
|
|
808
808
|
(e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
|
|
809
809
|
}
|
|
810
810
|
let p = performance.now() - o, m = performance.now(), h = x(), g = le(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
|
|
811
|
-
let n =
|
|
811
|
+
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);
|
|
812
812
|
return {
|
|
813
813
|
articleId: e.id,
|
|
814
814
|
blockId: r?.id,
|
|
@@ -832,8 +832,8 @@ function Vt(e, t) {
|
|
|
832
832
|
if (!t) return [e];
|
|
833
833
|
if (b.has(t.id)) return [];
|
|
834
834
|
let n = S.get(t.id);
|
|
835
|
-
if (n === void 0 && (n =
|
|
836
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
835
|
+
if (n === void 0 && (n = Fe(t.text, jt(t), e.directive), S.set(t.id, n)), !n) {
|
|
836
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Pe(t.text, n.operations.length) : null;
|
|
837
837
|
return [r ? {
|
|
838
838
|
...e,
|
|
839
839
|
sourceAnnotations: r
|
|
@@ -864,13 +864,13 @@ function Vt(e, t) {
|
|
|
864
864
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
865
865
|
}), C;
|
|
866
866
|
}
|
|
867
|
-
function
|
|
867
|
+
function Vt(e) {
|
|
868
868
|
let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
|
|
869
869
|
for (let i of e) {
|
|
870
|
-
let e =
|
|
870
|
+
let e = Ge(i.directive);
|
|
871
871
|
if (e.length === 0) continue;
|
|
872
872
|
let a = e.map(({ num: e }) => ({
|
|
873
|
-
definitionId: `${i.articleId}:article:${
|
|
873
|
+
definitionId: `${i.articleId}:article:${He(e)}`,
|
|
874
874
|
num: e
|
|
875
875
|
}));
|
|
876
876
|
t.set(i, a);
|
|
@@ -893,13 +893,13 @@ function Ht(e) {
|
|
|
893
893
|
definitions: n
|
|
894
894
|
};
|
|
895
895
|
}
|
|
896
|
-
function
|
|
897
|
-
let r = new Map(t.map((e) => [
|
|
896
|
+
function Ht(e, t, n) {
|
|
897
|
+
let r = new Map(t.map((e) => [Ve(e.num), e]));
|
|
898
898
|
return e.map((e) => {
|
|
899
|
-
let t = n.get(e), i = t?.[0], a = [...
|
|
899
|
+
let t = n.get(e), i = t?.[0], a = [...Ke(e.directive.reference)].map((e) => r.get(Ve(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
|
|
900
900
|
definitionId: a.definitionId,
|
|
901
901
|
num: a.num
|
|
902
|
-
}, s =
|
|
902
|
+
}, s = qe(e.directive), c = (e.targetIds?.length ?? 0) > 0;
|
|
903
903
|
return {
|
|
904
904
|
...e,
|
|
905
905
|
...i === void 0 ? {} : { createdArticle: i },
|
|
@@ -912,7 +912,7 @@ function Ut(e, t, n) {
|
|
|
912
912
|
};
|
|
913
913
|
});
|
|
914
914
|
}
|
|
915
|
-
function
|
|
915
|
+
function Ut(e) {
|
|
916
916
|
switch (e.kind) {
|
|
917
917
|
case "insert_after":
|
|
918
918
|
case "insert_before": return [e.insertText];
|
|
@@ -930,8 +930,8 @@ function Wt(e) {
|
|
|
930
930
|
default: return [];
|
|
931
931
|
}
|
|
932
932
|
}
|
|
933
|
-
function
|
|
934
|
-
return e.flatMap((e) =>
|
|
933
|
+
function Wt(e) {
|
|
934
|
+
return e.flatMap((e) => Ut(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
935
935
|
code: "nested_french_quote_in_redaction",
|
|
936
936
|
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.",
|
|
937
937
|
details: {
|
|
@@ -943,18 +943,18 @@ function Gt(e) {
|
|
|
943
943
|
}
|
|
944
944
|
})));
|
|
945
945
|
}
|
|
946
|
-
function
|
|
947
|
-
return
|
|
946
|
+
function Gt(e) {
|
|
947
|
+
return Ut(e).map((t) => ({
|
|
948
948
|
directiveKind: e.kind,
|
|
949
949
|
text: t
|
|
950
950
|
}));
|
|
951
951
|
}
|
|
952
|
-
function
|
|
952
|
+
function Kt(e) {
|
|
953
953
|
let t = /* @__PURE__ */ new Set();
|
|
954
954
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
955
955
|
return Array.from(t);
|
|
956
956
|
}
|
|
957
|
-
function
|
|
957
|
+
function qt(e, t) {
|
|
958
958
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
959
959
|
for (let e of r) {
|
|
960
960
|
let t = n.get(e);
|
|
@@ -966,11 +966,11 @@ function Jt(e, t) {
|
|
|
966
966
|
}
|
|
967
967
|
return i;
|
|
968
968
|
}
|
|
969
|
-
function
|
|
969
|
+
function Jt(e, t, n) {
|
|
970
970
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
971
971
|
}
|
|
972
|
-
function
|
|
973
|
-
let r =
|
|
972
|
+
function Yt(e, t, n) {
|
|
973
|
+
let r = Kt(n), i = r.flatMap((t) => {
|
|
974
974
|
for (let n of e.blocks) {
|
|
975
975
|
let e = n.text.indexOf(t);
|
|
976
976
|
if (e !== -1) return [{
|
|
@@ -989,7 +989,7 @@ function Xt(e, t, n) {
|
|
|
989
989
|
e.directiveText
|
|
990
990
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
991
991
|
if (!o) return [];
|
|
992
|
-
let s =
|
|
992
|
+
let s = qt(e, t);
|
|
993
993
|
if (s.length === 0) return [];
|
|
994
994
|
let c = [], l = 0;
|
|
995
995
|
for (let e of r) {
|
|
@@ -997,7 +997,7 @@ function Xt(e, t, n) {
|
|
|
997
997
|
if (t === -1) continue;
|
|
998
998
|
let n = t + e.length;
|
|
999
999
|
l = n;
|
|
1000
|
-
let r =
|
|
1000
|
+
let r = Jt(s, t, n);
|
|
1001
1001
|
r && c.push({
|
|
1002
1002
|
blockId: r.block.id,
|
|
1003
1003
|
start: t - r.start,
|
|
@@ -1007,15 +1007,15 @@ function Xt(e, t, n) {
|
|
|
1007
1007
|
}
|
|
1008
1008
|
return c;
|
|
1009
1009
|
}
|
|
1010
|
-
function
|
|
1010
|
+
function Xt(e, t) {
|
|
1011
1011
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
1012
1012
|
return t.flatMap((e) => {
|
|
1013
1013
|
let t = n.get(e.articleId);
|
|
1014
|
-
return t ?
|
|
1014
|
+
return t ? Gt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
1015
1015
|
articleId: e.articleId,
|
|
1016
1016
|
code: "nested_french_quote_in_redaction",
|
|
1017
1017
|
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.",
|
|
1018
|
-
ranges:
|
|
1018
|
+
ranges: Yt(t, e, r),
|
|
1019
1019
|
severity: "warning",
|
|
1020
1020
|
details: {
|
|
1021
1021
|
blockId: e.blockId,
|
|
@@ -1026,7 +1026,7 @@ function Zt(e, t) {
|
|
|
1026
1026
|
})) : [];
|
|
1027
1027
|
});
|
|
1028
1028
|
}
|
|
1029
|
-
function
|
|
1029
|
+
function Zt(e, t) {
|
|
1030
1030
|
let n = new Map(e.flatMap((e) => [...te(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
1031
1031
|
articleId: e.id,
|
|
1032
1032
|
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
@@ -1049,13 +1049,13 @@ function Qt(e, t) {
|
|
|
1049
1049
|
}];
|
|
1050
1050
|
});
|
|
1051
1051
|
}
|
|
1052
|
-
function
|
|
1053
|
-
let c = new
|
|
1052
|
+
function Qt(e, t, n, r, i, a, o = !0, s) {
|
|
1053
|
+
let c = new Ce("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 = {
|
|
1054
1054
|
sourceFormat: e,
|
|
1055
1055
|
documentDate: r,
|
|
1056
1056
|
html: t,
|
|
1057
1057
|
htmlWithLinks: n,
|
|
1058
|
-
tableOfContents: a ?? c.timeSync("extractTableOfContents", () =>
|
|
1058
|
+
tableOfContents: a ?? c.timeSync("extractTableOfContents", () => y(u), { inputSize: u.length }),
|
|
1059
1059
|
articles: i
|
|
1060
1060
|
};
|
|
1061
1061
|
if (!o) {
|
|
@@ -1071,14 +1071,14 @@ function $t(e, t, n, r, i, a, o = !0, s) {
|
|
|
1071
1071
|
directiveTextSize: u.length
|
|
1072
1072
|
}), e;
|
|
1073
1073
|
}
|
|
1074
|
-
let f = c.timeSync("extractGlobalApplicabilityDate", () =>
|
|
1074
|
+
let f = c.timeSync("extractGlobalApplicabilityDate", () => Qe(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
1075
1075
|
let e = [];
|
|
1076
1076
|
for (let t of i) {
|
|
1077
|
-
let n =
|
|
1077
|
+
let n = Bt(t, c.enabled ? p : void 0);
|
|
1078
1078
|
e.push(...n);
|
|
1079
1079
|
}
|
|
1080
1080
|
return e;
|
|
1081
|
-
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () =>
|
|
1081
|
+
}, { 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 }), b = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Xt(i, _), ...Zt(i, _)], { count: _.length }), S = {
|
|
1082
1082
|
...d,
|
|
1083
1083
|
...f ? { globalApplicabilityDate: f } : {},
|
|
1084
1084
|
...g.length > 0 ? { internalArticleDefinitions: g } : {},
|
|
@@ -1172,18 +1172,18 @@ function $t(e, t, n, r, i, a, o = !0, s) {
|
|
|
1172
1172
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1173
1173
|
}), S;
|
|
1174
1174
|
}
|
|
1175
|
-
function
|
|
1175
|
+
function $t(e) {
|
|
1176
1176
|
return { items: e.map((e) => ({
|
|
1177
1177
|
id: e.id,
|
|
1178
1178
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1179
1179
|
type: "article"
|
|
1180
1180
|
})) };
|
|
1181
1181
|
}
|
|
1182
|
-
function
|
|
1183
|
-
return Array.from(ce(e)).filter((e) => e.type === "article").map((e) =>
|
|
1182
|
+
function en(e) {
|
|
1183
|
+
return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => F(e.line.split(/[::]/u)[0]));
|
|
1184
1184
|
}
|
|
1185
|
-
function
|
|
1186
|
-
let i =
|
|
1185
|
+
function tn(e, t, n, r) {
|
|
1186
|
+
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 ? I(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? I(e.label) : e.id), c = o.map((e) => e.id);
|
|
1187
1187
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1188
1188
|
code: "article_toc_source_heading_mismatch",
|
|
1189
1189
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1199,8 +1199,8 @@ function nn(e, t, n, r) {
|
|
|
1199
1199
|
});
|
|
1200
1200
|
return i;
|
|
1201
1201
|
}
|
|
1202
|
-
function
|
|
1203
|
-
let r =
|
|
1202
|
+
function nn(e, t, n) {
|
|
1203
|
+
let r = en(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => F(e.label)), a = $t(e), o = [...n, ...tn(e, a, t, "assemblee-html")];
|
|
1204
1204
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1205
1205
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1206
1206
|
o.push({
|
|
@@ -1224,24 +1224,24 @@ function rn(e, t, n) {
|
|
|
1224
1224
|
tableOfContents: a
|
|
1225
1225
|
};
|
|
1226
1226
|
}
|
|
1227
|
-
async function
|
|
1228
|
-
let n = new
|
|
1227
|
+
async function rn(e, t) {
|
|
1228
|
+
let n = new Ce("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", () => w(i)), o = n.timeSync("extractArticleHeadings", () => vt(a)), s = new Set(o.map((e) => e.id)), c = ft(a).filter((e) => !s.has(I(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1229
1229
|
code: "article_toc_source_heading_mismatch",
|
|
1230
1230
|
message: "Some structural article headings were not retained",
|
|
1231
1231
|
details: { discardedCandidates: c }
|
|
1232
|
-
}] : [], u =
|
|
1233
|
-
let n =
|
|
1232
|
+
}] : [], u = lt(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
|
|
1233
|
+
let n = xt(a, e, o[t + 1], u), r = Ct(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1234
1234
|
return {
|
|
1235
1235
|
id: e.id,
|
|
1236
1236
|
label: e.label,
|
|
1237
1237
|
num: e.num,
|
|
1238
1238
|
title: e.title,
|
|
1239
|
-
text:
|
|
1240
|
-
html: n.map((e) =>
|
|
1239
|
+
text: it(a, n),
|
|
1240
|
+
html: n.map((e) => et(a, e)).join("\n"),
|
|
1241
1241
|
directiveText: i,
|
|
1242
1242
|
blocks: r
|
|
1243
1243
|
};
|
|
1244
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1244
|
+
}), { 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));
|
|
1245
1245
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1246
1246
|
articleCount: h.articles.length,
|
|
1247
1247
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1249,18 +1249,18 @@ async function an(e, t) {
|
|
|
1249
1249
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1250
1250
|
}), h;
|
|
1251
1251
|
}
|
|
1252
|
-
async function
|
|
1252
|
+
async function an(e, t) {
|
|
1253
1253
|
return {
|
|
1254
1254
|
sourceFormat: "assemblee-html",
|
|
1255
1255
|
documentDate: t.date,
|
|
1256
1256
|
html: e,
|
|
1257
|
-
linkedHtml: await
|
|
1257
|
+
linkedHtml: await ot(e, t, t.date)
|
|
1258
1258
|
};
|
|
1259
1259
|
}
|
|
1260
|
-
function
|
|
1260
|
+
function B(e) {
|
|
1261
1261
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1262
1262
|
}
|
|
1263
|
-
function
|
|
1263
|
+
function on(e) {
|
|
1264
1264
|
let t = e;
|
|
1265
1265
|
for (let e = 0; e < 3; e++) {
|
|
1266
1266
|
let e = t;
|
|
@@ -1268,27 +1268,27 @@ function sn(e) {
|
|
|
1268
1268
|
}
|
|
1269
1269
|
return t;
|
|
1270
1270
|
}
|
|
1271
|
-
function
|
|
1271
|
+
function sn(e) {
|
|
1272
1272
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1273
1273
|
}
|
|
1274
|
-
function
|
|
1274
|
+
function V(e) {
|
|
1275
1275
|
return e.name.replace(/^.*:/u, "");
|
|
1276
1276
|
}
|
|
1277
|
-
function
|
|
1278
|
-
return t.children.map((t) =>
|
|
1277
|
+
function cn(e, t) {
|
|
1278
|
+
return t.children.map((t) => H(e, t)).filter(Boolean).join("");
|
|
1279
1279
|
}
|
|
1280
|
-
function
|
|
1281
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1280
|
+
function ln(e, t) {
|
|
1281
|
+
return t.children.map((t) => t.type === "text" && sn(t.data) ? on(t.data) : H(e, t)).filter(Boolean).join("");
|
|
1282
1282
|
}
|
|
1283
|
-
function
|
|
1283
|
+
function H(e, t) {
|
|
1284
1284
|
if (t.type === "text") {
|
|
1285
1285
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1286
|
-
return
|
|
1286
|
+
return sn(e) ? on(e) : B(e);
|
|
1287
1287
|
}
|
|
1288
|
-
if (!
|
|
1289
|
-
let n =
|
|
1288
|
+
if (!L(t)) return "";
|
|
1289
|
+
let n = V(t), r = cn(e, t);
|
|
1290
1290
|
switch (n) {
|
|
1291
|
-
case "p": return `<p${
|
|
1291
|
+
case "p": return `<p${U(e, t, [
|
|
1292
1292
|
"id",
|
|
1293
1293
|
"class",
|
|
1294
1294
|
"align",
|
|
@@ -1302,13 +1302,13 @@ function V(e, t) {
|
|
|
1302
1302
|
case "u":
|
|
1303
1303
|
case "sup":
|
|
1304
1304
|
case "sub":
|
|
1305
|
-
case "abbr": return `<${n}${
|
|
1305
|
+
case "abbr": return `<${n}${U(e, t, [
|
|
1306
1306
|
"id",
|
|
1307
1307
|
"class",
|
|
1308
1308
|
"title",
|
|
1309
1309
|
"style"
|
|
1310
1310
|
])}>${r}</${n}>`;
|
|
1311
|
-
case "a": return `<a href="${
|
|
1311
|
+
case "a": return `<a href="${B(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${U(e, t, [
|
|
1312
1312
|
"id",
|
|
1313
1313
|
"class",
|
|
1314
1314
|
"title",
|
|
@@ -1319,8 +1319,8 @@ function V(e, t) {
|
|
|
1319
1319
|
case "tbody":
|
|
1320
1320
|
case "tr":
|
|
1321
1321
|
case "th":
|
|
1322
|
-
case "td": return
|
|
1323
|
-
case "caption": return `<caption${
|
|
1322
|
+
case "td": return fn(e, t, n, r);
|
|
1323
|
+
case "caption": return `<caption${U(e, t, [
|
|
1324
1324
|
"id",
|
|
1325
1325
|
"class",
|
|
1326
1326
|
"align",
|
|
@@ -1328,12 +1328,12 @@ function V(e, t) {
|
|
|
1328
1328
|
])}>${r}</caption>`;
|
|
1329
1329
|
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1330
1330
|
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1331
|
-
case "content": return
|
|
1332
|
-
case "alinea": return
|
|
1333
|
-
case "article": return
|
|
1331
|
+
case "content": return ln(e, t);
|
|
1332
|
+
case "alinea": return Dn(e, t, "div", "akn-alinea");
|
|
1333
|
+
case "article": return Dn(e, t, "article", "akn-article");
|
|
1334
1334
|
case "blockList":
|
|
1335
1335
|
case "list": return `<div class="akn-list">${r}</div>`;
|
|
1336
|
-
case "item": return
|
|
1336
|
+
case "item": return Dn(e, t, "div", "akn-item");
|
|
1337
1337
|
case "listIntroduction":
|
|
1338
1338
|
case "listWrapUp":
|
|
1339
1339
|
case "intro":
|
|
@@ -1349,12 +1349,12 @@ function V(e, t) {
|
|
|
1349
1349
|
case "book":
|
|
1350
1350
|
case "tome":
|
|
1351
1351
|
case "subchapter":
|
|
1352
|
-
case "subsection": return
|
|
1352
|
+
case "subsection": return Dn(e, t, "section", `akn-${n}`);
|
|
1353
1353
|
case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
|
|
1354
1354
|
default: return r;
|
|
1355
1355
|
}
|
|
1356
1356
|
}
|
|
1357
|
-
function
|
|
1357
|
+
function un(e, t) {
|
|
1358
1358
|
let n = e(t).text();
|
|
1359
1359
|
if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
|
|
1360
1360
|
let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
|
|
@@ -1365,39 +1365,39 @@ function dn(e, t) {
|
|
|
1365
1365
|
let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
|
|
1366
1366
|
if (l) {
|
|
1367
1367
|
let t = Number(e(l).attr("rowspan") ?? "1");
|
|
1368
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 &&
|
|
1368
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && P(e(l).text()) !== "«") return [];
|
|
1369
1369
|
i = t - 1;
|
|
1370
1370
|
}
|
|
1371
1371
|
if (u) {
|
|
1372
1372
|
let t = Number(e(u).attr("rowspan") ?? "1");
|
|
1373
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(
|
|
1373
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(P(e(u).text()))) return [];
|
|
1374
1374
|
a = t - 1;
|
|
1375
1375
|
}
|
|
1376
1376
|
return [l, u];
|
|
1377
1377
|
});
|
|
1378
1378
|
if (o.some((e) => e.length !== 2)) return;
|
|
1379
|
-
let s = o.map(([t]) => t ?
|
|
1379
|
+
let s = o.map(([t]) => t ? P(e(t).text()) : ""), c = o.map(([, t]) => t ? P(e(t).text()) : "");
|
|
1380
1380
|
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("»")))) {
|
|
1381
1381
|
e(t).addClass("akn-quoted-table");
|
|
1382
1382
|
for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
|
|
1383
1383
|
}
|
|
1384
1384
|
}
|
|
1385
|
-
function
|
|
1386
|
-
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(
|
|
1387
|
-
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) =>
|
|
1385
|
+
function dn(e, t) {
|
|
1386
|
+
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(P(e(t).text())))).text();
|
|
1387
|
+
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => P(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
|
|
1388
1388
|
}
|
|
1389
|
-
function
|
|
1389
|
+
function U(e, t, n, r = {}) {
|
|
1390
1390
|
let i = [];
|
|
1391
1391
|
for (let r of n) {
|
|
1392
1392
|
if (r === "style") continue;
|
|
1393
1393
|
let n = e(t).attr(r);
|
|
1394
|
-
n !== void 0 && i.push(`${r}="${
|
|
1394
|
+
n !== void 0 && i.push(`${r}="${B(n)}"`);
|
|
1395
1395
|
}
|
|
1396
1396
|
let a = r.style ?? e(t).attr("style");
|
|
1397
|
-
return a && i.push(`style="${
|
|
1397
|
+
return a && i.push(`style="${B(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1398
1398
|
}
|
|
1399
|
-
function
|
|
1400
|
-
return `<${n}${
|
|
1399
|
+
function fn(e, t, n, r) {
|
|
1400
|
+
return `<${n}${U(e, t, [
|
|
1401
1401
|
"id",
|
|
1402
1402
|
"class",
|
|
1403
1403
|
"colspan",
|
|
@@ -1410,143 +1410,143 @@ function pn(e, t, n, r) {
|
|
|
1410
1410
|
"cellspacing",
|
|
1411
1411
|
"cellpadding",
|
|
1412
1412
|
"style"
|
|
1413
|
-
], { style:
|
|
1413
|
+
], { style: pn(e, t, n) })}>${r}</${n}>`;
|
|
1414
1414
|
}
|
|
1415
|
-
function
|
|
1415
|
+
function pn(e, t, n) {
|
|
1416
1416
|
let r = e(t).attr("style") ?? "";
|
|
1417
|
-
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r =
|
|
1417
|
+
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = mn(r, "text-align", "center")), r || void 0;
|
|
1418
1418
|
}
|
|
1419
|
-
function
|
|
1419
|
+
function mn(e, t, n) {
|
|
1420
1420
|
let r = e.trim();
|
|
1421
1421
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1422
1422
|
}
|
|
1423
|
-
function
|
|
1424
|
-
let n = [
|
|
1425
|
-
return n.length === 0 ? "" : `<p class="akn-heading">${
|
|
1423
|
+
function hn(e, t) {
|
|
1424
|
+
let n = [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean);
|
|
1425
|
+
return n.length === 0 ? "" : `<p class="akn-heading">${B(n.join(" "))}</p>`;
|
|
1426
1426
|
}
|
|
1427
|
-
function
|
|
1427
|
+
function gn(e, t) {
|
|
1428
1428
|
if (!t) return !1;
|
|
1429
|
-
let n = (e) =>
|
|
1430
|
-
return n(
|
|
1429
|
+
let n = (e) => P(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1430
|
+
return n(P(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1431
1431
|
}
|
|
1432
|
-
function
|
|
1433
|
-
let t =
|
|
1432
|
+
function _n(e) {
|
|
1433
|
+
let t = B(e);
|
|
1434
1434
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
|
|
1435
1435
|
}
|
|
1436
|
-
function
|
|
1437
|
-
return
|
|
1436
|
+
function vn(e, t) {
|
|
1437
|
+
return yn([bn({
|
|
1438
1438
|
content: e,
|
|
1439
1439
|
pastille: t
|
|
1440
1440
|
})]);
|
|
1441
1441
|
}
|
|
1442
|
-
function
|
|
1442
|
+
function yn(e) {
|
|
1443
1443
|
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>`;
|
|
1444
1444
|
}
|
|
1445
|
-
function
|
|
1446
|
-
let i = n ? ` style="${
|
|
1447
|
-
return `<tr${r ? ` class="${
|
|
1445
|
+
function bn({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1446
|
+
let i = n ? ` style="${B(n)}"` : "", a = r ? ` ${B(r)}` : "";
|
|
1447
|
+
return `<tr${r ? ` class="${B(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${_n(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>`;
|
|
1448
1448
|
}
|
|
1449
|
-
function
|
|
1450
|
-
let r = t ? ` style="${
|
|
1451
|
-
return `<tr${n ? ` class="${
|
|
1449
|
+
function xn({ content: e, style: t, contextClass: n }) {
|
|
1450
|
+
let r = t ? ` style="${B(t)}"` : "", i = n ? ` ${B(n)}` : "";
|
|
1451
|
+
return `<tr${n ? ` class="${B(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>`;
|
|
1452
1452
|
}
|
|
1453
|
-
function
|
|
1453
|
+
function Sn(e, t) {
|
|
1454
1454
|
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
1455
1455
|
}
|
|
1456
|
-
function
|
|
1456
|
+
function Cn(e, t) {
|
|
1457
1457
|
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1458
1458
|
}
|
|
1459
|
-
function
|
|
1460
|
-
return e(t).children().get().filter((e) =>
|
|
1459
|
+
function wn(e, t) {
|
|
1460
|
+
return e(t).children().get().filter((e) => L(e) ? V(e) === "content" : !1).map((t) => H(e, t)).filter(Boolean).join("\n");
|
|
1461
1461
|
}
|
|
1462
|
-
function
|
|
1462
|
+
function Tn(e, t) {
|
|
1463
1463
|
let n = [];
|
|
1464
1464
|
return e(t).children().each((t, r) => {
|
|
1465
|
-
if (!
|
|
1466
|
-
let i =
|
|
1467
|
-
i === "num" || i === "heading" || i === "content" || n.push(
|
|
1465
|
+
if (!L(r)) return;
|
|
1466
|
+
let i = V(r);
|
|
1467
|
+
i === "num" || i === "heading" || i === "content" || n.push(H(e, r));
|
|
1468
1468
|
}), n.filter(Boolean);
|
|
1469
1469
|
}
|
|
1470
|
-
function
|
|
1471
|
-
let n = [], r =
|
|
1470
|
+
function En(e, t) {
|
|
1471
|
+
let n = [], r = V(t), i = r === "alinea" ? Sn(e, t) : void 0, a = wn(e, t), o = On(e, t, r, i), s = Pn(e, t);
|
|
1472
1472
|
if (i) {
|
|
1473
|
-
let r = [
|
|
1474
|
-
|
|
1473
|
+
let r = [gn(a, P(e(t).children("num").first().text())) ? "" : hn(e, t), a].filter(Boolean).join("\n");
|
|
1474
|
+
P(r) && n.push(bn({
|
|
1475
1475
|
content: r,
|
|
1476
1476
|
pastille: i,
|
|
1477
1477
|
style: o,
|
|
1478
1478
|
contextClass: s
|
|
1479
1479
|
}));
|
|
1480
|
-
} else a && n.push(
|
|
1480
|
+
} else a && n.push(xn({
|
|
1481
1481
|
content: a,
|
|
1482
1482
|
style: o,
|
|
1483
1483
|
contextClass: s
|
|
1484
1484
|
}));
|
|
1485
1485
|
for (let r of e(t).children().get()) {
|
|
1486
|
-
if (!
|
|
1487
|
-
let t =
|
|
1488
|
-
t === "num" || t === "heading" || t === "content" || (t === "alinea" ||
|
|
1486
|
+
if (!L(r)) continue;
|
|
1487
|
+
let t = V(r);
|
|
1488
|
+
t === "num" || t === "heading" || t === "content" || (t === "alinea" || Cn(e, r)) && n.push(...En(e, r));
|
|
1489
1489
|
}
|
|
1490
1490
|
return n;
|
|
1491
1491
|
}
|
|
1492
|
-
function
|
|
1493
|
-
let
|
|
1494
|
-
|
|
1492
|
+
function Dn(e, t, n, r) {
|
|
1493
|
+
let i = V(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Sn(e, t), s = On(e, t, i, o), c = [`<${n} ${[
|
|
1494
|
+
a ? `id="${B(a)}"` : void 0,
|
|
1495
1495
|
`class="${r}"`,
|
|
1496
|
-
|
|
1497
|
-
|
|
1496
|
+
o ? `data-pastille="${B(o)}"` : void 0,
|
|
1497
|
+
s ? `style="${B(s)}"` : void 0
|
|
1498
1498
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1499
|
-
if (
|
|
1500
|
-
let r = jn(e, t,
|
|
1499
|
+
if (i === "part" || i === "title") {
|
|
1500
|
+
let r = jn(e, t, i), a = Nn(e, t), o = r ? [xn({
|
|
1501
1501
|
content: r,
|
|
1502
|
-
contextClass:
|
|
1502
|
+
contextClass: a
|
|
1503
1503
|
})] : [], s = () => {
|
|
1504
|
-
o.length !== 0 && (
|
|
1504
|
+
o.length !== 0 && (c.push(An(o)), o = []);
|
|
1505
1505
|
};
|
|
1506
1506
|
return e(t).children().each((t, n) => {
|
|
1507
|
-
if (!
|
|
1508
|
-
let r =
|
|
1507
|
+
if (!L(n)) return;
|
|
1508
|
+
let r = V(n);
|
|
1509
1509
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1510
1510
|
if (r === "alinea") {
|
|
1511
|
-
o.push(...
|
|
1511
|
+
o.push(...En(e, n));
|
|
1512
1512
|
return;
|
|
1513
1513
|
}
|
|
1514
|
-
s(),
|
|
1514
|
+
s(), c.push(H(e, n));
|
|
1515
1515
|
}
|
|
1516
|
-
}), s(),
|
|
1516
|
+
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1517
1517
|
}
|
|
1518
|
-
if (
|
|
1519
|
-
let r =
|
|
1518
|
+
if (i === "article") {
|
|
1519
|
+
let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = f(r) ?? {
|
|
1520
1520
|
label: r,
|
|
1521
1521
|
num: r
|
|
1522
|
-
},
|
|
1523
|
-
if (
|
|
1524
|
-
let r = [
|
|
1525
|
-
content:
|
|
1526
|
-
contextClass: In(
|
|
1527
|
-
}), ...
|
|
1528
|
-
|
|
1529
|
-
for (let n of
|
|
1530
|
-
return
|
|
1522
|
+
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${B(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${B(a.label)}${i ? ` : ${B(i)}` : ""}</p>`;
|
|
1523
|
+
if (Cn(e, t)) {
|
|
1524
|
+
let r = [xn({
|
|
1525
|
+
content: o,
|
|
1526
|
+
contextClass: In(a.label)
|
|
1527
|
+
}), ...En(e, t)];
|
|
1528
|
+
c.push(yn(r));
|
|
1529
|
+
for (let n of Tn(e, t)) n.includes("akn-pastille-table") || c.push(n);
|
|
1530
|
+
return c.push(`</${n}>`), c.join("\n");
|
|
1531
1531
|
}
|
|
1532
|
-
|
|
1532
|
+
c.push(o);
|
|
1533
1533
|
}
|
|
1534
|
-
let
|
|
1534
|
+
let l = [];
|
|
1535
1535
|
for (let n of ["content", "children"]) e(t).children().each((t, r) => {
|
|
1536
|
-
if (!
|
|
1537
|
-
let i =
|
|
1538
|
-
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" ||
|
|
1536
|
+
if (!L(r)) return;
|
|
1537
|
+
let i = V(r);
|
|
1538
|
+
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(H(e, r));
|
|
1539
1539
|
});
|
|
1540
|
-
let
|
|
1541
|
-
if (
|
|
1542
|
-
let n =
|
|
1543
|
-
n &&
|
|
1540
|
+
let u = l.join("\n");
|
|
1541
|
+
if (i !== "article") {
|
|
1542
|
+
let n = gn(u, P(e(t).children("num").first().text())) ? "" : hn(e, t);
|
|
1543
|
+
n && c.push(n);
|
|
1544
1544
|
}
|
|
1545
|
-
return
|
|
1545
|
+
return c.push(o ? vn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
1546
1546
|
}
|
|
1547
1547
|
function On(e, t, n, r) {
|
|
1548
1548
|
let i = kn(e(t).attr("style") ?? "", "font-family");
|
|
1549
|
-
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i =
|
|
1549
|
+
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = mn(i, "text-align", "center")), i || void 0;
|
|
1550
1550
|
}
|
|
1551
1551
|
function kn(e, t) {
|
|
1552
1552
|
return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
|
|
@@ -1555,8 +1555,8 @@ function An(e) {
|
|
|
1555
1555
|
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>`;
|
|
1556
1556
|
}
|
|
1557
1557
|
function jn(e, t, n) {
|
|
1558
|
-
let r =
|
|
1559
|
-
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${
|
|
1558
|
+
let r = P(e(t).children("num").first().text()), i = P(e(t).children("heading").first().text()), a = Mn(n), o = [];
|
|
1559
|
+
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${B(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${B(i)}</span></p>`), o.join("\n");
|
|
1560
1560
|
}
|
|
1561
1561
|
function Mn(e) {
|
|
1562
1562
|
switch (e) {
|
|
@@ -1583,13 +1583,13 @@ function Mn(e) {
|
|
|
1583
1583
|
}
|
|
1584
1584
|
}
|
|
1585
1585
|
function Nn(e, t) {
|
|
1586
|
-
let n = Fn(
|
|
1586
|
+
let n = Fn(P(e(t).children("num").first().text()));
|
|
1587
1587
|
if (n) return n;
|
|
1588
1588
|
for (let n of e(t).parents().get()) {
|
|
1589
|
-
if (!
|
|
1590
|
-
let t =
|
|
1589
|
+
if (!L(n)) continue;
|
|
1590
|
+
let t = V(n);
|
|
1591
1591
|
if (t !== "title" && t !== "part") continue;
|
|
1592
|
-
let r = Fn(
|
|
1592
|
+
let r = Fn(P(e(n).children("num").first().text()));
|
|
1593
1593
|
if (r) return r;
|
|
1594
1594
|
}
|
|
1595
1595
|
}
|
|
@@ -1597,7 +1597,7 @@ function Pn(e, t) {
|
|
|
1597
1597
|
return Nn(e, t);
|
|
1598
1598
|
}
|
|
1599
1599
|
function Fn(e) {
|
|
1600
|
-
let [t, ...n] =
|
|
1600
|
+
let [t, ...n] = P(e).split(/\s+/u);
|
|
1601
1601
|
if (!t || n.length === 0) return;
|
|
1602
1602
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1603
1603
|
if ([
|
|
@@ -1608,7 +1608,7 @@ function Fn(e) {
|
|
|
1608
1608
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1609
1609
|
}
|
|
1610
1610
|
function In(e) {
|
|
1611
|
-
return `article-${
|
|
1611
|
+
return `article-${P(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1612
1612
|
}
|
|
1613
1613
|
function Ln(e) {
|
|
1614
1614
|
switch (e) {
|
|
@@ -1623,16 +1623,16 @@ function Ln(e) {
|
|
|
1623
1623
|
}
|
|
1624
1624
|
}
|
|
1625
1625
|
function Rn(e, t) {
|
|
1626
|
-
return [
|
|
1626
|
+
return [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1627
1627
|
}
|
|
1628
1628
|
function zn(e, t) {
|
|
1629
|
-
let n =
|
|
1629
|
+
let n = P(e(t).children("num").first().text()), r = P(e(t).children("heading").first().text()), i = f(n) ?? {
|
|
1630
1630
|
label: n,
|
|
1631
1631
|
num: n
|
|
1632
1632
|
};
|
|
1633
1633
|
return {
|
|
1634
|
-
id: `_TocArt${(
|
|
1635
|
-
line: [
|
|
1634
|
+
id: `_TocArt${(i.num ?? n).replace(/\s+/gu, "")}`,
|
|
1635
|
+
line: [i.label, r].filter(Boolean).join(" : "),
|
|
1636
1636
|
type: "article"
|
|
1637
1637
|
};
|
|
1638
1638
|
}
|
|
@@ -1642,8 +1642,8 @@ function Bn(e, t) {
|
|
|
1642
1642
|
function Vn(e, t) {
|
|
1643
1643
|
let n = { items: [] };
|
|
1644
1644
|
return e(t).children().each((t, r) => {
|
|
1645
|
-
if (!
|
|
1646
|
-
let i =
|
|
1645
|
+
if (!L(r)) return;
|
|
1646
|
+
let i = V(r);
|
|
1647
1647
|
if (i === "article") {
|
|
1648
1648
|
n.items.push(zn(e, r));
|
|
1649
1649
|
return;
|
|
@@ -1670,14 +1670,14 @@ function Un(e) {
|
|
|
1670
1670
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1671
1671
|
}
|
|
1672
1672
|
function Wn(e) {
|
|
1673
|
-
e("table").each((t, n) =>
|
|
1673
|
+
e("table").each((t, n) => un(e, n));
|
|
1674
1674
|
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>"];
|
|
1675
|
-
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(
|
|
1676
|
-
|
|
1675
|
+
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) => {
|
|
1676
|
+
L(n) && r.push(V(n) === "article" ? Dn(e, n, "article", "akn-article") : H(e, n));
|
|
1677
1677
|
}), r.push("</section></div>"), r.join("\n");
|
|
1678
1678
|
}
|
|
1679
1679
|
function Gn(e) {
|
|
1680
|
-
let t =
|
|
1680
|
+
let t = w(e, { xml: {
|
|
1681
1681
|
decodeEntities: !1,
|
|
1682
1682
|
lowerCaseTags: !1,
|
|
1683
1683
|
lowerCaseAttributeNames: !1,
|
|
@@ -1691,41 +1691,41 @@ function Gn(e) {
|
|
|
1691
1691
|
};
|
|
1692
1692
|
}
|
|
1693
1693
|
function Kn(e) {
|
|
1694
|
-
return qn(
|
|
1694
|
+
return qn(w(e));
|
|
1695
1695
|
}
|
|
1696
1696
|
function qn(e) {
|
|
1697
1697
|
let t = [];
|
|
1698
1698
|
return e("article.akn-article").each((n, r) => {
|
|
1699
|
-
let
|
|
1699
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = P(i ? e(i).text() : ""), o = f(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");
|
|
1700
1700
|
t.push({
|
|
1701
|
-
id:
|
|
1702
|
-
label:
|
|
1703
|
-
num:
|
|
1704
|
-
title:
|
|
1705
|
-
text:
|
|
1706
|
-
html:
|
|
1707
|
-
directiveText:
|
|
1708
|
-
blocks:
|
|
1701
|
+
id: s,
|
|
1702
|
+
label: o.label,
|
|
1703
|
+
num: o.num,
|
|
1704
|
+
title: o.title,
|
|
1705
|
+
text: it(e, c),
|
|
1706
|
+
html: et(e, r),
|
|
1707
|
+
directiveText: u,
|
|
1708
|
+
blocks: l
|
|
1709
1709
|
});
|
|
1710
1710
|
}), t;
|
|
1711
1711
|
}
|
|
1712
1712
|
function Jn(e) {
|
|
1713
|
-
let t =
|
|
1713
|
+
let t = w(e);
|
|
1714
1714
|
return {
|
|
1715
1715
|
articles: qn(t),
|
|
1716
1716
|
htmlWithLinks: t.html()
|
|
1717
1717
|
};
|
|
1718
1718
|
}
|
|
1719
1719
|
async function Yn(e, t) {
|
|
1720
|
-
let n = new
|
|
1720
|
+
let n = new Ce("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
|
|
1721
1721
|
decodeEntities: !1,
|
|
1722
1722
|
lowerCaseTags: !1,
|
|
1723
1723
|
lowerCaseAttributeNames: !1,
|
|
1724
1724
|
xmlMode: !0
|
|
1725
|
-
} })), i = t.date ?? Un(r), a = n.timeSync("renderAknHtml", () => Wn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () =>
|
|
1725
|
+
} })), i = t.date ?? Un(r), a = n.timeSync("renderAknHtml", () => Wn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ot(a, {
|
|
1726
1726
|
...t,
|
|
1727
1727
|
date: i
|
|
1728
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () => Kn(a)), c = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1728
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => Kn(a)), c = n.timeSync("injectHiddenArticleSummary", () => wt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Jn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Hn(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")));
|
|
1729
1729
|
return n.log({
|
|
1730
1730
|
articleCount: p.articles.length,
|
|
1731
1731
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1739,7 +1739,7 @@ async function Xn(e, t) {
|
|
|
1739
1739
|
sourceFormat: "akoma-ntoso",
|
|
1740
1740
|
documentDate: r,
|
|
1741
1741
|
html: n.html,
|
|
1742
|
-
linkedHtml: await
|
|
1742
|
+
linkedHtml: await ot(n.html, t, r)
|
|
1743
1743
|
};
|
|
1744
1744
|
}
|
|
1745
1745
|
//#endregion
|
|
@@ -1749,7 +1749,7 @@ function $n(e) {
|
|
|
1749
1749
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1750
1750
|
}
|
|
1751
1751
|
function er(e) {
|
|
1752
|
-
let t = $n(
|
|
1752
|
+
let t = $n(w(e).text()), n = [...t.matchAll(Zn)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1753
1753
|
for (let [e, a] of n.entries()) {
|
|
1754
1754
|
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = Qn.exec(s), l = $n(s.slice(0, c?.index ?? s.length));
|
|
1755
1755
|
if (l.length < 20 || r.has(l)) continue;
|
|
@@ -1768,7 +1768,7 @@ function er(e) {
|
|
|
1768
1768
|
return i;
|
|
1769
1769
|
}
|
|
1770
1770
|
async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1771
|
-
let i = await
|
|
1771
|
+
let i = await rn(t, {
|
|
1772
1772
|
date: e,
|
|
1773
1773
|
includeDirectiveAnalysis: !1,
|
|
1774
1774
|
linkBaseUrl: n,
|
|
@@ -1792,7 +1792,7 @@ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1792
1792
|
};
|
|
1793
1793
|
}
|
|
1794
1794
|
function nr(e, t) {
|
|
1795
|
-
return
|
|
1795
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1796
1796
|
item: e,
|
|
1797
1797
|
metadata: t
|
|
1798
1798
|
})).digest("hex");
|
|
@@ -1813,7 +1813,7 @@ function rr(e) {
|
|
|
1813
1813
|
//#endregion
|
|
1814
1814
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1815
1815
|
function ir(e) {
|
|
1816
|
-
return e?.trim() ?
|
|
1816
|
+
return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1817
1817
|
}
|
|
1818
1818
|
function ar({ dispositifHtml: e, objetHtml: t }) {
|
|
1819
1819
|
let n = ir(e), r = ir(t);
|
|
@@ -1828,7 +1828,7 @@ function ar({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1828
1828
|
}] : []];
|
|
1829
1829
|
}
|
|
1830
1830
|
function or(e, t) {
|
|
1831
|
-
return
|
|
1831
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1832
1832
|
item: e,
|
|
1833
1833
|
metadata: t
|
|
1834
1834
|
})).digest("hex");
|
|
@@ -1851,7 +1851,7 @@ function sr(e, t) {
|
|
|
1851
1851
|
function cr(e) {
|
|
1852
1852
|
return e === "start" ? "insert_before" : "insert_after";
|
|
1853
1853
|
}
|
|
1854
|
-
var lr =
|
|
1854
|
+
var lr = D(k("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = T(ee, O([k("les?\\s+", { flags: "i" }), u], { value: (e) => e[1] }), u, fe), ur = T(O([k("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
|
|
1855
1855
|
let t = e[1];
|
|
1856
1856
|
return {
|
|
1857
1857
|
targetReference: t,
|
|
@@ -1860,58 +1860,58 @@ var lr = O(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]
|
|
|
1860
1860
|
unit: ue(t)
|
|
1861
1861
|
}
|
|
1862
1862
|
};
|
|
1863
|
-
} }),
|
|
1864
|
-
|
|
1865
|
-
|
|
1863
|
+
} }), O([r], { value: (e) => ({ targetScope: e[0] }) })), K = D(O([
|
|
1864
|
+
D(k("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1865
|
+
D(k("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1866
1866
|
G,
|
|
1867
|
-
|
|
1867
|
+
D(k("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
1868
1868
|
], { value: (e, t) => ({
|
|
1869
1869
|
reference: e[2],
|
|
1870
1870
|
text: t.text()
|
|
1871
|
-
}) }), { default: null }), dr =
|
|
1871
|
+
}) }), { default: null }), dr = D(k(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ye})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
1872
1872
|
function q(e) {
|
|
1873
1873
|
return e?.text ?? "";
|
|
1874
1874
|
}
|
|
1875
1875
|
function fr(t) {
|
|
1876
1876
|
return { citation: e(t.position()) };
|
|
1877
1877
|
}
|
|
1878
|
-
var J = T(
|
|
1878
|
+
var J = T(O([_], { value: (e) => ({ citation: e[0] }) }), k("\\S[\\s\\S]*", { value: (e, t) => fr(t) })), pr = k("\\S[\\s\\S]*", { value: (e, t) => fr(t) }), Y = k("[^:«“\"]*(?::\\s*)?", { flags: "i" }), mr = k("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
1879
1879
|
flags: "i",
|
|
1880
1880
|
value: (e, t) => fr(t)
|
|
1881
|
-
}), hr =
|
|
1881
|
+
}), hr = k("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
1882
1882
|
flags: "i",
|
|
1883
1883
|
value: (e, t) => fr(t)
|
|
1884
|
-
}), gr =
|
|
1884
|
+
}), gr = k("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
1885
1885
|
flags: "i",
|
|
1886
1886
|
value: (e, t) => fr(t)
|
|
1887
|
-
}), _r = T(
|
|
1887
|
+
}), _r = T(O([_], { value: (e) => ({ citation: e[0] }) }), mr), vr = T(O([_], { value: (e) => ({ citation: e[0] }) }), gr), yr = O([k(`${i}s?\\s*:?\\s*`, { flags: "i" }), _r], { value: (e) => e[1] }), br = O([k(`${o}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = T(O([_], { value: (e) => ({ citation: e[0] }) }), hr), Sr = O([
|
|
1888
1888
|
dr,
|
|
1889
|
-
|
|
1889
|
+
k(`${i}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1890
1890
|
xr
|
|
1891
|
-
], { value: (e) => e[2] }), Cr =
|
|
1891
|
+
], { value: (e) => e[2] }), Cr = O([
|
|
1892
1892
|
dr,
|
|
1893
|
-
|
|
1894
|
-
T(
|
|
1893
|
+
k(`${i}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1894
|
+
T(O([_], { value: (e) => ({ citation: e[0] }) }), pr)
|
|
1895
1895
|
], { value: (e) => e[2] });
|
|
1896
1896
|
function X(e) {
|
|
1897
1897
|
return e?.reference;
|
|
1898
1898
|
}
|
|
1899
|
-
var wr =
|
|
1899
|
+
var wr = O([lr, k("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
|
|
1900
1900
|
contextText: e[0],
|
|
1901
1901
|
kind: "delete_article"
|
|
1902
|
-
}) }), Tr =
|
|
1902
|
+
}) }), Tr = O([
|
|
1903
1903
|
K,
|
|
1904
|
-
|
|
1905
|
-
O(
|
|
1906
|
-
O(
|
|
1904
|
+
k("supprimer", { flags: "i" }),
|
|
1905
|
+
D(O([A, G], { value: (e) => e[1] }), { default: null }),
|
|
1906
|
+
D(O([A, Cr], { value: (e) => e[1] }), { default: null })
|
|
1907
1907
|
], { value: (e, t) => W(t, {
|
|
1908
1908
|
contextText: q(e[0]),
|
|
1909
1909
|
kind: "delete_portion",
|
|
1910
1910
|
targetCitation: e[3]?.citation ?? void 0,
|
|
1911
1911
|
targetReference: e[2] ?? X(e[0])
|
|
1912
|
-
}) }), Er =
|
|
1912
|
+
}) }), Er = O([
|
|
1913
1913
|
K,
|
|
1914
|
-
T(
|
|
1914
|
+
T(k("r[eé]diger\\s+ainsi", { flags: "i" }), k("r[eé]tablir", { flags: "i" })),
|
|
1915
1915
|
Y,
|
|
1916
1916
|
J
|
|
1917
1917
|
], { value: (e, t) => W(t, {
|
|
@@ -1919,14 +1919,14 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1919
1919
|
kind: "rewrite_portion",
|
|
1920
1920
|
replacementCitation: e[3].citation,
|
|
1921
1921
|
targetReference: X(e[0])
|
|
1922
|
-
}) }), Dr =
|
|
1922
|
+
}) }), Dr = O([
|
|
1923
1923
|
K,
|
|
1924
|
-
T(
|
|
1925
|
-
|
|
1924
|
+
T(k("substituer", { flags: "i" }), k("remplacer", { flags: "i" })),
|
|
1925
|
+
A,
|
|
1926
1926
|
dr,
|
|
1927
1927
|
yr,
|
|
1928
|
-
|
|
1929
|
-
|
|
1928
|
+
k("\\s*,?\\s*"),
|
|
1929
|
+
D(k("par\\s+", { flags: "i" }), { default: "" }),
|
|
1930
1930
|
br
|
|
1931
1931
|
], { value: (e, t) => W(t, {
|
|
1932
1932
|
contextText: q(e[0]),
|
|
@@ -1934,37 +1934,37 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1934
1934
|
replacementCitation: e[7].citation,
|
|
1935
1935
|
targetCitation: e[4].citation,
|
|
1936
1936
|
targetReference: X(e[0])
|
|
1937
|
-
}) }), Or =
|
|
1937
|
+
}) }), Or = O([
|
|
1938
1938
|
K,
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1939
|
+
k("substituer", { flags: "i" }),
|
|
1940
|
+
A,
|
|
1941
|
+
D(k("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
1942
1942
|
G,
|
|
1943
|
-
|
|
1943
|
+
k("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
1944
1944
|
J
|
|
1945
1945
|
], { value: (e, t) => W(t, {
|
|
1946
1946
|
contextText: q(e[0]),
|
|
1947
1947
|
kind: "rewrite_portion",
|
|
1948
1948
|
replacementCitation: e[6].citation,
|
|
1949
1949
|
targetReference: e[4] ?? X(e[0])
|
|
1950
|
-
}) }), kr =
|
|
1950
|
+
}) }), kr = O([
|
|
1951
1951
|
S,
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1952
|
+
A,
|
|
1953
|
+
k("l['’ ]article", { flags: "i" }),
|
|
1954
|
+
k("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1955
|
+
k("ins[eé]rer", { flags: "i" }),
|
|
1956
1956
|
Y,
|
|
1957
1957
|
J
|
|
1958
1958
|
], { value: (e, t) => W(t, {
|
|
1959
1959
|
contextText: "",
|
|
1960
1960
|
insertCitation: e[6].citation,
|
|
1961
1961
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
1962
|
-
}) }), Ar =
|
|
1962
|
+
}) }), Ar = O([
|
|
1963
1963
|
S,
|
|
1964
|
-
|
|
1964
|
+
A,
|
|
1965
1965
|
G,
|
|
1966
|
-
|
|
1967
|
-
T(
|
|
1966
|
+
k("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1967
|
+
T(k("ins[eé]rer", { flags: "i" }), k("ajouter", { flags: "i" })),
|
|
1968
1968
|
Y,
|
|
1969
1969
|
J
|
|
1970
1970
|
], { value: (e, n) => W(n, {
|
|
@@ -1972,23 +1972,23 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1972
1972
|
insertCitation: e[6].citation,
|
|
1973
1973
|
kind: t(e[0]),
|
|
1974
1974
|
targetReference: e[2]
|
|
1975
|
-
}) }), jr =
|
|
1975
|
+
}) }), jr = O([
|
|
1976
1976
|
S,
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1977
|
+
A,
|
|
1978
|
+
k("l['’ ]alin[eé]a", { flags: "i" }),
|
|
1979
|
+
k("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1980
|
+
k("ins[eé]rer", { flags: "i" }),
|
|
1981
1981
|
Y,
|
|
1982
1982
|
J
|
|
1983
1983
|
], { value: (e, n) => W(n, {
|
|
1984
1984
|
contextText: "",
|
|
1985
1985
|
insertCitation: e[6].citation,
|
|
1986
1986
|
kind: t(e[0])
|
|
1987
|
-
}) }), Mr =
|
|
1987
|
+
}) }), Mr = O([
|
|
1988
1988
|
K,
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
T(
|
|
1989
|
+
C,
|
|
1990
|
+
k("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1991
|
+
T(k("ins[eé]rer", { flags: "i" }), k("ajouter", { flags: "i" })),
|
|
1992
1992
|
Y,
|
|
1993
1993
|
J
|
|
1994
1994
|
], { value: (e, t) => {
|
|
@@ -2000,14 +2000,14 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2000
2000
|
targetReference: r,
|
|
2001
2001
|
targetScope: sr(i, r)
|
|
2002
2002
|
});
|
|
2003
|
-
} }), Nr =
|
|
2003
|
+
} }), Nr = O([
|
|
2004
2004
|
K,
|
|
2005
2005
|
S,
|
|
2006
|
-
|
|
2006
|
+
A,
|
|
2007
2007
|
Sr,
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2008
|
+
k("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
2009
|
+
k("ins[eé]rer", { flags: "i" }),
|
|
2010
|
+
A,
|
|
2011
2011
|
br
|
|
2012
2012
|
], { value: (e, n) => W(n, {
|
|
2013
2013
|
contextText: q(e[0]),
|
|
@@ -2015,13 +2015,13 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2015
2015
|
kind: t(e[1]),
|
|
2016
2016
|
targetCitation: e[3].citation,
|
|
2017
2017
|
targetReference: X(e[0])
|
|
2018
|
-
}) }), Pr =
|
|
2018
|
+
}) }), Pr = O([
|
|
2019
2019
|
K,
|
|
2020
2020
|
S,
|
|
2021
|
-
|
|
2021
|
+
A,
|
|
2022
2022
|
G,
|
|
2023
|
-
|
|
2024
|
-
T(
|
|
2023
|
+
k("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2024
|
+
T(k("ins[eé]rer", { flags: "i" }), k("ajouter", { flags: "i" })),
|
|
2025
2025
|
Y,
|
|
2026
2026
|
J
|
|
2027
2027
|
], { value: (e, n) => W(n, {
|
|
@@ -2029,28 +2029,28 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2029
2029
|
insertCitation: e[7].citation,
|
|
2030
2030
|
kind: t(e[1]),
|
|
2031
2031
|
targetReference: X(e[0]) ?? e[3]
|
|
2032
|
-
}) }), Fr = T(Mr, kr, Ar, jr, Or,
|
|
2032
|
+
}) }), Fr = T(Mr, kr, Ar, jr, Or, O([
|
|
2033
2033
|
K,
|
|
2034
2034
|
S,
|
|
2035
|
-
|
|
2035
|
+
A,
|
|
2036
2036
|
Sr,
|
|
2037
|
-
|
|
2038
|
-
T(
|
|
2039
|
-
|
|
2037
|
+
k("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
2038
|
+
T(O([
|
|
2039
|
+
k("supprimer", {
|
|
2040
2040
|
flags: "i",
|
|
2041
2041
|
value: "delete_portion"
|
|
2042
2042
|
}),
|
|
2043
|
-
|
|
2043
|
+
A,
|
|
2044
2044
|
ur
|
|
2045
2045
|
], { value: (e) => ({
|
|
2046
2046
|
kind: e[0],
|
|
2047
2047
|
...e[2]
|
|
2048
|
-
}) }),
|
|
2049
|
-
|
|
2048
|
+
}) }), O([
|
|
2049
|
+
k("r[eé]diger\\s+ainsi", {
|
|
2050
2050
|
flags: "i",
|
|
2051
2051
|
value: "rewrite_portion"
|
|
2052
2052
|
}),
|
|
2053
|
-
|
|
2053
|
+
A,
|
|
2054
2054
|
ur,
|
|
2055
2055
|
Y,
|
|
2056
2056
|
J
|
|
@@ -2069,24 +2069,24 @@ var wr = w([lr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2069
2069
|
targetReference: X(e[0]) ?? n.targetReference,
|
|
2070
2070
|
targetScope: n.targetScope
|
|
2071
2071
|
});
|
|
2072
|
-
} }), Nr, Pr,
|
|
2072
|
+
} }), Nr, Pr, O([
|
|
2073
2073
|
lr,
|
|
2074
|
-
|
|
2075
|
-
|
|
2074
|
+
k("ins[eé]rer", { flags: "i" }),
|
|
2075
|
+
k(`[\\s\\S]*?(?=${l})`, { flags: "i" }),
|
|
2076
2076
|
S,
|
|
2077
2077
|
Y,
|
|
2078
|
-
|
|
2078
|
+
_,
|
|
2079
2079
|
Y,
|
|
2080
|
-
|
|
2080
|
+
_
|
|
2081
2081
|
], { value: (e, n) => W(n, {
|
|
2082
2082
|
contextText: e[0],
|
|
2083
2083
|
insertCitation: e[8],
|
|
2084
2084
|
kind: t(e[3]),
|
|
2085
2085
|
targetCitation: e[6]
|
|
2086
|
-
}) }), Dr, Er,
|
|
2086
|
+
}) }), Dr, Er, O([
|
|
2087
2087
|
K,
|
|
2088
|
-
|
|
2089
|
-
O(
|
|
2088
|
+
k("compl[eé]ter", { flags: "i" }),
|
|
2089
|
+
D(O([A, G], { value: (e) => e[1] }), { default: null }),
|
|
2090
2090
|
Y,
|
|
2091
2091
|
J
|
|
2092
2092
|
], { value: (e, t) => W(t, {
|
|
@@ -2160,7 +2160,7 @@ function Wr(e, t, n, r = Lr(e.slice(n.start, n.stop))) {
|
|
|
2160
2160
|
function Gr(e) {
|
|
2161
2161
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2162
2162
|
if (!t) return null;
|
|
2163
|
-
let n = e.dispositifHtml ? ve()(t) :
|
|
2163
|
+
let n = e.dispositifHtml ? ve()(t) : be(t), r = n.output, i = Rr(r, {
|
|
2164
2164
|
start: 0,
|
|
2165
2165
|
stop: r.length
|
|
2166
2166
|
});
|
|
@@ -2182,7 +2182,7 @@ function Q(e) {
|
|
|
2182
2182
|
return t === void 0 ? [] : Array.from({ length: e.count }, (e, n) => t + n);
|
|
2183
2183
|
}
|
|
2184
2184
|
if (e.type === "exclusion") return Q(e.left);
|
|
2185
|
-
for (let t of
|
|
2185
|
+
for (let t of pe(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
|
|
2186
2186
|
return [];
|
|
2187
2187
|
}
|
|
2188
2188
|
function Kr(e, t) {
|
|
@@ -2236,19 +2236,19 @@ function $r(e, t) {
|
|
|
2236
2236
|
return r(/^(?:(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*|[a-z]\)\s*(?:[.\-–—]\s*)*|\d+°\s*)/iu), r(/^[.\-–—]\s*/u), r(/^en\s+cons[ée]quence\s*,\s*/iu), Rr(e, n);
|
|
2237
2237
|
}
|
|
2238
2238
|
function ei(e) {
|
|
2239
|
-
return
|
|
2239
|
+
return m(e);
|
|
2240
2240
|
}
|
|
2241
2241
|
function ti(e, t) {
|
|
2242
|
-
return Fr(new
|
|
2242
|
+
return Fr(new E(e.slice(0, t.stop), t.start)) ?? null;
|
|
2243
2243
|
}
|
|
2244
2244
|
function $(e, t, n) {
|
|
2245
|
-
if (n) return Wr(e, t, n.position, Lr(
|
|
2245
|
+
if (n) return Wr(e, t, n.position, Lr(p(e, n)));
|
|
2246
2246
|
}
|
|
2247
2247
|
function ni(e, t) {
|
|
2248
2248
|
if (!e) return;
|
|
2249
|
-
let
|
|
2250
|
-
for (let e of
|
|
2251
|
-
return
|
|
2249
|
+
let r = structuredClone(e);
|
|
2250
|
+
for (let e of n(r, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = zr(t, e.position));
|
|
2251
|
+
return r;
|
|
2252
2252
|
}
|
|
2253
2253
|
function ri(e, t, n, r) {
|
|
2254
2254
|
let i = $r(e, n);
|
|
@@ -2451,7 +2451,7 @@ function oi(e) {
|
|
|
2451
2451
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2452
2452
|
}
|
|
2453
2453
|
function si(e) {
|
|
2454
|
-
let t =
|
|
2454
|
+
let t = f(e);
|
|
2455
2455
|
if (!t) return {
|
|
2456
2456
|
articleNumber: null,
|
|
2457
2457
|
label: e,
|
|
@@ -2465,7 +2465,7 @@ function si(e) {
|
|
|
2465
2465
|
};
|
|
2466
2466
|
}
|
|
2467
2467
|
function ci(e) {
|
|
2468
|
-
let t =
|
|
2468
|
+
let t = w(e), n = [], r = oi(t("section.akn-preamble").text());
|
|
2469
2469
|
return r && n.push({
|
|
2470
2470
|
anchor: "senat-expose-des-motifs",
|
|
2471
2471
|
articleNumber: null,
|
|
@@ -2490,7 +2490,7 @@ function ci(e) {
|
|
|
2490
2490
|
}), n;
|
|
2491
2491
|
}
|
|
2492
2492
|
function li(e, t) {
|
|
2493
|
-
return
|
|
2493
|
+
return Oe("sha256").update(JSON.stringify({
|
|
2494
2494
|
item: e,
|
|
2495
2495
|
metadata: t
|
|
2496
2496
|
})).digest("hex");
|
|
@@ -21622,7 +21622,7 @@ function Ci(e) {
|
|
|
21622
21622
|
return null;
|
|
21623
21623
|
}
|
|
21624
21624
|
function wi(e) {
|
|
21625
|
-
return
|
|
21625
|
+
return De.createHash("md5").update(e).digest("hex");
|
|
21626
21626
|
}
|
|
21627
21627
|
function Ti(e) {
|
|
21628
21628
|
return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
|
|
@@ -21694,7 +21694,7 @@ function Mi(e) {
|
|
|
21694
21694
|
return null;
|
|
21695
21695
|
}
|
|
21696
21696
|
function Ni(e, t = {}) {
|
|
21697
|
-
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a =
|
|
21697
|
+
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
|
|
21698
21698
|
a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
|
|
21699
21699
|
let n = a(t).closest("table");
|
|
21700
21700
|
n.length > 0 && n.remove();
|
|
@@ -21947,15 +21947,15 @@ ${Ni(e, t)}
|
|
|
21947
21947
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
21948
21948
|
function Ri(e, t) {
|
|
21949
21949
|
let n = "transformation_", r = {};
|
|
21950
|
-
for (let e of
|
|
21950
|
+
for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
21951
21951
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
21952
21952
|
for (let e of a.slice(1)) {
|
|
21953
21953
|
let t = o.transformations ??= [];
|
|
21954
21954
|
for (; e >= t.length;) t.push({});
|
|
21955
21955
|
o = t[e];
|
|
21956
21956
|
}
|
|
21957
|
-
o.output =
|
|
21958
|
-
let { sourceMap: s, title: c } =
|
|
21957
|
+
o.output = j.readFileSync(M.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
21958
|
+
let { sourceMap: s, title: c } = j.readJsonSync(M.join(t, e), { encoding: "utf-8" });
|
|
21959
21959
|
o.sourceMap = s ?? [], o.title = c;
|
|
21960
21960
|
}
|
|
21961
21961
|
return zi(r, e), r;
|
|
@@ -21965,7 +21965,7 @@ function zi(e, t) {
|
|
|
21965
21965
|
return t;
|
|
21966
21966
|
}
|
|
21967
21967
|
function Bi(e, t, n = "1") {
|
|
21968
|
-
if (
|
|
21968
|
+
if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(M.join(t, `transformation_${n}.json`), {
|
|
21969
21969
|
sourceMap: e.sourceMap,
|
|
21970
21970
|
title: e.title
|
|
21971
21971
|
}, {
|
|
@@ -21973,20 +21973,20 @@ function Bi(e, t, n = "1") {
|
|
|
21973
21973
|
spaces: 2
|
|
21974
21974
|
});
|
|
21975
21975
|
else {
|
|
21976
|
-
|
|
21976
|
+
j.writeJsonSync(M.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
21977
21977
|
encoding: "utf-8",
|
|
21978
21978
|
spaces: 2
|
|
21979
21979
|
});
|
|
21980
21980
|
for (let [r, i] of e.transformations.entries()) Bi(i, t, `${n}.${r + 1}`);
|
|
21981
21981
|
}
|
|
21982
|
-
e.output !== void 0 &&
|
|
21982
|
+
e.output !== void 0 && j.writeFileSync(M.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
21983
21983
|
}
|
|
21984
21984
|
//#endregion
|
|
21985
21985
|
//#region src/lib/server/linkers/html.ts
|
|
21986
21986
|
async function Vi({ 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 }) {
|
|
21987
|
-
let _ = t ?? (e === void 0 ? void 0 : new
|
|
21987
|
+
let _ = t ?? (e === void 0 ? void 0 : new re(e));
|
|
21988
21988
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
21989
|
-
let v = await
|
|
21989
|
+
let v = await j.readFile(i, { encoding: "utf-8" }), y;
|
|
21990
21990
|
a === void 0 ? (y = ve({ removeAWithHref: !0 })(v), o !== void 0 && Bi(y, o)) : y = Ri(v, a);
|
|
21991
21991
|
let b = [];
|
|
21992
21992
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
@@ -22007,9 +22007,9 @@ async function Vi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22007
22007
|
s !== void 0 && (C.links = s), c !== void 0 && (C.links_or_references = c), u !== void 0 && (C.references = u);
|
|
22008
22008
|
for (let [e, t] of Object.entries(x)) {
|
|
22009
22009
|
let n = C[e];
|
|
22010
|
-
n !== void 0 && await
|
|
22010
|
+
n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
|
|
22011
22011
|
}
|
|
22012
|
-
x.links !== void 0 && l !== void 0 && Bi(ve()(x.links.html), l), g !== void 0 && await
|
|
22012
|
+
x.links !== void 0 && l !== void 0 && Bi(ve()(x.links.html), l), g !== void 0 && await j.writeJson(g, S, {
|
|
22013
22013
|
encoding: "utf-8",
|
|
22014
22014
|
spaces: 2
|
|
22015
22015
|
});
|
|
@@ -22017,20 +22017,20 @@ async function Vi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22017
22017
|
//#endregion
|
|
22018
22018
|
//#region src/lib/server/tables_of_contents.ts
|
|
22019
22019
|
async function Hi(e, t, n, r) {
|
|
22020
|
-
let i = Ri(await
|
|
22021
|
-
for await (let e of
|
|
22020
|
+
let i = Ri(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new E(a), s = await j.readJson(n, { encoding: "utf-8" });
|
|
22021
|
+
for await (let e of ae({
|
|
22022
22022
|
context: o,
|
|
22023
22023
|
tableOfContents: s,
|
|
22024
22024
|
transformation: i
|
|
22025
22025
|
}));
|
|
22026
|
-
await
|
|
22026
|
+
await j.writeJson(r, s, {
|
|
22027
22027
|
encoding: "utf-8",
|
|
22028
22028
|
spaces: 2
|
|
22029
22029
|
});
|
|
22030
22030
|
}
|
|
22031
22031
|
async function Ui(e, t, n) {
|
|
22032
|
-
let r = Ri(await
|
|
22033
|
-
await
|
|
22032
|
+
let r = Ri(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
|
|
22033
|
+
await j.writeJson(n, i, {
|
|
22034
22034
|
encoding: "utf-8",
|
|
22035
22035
|
spaces: 2
|
|
22036
22036
|
});
|
|
@@ -22038,7 +22038,7 @@ async function Ui(e, t, n) {
|
|
|
22038
22038
|
//#endregion
|
|
22039
22039
|
//#region src/lib/server/legi/resolvers.ts
|
|
22040
22040
|
function Wi({ canutesDb: e }) {
|
|
22041
|
-
return new
|
|
22041
|
+
return new re(e);
|
|
22042
22042
|
}
|
|
22043
22043
|
//#endregion
|
|
22044
|
-
export {
|
|
22044
|
+
export { Te as LegiResolver, Vi as addLinksOrReferencesToHtmlFile, Hi as addPositionsToTableOfContentsFile, Se as buildAndInstallTextTitlesInfos, we as buildTextTitlesInfos, Wi as createLegiResolver, Me as extractAssembleeAmendmentSearchItems, er as extractAssembleeExposesDesMotifs, ar as extractSenatAmendmentSearchItems, Ne as hashAssembleeAmendmentSearchItem, nr as hashAssembleeSearchItem, or as hashSenatAmendmentSearchItem, li as hashSenatSearchItem, hi as isAkomaNtosoXml, rr as isoDateFromAssembleeDocument, Xn as linkAkomaNtosoBillRaw, an as linkAssembleeBillRaw, Yn as parseAkomaNtosoBillRaw, ai as parseAmendment, rn as parseAssembleeBillRaw, tr as parseAssembleeDocumentSearchContent, ci as parseSenatDocumentSearchContent, Ri as readTransformation, Gn as renderAkomaNtosoBillRaw, mi as resolveSenatAkomaNtosoSource, Ui as simplifiedHtmlBillFileToTableOfContentsFile, Ni as simplifyWordHtml, Li as simplifyWordHtmlToDocument, Bi as writeTransformation };
|