@tricoteuses/tisseuse 0.19.0 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server.js +664 -652
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as ne, j as
|
|
2
|
-
import { A as
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { $ as e, At as t, B as n, Bt as r, C as i, Ct as a, D as o, Dt as s, E as c, H as l, L as u, M as d, N as f, Nt as p, O as m, Ot as h, S as g, Vt as _, X as v, b as y, c as b, ct as x, et as ee, g as S, h as te, it as ne, j as re, k as ie, kt as C, m as ae, n as oe, p as se, s as ce, t as le, u as ue, ut as w, v as de, w as fe, x as pe } from "./html-EuDDYMr2.js";
|
|
2
|
+
import { A as me, Dt as T, Ft as E, I as he, L as ge, Nt as D, Ot as O, P as _e, _t as ve, bt as k, jt as ye, k as be, kt as A, n as xe, nt as Se, o as Ce, r as we, t as Te, ut as Ee } from "./resolver-tBQRf8TL.js";
|
|
3
|
+
import * as De from "node:crypto";
|
|
4
|
+
import { createHash as Oe } from "node:crypto";
|
|
5
|
+
import j from "fs-extra";
|
|
6
|
+
import ke from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function Ae(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 ke(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function Ae(e) {
|
|
17
|
-
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
|
-
}
|
|
19
16
|
function je(e) {
|
|
20
|
-
return
|
|
17
|
+
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
21
18
|
}
|
|
22
19
|
function Me(e) {
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
return je(w(e).text());
|
|
21
|
+
}
|
|
22
|
+
function Ne(e) {
|
|
23
|
+
let t = je([
|
|
24
|
+
Ae(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
Ae(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
Ae(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) => Me(e)).join("\n")), n = Ae(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : Me(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Me(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Pe(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 M(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return M(e.reference);
|
|
65
|
+
case "enumeration": return [...M(e.left), ...M(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
67
|
let t = [...r(e.parent)].filter((e) => e.type === "article");
|
|
68
68
|
return t.length === 1 ? [{
|
|
69
69
|
article: t[0],
|
|
70
70
|
reference: e
|
|
71
|
-
}] : t.length > 1 ? [] :
|
|
71
|
+
}] : t.length > 1 ? [] : M(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,11 +89,11 @@ function N(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/extractors/article_action_effects.ts
|
|
92
|
-
function
|
|
92
|
+
function Fe(e, t) {
|
|
93
93
|
if (t < 2) return null;
|
|
94
|
-
let n =
|
|
94
|
+
let n = me(e), r = S(e);
|
|
95
95
|
if (r.length !== t) return null;
|
|
96
|
-
let i = u(new
|
|
96
|
+
let i = u(new T(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,11 +103,11 @@ function Pe(e, t) {
|
|
|
103
103
|
actionPosition: a(t.position)
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function Ie(e, t, n) {
|
|
107
107
|
if (t.length < 2) return null;
|
|
108
|
-
let r =
|
|
108
|
+
let r = me(e), i = r.output, a = (e) => ge(r, [e])[0].position, o = u(new T(i)), s = o.flatMap(M);
|
|
109
109
|
if (s.length !== t.length || s.length < 2) return null;
|
|
110
|
-
let c =
|
|
110
|
+
let c = pe(i);
|
|
111
111
|
if (c.length > 0) return n?.kind !== "replace_portion" || c.length !== s.length || c.some((e, t) => {
|
|
112
112
|
let n = s[t];
|
|
113
113
|
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !ne(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
|
|
@@ -161,12 +161,12 @@ function Fe(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" || M(t).length === 0 || o.slice(f, e).flatMap(M).length === 0 || y(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && y(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
|
|
165
165
|
}
|
|
166
166
|
d.push(o.length - 1);
|
|
167
167
|
let p = [], m = 0, h = 0;
|
|
168
168
|
for (let n of d) {
|
|
169
|
-
let r = o.slice(m, n + 1).flatMap(
|
|
169
|
+
let r = o.slice(m, n + 1).flatMap(M);
|
|
170
170
|
if (r.length === 0) {
|
|
171
171
|
m = n + 1;
|
|
172
172
|
continue;
|
|
@@ -203,16 +203,16 @@ function Fe(e, t, n) {
|
|
|
203
203
|
}
|
|
204
204
|
return h === t.length ? p : null;
|
|
205
205
|
}
|
|
206
|
-
var
|
|
206
|
+
var Le = ye("dans sa rédaction", A([A([E("dans sa rédaction ", { flags: "i" }), O(E("issue ", { flags: "i" }), E("résultante ", { flags: "i" }), E("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), O(A([E("de l'", { flags: "i" }), l], { value: (e) => e[1] }), n)], { value: (e) => e[1] }));
|
|
207
207
|
//#endregion
|
|
208
208
|
//#region src/lib/extractors/qualified_versions.ts
|
|
209
|
-
function
|
|
210
|
-
let t =
|
|
211
|
-
for (let e of
|
|
209
|
+
function Re(e) {
|
|
210
|
+
let t = me(e), n = [];
|
|
211
|
+
for (let e of Le.extract(new T(t.output), { jumpExact: !0 })) for (let i of _(e)) {
|
|
212
212
|
if (i.type !== "parent-enfant" || i.parent.type !== "texte" || i.parent.nature !== "LOI") continue;
|
|
213
213
|
let e = [...r(i.child)].filter((e) => e.type === "article" && e.position.start < i.parent.position.start);
|
|
214
214
|
if (e.length === 1) {
|
|
215
|
-
n.push(
|
|
215
|
+
n.push(ge(t, [e[0].position])[0].position);
|
|
216
216
|
break;
|
|
217
217
|
}
|
|
218
218
|
}
|
|
@@ -220,29 +220,29 @@ function Le(e) {
|
|
|
220
220
|
}
|
|
221
221
|
//#endregion
|
|
222
222
|
//#region src/lib/server/parsed_bills.ts
|
|
223
|
-
var
|
|
224
|
-
function
|
|
223
|
+
var ze = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
224
|
+
function N(e) {
|
|
225
225
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
return
|
|
227
|
+
function P(e) {
|
|
228
|
+
return N(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
229
229
|
}
|
|
230
|
-
function
|
|
231
|
-
return s(
|
|
230
|
+
function Be(e) {
|
|
231
|
+
return s(N(e));
|
|
232
232
|
}
|
|
233
|
-
function
|
|
234
|
-
return `_TocArt${
|
|
233
|
+
function F(e) {
|
|
234
|
+
return `_TocArt${Be(e).replace(/\s+/gu, "")}`;
|
|
235
235
|
}
|
|
236
|
-
function
|
|
236
|
+
function Ve(e, t) {
|
|
237
237
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
238
238
|
}
|
|
239
|
-
function Ve(e) {
|
|
240
|
-
return F(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
241
|
-
}
|
|
242
239
|
function He(e) {
|
|
243
|
-
return
|
|
240
|
+
return P(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
244
241
|
}
|
|
245
242
|
function Ue(e) {
|
|
243
|
+
return He(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
244
|
+
}
|
|
245
|
+
function We(e) {
|
|
246
246
|
switch (e.kind) {
|
|
247
247
|
case "insert_after":
|
|
248
248
|
case "insert_before": return e.insertText;
|
|
@@ -260,12 +260,12 @@ function Ue(e) {
|
|
|
260
260
|
default: return;
|
|
261
261
|
}
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
let t =
|
|
263
|
+
function Ge(e) {
|
|
264
|
+
let t = N(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
|
|
265
265
|
if (n?.[1] !== void 0) return h(n[1]);
|
|
266
266
|
}
|
|
267
|
-
function
|
|
268
|
-
let t =
|
|
267
|
+
function Ke(e) {
|
|
268
|
+
let t = We(e), n = a(t ?? "");
|
|
269
269
|
if (n.length > 0 && t !== void 0) return n.map((e, r) => {
|
|
270
270
|
let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
|
|
271
271
|
return {
|
|
@@ -273,58 +273,58 @@ function Ge(e) {
|
|
|
273
273
|
text: o
|
|
274
274
|
};
|
|
275
275
|
});
|
|
276
|
-
let r =
|
|
276
|
+
let r = Ge(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 qe(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) qe(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)) qe(e, t);
|
|
292
292
|
return t;
|
|
293
293
|
}
|
|
294
|
-
function
|
|
295
|
-
let t =
|
|
294
|
+
function Je(e) {
|
|
295
|
+
let t = P(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 Ye(e) {
|
|
299
|
+
return N(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
300
300
|
}
|
|
301
|
-
function
|
|
302
|
-
let n = new
|
|
301
|
+
function Xe(e, t) {
|
|
302
|
+
let n = new T(e, t), r = Se(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 Ze(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 : Xe(e, r);
|
|
314
314
|
}
|
|
315
|
-
function
|
|
315
|
+
function Qe(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 = Ze(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 = Ze(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 Ze(e) {
|
|
|
332
332
|
}
|
|
333
333
|
return i;
|
|
334
334
|
}
|
|
335
|
-
function
|
|
336
|
-
let t =
|
|
335
|
+
function $e(e) {
|
|
336
|
+
let t = Qe(Ye(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 et(e) {
|
|
340
|
+
return P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
341
341
|
}
|
|
342
|
-
function
|
|
342
|
+
function I(e) {
|
|
343
343
|
return e?.type === "tag";
|
|
344
344
|
}
|
|
345
|
-
function
|
|
345
|
+
function tt(e, t) {
|
|
346
346
|
return e.html(t) ?? "";
|
|
347
347
|
}
|
|
348
|
-
function
|
|
348
|
+
function nt(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 tt(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 = N(e(i).text());
|
|
357
357
|
n.push({
|
|
358
358
|
id: c,
|
|
359
|
-
...
|
|
359
|
+
...rt(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 rt(e, t, n) {
|
|
367
|
+
let r = it(e, t, n);
|
|
368
368
|
return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
|
|
369
369
|
}
|
|
370
|
-
function
|
|
370
|
+
function it(e, t, n) {
|
|
371
371
|
if (t === n) return "";
|
|
372
372
|
if (t.type === "text") return t.data ?? "";
|
|
373
|
-
if (!
|
|
373
|
+
if (!I(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 (I(i) && e.contains(i, n)) return r + it(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 at(e, t) {
|
|
383
|
+
return t.map((t) => N(e(t).text())).filter(Boolean).join("\n");
|
|
384
384
|
}
|
|
385
|
-
function
|
|
386
|
-
let t =
|
|
387
|
-
return !t ||
|
|
385
|
+
function ot(e) {
|
|
386
|
+
let t = P(e);
|
|
387
|
+
return !t || ze.test(t) ? "noise" : m.test(e) ? "directive_candidate" : "context";
|
|
388
388
|
}
|
|
389
|
-
async function
|
|
389
|
+
async function st(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 se(t.canutesDb), { output: i } = await oe({
|
|
393
393
|
date: n,
|
|
394
394
|
html: e,
|
|
395
395
|
includeInternalArticleLinks: t.includeInternalArticleLinks,
|
|
@@ -402,13 +402,13 @@ async function ot(e, t, n) {
|
|
|
402
402
|
});
|
|
403
403
|
return i ?? e;
|
|
404
404
|
}
|
|
405
|
-
function
|
|
405
|
+
function ct(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 I(r) && I(n) && e(n).parents("table").get(0) === r ? r : I(n) ? n : t;
|
|
408
408
|
}
|
|
409
|
-
function
|
|
409
|
+
function lt(e, t, n, r) {
|
|
410
410
|
if (t.has(r.container)) return;
|
|
411
|
-
let i = r.id ??
|
|
411
|
+
let i = r.id ?? F(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,75 @@ function ct(e, t, n, r) {
|
|
|
418
418
|
container: r.container
|
|
419
419
|
}));
|
|
420
420
|
}
|
|
421
|
-
function
|
|
421
|
+
function L(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, t) {
|
|
431
|
+
if (!e(t).hasClass("assnat9ArticleNum") && !ft(e, t) || e(t).find("br").length !== 1) return null;
|
|
432
|
+
let n = "", r = "", i = !1, a = (e) => {
|
|
433
|
+
if (e.type === "text") i ? r += e.data : n += e.data;
|
|
434
|
+
else if (I(e)) if (e.tagName.toLowerCase() === "br") i = !0;
|
|
435
|
+
else for (let t of e.children) a(t);
|
|
436
|
+
};
|
|
437
|
+
a(t);
|
|
438
|
+
let o = C(N(n)), s = N(r);
|
|
439
|
+
return o && !o.title && s ? {
|
|
440
|
+
...o,
|
|
441
|
+
title: s
|
|
442
|
+
} : null;
|
|
443
|
+
}
|
|
444
|
+
function dt(e) {
|
|
431
445
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
432
446
|
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
433
|
-
if (
|
|
434
|
-
let o =
|
|
435
|
-
if (!o) return;
|
|
436
|
-
let s = e(a).attr("id");
|
|
447
|
+
if (Ve(e, a)) return;
|
|
448
|
+
let o = N(e(a).text()), s = e(a).attr("id");
|
|
437
449
|
if (!s || r.has(s)) return;
|
|
438
|
-
let c =
|
|
439
|
-
|
|
450
|
+
let c = ct(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = C(o) ?? (I(l) && (a === l || e(a).find("br").length === 1) ? ut(e, l) : null);
|
|
451
|
+
u && lt(t, n, r, {
|
|
440
452
|
id: s,
|
|
441
|
-
...
|
|
453
|
+
...u,
|
|
442
454
|
element: a,
|
|
443
455
|
container: c
|
|
444
456
|
});
|
|
445
457
|
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
446
458
|
if (n.has(a)) return;
|
|
447
|
-
let o =
|
|
448
|
-
o &&
|
|
459
|
+
let o = C(N(e(a).text())) ?? ut(e, a);
|
|
460
|
+
o && lt(t, n, r, {
|
|
449
461
|
...o,
|
|
450
462
|
element: a,
|
|
451
463
|
container: a
|
|
452
464
|
});
|
|
453
465
|
});
|
|
454
|
-
let i =
|
|
455
|
-
return t.sort((e, t) =>
|
|
466
|
+
let i = L(e);
|
|
467
|
+
return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
|
|
456
468
|
}
|
|
457
|
-
function
|
|
458
|
-
if (
|
|
469
|
+
function ft(e, t) {
|
|
470
|
+
if (Ve(e, t)) return !1;
|
|
459
471
|
let n = t.tagName?.toLowerCase();
|
|
460
472
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
461
473
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
462
474
|
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
475
|
}
|
|
464
|
-
function
|
|
476
|
+
function pt(e) {
|
|
465
477
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
466
478
|
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
467
|
-
if (
|
|
468
|
-
let o =
|
|
469
|
-
o &&
|
|
479
|
+
if (Ve(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ft(e, a)) return;
|
|
480
|
+
let o = C(e(a).text()) ?? ut(e, a);
|
|
481
|
+
o && lt(t, n, r, {
|
|
470
482
|
...o,
|
|
471
483
|
element: a,
|
|
472
484
|
container: a
|
|
473
485
|
});
|
|
474
486
|
}), t;
|
|
475
487
|
}
|
|
476
|
-
function
|
|
477
|
-
let t =
|
|
488
|
+
function mt(e) {
|
|
489
|
+
let t = Be(e ?? "").replace(/[()]/gu, "").trim();
|
|
478
490
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
479
491
|
if (t.toLowerCase() === "unique") return {
|
|
480
492
|
base: 1,
|
|
@@ -483,7 +495,7 @@ function ft(e) {
|
|
|
483
495
|
};
|
|
484
496
|
let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
|
|
485
497
|
if (!n) return;
|
|
486
|
-
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 :
|
|
498
|
+
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : gt(i);
|
|
487
499
|
if (a !== void 0) return {
|
|
488
500
|
base: r,
|
|
489
501
|
suffixOrder: a,
|
|
@@ -491,7 +503,7 @@ function ft(e) {
|
|
|
491
503
|
text: t
|
|
492
504
|
};
|
|
493
505
|
}
|
|
494
|
-
function
|
|
506
|
+
function ht(e, t) {
|
|
495
507
|
if (t.base !== e.base) return t.base - e.base;
|
|
496
508
|
if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
|
|
497
509
|
for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
|
|
@@ -500,14 +512,14 @@ function pt(e, t) {
|
|
|
500
512
|
}
|
|
501
513
|
return 0;
|
|
502
514
|
}
|
|
503
|
-
function
|
|
504
|
-
let t = new
|
|
515
|
+
function gt(e) {
|
|
516
|
+
let t = new T(e), n = Ee(t);
|
|
505
517
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
506
518
|
}
|
|
507
|
-
function
|
|
519
|
+
function _t(e) {
|
|
508
520
|
let t = [], n = e.map((e) => ({
|
|
509
521
|
heading: e,
|
|
510
|
-
token:
|
|
522
|
+
token: mt(e.num)
|
|
511
523
|
}));
|
|
512
524
|
n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
|
|
513
525
|
code: "article_toc_out_of_order",
|
|
@@ -516,7 +528,7 @@ function ht(e) {
|
|
|
516
528
|
let r;
|
|
517
529
|
for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
|
|
518
530
|
if (r !== void 0) {
|
|
519
|
-
let n =
|
|
531
|
+
let n = ht(r, i);
|
|
520
532
|
n === 0 ? t.push({
|
|
521
533
|
code: "article_toc_duplicate_number",
|
|
522
534
|
message: `Article ${e.num ?? e.label} is repeated`,
|
|
@@ -545,60 +557,60 @@ function ht(e) {
|
|
|
545
557
|
}
|
|
546
558
|
return t;
|
|
547
559
|
}
|
|
548
|
-
function
|
|
549
|
-
let t =
|
|
560
|
+
function vt(e) {
|
|
561
|
+
let t = _t(e);
|
|
550
562
|
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
563
|
}
|
|
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) =>
|
|
564
|
+
function yt(e, { warn: t = !0 } = {}) {
|
|
565
|
+
let n = dt(e), r = pt(e);
|
|
566
|
+
if (n.length === 0) return t && vt(r), r;
|
|
567
|
+
let i = L(e), a = (e, t) => {
|
|
568
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => F(e.num ?? e.label)));
|
|
557
569
|
for (let i of t) {
|
|
558
|
-
let t =
|
|
570
|
+
let t = F(i.num ?? i.label);
|
|
559
571
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
560
572
|
}
|
|
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 &&
|
|
573
|
+
return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
|
|
574
|
+
}, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && _t(c).length > _t(s).length ? s : c;
|
|
575
|
+
return t && vt(l), l;
|
|
564
576
|
}
|
|
565
|
-
function
|
|
577
|
+
function bt(e) {
|
|
566
578
|
let t = e.next;
|
|
567
579
|
for (; t !== null;) {
|
|
568
|
-
if (
|
|
580
|
+
if (I(t)) return t;
|
|
569
581
|
t = t.next;
|
|
570
582
|
}
|
|
571
583
|
return null;
|
|
572
584
|
}
|
|
573
|
-
function
|
|
585
|
+
function xt(e, t, n) {
|
|
574
586
|
let r = e(t.container);
|
|
575
587
|
if (!r.is("p.assnat9ArticleNum")) return;
|
|
576
588
|
let i = r.parent(), a = i.parent();
|
|
577
589
|
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
578
590
|
let o = a.children().get();
|
|
579
|
-
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" ||
|
|
591
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || N(e(o[1]).text()) !== "") return;
|
|
580
592
|
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(
|
|
593
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(N(e(s).text())))) return;
|
|
582
594
|
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) =>
|
|
595
|
+
if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => C(e(t).text()) !== null))) return [
|
|
584
596
|
t.container,
|
|
585
597
|
...s === void 0 ? [] : [s],
|
|
586
598
|
c
|
|
587
599
|
];
|
|
588
600
|
}
|
|
589
|
-
function
|
|
601
|
+
function St(e, t, n, r = L(e)) {
|
|
590
602
|
let i = [t.container], a = n?.container;
|
|
591
|
-
for (let e =
|
|
603
|
+
for (let e = bt(t.container); e !== null && e !== a; e = bt(e)) i.push(e);
|
|
592
604
|
if (i.length > 1) return i;
|
|
593
|
-
let o =
|
|
605
|
+
let o = xt(e, t, n);
|
|
594
606
|
if (o !== void 0) return o;
|
|
595
|
-
let s =
|
|
607
|
+
let s = R(r, t.container), c = a ? R(r, a) : -1;
|
|
596
608
|
return e("body > *").get().filter((e) => {
|
|
597
|
-
let t =
|
|
609
|
+
let t = R(r, e);
|
|
598
610
|
return t >= s && (c === -1 || t < c);
|
|
599
611
|
});
|
|
600
612
|
}
|
|
601
|
-
function
|
|
613
|
+
function Ct(e, t) {
|
|
602
614
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
603
615
|
for (let i of t) {
|
|
604
616
|
let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
|
|
@@ -606,97 +618,97 @@ function xt(e, t) {
|
|
|
606
618
|
}
|
|
607
619
|
return n;
|
|
608
620
|
}
|
|
609
|
-
function
|
|
621
|
+
function wt(e, t, n) {
|
|
610
622
|
let r = [], i = !1;
|
|
611
|
-
for (let a of
|
|
612
|
-
let n = e(a).is("table.akn-quoted-table") ?
|
|
623
|
+
for (let a of Ct(e, n)) {
|
|
624
|
+
let n = e(a).is("table.akn-quoted-table") ? fn(e, a) : N(e(a).text());
|
|
613
625
|
if (!n) continue;
|
|
614
|
-
|
|
615
|
-
let o = i ? "noise" :
|
|
626
|
+
ze.test(n) && (i = !0);
|
|
627
|
+
let o = i ? "noise" : ot(n), s = `${t}-b${r.length + 1}`;
|
|
616
628
|
e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
|
|
617
629
|
id: s,
|
|
618
630
|
articleId: t,
|
|
619
631
|
kind: o,
|
|
620
|
-
links:
|
|
632
|
+
links: nt(e, a),
|
|
621
633
|
text: n,
|
|
622
|
-
html:
|
|
634
|
+
html: tt(e, a)
|
|
623
635
|
});
|
|
624
636
|
}
|
|
625
637
|
return r;
|
|
626
638
|
}
|
|
627
|
-
function
|
|
639
|
+
function Tt(e, t) {
|
|
628
640
|
if (t.length === 0) return e;
|
|
629
641
|
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
642
|
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
643
|
}
|
|
632
|
-
function
|
|
633
|
-
let t =
|
|
634
|
-
for (let e of
|
|
635
|
-
let r =
|
|
644
|
+
function Et(e) {
|
|
645
|
+
let t = w(e), n = Dt(t);
|
|
646
|
+
for (let e of yt(t, { warn: !1 })) {
|
|
647
|
+
let r = F(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
636
648
|
if (a !== r) {
|
|
637
|
-
if (a?.startsWith("_Toc") && !
|
|
649
|
+
if (a?.startsWith("_Toc") && !kt(n, a, e.element)) {
|
|
638
650
|
let e = t("<span></span>").attr("id", a);
|
|
639
651
|
i.before(e);
|
|
640
652
|
let r = e.get(0);
|
|
641
|
-
|
|
653
|
+
I(r) && z(n, a, r);
|
|
642
654
|
}
|
|
643
|
-
a &&
|
|
655
|
+
a && Ot(n, a, e.element), i.attr("id", r), z(n, r, e.element);
|
|
644
656
|
}
|
|
645
657
|
}
|
|
646
|
-
let r =
|
|
658
|
+
let r = yt(t), i = L(t);
|
|
647
659
|
for (let [e, a] of r.entries()) {
|
|
648
|
-
let o =
|
|
660
|
+
let o = St(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
661
|
for (let e of o) {
|
|
650
662
|
let r = t(e).attr("data-alinea")?.trim();
|
|
651
663
|
if (!r) continue;
|
|
652
664
|
let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
|
|
653
|
-
if (
|
|
665
|
+
if (kt(n, i, e)) continue;
|
|
654
666
|
let o = t(e).attr("id");
|
|
655
667
|
if (o && o !== i) {
|
|
656
668
|
let r = t("<span></span>").attr("id", i);
|
|
657
669
|
t(e).before(r);
|
|
658
670
|
let a = r.get(0);
|
|
659
|
-
|
|
660
|
-
} else o &&
|
|
671
|
+
I(a) && z(n, i, a);
|
|
672
|
+
} else o && Ot(n, o, e), t(e).attr("id", i), z(n, i, e);
|
|
661
673
|
}
|
|
662
674
|
}
|
|
663
675
|
return t.html();
|
|
664
676
|
}
|
|
665
|
-
function
|
|
677
|
+
function Dt(e) {
|
|
666
678
|
let t = /* @__PURE__ */ new Map();
|
|
667
679
|
for (let n of e("[id]").get()) {
|
|
668
680
|
let r = e(n).attr("id");
|
|
669
|
-
r &&
|
|
681
|
+
r && z(t, r, n);
|
|
670
682
|
}
|
|
671
683
|
return t;
|
|
672
684
|
}
|
|
673
|
-
function
|
|
685
|
+
function z(e, t, n) {
|
|
674
686
|
let r = e.get(t);
|
|
675
687
|
r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
|
|
676
688
|
}
|
|
677
|
-
function
|
|
689
|
+
function Ot(e, t, n) {
|
|
678
690
|
let r = e.get(t);
|
|
679
691
|
r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
|
|
680
692
|
}
|
|
681
|
-
function
|
|
693
|
+
function kt(e, t, n) {
|
|
682
694
|
for (let r of e.get(t) ?? []) if (r !== n) return !0;
|
|
683
695
|
return !1;
|
|
684
696
|
}
|
|
685
|
-
function
|
|
686
|
-
let n =
|
|
697
|
+
function At(e, t) {
|
|
698
|
+
let n = et("sourceText" in t ? t.sourceText : "");
|
|
687
699
|
if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
|
|
688
|
-
let t =
|
|
700
|
+
let t = et(e.text);
|
|
689
701
|
return t.length > 0 && (n.includes(t) || t.includes(n));
|
|
690
702
|
});
|
|
691
703
|
}
|
|
692
|
-
function
|
|
704
|
+
function jt(e, t) {
|
|
693
705
|
if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
|
|
694
706
|
}
|
|
695
|
-
function
|
|
707
|
+
function Mt(e) {
|
|
696
708
|
return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
|
|
697
709
|
}
|
|
698
|
-
function
|
|
699
|
-
let t =
|
|
710
|
+
function Nt(e) {
|
|
711
|
+
let t = Re(e.text);
|
|
700
712
|
if (t.length !== 1) return;
|
|
701
713
|
let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
|
|
702
714
|
let r = n.text ?? "", i = e.text.indexOf(r);
|
|
@@ -710,21 +722,21 @@ function jt(e) {
|
|
|
710
722
|
modifyingArticleLabel: i.text ?? ""
|
|
711
723
|
};
|
|
712
724
|
}
|
|
713
|
-
function
|
|
714
|
-
let n =
|
|
725
|
+
function Pt(e, t) {
|
|
726
|
+
let n = N(e);
|
|
715
727
|
if (!n) return;
|
|
716
728
|
let r = x(n);
|
|
717
729
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
718
730
|
}
|
|
719
|
-
function
|
|
720
|
-
let t = /* @__PURE__ */ new Map(), n = [], r =
|
|
731
|
+
function Ft(e) {
|
|
732
|
+
let t = /* @__PURE__ */ new Map(), n = [], r = ae(e.map((e) => e.text)), i = -1;
|
|
721
733
|
for (let [a, o] of e.entries()) {
|
|
722
734
|
let e = r.get(a);
|
|
723
735
|
if (e && (i = e.endIndex), a <= i) {
|
|
724
736
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
725
737
|
continue;
|
|
726
738
|
}
|
|
727
|
-
let s =
|
|
739
|
+
let s = Pt(o.text, n.at(-1)?.level);
|
|
728
740
|
if (s === void 0) {
|
|
729
741
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
730
742
|
continue;
|
|
@@ -737,14 +749,14 @@ function Nt(e) {
|
|
|
737
749
|
}
|
|
738
750
|
return t;
|
|
739
751
|
}
|
|
740
|
-
function
|
|
752
|
+
function It(e, t) {
|
|
741
753
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
742
754
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
743
755
|
return n;
|
|
744
756
|
}
|
|
745
|
-
function
|
|
757
|
+
function Lt(e, t, n) {
|
|
746
758
|
if (!t) return;
|
|
747
|
-
let r =
|
|
759
|
+
let r = It(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
748
760
|
if (r.length === 0) return;
|
|
749
761
|
let i = r.map((e) => e.id);
|
|
750
762
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -759,7 +771,7 @@ function Ft(e, t, n) {
|
|
|
759
771
|
}
|
|
760
772
|
};
|
|
761
773
|
}
|
|
762
|
-
function
|
|
774
|
+
function Rt(e) {
|
|
763
775
|
let t = [], n = 0;
|
|
764
776
|
for (let r of e.blocks) {
|
|
765
777
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -773,7 +785,7 @@ function It(e) {
|
|
|
773
785
|
}
|
|
774
786
|
return t;
|
|
775
787
|
}
|
|
776
|
-
function
|
|
788
|
+
function zt(e, t, n) {
|
|
777
789
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
778
790
|
if (a.length === 0) return;
|
|
779
791
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -787,7 +799,7 @@ function Lt(e, t, n) {
|
|
|
787
799
|
}
|
|
788
800
|
};
|
|
789
801
|
}
|
|
790
|
-
function
|
|
802
|
+
function Bt(e, t, n) {
|
|
791
803
|
if (!t) return;
|
|
792
804
|
let r = e.directiveText.indexOf(t.text);
|
|
793
805
|
if (r === -1) return;
|
|
@@ -800,15 +812,15 @@ function Rt(e, t, n) {
|
|
|
800
812
|
stop: a
|
|
801
813
|
};
|
|
802
814
|
}
|
|
803
|
-
function
|
|
804
|
-
let n = performance.now(), r = performance.now(), i =
|
|
815
|
+
function Vt(e, t) {
|
|
816
|
+
let n = performance.now(), r = performance.now(), i = Rt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Ft(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
|
|
805
817
|
for (let t of e.blocks) {
|
|
806
|
-
t.qualifiedVersion =
|
|
807
|
-
let e =
|
|
818
|
+
t.qualifiedVersion = Nt(t);
|
|
819
|
+
let e = Mt(t);
|
|
808
820
|
(e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
|
|
809
821
|
}
|
|
810
|
-
let p = performance.now() - o, m = performance.now(), h = te(), g =
|
|
811
|
-
let n =
|
|
822
|
+
let p = performance.now() - o, m = performance.now(), h = te(), g = de(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
|
|
823
|
+
let n = zt(e, i, t), r = jt(s, n) ?? At(e.blocks, t), a = Mt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Bt(e, r, t), f = Lt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
|
|
812
824
|
return {
|
|
813
825
|
articleId: e.id,
|
|
814
826
|
blockId: r?.id,
|
|
@@ -832,8 +844,8 @@ function zt(e, t) {
|
|
|
832
844
|
if (!t) return [e];
|
|
833
845
|
if (b.has(t.id)) return [];
|
|
834
846
|
let n = x.get(t.id);
|
|
835
|
-
if (n === void 0 && (n =
|
|
836
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
847
|
+
if (n === void 0 && (n = Ie(t.text, Mt(t), e.directive), x.set(t.id, n)), !n) {
|
|
848
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Fe(t.text, n.operations.length) : null;
|
|
837
849
|
return [r ? {
|
|
838
850
|
...e,
|
|
839
851
|
sourceAnnotations: r
|
|
@@ -864,13 +876,13 @@ function zt(e, t) {
|
|
|
864
876
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
865
877
|
}), ee;
|
|
866
878
|
}
|
|
867
|
-
function
|
|
879
|
+
function Ht(e) {
|
|
868
880
|
let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
|
|
869
881
|
for (let i of e) {
|
|
870
|
-
let e =
|
|
882
|
+
let e = Ke(i.directive);
|
|
871
883
|
if (e.length === 0) continue;
|
|
872
884
|
let a = e.map(({ num: e }) => ({
|
|
873
|
-
definitionId: `${i.articleId}:article:${
|
|
885
|
+
definitionId: `${i.articleId}:article:${Ue(e)}`,
|
|
874
886
|
num: e
|
|
875
887
|
}));
|
|
876
888
|
t.set(i, a);
|
|
@@ -893,13 +905,13 @@ function Bt(e) {
|
|
|
893
905
|
definitions: n
|
|
894
906
|
};
|
|
895
907
|
}
|
|
896
|
-
function
|
|
897
|
-
let r = new Map(t.map((e) => [
|
|
908
|
+
function Ut(e, t, n) {
|
|
909
|
+
let r = new Map(t.map((e) => [He(e.num), e]));
|
|
898
910
|
return e.map((e) => {
|
|
899
|
-
let t = n.get(e), i = t?.[0], a = [...
|
|
911
|
+
let t = n.get(e), i = t?.[0], a = [...qe(e.directive.reference)].map((e) => r.get(He(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
|
|
900
912
|
definitionId: a.definitionId,
|
|
901
913
|
num: a.num
|
|
902
|
-
}, s =
|
|
914
|
+
}, s = Je(e.directive), c = (e.targetIds?.length ?? 0) > 0;
|
|
903
915
|
return {
|
|
904
916
|
...e,
|
|
905
917
|
...i === void 0 ? {} : { createdArticle: i },
|
|
@@ -912,7 +924,7 @@ function Vt(e, t, n) {
|
|
|
912
924
|
};
|
|
913
925
|
});
|
|
914
926
|
}
|
|
915
|
-
function
|
|
927
|
+
function Wt(e) {
|
|
916
928
|
switch (e.kind) {
|
|
917
929
|
case "insert_after":
|
|
918
930
|
case "insert_before": return [e.insertText];
|
|
@@ -930,8 +942,8 @@ function Ht(e) {
|
|
|
930
942
|
default: return [];
|
|
931
943
|
}
|
|
932
944
|
}
|
|
933
|
-
function
|
|
934
|
-
return e.flatMap((e) =>
|
|
945
|
+
function Gt(e) {
|
|
946
|
+
return e.flatMap((e) => Wt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
935
947
|
code: "nested_french_quote_in_redaction",
|
|
936
948
|
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
949
|
details: {
|
|
@@ -943,18 +955,18 @@ function Ut(e) {
|
|
|
943
955
|
}
|
|
944
956
|
})));
|
|
945
957
|
}
|
|
946
|
-
function
|
|
947
|
-
return
|
|
958
|
+
function Kt(e) {
|
|
959
|
+
return Wt(e).map((t) => ({
|
|
948
960
|
directiveKind: e.kind,
|
|
949
961
|
text: t
|
|
950
962
|
}));
|
|
951
963
|
}
|
|
952
|
-
function
|
|
964
|
+
function qt(e) {
|
|
953
965
|
let t = /* @__PURE__ */ new Set();
|
|
954
966
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
955
967
|
return Array.from(t);
|
|
956
968
|
}
|
|
957
|
-
function
|
|
969
|
+
function Jt(e, t) {
|
|
958
970
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
959
971
|
for (let e of r) {
|
|
960
972
|
let t = n.get(e);
|
|
@@ -966,11 +978,11 @@ function Kt(e, t) {
|
|
|
966
978
|
}
|
|
967
979
|
return i;
|
|
968
980
|
}
|
|
969
|
-
function
|
|
981
|
+
function Yt(e, t, n) {
|
|
970
982
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
971
983
|
}
|
|
972
|
-
function
|
|
973
|
-
let r =
|
|
984
|
+
function Xt(e, t, n) {
|
|
985
|
+
let r = qt(n), i = r.flatMap((t) => {
|
|
974
986
|
for (let n of e.blocks) {
|
|
975
987
|
let e = n.text.indexOf(t);
|
|
976
988
|
if (e !== -1) return [{
|
|
@@ -989,7 +1001,7 @@ function Jt(e, t, n) {
|
|
|
989
1001
|
e.directiveText
|
|
990
1002
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
991
1003
|
if (!o) return [];
|
|
992
|
-
let s =
|
|
1004
|
+
let s = Jt(e, t);
|
|
993
1005
|
if (s.length === 0) return [];
|
|
994
1006
|
let c = [], l = 0;
|
|
995
1007
|
for (let e of r) {
|
|
@@ -997,7 +1009,7 @@ function Jt(e, t, n) {
|
|
|
997
1009
|
if (t === -1) continue;
|
|
998
1010
|
let n = t + e.length;
|
|
999
1011
|
l = n;
|
|
1000
|
-
let r =
|
|
1012
|
+
let r = Yt(s, t, n);
|
|
1001
1013
|
r && c.push({
|
|
1002
1014
|
blockId: r.block.id,
|
|
1003
1015
|
start: t - r.start,
|
|
@@ -1007,15 +1019,15 @@ function Jt(e, t, n) {
|
|
|
1007
1019
|
}
|
|
1008
1020
|
return c;
|
|
1009
1021
|
}
|
|
1010
|
-
function
|
|
1022
|
+
function Zt(e, t) {
|
|
1011
1023
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
1012
1024
|
return t.flatMap((e) => {
|
|
1013
1025
|
let t = n.get(e.articleId);
|
|
1014
|
-
return t ?
|
|
1026
|
+
return t ? Kt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
1015
1027
|
articleId: e.articleId,
|
|
1016
1028
|
code: "nested_french_quote_in_redaction",
|
|
1017
1029
|
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:
|
|
1030
|
+
ranges: Xt(t, e, r),
|
|
1019
1031
|
severity: "warning",
|
|
1020
1032
|
details: {
|
|
1021
1033
|
blockId: e.blockId,
|
|
@@ -1026,8 +1038,8 @@ function Yt(e, t) {
|
|
|
1026
1038
|
})) : [];
|
|
1027
1039
|
});
|
|
1028
1040
|
}
|
|
1029
|
-
function
|
|
1030
|
-
let n = new Map(e.flatMap((e) => [...
|
|
1041
|
+
function Qt(e, t) {
|
|
1042
|
+
let n = new Map(e.flatMap((e) => [...ae(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
1031
1043
|
articleId: e.id,
|
|
1032
1044
|
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
1033
1045
|
...n
|
|
@@ -1049,8 +1061,8 @@ function Xt(e, t) {
|
|
|
1049
1061
|
}];
|
|
1050
1062
|
});
|
|
1051
1063
|
}
|
|
1052
|
-
function
|
|
1053
|
-
let c = new
|
|
1064
|
+
function $t(e, t, n, r, i, a, o = !0, s) {
|
|
1065
|
+
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
1066
|
sourceFormat: e,
|
|
1055
1067
|
documentDate: r,
|
|
1056
1068
|
html: t,
|
|
@@ -1071,14 +1083,14 @@ function Zt(e, t, n, r, i, a, o = !0, s) {
|
|
|
1071
1083
|
directiveTextSize: u.length
|
|
1072
1084
|
}), e;
|
|
1073
1085
|
}
|
|
1074
|
-
let f = c.timeSync("extractGlobalApplicabilityDate", () =>
|
|
1086
|
+
let f = c.timeSync("extractGlobalApplicabilityDate", () => $e(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
1075
1087
|
let e = [];
|
|
1076
1088
|
for (let t of i) {
|
|
1077
|
-
let n =
|
|
1089
|
+
let n = Vt(t, c.enabled ? p : void 0);
|
|
1078
1090
|
e.push(...n);
|
|
1079
1091
|
}
|
|
1080
1092
|
return e;
|
|
1081
|
-
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () =>
|
|
1093
|
+
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Ht(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Ut(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Gt(_), { count: _.length }), y = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Zt(i, _), ...Qt(i, _)], { count: _.length }), ee = {
|
|
1082
1094
|
...d,
|
|
1083
1095
|
...f ? { globalApplicabilityDate: f } : {},
|
|
1084
1096
|
...g.length > 0 ? { internalArticleDefinitions: g } : {},
|
|
@@ -1172,18 +1184,18 @@ function Zt(e, t, n, r, i, a, o = !0, s) {
|
|
|
1172
1184
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1173
1185
|
}), ee;
|
|
1174
1186
|
}
|
|
1175
|
-
function
|
|
1187
|
+
function en(e) {
|
|
1176
1188
|
return { items: e.map((e) => ({
|
|
1177
1189
|
id: e.id,
|
|
1178
1190
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1179
1191
|
type: "article"
|
|
1180
1192
|
})) };
|
|
1181
1193
|
}
|
|
1182
|
-
function
|
|
1183
|
-
return Array.from(
|
|
1194
|
+
function tn(e) {
|
|
1195
|
+
return Array.from(ue(e)).filter((e) => e.type === "article").map((e) => P(e.line.split(/[::]/u)[0]));
|
|
1184
1196
|
}
|
|
1185
|
-
function
|
|
1186
|
-
let i =
|
|
1197
|
+
function nn(e, t, n, r) {
|
|
1198
|
+
let i = _t(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ue(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? F(e.num) : w(e.html)("p.TCNumArticle").first().attr("id") ?? F(e.label) : e.id), c = o.map((e) => e.id);
|
|
1187
1199
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1188
1200
|
code: "article_toc_source_heading_mismatch",
|
|
1189
1201
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1199,8 +1211,8 @@ function en(e, t, n, r) {
|
|
|
1199
1211
|
});
|
|
1200
1212
|
return i;
|
|
1201
1213
|
}
|
|
1202
|
-
function
|
|
1203
|
-
let r =
|
|
1214
|
+
function rn(e, t, n) {
|
|
1215
|
+
let r = tn(b(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => P(e.label)), a = en(e), o = [...n, ...nn(e, a, t, "assemblee-html")];
|
|
1204
1216
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1205
1217
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1206
1218
|
o.push({
|
|
@@ -1224,24 +1236,24 @@ function tn(e, t, n) {
|
|
|
1224
1236
|
tableOfContents: a
|
|
1225
1237
|
};
|
|
1226
1238
|
}
|
|
1227
|
-
async function
|
|
1228
|
-
let n = new
|
|
1239
|
+
async function an(e, t) {
|
|
1240
|
+
let n = new Ce("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => on(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Et(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => w(i)), o = n.timeSync("extractArticleHeadings", () => yt(a)), s = new Set(o.map((e) => e.id)), c = pt(a).filter((e) => !s.has(F(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1229
1241
|
code: "article_toc_source_heading_mismatch",
|
|
1230
1242
|
message: "Some structural article headings were not retained",
|
|
1231
1243
|
details: { discardedCandidates: c }
|
|
1232
|
-
}] : [], u =
|
|
1233
|
-
let n =
|
|
1244
|
+
}] : [], u = L(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
|
|
1245
|
+
let n = St(a, e, o[t + 1], u), r = wt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1234
1246
|
return {
|
|
1235
1247
|
id: e.id,
|
|
1236
1248
|
label: e.label,
|
|
1237
1249
|
num: e.num,
|
|
1238
1250
|
title: e.title,
|
|
1239
|
-
text:
|
|
1240
|
-
html: n.map((e) =>
|
|
1251
|
+
text: at(a, n),
|
|
1252
|
+
html: n.map((e) => tt(a, e)).join("\n"),
|
|
1241
1253
|
directiveText: i,
|
|
1242
1254
|
blocks: r
|
|
1243
1255
|
};
|
|
1244
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1256
|
+
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Tt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => rn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => $t("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
|
|
1245
1257
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1246
1258
|
articleCount: h.articles.length,
|
|
1247
1259
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1249,18 +1261,18 @@ async function nn(e, t) {
|
|
|
1249
1261
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1250
1262
|
}), h;
|
|
1251
1263
|
}
|
|
1252
|
-
async function
|
|
1264
|
+
async function on(e, t) {
|
|
1253
1265
|
return {
|
|
1254
1266
|
sourceFormat: "assemblee-html",
|
|
1255
1267
|
documentDate: t.date,
|
|
1256
1268
|
html: e,
|
|
1257
|
-
linkedHtml: await
|
|
1269
|
+
linkedHtml: await st(e, t, t.date)
|
|
1258
1270
|
};
|
|
1259
1271
|
}
|
|
1260
|
-
function
|
|
1272
|
+
function B(e) {
|
|
1261
1273
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1262
1274
|
}
|
|
1263
|
-
function
|
|
1275
|
+
function sn(e) {
|
|
1264
1276
|
let t = e;
|
|
1265
1277
|
for (let e = 0; e < 3; e++) {
|
|
1266
1278
|
let e = t;
|
|
@@ -1268,27 +1280,27 @@ function an(e) {
|
|
|
1268
1280
|
}
|
|
1269
1281
|
return t;
|
|
1270
1282
|
}
|
|
1271
|
-
function
|
|
1283
|
+
function cn(e) {
|
|
1272
1284
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1273
1285
|
}
|
|
1274
|
-
function
|
|
1286
|
+
function V(e) {
|
|
1275
1287
|
return e.name.replace(/^.*:/u, "");
|
|
1276
1288
|
}
|
|
1277
|
-
function
|
|
1278
|
-
return t.children.map((t) =>
|
|
1289
|
+
function ln(e, t) {
|
|
1290
|
+
return t.children.map((t) => H(e, t)).filter(Boolean).join("");
|
|
1279
1291
|
}
|
|
1280
|
-
function
|
|
1281
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1292
|
+
function un(e, t) {
|
|
1293
|
+
return t.children.map((t) => t.type === "text" && cn(t.data) ? sn(t.data) : H(e, t)).filter(Boolean).join("");
|
|
1282
1294
|
}
|
|
1283
|
-
function
|
|
1295
|
+
function H(e, t) {
|
|
1284
1296
|
if (t.type === "text") {
|
|
1285
1297
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1286
|
-
return
|
|
1298
|
+
return cn(e) ? sn(e) : B(e);
|
|
1287
1299
|
}
|
|
1288
|
-
if (!
|
|
1289
|
-
let n =
|
|
1300
|
+
if (!I(t)) return "";
|
|
1301
|
+
let n = V(t), r = ln(e, t);
|
|
1290
1302
|
switch (n) {
|
|
1291
|
-
case "p": return `<p${
|
|
1303
|
+
case "p": return `<p${U(e, t, [
|
|
1292
1304
|
"id",
|
|
1293
1305
|
"class",
|
|
1294
1306
|
"align",
|
|
@@ -1302,13 +1314,13 @@ function U(e, t) {
|
|
|
1302
1314
|
case "u":
|
|
1303
1315
|
case "sup":
|
|
1304
1316
|
case "sub":
|
|
1305
|
-
case "abbr": return `<${n}${
|
|
1317
|
+
case "abbr": return `<${n}${U(e, t, [
|
|
1306
1318
|
"id",
|
|
1307
1319
|
"class",
|
|
1308
1320
|
"title",
|
|
1309
1321
|
"style"
|
|
1310
1322
|
])}>${r}</${n}>`;
|
|
1311
|
-
case "a": return `<a href="${
|
|
1323
|
+
case "a": return `<a href="${B(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${U(e, t, [
|
|
1312
1324
|
"id",
|
|
1313
1325
|
"class",
|
|
1314
1326
|
"title",
|
|
@@ -1319,8 +1331,8 @@ function U(e, t) {
|
|
|
1319
1331
|
case "tbody":
|
|
1320
1332
|
case "tr":
|
|
1321
1333
|
case "th":
|
|
1322
|
-
case "td": return
|
|
1323
|
-
case "caption": return `<caption${
|
|
1334
|
+
case "td": return pn(e, t, n, r);
|
|
1335
|
+
case "caption": return `<caption${U(e, t, [
|
|
1324
1336
|
"id",
|
|
1325
1337
|
"class",
|
|
1326
1338
|
"align",
|
|
@@ -1328,12 +1340,12 @@ function U(e, t) {
|
|
|
1328
1340
|
])}>${r}</caption>`;
|
|
1329
1341
|
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1330
1342
|
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1331
|
-
case "content": return
|
|
1332
|
-
case "alinea": return
|
|
1333
|
-
case "article": return
|
|
1343
|
+
case "content": return un(e, t);
|
|
1344
|
+
case "alinea": return On(e, t, "div", "akn-alinea");
|
|
1345
|
+
case "article": return On(e, t, "article", "akn-article");
|
|
1334
1346
|
case "blockList":
|
|
1335
1347
|
case "list": return `<div class="akn-list">${r}</div>`;
|
|
1336
|
-
case "item": return
|
|
1348
|
+
case "item": return On(e, t, "div", "akn-item");
|
|
1337
1349
|
case "listIntroduction":
|
|
1338
1350
|
case "listWrapUp":
|
|
1339
1351
|
case "intro":
|
|
@@ -1349,12 +1361,12 @@ function U(e, t) {
|
|
|
1349
1361
|
case "book":
|
|
1350
1362
|
case "tome":
|
|
1351
1363
|
case "subchapter":
|
|
1352
|
-
case "subsection": return
|
|
1364
|
+
case "subsection": return On(e, t, "section", `akn-${n}`);
|
|
1353
1365
|
case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
|
|
1354
1366
|
default: return r;
|
|
1355
1367
|
}
|
|
1356
1368
|
}
|
|
1357
|
-
function
|
|
1369
|
+
function dn(e, t) {
|
|
1358
1370
|
let n = e(t).text();
|
|
1359
1371
|
if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
|
|
1360
1372
|
let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
|
|
@@ -1365,39 +1377,39 @@ function ln(e, t) {
|
|
|
1365
1377
|
let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
|
|
1366
1378
|
if (l) {
|
|
1367
1379
|
let t = Number(e(l).attr("rowspan") ?? "1");
|
|
1368
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 &&
|
|
1380
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && N(e(l).text()) !== "«") return [];
|
|
1369
1381
|
i = t - 1;
|
|
1370
1382
|
}
|
|
1371
1383
|
if (u) {
|
|
1372
1384
|
let t = Number(e(u).attr("rowspan") ?? "1");
|
|
1373
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(
|
|
1385
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(N(e(u).text()))) return [];
|
|
1374
1386
|
a = t - 1;
|
|
1375
1387
|
}
|
|
1376
1388
|
return [l, u];
|
|
1377
1389
|
});
|
|
1378
1390
|
if (o.some((e) => e.length !== 2)) return;
|
|
1379
|
-
let s = o.map(([t]) => t ?
|
|
1391
|
+
let s = o.map(([t]) => t ? N(e(t).text()) : ""), c = o.map(([, t]) => t ? N(e(t).text()) : "");
|
|
1380
1392
|
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
1393
|
e(t).addClass("akn-quoted-table");
|
|
1382
1394
|
for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
|
|
1383
1395
|
}
|
|
1384
1396
|
}
|
|
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) =>
|
|
1397
|
+
function fn(e, t) {
|
|
1398
|
+
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(N(e(t).text())))).text();
|
|
1399
|
+
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => N(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
|
|
1388
1400
|
}
|
|
1389
|
-
function
|
|
1401
|
+
function U(e, t, n, r = {}) {
|
|
1390
1402
|
let i = [];
|
|
1391
1403
|
for (let r of n) {
|
|
1392
1404
|
if (r === "style") continue;
|
|
1393
1405
|
let n = e(t).attr(r);
|
|
1394
|
-
n !== void 0 && i.push(`${r}="${
|
|
1406
|
+
n !== void 0 && i.push(`${r}="${B(n)}"`);
|
|
1395
1407
|
}
|
|
1396
1408
|
let a = r.style ?? e(t).attr("style");
|
|
1397
|
-
return a && i.push(`style="${
|
|
1409
|
+
return a && i.push(`style="${B(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1398
1410
|
}
|
|
1399
|
-
function
|
|
1400
|
-
return `<${n}${
|
|
1411
|
+
function pn(e, t, n, r) {
|
|
1412
|
+
return `<${n}${U(e, t, [
|
|
1401
1413
|
"id",
|
|
1402
1414
|
"class",
|
|
1403
1415
|
"colspan",
|
|
@@ -1410,155 +1422,155 @@ function fn(e, t, n, r) {
|
|
|
1410
1422
|
"cellspacing",
|
|
1411
1423
|
"cellpadding",
|
|
1412
1424
|
"style"
|
|
1413
|
-
], { style:
|
|
1425
|
+
], { style: mn(e, t, n) })}>${r}</${n}>`;
|
|
1414
1426
|
}
|
|
1415
|
-
function
|
|
1427
|
+
function mn(e, t, n) {
|
|
1416
1428
|
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 =
|
|
1429
|
+
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = hn(r, "text-align", "center")), r || void 0;
|
|
1418
1430
|
}
|
|
1419
|
-
function
|
|
1431
|
+
function hn(e, t, n) {
|
|
1420
1432
|
let r = e.trim();
|
|
1421
1433
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1422
1434
|
}
|
|
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">${V(n.join(" "))}</p>`;
|
|
1426
|
-
}
|
|
1427
1435
|
function gn(e, t) {
|
|
1436
|
+
let n = [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean);
|
|
1437
|
+
return n.length === 0 ? "" : `<p class="akn-heading">${B(n.join(" "))}</p>`;
|
|
1438
|
+
}
|
|
1439
|
+
function _n(e, t) {
|
|
1428
1440
|
if (!t) return !1;
|
|
1429
|
-
let n = (e) =>
|
|
1430
|
-
return n(
|
|
1441
|
+
let n = (e) => N(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1442
|
+
return n(N(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1431
1443
|
}
|
|
1432
|
-
function
|
|
1433
|
-
let t =
|
|
1444
|
+
function vn(e) {
|
|
1445
|
+
let t = B(e);
|
|
1434
1446
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
|
|
1435
1447
|
}
|
|
1436
|
-
function
|
|
1437
|
-
return
|
|
1448
|
+
function yn(e, t) {
|
|
1449
|
+
return bn([xn({
|
|
1438
1450
|
content: e,
|
|
1439
1451
|
pastille: t
|
|
1440
1452
|
})]);
|
|
1441
1453
|
}
|
|
1442
|
-
function
|
|
1454
|
+
function bn(e) {
|
|
1443
1455
|
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
1456
|
}
|
|
1445
|
-
function
|
|
1446
|
-
let i = n ? ` style="${
|
|
1447
|
-
return `<tr${r ? ` class="${
|
|
1448
|
-
}
|
|
1449
|
-
function xn({ content: e, style: t, contextClass: n }) {
|
|
1450
|
-
let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
|
|
1451
|
-
return `<tr${n ? ` class="${V(n)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 no-right-border"><div class="tableauComparatifCell${i}"><p class="pastille"><br></p></div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${i}"${r}>${e}</div></td></tr>`;
|
|
1457
|
+
function xn({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1458
|
+
let i = n ? ` style="${B(n)}"` : "", a = r ? ` ${B(r)}` : "";
|
|
1459
|
+
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}">${vn(t)}</div></td><td style="overflow: hidden; width: 95.0%;" class="texte-col-1 no-right-border"><div class="tableauComparatifCell${a}"${i}>${e}</div></td></tr>`;
|
|
1452
1460
|
}
|
|
1453
|
-
function Sn(e, t) {
|
|
1454
|
-
|
|
1461
|
+
function Sn({ content: e, style: t, contextClass: n }) {
|
|
1462
|
+
let r = t ? ` style="${B(t)}"` : "", i = n ? ` ${B(n)}` : "";
|
|
1463
|
+
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>`;
|
|
1455
1464
|
}
|
|
1456
1465
|
function Cn(e, t) {
|
|
1457
|
-
return e(t).
|
|
1466
|
+
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
1458
1467
|
}
|
|
1459
1468
|
function wn(e, t) {
|
|
1460
|
-
return e(t).
|
|
1469
|
+
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1461
1470
|
}
|
|
1462
1471
|
function Tn(e, t) {
|
|
1472
|
+
return e(t).children().get().filter((e) => I(e) ? V(e) === "content" : !1).map((t) => H(e, t)).filter(Boolean).join("\n");
|
|
1473
|
+
}
|
|
1474
|
+
function En(e, t) {
|
|
1463
1475
|
let n = [];
|
|
1464
1476
|
return e(t).children().each((t, r) => {
|
|
1465
|
-
if (!
|
|
1466
|
-
let i =
|
|
1467
|
-
i === "num" || i === "heading" || i === "content" || n.push(
|
|
1477
|
+
if (!I(r)) return;
|
|
1478
|
+
let i = V(r);
|
|
1479
|
+
i === "num" || i === "heading" || i === "content" || n.push(H(e, r));
|
|
1468
1480
|
}), n.filter(Boolean);
|
|
1469
1481
|
}
|
|
1470
|
-
function
|
|
1471
|
-
let n = [], r =
|
|
1482
|
+
function Dn(e, t) {
|
|
1483
|
+
let n = [], r = V(t), i = r === "alinea" ? Cn(e, t) : void 0, a = Tn(e, t), o = kn(e, t, r, i), s = Fn(e, t);
|
|
1472
1484
|
if (i) {
|
|
1473
|
-
let r = [
|
|
1474
|
-
|
|
1485
|
+
let r = [_n(a, N(e(t).children("num").first().text())) ? "" : gn(e, t), a].filter(Boolean).join("\n");
|
|
1486
|
+
N(r) && n.push(xn({
|
|
1475
1487
|
content: r,
|
|
1476
1488
|
pastille: i,
|
|
1477
1489
|
style: o,
|
|
1478
1490
|
contextClass: s
|
|
1479
1491
|
}));
|
|
1480
|
-
} else a && n.push(
|
|
1492
|
+
} else a && n.push(Sn({
|
|
1481
1493
|
content: a,
|
|
1482
1494
|
style: o,
|
|
1483
1495
|
contextClass: s
|
|
1484
1496
|
}));
|
|
1485
1497
|
for (let r of e(t).children().get()) {
|
|
1486
|
-
if (!
|
|
1487
|
-
let t =
|
|
1488
|
-
t === "num" || t === "heading" || t === "content" || (t === "alinea" ||
|
|
1498
|
+
if (!I(r)) continue;
|
|
1499
|
+
let t = V(r);
|
|
1500
|
+
t === "num" || t === "heading" || t === "content" || (t === "alinea" || wn(e, r)) && n.push(...Dn(e, r));
|
|
1489
1501
|
}
|
|
1490
1502
|
return n;
|
|
1491
1503
|
}
|
|
1492
|
-
function
|
|
1493
|
-
let i =
|
|
1494
|
-
a ? `id="${
|
|
1504
|
+
function On(e, t, n, r) {
|
|
1505
|
+
let i = V(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = Cn(e, t), s = kn(e, t, i, o), c = [`<${n} ${[
|
|
1506
|
+
a ? `id="${B(a)}"` : void 0,
|
|
1495
1507
|
`class="${r}"`,
|
|
1496
|
-
o ? `data-pastille="${
|
|
1497
|
-
s ? `style="${
|
|
1508
|
+
o ? `data-pastille="${B(o)}"` : void 0,
|
|
1509
|
+
s ? `style="${B(s)}"` : void 0
|
|
1498
1510
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1499
1511
|
if (i === "part" || i === "title") {
|
|
1500
|
-
let r =
|
|
1512
|
+
let r = Mn(e, t, i), a = Pn(e, t), o = r ? [Sn({
|
|
1501
1513
|
content: r,
|
|
1502
1514
|
contextClass: a
|
|
1503
1515
|
})] : [], s = () => {
|
|
1504
|
-
o.length !== 0 && (c.push(
|
|
1516
|
+
o.length !== 0 && (c.push(jn(o)), o = []);
|
|
1505
1517
|
};
|
|
1506
1518
|
return e(t).children().each((t, n) => {
|
|
1507
|
-
if (!
|
|
1508
|
-
let r =
|
|
1519
|
+
if (!I(n)) return;
|
|
1520
|
+
let r = V(n);
|
|
1509
1521
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1510
1522
|
if (r === "alinea") {
|
|
1511
|
-
o.push(...
|
|
1523
|
+
o.push(...Dn(e, n));
|
|
1512
1524
|
return;
|
|
1513
1525
|
}
|
|
1514
|
-
s(), c.push(
|
|
1526
|
+
s(), c.push(H(e, n));
|
|
1515
1527
|
}
|
|
1516
1528
|
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1517
1529
|
}
|
|
1518
1530
|
if (i === "article") {
|
|
1519
|
-
let r =
|
|
1531
|
+
let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = C(r) ?? {
|
|
1520
1532
|
label: r,
|
|
1521
1533
|
num: r
|
|
1522
|
-
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${
|
|
1523
|
-
if (
|
|
1524
|
-
let r = [
|
|
1534
|
+
}, 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>`;
|
|
1535
|
+
if (wn(e, t)) {
|
|
1536
|
+
let r = [Sn({
|
|
1525
1537
|
content: o,
|
|
1526
|
-
contextClass:
|
|
1527
|
-
}), ...
|
|
1528
|
-
c.push(
|
|
1529
|
-
for (let n of
|
|
1538
|
+
contextClass: Ln(a.label)
|
|
1539
|
+
}), ...Dn(e, t)];
|
|
1540
|
+
c.push(bn(r));
|
|
1541
|
+
for (let n of En(e, t)) n.includes("akn-pastille-table") || c.push(n);
|
|
1530
1542
|
return c.push(`</${n}>`), c.join("\n");
|
|
1531
1543
|
}
|
|
1532
1544
|
c.push(o);
|
|
1533
1545
|
}
|
|
1534
1546
|
let l = [];
|
|
1535
1547
|
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" || l.push(
|
|
1548
|
+
if (!I(r)) return;
|
|
1549
|
+
let i = V(r);
|
|
1550
|
+
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(H(e, r));
|
|
1539
1551
|
});
|
|
1540
1552
|
let u = l.join("\n");
|
|
1541
1553
|
if (i !== "article") {
|
|
1542
|
-
let n =
|
|
1554
|
+
let n = _n(u, N(e(t).children("num").first().text())) ? "" : gn(e, t);
|
|
1543
1555
|
n && c.push(n);
|
|
1544
1556
|
}
|
|
1545
|
-
return c.push(o ?
|
|
1557
|
+
return c.push(o ? yn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
1546
1558
|
}
|
|
1547
|
-
function
|
|
1548
|
-
let i =
|
|
1549
|
-
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i =
|
|
1559
|
+
function kn(e, t, n, r) {
|
|
1560
|
+
let i = An(e(t).attr("style") ?? "", "font-family");
|
|
1561
|
+
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = hn(i, "text-align", "center")), i || void 0;
|
|
1550
1562
|
}
|
|
1551
|
-
function
|
|
1563
|
+
function An(e, t) {
|
|
1552
1564
|
return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
|
|
1553
1565
|
}
|
|
1554
|
-
function
|
|
1566
|
+
function jn(e) {
|
|
1555
1567
|
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
1568
|
}
|
|
1557
|
-
function
|
|
1558
|
-
let r =
|
|
1559
|
-
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${
|
|
1569
|
+
function Mn(e, t, n) {
|
|
1570
|
+
let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = Nn(n), o = [];
|
|
1571
|
+
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
1572
|
}
|
|
1561
|
-
function
|
|
1573
|
+
function Nn(e) {
|
|
1562
1574
|
switch (e) {
|
|
1563
1575
|
case "part": return {
|
|
1564
1576
|
num: "TCNumPartie",
|
|
@@ -1582,22 +1594,22 @@ function Mn(e) {
|
|
|
1582
1594
|
};
|
|
1583
1595
|
}
|
|
1584
1596
|
}
|
|
1585
|
-
function
|
|
1586
|
-
let n =
|
|
1597
|
+
function Pn(e, t) {
|
|
1598
|
+
let n = In(N(e(t).children("num").first().text()));
|
|
1587
1599
|
if (n) return n;
|
|
1588
1600
|
for (let n of e(t).parents().get()) {
|
|
1589
|
-
if (!
|
|
1590
|
-
let t =
|
|
1601
|
+
if (!I(n)) continue;
|
|
1602
|
+
let t = V(n);
|
|
1591
1603
|
if (t !== "title" && t !== "part") continue;
|
|
1592
|
-
let r =
|
|
1604
|
+
let r = In(N(e(n).children("num").first().text()));
|
|
1593
1605
|
if (r) return r;
|
|
1594
1606
|
}
|
|
1595
1607
|
}
|
|
1596
|
-
function
|
|
1597
|
-
return
|
|
1608
|
+
function Fn(e, t) {
|
|
1609
|
+
return Pn(e, t);
|
|
1598
1610
|
}
|
|
1599
|
-
function
|
|
1600
|
-
let [t, ...n] =
|
|
1611
|
+
function In(e) {
|
|
1612
|
+
let [t, ...n] = N(e).split(/\s+/u);
|
|
1601
1613
|
if (!t || n.length === 0) return;
|
|
1602
1614
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1603
1615
|
if ([
|
|
@@ -1607,10 +1619,10 @@ function Fn(e) {
|
|
|
1607
1619
|
"section"
|
|
1608
1620
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1609
1621
|
}
|
|
1610
|
-
function In(e) {
|
|
1611
|
-
return `article-${P(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1612
|
-
}
|
|
1613
1622
|
function Ln(e) {
|
|
1623
|
+
return `article-${N(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1624
|
+
}
|
|
1625
|
+
function Rn(e) {
|
|
1614
1626
|
switch (e) {
|
|
1615
1627
|
case "part": return "partie";
|
|
1616
1628
|
case "book": return "livre";
|
|
@@ -1622,11 +1634,11 @@ function Ln(e) {
|
|
|
1622
1634
|
default: return;
|
|
1623
1635
|
}
|
|
1624
1636
|
}
|
|
1625
|
-
function Rn(e, t) {
|
|
1626
|
-
return [P(e(t).children("num").first().text()), P(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1627
|
-
}
|
|
1628
1637
|
function zn(e, t) {
|
|
1629
|
-
|
|
1638
|
+
return [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1639
|
+
}
|
|
1640
|
+
function Bn(e, t) {
|
|
1641
|
+
let n = N(e(t).children("num").first().text()), r = N(e(t).children("heading").first().text()), i = C(n) ?? {
|
|
1630
1642
|
label: n,
|
|
1631
1643
|
num: n
|
|
1632
1644
|
};
|
|
@@ -1636,24 +1648,24 @@ function zn(e, t) {
|
|
|
1636
1648
|
type: "article"
|
|
1637
1649
|
};
|
|
1638
1650
|
}
|
|
1639
|
-
function
|
|
1651
|
+
function Vn(e, t) {
|
|
1640
1652
|
e.items.push(...t.items);
|
|
1641
1653
|
}
|
|
1642
|
-
function
|
|
1654
|
+
function Hn(e, t) {
|
|
1643
1655
|
let n = { items: [] };
|
|
1644
1656
|
return e(t).children().each((t, r) => {
|
|
1645
|
-
if (!
|
|
1646
|
-
let i =
|
|
1657
|
+
if (!I(r)) return;
|
|
1658
|
+
let i = V(r);
|
|
1647
1659
|
if (i === "article") {
|
|
1648
|
-
n.items.push(
|
|
1660
|
+
n.items.push(Bn(e, r));
|
|
1649
1661
|
return;
|
|
1650
1662
|
}
|
|
1651
|
-
let a =
|
|
1663
|
+
let a = Rn(i);
|
|
1652
1664
|
if (!a) {
|
|
1653
|
-
|
|
1665
|
+
Vn(n, Hn(e, r));
|
|
1654
1666
|
return;
|
|
1655
1667
|
}
|
|
1656
|
-
let o =
|
|
1668
|
+
let o = zn(e, r), s = Hn(e, r);
|
|
1657
1669
|
!o && s.items.length === 0 || n.items.push({
|
|
1658
1670
|
...s,
|
|
1659
1671
|
id: e(r).attr("eId") ?? e(r).attr("GUID"),
|
|
@@ -1662,27 +1674,27 @@ function Vn(e, t) {
|
|
|
1662
1674
|
});
|
|
1663
1675
|
}), n;
|
|
1664
1676
|
}
|
|
1665
|
-
function
|
|
1677
|
+
function Un(e) {
|
|
1666
1678
|
let t = e("body").first().get(0);
|
|
1667
|
-
return t === void 0 ? { items: [] } :
|
|
1679
|
+
return t === void 0 ? { items: [] } : Hn(e, t);
|
|
1668
1680
|
}
|
|
1669
|
-
function
|
|
1681
|
+
function Wn(e) {
|
|
1670
1682
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1671
1683
|
}
|
|
1672
|
-
function
|
|
1673
|
-
e("table").each((t, n) =>
|
|
1684
|
+
function Gn(e) {
|
|
1685
|
+
e("table").each((t, n) => dn(e, n));
|
|
1674
1686
|
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
|
-
|
|
1687
|
+
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(ln(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
|
|
1688
|
+
I(n) && r.push(V(n) === "article" ? On(e, n, "article", "akn-article") : H(e, n));
|
|
1677
1689
|
}), r.push("</section></div>"), r.join("\n");
|
|
1678
1690
|
}
|
|
1679
|
-
function
|
|
1680
|
-
let t =
|
|
1691
|
+
function Kn(e) {
|
|
1692
|
+
let t = w(e, { xml: {
|
|
1681
1693
|
decodeEntities: !1,
|
|
1682
1694
|
lowerCaseTags: !1,
|
|
1683
1695
|
lowerCaseAttributeNames: !1,
|
|
1684
1696
|
xmlMode: !0
|
|
1685
|
-
} }), n =
|
|
1697
|
+
} }), n = Wn(t), r = Gn(t);
|
|
1686
1698
|
return {
|
|
1687
1699
|
sourceFormat: "akoma-ntoso",
|
|
1688
1700
|
documentDate: n,
|
|
@@ -1690,42 +1702,42 @@ function Gn(e) {
|
|
|
1690
1702
|
linkedHtml: r
|
|
1691
1703
|
};
|
|
1692
1704
|
}
|
|
1693
|
-
function Kn(e) {
|
|
1694
|
-
return qn(T(e));
|
|
1695
|
-
}
|
|
1696
1705
|
function qn(e) {
|
|
1706
|
+
return Jn(w(e));
|
|
1707
|
+
}
|
|
1708
|
+
function Jn(e) {
|
|
1697
1709
|
let t = [];
|
|
1698
1710
|
return e("article.akn-article").each((n, r) => {
|
|
1699
|
-
let i = e(r).find("p.TCNumArticle").first().get(0), a =
|
|
1711
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = N(i ? e(i).text() : ""), o = C(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = wt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1700
1712
|
t.push({
|
|
1701
1713
|
id: s,
|
|
1702
1714
|
label: o.label,
|
|
1703
1715
|
num: o.num,
|
|
1704
1716
|
title: o.title,
|
|
1705
|
-
text:
|
|
1706
|
-
html:
|
|
1717
|
+
text: at(e, c),
|
|
1718
|
+
html: tt(e, r),
|
|
1707
1719
|
directiveText: u,
|
|
1708
1720
|
blocks: l
|
|
1709
1721
|
});
|
|
1710
1722
|
}), t;
|
|
1711
1723
|
}
|
|
1712
|
-
function
|
|
1713
|
-
let t =
|
|
1724
|
+
function Yn(e) {
|
|
1725
|
+
let t = w(e);
|
|
1714
1726
|
return {
|
|
1715
|
-
articles:
|
|
1727
|
+
articles: Jn(t),
|
|
1716
1728
|
htmlWithLinks: t.html()
|
|
1717
1729
|
};
|
|
1718
1730
|
}
|
|
1719
|
-
async function
|
|
1720
|
-
let n = new
|
|
1731
|
+
async function Xn(e, t) {
|
|
1732
|
+
let n = new Ce("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => w(e, { xml: {
|
|
1721
1733
|
decodeEntities: !1,
|
|
1722
1734
|
lowerCaseTags: !1,
|
|
1723
1735
|
lowerCaseAttributeNames: !1,
|
|
1724
1736
|
xmlMode: !0
|
|
1725
|
-
} })), i = t.date ??
|
|
1737
|
+
} })), i = t.date ?? Wn(r), a = n.timeSync("renderAknHtml", () => Gn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => st(a, {
|
|
1726
1738
|
...t,
|
|
1727
1739
|
date: i
|
|
1728
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () =>
|
|
1740
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => qn(a)), c = n.timeSync("injectHiddenArticleSummary", () => Tt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Yn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Un(r)), p = n.timeSync("buildParsedDocument", () => $t("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, nn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
|
|
1729
1741
|
return n.log({
|
|
1730
1742
|
articleCount: p.articles.length,
|
|
1731
1743
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1733,25 +1745,25 @@ async function Yn(e, t) {
|
|
|
1733
1745
|
targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
|
|
1734
1746
|
}), p;
|
|
1735
1747
|
}
|
|
1736
|
-
async function
|
|
1737
|
-
let n =
|
|
1748
|
+
async function Zn(e, t) {
|
|
1749
|
+
let n = Kn(e), r = t.date ?? n.documentDate;
|
|
1738
1750
|
return {
|
|
1739
1751
|
sourceFormat: "akoma-ntoso",
|
|
1740
1752
|
documentDate: r,
|
|
1741
1753
|
html: n.html,
|
|
1742
|
-
linkedHtml: await
|
|
1754
|
+
linkedHtml: await st(n.html, t, r)
|
|
1743
1755
|
};
|
|
1744
1756
|
}
|
|
1745
1757
|
//#endregion
|
|
1746
1758
|
//#region src/lib/server/assemblee_document_search.ts
|
|
1747
|
-
var
|
|
1748
|
-
function
|
|
1759
|
+
var Qn = /\bexpos[ée]\s+des\s+motifs\b/giu, $n = /\barticle\s+(?:premier|1er|\d+)/iu;
|
|
1760
|
+
function er(e) {
|
|
1749
1761
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1750
1762
|
}
|
|
1751
|
-
function
|
|
1752
|
-
let t =
|
|
1763
|
+
function tr(e) {
|
|
1764
|
+
let t = er(w(e).text()), n = [...t.matchAll(Qn)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1753
1765
|
for (let [e, a] of n.entries()) {
|
|
1754
|
-
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c =
|
|
1766
|
+
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = $n.exec(s), l = er(s.slice(0, c?.index ?? s.length));
|
|
1755
1767
|
if (l.length < 20 || r.has(l)) continue;
|
|
1756
1768
|
r.add(l);
|
|
1757
1769
|
let u = `expose-des-motifs-${e + 1}`;
|
|
@@ -1767,8 +1779,8 @@ function er(e) {
|
|
|
1767
1779
|
}
|
|
1768
1780
|
return i;
|
|
1769
1781
|
}
|
|
1770
|
-
async function
|
|
1771
|
-
let i = await
|
|
1782
|
+
async function nr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1783
|
+
let i = await an(t, {
|
|
1772
1784
|
date: e,
|
|
1773
1785
|
includeDirectiveAnalysis: !1,
|
|
1774
1786
|
linkBaseUrl: n,
|
|
@@ -1777,7 +1789,7 @@ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1777
1789
|
});
|
|
1778
1790
|
return {
|
|
1779
1791
|
items: [...i.articles.map((e) => {
|
|
1780
|
-
let t =
|
|
1792
|
+
let t = er(e.directiveText || e.text);
|
|
1781
1793
|
if (t) return {
|
|
1782
1794
|
anchor: e.id,
|
|
1783
1795
|
articleNumber: e.num ?? null,
|
|
@@ -1787,17 +1799,17 @@ async function tr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1787
1799
|
label: e.label,
|
|
1788
1800
|
title: e.title ?? null
|
|
1789
1801
|
};
|
|
1790
|
-
}).filter((e) => e !== void 0), ...
|
|
1802
|
+
}).filter((e) => e !== void 0), ...tr(t)],
|
|
1791
1803
|
tableOfContents: i.tableOfContents
|
|
1792
1804
|
};
|
|
1793
1805
|
}
|
|
1794
|
-
function
|
|
1795
|
-
return
|
|
1806
|
+
function rr(e, t) {
|
|
1807
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1796
1808
|
item: e,
|
|
1797
1809
|
metadata: t
|
|
1798
1810
|
})).digest("hex");
|
|
1799
1811
|
}
|
|
1800
|
-
function
|
|
1812
|
+
function ir(e) {
|
|
1801
1813
|
if (typeof e != "object" || !e) return;
|
|
1802
1814
|
let t = e.cycleDeVie?.chrono;
|
|
1803
1815
|
if (t !== void 0) for (let e of [
|
|
@@ -1812,11 +1824,11 @@ function rr(e) {
|
|
|
1812
1824
|
}
|
|
1813
1825
|
//#endregion
|
|
1814
1826
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1815
|
-
function
|
|
1816
|
-
return e?.trim() ?
|
|
1827
|
+
function ar(e) {
|
|
1828
|
+
return e?.trim() ? w(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1817
1829
|
}
|
|
1818
|
-
function
|
|
1819
|
-
let n =
|
|
1830
|
+
function or({ dispositifHtml: e, objetHtml: t }) {
|
|
1831
|
+
let n = ar(e), r = ar(t);
|
|
1820
1832
|
return [...n ? [{
|
|
1821
1833
|
content: n,
|
|
1822
1834
|
itemKind: "dispositif",
|
|
@@ -1827,8 +1839,8 @@ function ar({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1827
1839
|
label: "Objet"
|
|
1828
1840
|
}] : []];
|
|
1829
1841
|
}
|
|
1830
|
-
function
|
|
1831
|
-
return
|
|
1842
|
+
function sr(e, t) {
|
|
1843
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1832
1844
|
item: e,
|
|
1833
1845
|
metadata: t
|
|
1834
1846
|
})).digest("hex");
|
|
@@ -1842,76 +1854,76 @@ function W(e, t) {
|
|
|
1842
1854
|
type: "amendment_action_directive"
|
|
1843
1855
|
};
|
|
1844
1856
|
}
|
|
1845
|
-
function
|
|
1857
|
+
function cr(e, t) {
|
|
1846
1858
|
return {
|
|
1847
1859
|
type: e === "start" ? "head_of_target" : "tail_after_target",
|
|
1848
|
-
unit: t ?
|
|
1860
|
+
unit: t ? fe(t) : "article"
|
|
1849
1861
|
};
|
|
1850
1862
|
}
|
|
1851
|
-
function
|
|
1863
|
+
function lr(e) {
|
|
1852
1864
|
return e === "start" ? "insert_before" : "insert_after";
|
|
1853
1865
|
}
|
|
1854
|
-
var
|
|
1866
|
+
var ur = D(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = O(t, A([E("les?\\s+", { flags: "i" }), p], { value: (e) => e[1] }), p, n), dr = O(A([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
|
|
1855
1867
|
let t = e[1];
|
|
1856
1868
|
return {
|
|
1857
1869
|
targetReference: t,
|
|
1858
1870
|
targetScope: {
|
|
1859
1871
|
type: "tail_after_target",
|
|
1860
|
-
unit:
|
|
1872
|
+
unit: fe(t)
|
|
1861
1873
|
}
|
|
1862
1874
|
};
|
|
1863
|
-
} }),
|
|
1864
|
-
|
|
1865
|
-
|
|
1875
|
+
} }), A([i], { value: (e) => ({ targetScope: e[0] }) })), K = D(A([
|
|
1876
|
+
D(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1877
|
+
D(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1866
1878
|
G,
|
|
1867
|
-
|
|
1879
|
+
D(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
1868
1880
|
], { value: (e, t) => ({
|
|
1869
1881
|
reference: e[2],
|
|
1870
1882
|
text: t.text()
|
|
1871
|
-
}) }), { default: null }),
|
|
1883
|
+
}) }), { default: null }), fr = D(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ve})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
1872
1884
|
function q(e) {
|
|
1873
1885
|
return e?.text ?? "";
|
|
1874
1886
|
}
|
|
1875
|
-
function
|
|
1887
|
+
function pr(e) {
|
|
1876
1888
|
return { citation: ee(e.position()) };
|
|
1877
1889
|
}
|
|
1878
|
-
var J =
|
|
1890
|
+
var J = O(A([v], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => pr(t) })), mr = E("\\S[\\s\\S]*", { value: (e, t) => pr(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), hr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
1879
1891
|
flags: "i",
|
|
1880
|
-
value: (e, t) =>
|
|
1881
|
-
}),
|
|
1892
|
+
value: (e, t) => pr(t)
|
|
1893
|
+
}), gr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
1882
1894
|
flags: "i",
|
|
1883
|
-
value: (e, t) =>
|
|
1884
|
-
}),
|
|
1895
|
+
value: (e, t) => pr(t)
|
|
1896
|
+
}), _r = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
1885
1897
|
flags: "i",
|
|
1886
|
-
value: (e, t) =>
|
|
1887
|
-
}),
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
], { value: (e) => e[2] }),
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1898
|
+
value: (e, t) => pr(t)
|
|
1899
|
+
}), vr = O(A([v], { value: (e) => ({ citation: e[0] }) }), hr), yr = O(A([v], { value: (e) => ({ citation: e[0] }) }), _r), br = A([E(`${o}s?\\s*:?\\s*`, { flags: "i" }), vr], { value: (e) => e[1] }), xr = A([E(`${c}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), yr], { value: (e) => e[1] }), Sr = O(A([v], { value: (e) => ({ citation: e[0] }) }), gr), Cr = A([
|
|
1900
|
+
fr,
|
|
1901
|
+
E(`${o}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1902
|
+
Sr
|
|
1903
|
+
], { value: (e) => e[2] }), wr = A([
|
|
1904
|
+
fr,
|
|
1905
|
+
E(`${o}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1906
|
+
O(A([v], { value: (e) => ({ citation: e[0] }) }), mr)
|
|
1895
1907
|
], { value: (e) => e[2] });
|
|
1896
1908
|
function X(e) {
|
|
1897
1909
|
return e?.reference;
|
|
1898
1910
|
}
|
|
1899
|
-
var
|
|
1911
|
+
var Tr = A([ur, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
|
|
1900
1912
|
contextText: e[0],
|
|
1901
1913
|
kind: "delete_article"
|
|
1902
|
-
}) }),
|
|
1914
|
+
}) }), Er = A([
|
|
1903
1915
|
K,
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1916
|
+
E("supprimer", { flags: "i" }),
|
|
1917
|
+
D(A([k, G], { value: (e) => e[1] }), { default: null }),
|
|
1918
|
+
D(A([k, wr], { value: (e) => e[1] }), { default: null })
|
|
1907
1919
|
], { value: (e, t) => W(t, {
|
|
1908
1920
|
contextText: q(e[0]),
|
|
1909
1921
|
kind: "delete_portion",
|
|
1910
1922
|
targetCitation: e[3]?.citation ?? void 0,
|
|
1911
1923
|
targetReference: e[2] ?? X(e[0])
|
|
1912
|
-
}) }),
|
|
1924
|
+
}) }), Dr = A([
|
|
1913
1925
|
K,
|
|
1914
|
-
|
|
1926
|
+
O(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
|
|
1915
1927
|
Y,
|
|
1916
1928
|
J
|
|
1917
1929
|
], { value: (e, t) => W(t, {
|
|
@@ -1919,76 +1931,76 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1919
1931
|
kind: "rewrite_portion",
|
|
1920
1932
|
replacementCitation: e[3].citation,
|
|
1921
1933
|
targetReference: X(e[0])
|
|
1922
|
-
}) }),
|
|
1934
|
+
}) }), Or = A([
|
|
1923
1935
|
K,
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1936
|
+
O(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
|
|
1937
|
+
k,
|
|
1938
|
+
fr,
|
|
1939
|
+
br,
|
|
1940
|
+
E("\\s*,?\\s*"),
|
|
1941
|
+
D(E("par\\s+", { flags: "i" }), { default: "" }),
|
|
1942
|
+
xr
|
|
1931
1943
|
], { value: (e, t) => W(t, {
|
|
1932
1944
|
contextText: q(e[0]),
|
|
1933
1945
|
kind: "replace",
|
|
1934
1946
|
replacementCitation: e[7].citation,
|
|
1935
1947
|
targetCitation: e[4].citation,
|
|
1936
1948
|
targetReference: X(e[0])
|
|
1937
|
-
}) }),
|
|
1949
|
+
}) }), kr = A([
|
|
1938
1950
|
K,
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1951
|
+
E("substituer", { flags: "i" }),
|
|
1952
|
+
k,
|
|
1953
|
+
D(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
1942
1954
|
G,
|
|
1943
|
-
|
|
1955
|
+
E("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
1944
1956
|
J
|
|
1945
1957
|
], { value: (e, t) => W(t, {
|
|
1946
1958
|
contextText: q(e[0]),
|
|
1947
1959
|
kind: "rewrite_portion",
|
|
1948
1960
|
replacementCitation: e[6].citation,
|
|
1949
1961
|
targetReference: e[4] ?? X(e[0])
|
|
1950
|
-
}) }),
|
|
1962
|
+
}) }), Ar = A([
|
|
1951
1963
|
d,
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1964
|
+
k,
|
|
1965
|
+
E("l['’ ]article", { flags: "i" }),
|
|
1966
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1967
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1956
1968
|
Y,
|
|
1957
1969
|
J
|
|
1958
1970
|
], { value: (e, t) => W(t, {
|
|
1959
1971
|
contextText: "",
|
|
1960
1972
|
insertCitation: e[6].citation,
|
|
1961
1973
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
1962
|
-
}) }),
|
|
1974
|
+
}) }), jr = A([
|
|
1963
1975
|
d,
|
|
1964
|
-
|
|
1976
|
+
k,
|
|
1965
1977
|
G,
|
|
1966
|
-
|
|
1967
|
-
|
|
1978
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1979
|
+
O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1968
1980
|
Y,
|
|
1969
1981
|
J
|
|
1970
1982
|
], { value: (e, t) => W(t, {
|
|
1971
1983
|
contextText: "",
|
|
1972
1984
|
insertCitation: e[6].citation,
|
|
1973
|
-
kind:
|
|
1985
|
+
kind: re(e[0]),
|
|
1974
1986
|
targetReference: e[2]
|
|
1975
|
-
}) }),
|
|
1987
|
+
}) }), Mr = A([
|
|
1976
1988
|
d,
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1989
|
+
k,
|
|
1990
|
+
E("l['’ ]alin[eé]a", { flags: "i" }),
|
|
1991
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1992
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1981
1993
|
Y,
|
|
1982
1994
|
J
|
|
1983
1995
|
], { value: (e, t) => W(t, {
|
|
1984
1996
|
contextText: "",
|
|
1985
1997
|
insertCitation: e[6].citation,
|
|
1986
|
-
kind:
|
|
1987
|
-
}) }),
|
|
1998
|
+
kind: re(e[0])
|
|
1999
|
+
}) }), Nr = A([
|
|
1988
2000
|
K,
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
2001
|
+
ie,
|
|
2002
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2003
|
+
O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1992
2004
|
Y,
|
|
1993
2005
|
J
|
|
1994
2006
|
], { value: (e, t) => {
|
|
@@ -1996,62 +2008,62 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1996
2008
|
return W(t, {
|
|
1997
2009
|
contextText: q(n),
|
|
1998
2010
|
insertCitation: e[5].citation,
|
|
1999
|
-
kind:
|
|
2011
|
+
kind: lr(i),
|
|
2000
2012
|
targetReference: r,
|
|
2001
|
-
targetScope:
|
|
2013
|
+
targetScope: cr(i, r)
|
|
2002
2014
|
});
|
|
2003
|
-
} }),
|
|
2015
|
+
} }), Pr = A([
|
|
2004
2016
|
K,
|
|
2005
2017
|
d,
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2018
|
+
k,
|
|
2019
|
+
Cr,
|
|
2020
|
+
E("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
2021
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2022
|
+
k,
|
|
2023
|
+
xr
|
|
2012
2024
|
], { value: (e, t) => W(t, {
|
|
2013
2025
|
contextText: q(e[0]),
|
|
2014
2026
|
insertCitation: e[7].citation,
|
|
2015
|
-
kind:
|
|
2027
|
+
kind: re(e[1]),
|
|
2016
2028
|
targetCitation: e[3].citation,
|
|
2017
2029
|
targetReference: X(e[0])
|
|
2018
|
-
}) }),
|
|
2030
|
+
}) }), Fr = A([
|
|
2019
2031
|
K,
|
|
2020
2032
|
d,
|
|
2021
|
-
|
|
2033
|
+
k,
|
|
2022
2034
|
G,
|
|
2023
|
-
|
|
2024
|
-
|
|
2035
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2036
|
+
O(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
2025
2037
|
Y,
|
|
2026
2038
|
J
|
|
2027
2039
|
], { value: (e, t) => W(t, {
|
|
2028
2040
|
contextText: q(e[0]),
|
|
2029
2041
|
insertCitation: e[7].citation,
|
|
2030
|
-
kind:
|
|
2042
|
+
kind: re(e[1]),
|
|
2031
2043
|
targetReference: X(e[0]) ?? e[3]
|
|
2032
|
-
}) }),
|
|
2044
|
+
}) }), Ir = O(Nr, Ar, jr, Mr, kr, A([
|
|
2033
2045
|
K,
|
|
2034
2046
|
d,
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2047
|
+
k,
|
|
2048
|
+
Cr,
|
|
2049
|
+
E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
2050
|
+
O(A([
|
|
2051
|
+
E("supprimer", {
|
|
2040
2052
|
flags: "i",
|
|
2041
2053
|
value: "delete_portion"
|
|
2042
2054
|
}),
|
|
2043
|
-
|
|
2044
|
-
|
|
2055
|
+
k,
|
|
2056
|
+
dr
|
|
2045
2057
|
], { value: (e) => ({
|
|
2046
2058
|
kind: e[0],
|
|
2047
2059
|
...e[2]
|
|
2048
|
-
}) }),
|
|
2049
|
-
|
|
2060
|
+
}) }), A([
|
|
2061
|
+
E("r[eé]diger\\s+ainsi", {
|
|
2050
2062
|
flags: "i",
|
|
2051
2063
|
value: "rewrite_portion"
|
|
2052
2064
|
}),
|
|
2053
|
-
|
|
2054
|
-
|
|
2065
|
+
k,
|
|
2066
|
+
dr,
|
|
2055
2067
|
Y,
|
|
2056
2068
|
J
|
|
2057
2069
|
], { value: (e) => ({
|
|
@@ -2069,10 +2081,10 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2069
2081
|
targetReference: X(e[0]) ?? n.targetReference,
|
|
2070
2082
|
targetScope: n.targetScope
|
|
2071
2083
|
});
|
|
2072
|
-
} }),
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2084
|
+
} }), Pr, Fr, A([
|
|
2085
|
+
ur,
|
|
2086
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2087
|
+
E(`[\\s\\S]*?(?=${f})`, { flags: "i" }),
|
|
2076
2088
|
d,
|
|
2077
2089
|
Y,
|
|
2078
2090
|
v,
|
|
@@ -2081,12 +2093,12 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2081
2093
|
], { value: (e, t) => W(t, {
|
|
2082
2094
|
contextText: e[0],
|
|
2083
2095
|
insertCitation: e[8],
|
|
2084
|
-
kind:
|
|
2096
|
+
kind: re(e[3]),
|
|
2085
2097
|
targetCitation: e[6]
|
|
2086
|
-
}) }),
|
|
2098
|
+
}) }), Or, Dr, A([
|
|
2087
2099
|
K,
|
|
2088
|
-
|
|
2089
|
-
|
|
2100
|
+
E("compl[eé]ter", { flags: "i" }),
|
|
2101
|
+
D(A([k, G], { value: (e) => e[1] }), { default: null }),
|
|
2090
2102
|
Y,
|
|
2091
2103
|
J
|
|
2092
2104
|
], { value: (e, t) => W(t, {
|
|
@@ -2094,16 +2106,16 @@ var wr = j([lr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2094
2106
|
insertCitation: e[4].citation,
|
|
2095
2107
|
kind: "insert_after",
|
|
2096
2108
|
targetReference: e[2] ?? X(e[0])
|
|
2097
|
-
}) }),
|
|
2109
|
+
}) }), Tr, Er);
|
|
2098
2110
|
//#endregion
|
|
2099
2111
|
//#region src/lib/server/parsed_amendments.ts
|
|
2100
|
-
function
|
|
2112
|
+
function Lr(e) {
|
|
2101
2113
|
return e.replace(/\s+/gu, " ").trim();
|
|
2102
2114
|
}
|
|
2103
|
-
function
|
|
2104
|
-
return e.split(/\n/gu).map(
|
|
2115
|
+
function Rr(e) {
|
|
2116
|
+
return e.split(/\n/gu).map(Lr).filter(Boolean).join("\n");
|
|
2105
2117
|
}
|
|
2106
|
-
function
|
|
2118
|
+
function zr(e, t) {
|
|
2107
2119
|
let { start: n, stop: r } = t;
|
|
2108
2120
|
for (; n < r && /\s/u.test(e[n]);) n++;
|
|
2109
2121
|
for (; r > n && /\s/u.test(e[r - 1]);) r--;
|
|
@@ -2112,16 +2124,16 @@ function Rr(e, t) {
|
|
|
2112
2124
|
stop: r
|
|
2113
2125
|
} : null;
|
|
2114
2126
|
}
|
|
2115
|
-
function
|
|
2116
|
-
return
|
|
2127
|
+
function Br(e, t) {
|
|
2128
|
+
return he(_e(e), t);
|
|
2117
2129
|
}
|
|
2118
|
-
function
|
|
2130
|
+
function Vr(e) {
|
|
2119
2131
|
return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
|
|
2120
2132
|
}
|
|
2121
|
-
function
|
|
2133
|
+
function Hr(e) {
|
|
2122
2134
|
return {
|
|
2123
2135
|
articleLabel: e.targetArticleLabel ?? null,
|
|
2124
|
-
targetPosition:
|
|
2136
|
+
targetPosition: Vr(e.targetPosition),
|
|
2125
2137
|
alinea: e.targetAlinea ?? null,
|
|
2126
2138
|
alineaLabel: e.targetAlineaLabel ?? null,
|
|
2127
2139
|
subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
|
|
@@ -2136,36 +2148,36 @@ function Z(e) {
|
|
|
2136
2148
|
sourceText: e.text
|
|
2137
2149
|
};
|
|
2138
2150
|
}
|
|
2139
|
-
function
|
|
2151
|
+
function Ur(e) {
|
|
2140
2152
|
return {
|
|
2141
2153
|
...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
|
|
2142
2154
|
sourcePosition: e.position,
|
|
2143
2155
|
sourceText: e.text
|
|
2144
2156
|
};
|
|
2145
2157
|
}
|
|
2146
|
-
function
|
|
2158
|
+
function Wr(e) {
|
|
2147
2159
|
return {
|
|
2148
2160
|
...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
|
|
2149
2161
|
...e === null ? {} : { dispositifPosition: e.position },
|
|
2150
2162
|
dispositifText: e?.text ?? null
|
|
2151
2163
|
};
|
|
2152
2164
|
}
|
|
2153
|
-
function
|
|
2165
|
+
function Gr(e, t, n, r = Rr(e.slice(n.start, n.stop))) {
|
|
2154
2166
|
return {
|
|
2155
|
-
originalTransformation:
|
|
2167
|
+
originalTransformation: Br(t, n),
|
|
2156
2168
|
position: n,
|
|
2157
2169
|
text: r
|
|
2158
2170
|
};
|
|
2159
2171
|
}
|
|
2160
|
-
function
|
|
2172
|
+
function Kr(e) {
|
|
2161
2173
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2162
2174
|
if (!t) return null;
|
|
2163
|
-
let n = e.dispositifHtml ?
|
|
2175
|
+
let n = e.dispositifHtml ? be()(t) : me(t), r = n.output, i = zr(r, {
|
|
2164
2176
|
start: 0,
|
|
2165
2177
|
stop: r.length
|
|
2166
2178
|
});
|
|
2167
2179
|
return {
|
|
2168
|
-
dispositif: i === null ? null :
|
|
2180
|
+
dispositif: i === null ? null : Gr(r, n, i),
|
|
2169
2181
|
simplifiedText: r,
|
|
2170
2182
|
transformation: n
|
|
2171
2183
|
};
|
|
@@ -2185,7 +2197,7 @@ function Q(e) {
|
|
|
2185
2197
|
for (let t of r(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
|
|
2186
2198
|
return [];
|
|
2187
2199
|
}
|
|
2188
|
-
function
|
|
2200
|
+
function qr(e, t) {
|
|
2189
2201
|
let n = Q(t);
|
|
2190
2202
|
return {
|
|
2191
2203
|
...e,
|
|
@@ -2193,11 +2205,11 @@ function Kr(e, t) {
|
|
|
2193
2205
|
...n.length > 0 ? { alineas: n } : {}
|
|
2194
2206
|
};
|
|
2195
2207
|
}
|
|
2196
|
-
function
|
|
2208
|
+
function Jr(e) {
|
|
2197
2209
|
return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
|
|
2198
2210
|
}
|
|
2199
|
-
function
|
|
2200
|
-
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(
|
|
2211
|
+
function Yr(e, t) {
|
|
2212
|
+
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Jr(t.text));
|
|
2201
2213
|
if (!n) return null;
|
|
2202
2214
|
let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
|
|
2203
2215
|
return !Number.isFinite(r) || r < 1 ? null : {
|
|
@@ -2206,25 +2218,25 @@ function Jr(e, t) {
|
|
|
2206
2218
|
alineas: [r]
|
|
2207
2219
|
};
|
|
2208
2220
|
}
|
|
2209
|
-
function
|
|
2221
|
+
function Xr(e, t) {
|
|
2210
2222
|
if (e) return e.unit === "article" && t.alinea !== null ? {
|
|
2211
2223
|
...e,
|
|
2212
2224
|
unit: "alinéa"
|
|
2213
2225
|
} : e;
|
|
2214
2226
|
}
|
|
2215
|
-
function
|
|
2216
|
-
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(
|
|
2227
|
+
function Zr(e) {
|
|
2228
|
+
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Jr(e.text));
|
|
2217
2229
|
}
|
|
2218
|
-
function
|
|
2219
|
-
return
|
|
2230
|
+
function Qr(e, t, n, r) {
|
|
2231
|
+
return Gr(e, t, {
|
|
2220
2232
|
start: n.position.start,
|
|
2221
2233
|
stop: r.position.stop
|
|
2222
2234
|
});
|
|
2223
2235
|
}
|
|
2224
|
-
function
|
|
2236
|
+
function $r(e) {
|
|
2225
2237
|
return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
|
|
2226
2238
|
}
|
|
2227
|
-
function
|
|
2239
|
+
function ei(e, t) {
|
|
2228
2240
|
let n = { ...t.position };
|
|
2229
2241
|
function r(t) {
|
|
2230
2242
|
let r = t.exec(e.slice(n.start, n.stop));
|
|
@@ -2233,29 +2245,29 @@ function $r(e, t) {
|
|
|
2233
2245
|
stop: n.stop
|
|
2234
2246
|
});
|
|
2235
2247
|
}
|
|
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),
|
|
2248
|
+
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), zr(e, n);
|
|
2237
2249
|
}
|
|
2238
|
-
function
|
|
2250
|
+
function ti(e) {
|
|
2239
2251
|
return g(e);
|
|
2240
2252
|
}
|
|
2241
|
-
function
|
|
2242
|
-
return
|
|
2253
|
+
function ni(e, t) {
|
|
2254
|
+
return Ir(new T(e.slice(0, t.stop), t.start)) ?? null;
|
|
2243
2255
|
}
|
|
2244
2256
|
function $(t, n, r) {
|
|
2245
|
-
if (r) return
|
|
2257
|
+
if (r) return Gr(t, n, r.position, Rr(e(t, r)));
|
|
2246
2258
|
}
|
|
2247
|
-
function
|
|
2259
|
+
function ri(e, t) {
|
|
2248
2260
|
if (!e) return;
|
|
2249
2261
|
let n = structuredClone(e);
|
|
2250
|
-
for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation =
|
|
2262
|
+
for (let e of _(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Br(t, e.position));
|
|
2251
2263
|
return n;
|
|
2252
2264
|
}
|
|
2253
|
-
function
|
|
2254
|
-
let i =
|
|
2265
|
+
function ii(e, t, n, r) {
|
|
2266
|
+
let i = ei(e, n);
|
|
2255
2267
|
if (!i) return null;
|
|
2256
|
-
let a =
|
|
2268
|
+
let a = ni(e, i);
|
|
2257
2269
|
if (!a) return null;
|
|
2258
|
-
let o =
|
|
2270
|
+
let o = Gr(e, t, i), s = ri(a.targetReference, t), c = qr(r, s), l = ti(o.text);
|
|
2259
2271
|
if (a.kind === "delete_article") return {
|
|
2260
2272
|
kind: "delete_article",
|
|
2261
2273
|
...Z(o),
|
|
@@ -2273,7 +2285,7 @@ function ri(e, t, n, r) {
|
|
|
2273
2285
|
},
|
|
2274
2286
|
targetOccurrence: l,
|
|
2275
2287
|
targetReference: s,
|
|
2276
|
-
targetScope:
|
|
2288
|
+
targetScope: Xr(a.targetScope, c)
|
|
2277
2289
|
};
|
|
2278
2290
|
}
|
|
2279
2291
|
if (a.kind === "rewrite_portion") {
|
|
@@ -2290,7 +2302,7 @@ function ri(e, t, n, r) {
|
|
|
2290
2302
|
},
|
|
2291
2303
|
targetOccurrence: l,
|
|
2292
2304
|
targetReference: s,
|
|
2293
|
-
targetScope:
|
|
2305
|
+
targetScope: Xr(a.targetScope, c),
|
|
2294
2306
|
replacementCitation: n,
|
|
2295
2307
|
replacementText: n.text
|
|
2296
2308
|
};
|
|
@@ -2345,19 +2357,19 @@ function ri(e, t, n, r) {
|
|
|
2345
2357
|
targetReference: s,
|
|
2346
2358
|
insertCitation: n,
|
|
2347
2359
|
insertText: n.text,
|
|
2348
|
-
targetScope:
|
|
2360
|
+
targetScope: Xr(a.targetScope, c)
|
|
2349
2361
|
};
|
|
2350
2362
|
}
|
|
2351
2363
|
return null;
|
|
2352
2364
|
}
|
|
2353
|
-
function
|
|
2365
|
+
function ai(e, t) {
|
|
2354
2366
|
let n = [], r = 0, i = 0;
|
|
2355
2367
|
function a(r) {
|
|
2356
|
-
let a =
|
|
2368
|
+
let a = zr(e, {
|
|
2357
2369
|
start: i,
|
|
2358
2370
|
stop: r
|
|
2359
2371
|
});
|
|
2360
|
-
a !== null && n.push(
|
|
2372
|
+
a !== null && n.push(Gr(e, t, a));
|
|
2361
2373
|
}
|
|
2362
2374
|
function o(t) {
|
|
2363
2375
|
let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
|
|
@@ -2375,7 +2387,7 @@ function ii(e, t) {
|
|
|
2375
2387
|
continue;
|
|
2376
2388
|
}
|
|
2377
2389
|
if (r > 0) continue;
|
|
2378
|
-
let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) &&
|
|
2390
|
+
let s = e.slice(t + 1), c = /[\n\r]/u.test(n), l = /[.;]/u.test(n), u = e.slice(i, l ? t + 1 : t), d = /^\s*(?:(?:[IVXLCDM]+)\s*[.\-–—]+\s*|\d+°\s*|[a-z]\)\s*|(?:Supprimer|Après|Avant|Compléter|Rédiger|Substituer|Remplacer)\b)/iu.test(s), f = c && /^\s*(?:R[eé]diger|Ins[eé]rer|Ajouter|Supprimer)\b/iu.test(s) && Zr({
|
|
2379
2391
|
originalTransformation: void 0,
|
|
2380
2392
|
position: {
|
|
2381
2393
|
start: i,
|
|
@@ -2387,8 +2399,8 @@ function ii(e, t) {
|
|
|
2387
2399
|
}
|
|
2388
2400
|
return a(e.length), n;
|
|
2389
2401
|
}
|
|
2390
|
-
function
|
|
2391
|
-
let t =
|
|
2402
|
+
function oi(e) {
|
|
2403
|
+
let t = Kr(e), n = t?.dispositif ?? null, r = Wr(n), i = [], a = [], o = Hr(e);
|
|
2392
2404
|
if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
|
|
2393
2405
|
code: "unsupported_sub_amendment",
|
|
2394
2406
|
message: "Les sous-amendements ne sont pas encore projetés."
|
|
@@ -2406,9 +2418,9 @@ function ai(e) {
|
|
|
2406
2418
|
});
|
|
2407
2419
|
else {
|
|
2408
2420
|
let { simplifiedText: e, transformation: r } = t, s = o, c = null;
|
|
2409
|
-
for (let t of
|
|
2410
|
-
|
|
2411
|
-
let n = c ?
|
|
2421
|
+
for (let t of ai(e, r)) {
|
|
2422
|
+
$r(t) && (s = o, c = null);
|
|
2423
|
+
let n = c ? Qr(e, r, c, t) : t, i = ii(e, r, n, s);
|
|
2412
2424
|
if (i) {
|
|
2413
2425
|
a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
|
|
2414
2426
|
continue;
|
|
@@ -2417,12 +2429,12 @@ function ai(e) {
|
|
|
2417
2429
|
c = n;
|
|
2418
2430
|
continue;
|
|
2419
2431
|
}
|
|
2420
|
-
let l =
|
|
2432
|
+
let l = Yr(o, t);
|
|
2421
2433
|
if (l !== null) {
|
|
2422
2434
|
s = l;
|
|
2423
2435
|
continue;
|
|
2424
2436
|
}
|
|
2425
|
-
|
|
2437
|
+
Zr(t) && (c = t);
|
|
2426
2438
|
}
|
|
2427
2439
|
a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
|
|
2428
2440
|
kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
|
|
@@ -2433,7 +2445,7 @@ function ai(e) {
|
|
|
2433
2445
|
}), a.length === 0 && i.push({
|
|
2434
2446
|
code: "unrecognized_dispositif",
|
|
2435
2447
|
message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
|
|
2436
|
-
...
|
|
2448
|
+
...Ur(n)
|
|
2437
2449
|
});
|
|
2438
2450
|
}
|
|
2439
2451
|
return {
|
|
@@ -2447,25 +2459,25 @@ function ai(e) {
|
|
|
2447
2459
|
}
|
|
2448
2460
|
//#endregion
|
|
2449
2461
|
//#region src/lib/server/senat_document_search.ts
|
|
2450
|
-
function
|
|
2462
|
+
function si(e) {
|
|
2451
2463
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2452
2464
|
}
|
|
2453
|
-
function
|
|
2454
|
-
let t =
|
|
2465
|
+
function ci(e) {
|
|
2466
|
+
let t = C(e);
|
|
2455
2467
|
if (!t) return {
|
|
2456
2468
|
articleNumber: null,
|
|
2457
2469
|
label: e,
|
|
2458
2470
|
title: null
|
|
2459
2471
|
};
|
|
2460
|
-
let n =
|
|
2472
|
+
let n = si(t.num ?? "") || null, r = si(t.title ?? "") || null;
|
|
2461
2473
|
return {
|
|
2462
2474
|
articleNumber: n,
|
|
2463
2475
|
label: t.label,
|
|
2464
2476
|
title: r
|
|
2465
2477
|
};
|
|
2466
2478
|
}
|
|
2467
|
-
function
|
|
2468
|
-
let t =
|
|
2479
|
+
function li(e) {
|
|
2480
|
+
let t = w(e), n = [], r = si(t("section.akn-preamble").text());
|
|
2469
2481
|
return r && n.push({
|
|
2470
2482
|
anchor: "senat-expose-des-motifs",
|
|
2471
2483
|
articleNumber: null,
|
|
@@ -2475,9 +2487,9 @@ function ci(e) {
|
|
|
2475
2487
|
label: "Exposé des motifs",
|
|
2476
2488
|
title: null
|
|
2477
2489
|
}), t("article.akn-article").each((e, r) => {
|
|
2478
|
-
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o =
|
|
2490
|
+
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = si(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = ci(o || s), l = i.clone();
|
|
2479
2491
|
l.children("p.TCNumArticle").remove();
|
|
2480
|
-
let u =
|
|
2492
|
+
let u = si(l.text());
|
|
2481
2493
|
u && n.push({
|
|
2482
2494
|
anchor: i.attr("id") || null,
|
|
2483
2495
|
articleNumber: c.articleNumber,
|
|
@@ -2489,40 +2501,40 @@ function ci(e) {
|
|
|
2489
2501
|
});
|
|
2490
2502
|
}), n;
|
|
2491
2503
|
}
|
|
2492
|
-
function
|
|
2493
|
-
return
|
|
2504
|
+
function ui(e, t) {
|
|
2505
|
+
return Oe("sha256").update(JSON.stringify({
|
|
2494
2506
|
item: e,
|
|
2495
2507
|
metadata: t
|
|
2496
2508
|
})).digest("hex");
|
|
2497
2509
|
}
|
|
2498
2510
|
//#endregion
|
|
2499
2511
|
//#region src/lib/server/senat_document_sources.ts
|
|
2500
|
-
var
|
|
2501
|
-
function
|
|
2512
|
+
var di = new Set(["senat.fr", "www.senat.fr"]), fi = "https://www.senat.fr";
|
|
2513
|
+
function pi(e) {
|
|
2502
2514
|
return e?.trim() || void 0;
|
|
2503
2515
|
}
|
|
2504
|
-
function
|
|
2516
|
+
function mi(e) {
|
|
2505
2517
|
try {
|
|
2506
|
-
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`,
|
|
2507
|
-
return
|
|
2518
|
+
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, fi);
|
|
2519
|
+
return di.has(n.hostname.toLowerCase()) ? n : void 0;
|
|
2508
2520
|
} catch {
|
|
2509
2521
|
return;
|
|
2510
2522
|
}
|
|
2511
2523
|
}
|
|
2512
|
-
function
|
|
2513
|
-
let t =
|
|
2524
|
+
function hi(e) {
|
|
2525
|
+
let t = pi(e);
|
|
2514
2526
|
if (t === void 0) return {
|
|
2515
2527
|
publicUrl: null,
|
|
2516
2528
|
status: "no_url"
|
|
2517
2529
|
};
|
|
2518
|
-
let n =
|
|
2530
|
+
let n = mi(t);
|
|
2519
2531
|
if (n === void 0) return {
|
|
2520
2532
|
publicUrl: t,
|
|
2521
2533
|
status: "unsupported_source"
|
|
2522
2534
|
};
|
|
2523
2535
|
let r = n.pathname;
|
|
2524
2536
|
if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
|
|
2525
|
-
akomaNtosoUrl: `${
|
|
2537
|
+
akomaNtosoUrl: `${fi}${r}`,
|
|
2526
2538
|
publicUrl: n.toString(),
|
|
2527
2539
|
status: "available"
|
|
2528
2540
|
};
|
|
@@ -2531,17 +2543,17 @@ function mi(e) {
|
|
|
2531
2543
|
publicUrl: n.toString(),
|
|
2532
2544
|
status: "unsupported_source"
|
|
2533
2545
|
} : {
|
|
2534
|
-
akomaNtosoUrl: `${
|
|
2546
|
+
akomaNtosoUrl: `${fi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
|
|
2535
2547
|
publicUrl: n.toString(),
|
|
2536
2548
|
status: "available"
|
|
2537
2549
|
};
|
|
2538
2550
|
}
|
|
2539
|
-
function
|
|
2551
|
+
function gi(e) {
|
|
2540
2552
|
return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
|
|
2541
2553
|
}
|
|
2542
2554
|
//#endregion
|
|
2543
2555
|
//#region src/lib/alineas/alineas_numbers.ts
|
|
2544
|
-
var
|
|
2556
|
+
var _i = {
|
|
2545
2557
|
"0150a855548f15a2af52ea057be53f5d": 1,
|
|
2546
2558
|
"039826cf379b94afefe90b25c6045ca0": 1,
|
|
2547
2559
|
"03a7e564b84662f4d957c51018e26244": 1,
|
|
@@ -21515,7 +21527,7 @@ var gi = {
|
|
|
21515
21527
|
d16d29c923bd60c7b095b66c6058fe60: 1664,
|
|
21516
21528
|
"1c14c2adf5cfda3220b2057160e10e91": 1665,
|
|
21517
21529
|
e44c55ca1ac46ff46420686a466c9fc6: 1665
|
|
21518
|
-
},
|
|
21530
|
+
}, vi = "\np:has(.alinea) {\n margin: 0.6em 0;\n}\n.alinea {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n margin-right: 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n vertical-align: middle;\n}\n", yi = "\nh1 {\n font-size: 1.8em;\n margin: 1em 0 0.5em 0;\n}\nh2 {\n font-size: 1.5em;\n margin: 0.9em 0 0.4em 0;\n}\nh3 {\n font-size: 1.3em;\n margin: 0.8em 0 0.4em 0;\n}\nh4 {\n font-size: 1.15em;\n margin: 0.7em 0 0.3em 0;\n}\nh5 {\n font-size: 1.05em;\n margin: 0.6em 0 0.3em 0;\n}\nh6 {\n font-size: 1em;\n margin: 0.5em 0 0.3em 0;\n}\n", bi = "\n.expose-motifs-titre {\n font-size: 1.1em;\n font-weight: bold;\n color: #0070b9;\n margin: 1em 0 0.5em 0;\n}\n.expose-motifs {\n border-left: 3px solid #0070b9;\n padding-left: 1em;\n margin: 0.5em 0 1em 0;\n color: #333;\n}\n.expose-motifs p {\n margin: 0.5em 0;\n}\n", xi = "\nol {\n list-style: none;\n padding-left: 0;\n margin: 0.5em 0;\n counter-reset: list-counter;\n}\nol > li {\n counter-increment: list-counter;\n margin: 0.3em 0;\n padding-left: 2.3em;\n position: relative;\n}\nol > li::before {\n content: counter(list-counter);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 1.5em;\n height: 1.5em;\n padding: 0 0.3em;\n font-size: 0.75em;\n font-weight: bold;\n color: #555;\n background-color: #f0f0f0;\n border: 1px solid #ccc;\n border-radius: 1em;\n position: absolute;\n left: 0;\n top: 0.1em;\n}\n", Si = "\n.cover-title {\n font-size: 1.8em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n.cover-subtitle {\n font-size: 1.4em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 0.8em 0;\n}\n.cover-info {\n text-align: center;\n margin: 0.3em 0;\n color: #333;\n}\n.cover-year {\n font-size: 2em;\n font-weight: bold;\n color: #0070b9;\n text-align: center;\n margin: 1em 0;\n}\n", Ci = {
|
|
21519
21531
|
assnatetatagr: { bold: !0 },
|
|
21520
21532
|
assnatetatagrgr: { bold: !0 },
|
|
21521
21533
|
assnatetatatr: { bold: !0 },
|
|
@@ -21616,29 +21628,29 @@ var gi = {
|
|
|
21616
21628
|
assnatxl67: { align: "center" },
|
|
21617
21629
|
assnatenteteequilibre: { align: "center" }
|
|
21618
21630
|
};
|
|
21619
|
-
function Ci(e) {
|
|
21620
|
-
let t = Object.keys(Si).sort((e, t) => t.length - e.length);
|
|
21621
|
-
for (let n of t) if (e.includes(n)) return Si[n];
|
|
21622
|
-
return null;
|
|
21623
|
-
}
|
|
21624
21631
|
function wi(e) {
|
|
21625
|
-
|
|
21632
|
+
let t = Object.keys(Ci).sort((e, t) => t.length - e.length);
|
|
21633
|
+
for (let n of t) if (e.includes(n)) return Ci[n];
|
|
21634
|
+
return null;
|
|
21626
21635
|
}
|
|
21627
21636
|
function Ti(e) {
|
|
21628
|
-
return
|
|
21637
|
+
return De.createHash("md5").update(e).digest("hex");
|
|
21629
21638
|
}
|
|
21630
21639
|
function Ei(e) {
|
|
21631
|
-
return e ? /font-
|
|
21640
|
+
return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
|
|
21632
21641
|
}
|
|
21633
21642
|
function Di(e) {
|
|
21643
|
+
return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
|
|
21644
|
+
}
|
|
21645
|
+
function Oi(e) {
|
|
21634
21646
|
if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
|
|
21635
21647
|
let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
|
|
21636
21648
|
return !(t && parseFloat(t[1]) < 8);
|
|
21637
21649
|
}
|
|
21638
|
-
function
|
|
21650
|
+
function ki(e) {
|
|
21639
21651
|
return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
|
|
21640
21652
|
}
|
|
21641
|
-
function
|
|
21653
|
+
function Ai(e) {
|
|
21642
21654
|
if (!e) return;
|
|
21643
21655
|
let t = [
|
|
21644
21656
|
"width",
|
|
@@ -21673,15 +21685,15 @@ function ki(e) {
|
|
|
21673
21685
|
}
|
|
21674
21686
|
return n.length > 0 ? n.join("; ") : void 0;
|
|
21675
21687
|
}
|
|
21676
|
-
function
|
|
21688
|
+
function ji(e, t) {
|
|
21677
21689
|
return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
|
|
21678
21690
|
}
|
|
21679
|
-
function
|
|
21691
|
+
function Mi(e) {
|
|
21680
21692
|
if (!e) return null;
|
|
21681
21693
|
let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
|
|
21682
21694
|
return t ? t[1].toLowerCase() : null;
|
|
21683
21695
|
}
|
|
21684
|
-
function
|
|
21696
|
+
function Ni(e) {
|
|
21685
21697
|
if (!e) return null;
|
|
21686
21698
|
for (let [t, n] of [
|
|
21687
21699
|
[/assnat1Tome|assnatAN1PARTIE/i, 1],
|
|
@@ -21693,8 +21705,8 @@ function Mi(e) {
|
|
|
21693
21705
|
]) if (t.test(e)) return n;
|
|
21694
21706
|
return null;
|
|
21695
21707
|
}
|
|
21696
|
-
function
|
|
21697
|
-
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a =
|
|
21708
|
+
function Pi(e, t = {}) {
|
|
21709
|
+
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = w(e, { xml: { decodeEntities: !1 } });
|
|
21698
21710
|
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
21711
|
let n = a(t).closest("table");
|
|
21700
21712
|
n.length > 0 && n.remove();
|
|
@@ -21719,7 +21731,7 @@ function Ni(e, t = {}) {
|
|
|
21719
21731
|
if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
|
|
21720
21732
|
let e = i.attr();
|
|
21721
21733
|
if (e && (e.width === "45" && (e.height === "31" || e.height === "30") || parseInt(e.width || "0", 10) < 50 && parseInt(e.height || "0", 10) < 50) && r.includes("position:absolute")) {
|
|
21722
|
-
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ?
|
|
21734
|
+
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ti(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
|
|
21723
21735
|
n.replaceWith(`<span class="alinea"${i}></span>`);
|
|
21724
21736
|
return;
|
|
21725
21737
|
}
|
|
@@ -21738,7 +21750,7 @@ function Ni(e, t = {}) {
|
|
|
21738
21750
|
(!r || r === "\xA0") && n.remove();
|
|
21739
21751
|
}), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
|
|
21740
21752
|
function o(e) {
|
|
21741
|
-
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i =
|
|
21753
|
+
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Ei(n) || r === "b" || r === "strong", o = Di(n) || r === "i" || r === "em", s = Oi(n) || r === "sup", c = ki(n) || r === "sub", l = t.attr("class") || "";
|
|
21742
21754
|
return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
|
|
21743
21755
|
bold: i,
|
|
21744
21756
|
italic: o,
|
|
@@ -21772,7 +21784,7 @@ function Ni(e, t = {}) {
|
|
|
21772
21784
|
c = e;
|
|
21773
21785
|
}
|
|
21774
21786
|
for (a("p").each((e, t) => {
|
|
21775
|
-
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s =
|
|
21787
|
+
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Ni(i);
|
|
21776
21788
|
if (i.includes("assnatFARCouvTitreD")) {
|
|
21777
21789
|
let e = r.html() || "";
|
|
21778
21790
|
r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
|
|
@@ -21805,11 +21817,11 @@ function Ni(e, t = {}) {
|
|
|
21805
21817
|
let c = r.text().trim().startsWith("«");
|
|
21806
21818
|
if (s && !c) {
|
|
21807
21819
|
let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
|
|
21808
|
-
n &&
|
|
21820
|
+
n && ji(o, i) && e.attr("align", "center"), r.replaceWith(e);
|
|
21809
21821
|
} else {
|
|
21810
|
-
let e =
|
|
21822
|
+
let e = wi(i), t;
|
|
21811
21823
|
if (n) {
|
|
21812
|
-
let n =
|
|
21824
|
+
let n = Mi(o);
|
|
21813
21825
|
n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
|
|
21814
21826
|
}
|
|
21815
21827
|
if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
|
|
@@ -21819,7 +21831,7 @@ function Ni(e, t = {}) {
|
|
|
21819
21831
|
}
|
|
21820
21832
|
}), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
|
|
21821
21833
|
let r = a(t), i = r.attr("style"), o = r.attr("class");
|
|
21822
|
-
n &&
|
|
21834
|
+
n && ji(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
|
|
21823
21835
|
}), a("a").each((e, t) => {
|
|
21824
21836
|
let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
|
|
21825
21837
|
for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
|
|
@@ -21858,7 +21870,7 @@ function Ni(e, t = {}) {
|
|
|
21858
21870
|
}), a("br").each((e, t) => {
|
|
21859
21871
|
a(t).removeAttr("style").removeAttr("class");
|
|
21860
21872
|
}), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
|
|
21861
|
-
let n = a(t), r =
|
|
21873
|
+
let n = a(t), r = Ai(n.attr("style"));
|
|
21862
21874
|
n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
|
|
21863
21875
|
}), a("td, th").each((e, t) => {
|
|
21864
21876
|
let n = a(t), r = n.children();
|
|
@@ -21876,17 +21888,17 @@ function Ni(e, t = {}) {
|
|
|
21876
21888
|
!isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
|
|
21877
21889
|
}
|
|
21878
21890
|
}), a("li").each((e, t) => {
|
|
21879
|
-
let n = a(t), r =
|
|
21891
|
+
let n = a(t), r = Mi(n.attr("style"));
|
|
21880
21892
|
n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
|
|
21881
21893
|
let i = n.html() || "", o = i.replace(/^(\s| | |\u00a0)+/, "");
|
|
21882
21894
|
o !== i && n.html(o);
|
|
21883
|
-
}),
|
|
21895
|
+
}), Fi(a), Ii(a, i);
|
|
21884
21896
|
let l = a("body").html() || a.html(), u = l.includes("class=\"alinea"), d = a("ol").length > 0, f = a("h1, h2, h3, h4, h5, h6").length > 0, p = l.includes("class=\"expose-motifs"), m = l.includes("class=\"cover-title\"") || l.includes("class=\"cover-subtitle\"") || l.includes("class=\"cover-info\"") || l.includes("class=\"cover-year\""), h = "";
|
|
21885
|
-
m && (h +=
|
|
21897
|
+
m && (h += Si), f && (h += yi), p && (h += bi), u && (h += vi), d && (h += xi);
|
|
21886
21898
|
let g = h ? `<style>${h}</style>\n${l}` : l;
|
|
21887
|
-
return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/ /g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*( | | |\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*( | | |\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g =
|
|
21899
|
+
return g = g.replace(/>\s+</g, "> <").replace(/\r\n/g, "\n").replace(/\r/g, "\n").replace(/\n{3,}/g, "\n\n").split("\n").map((e) => e.trim()).filter((e) => e.length > 0).join("\n"), g = g.replace(/ /g, "\xA0"), r && (g = g.replace(/<p[^>]*>\s*( | | |\u00a0|\s)*\s*<\/p>/gi, "").replace(/<p[^>]*>\s*<(strong|em|b|i)>\s*( | | |\u00a0|\s)*\s*<\/\1>\s*<\/p>/gi, "")), g = g.replace(/<span[^>]*>\s*<\/span>/gi, ""), g = g.replace(/ class=""/g, ""), g = Li(g), g = g.replace(/<(strong|em|b|i|sup|sub)>\s*( | | |\u00a0|\s)*\s*<\/\1>/gi, "").replace(/<(strong|em|b|i)>( | | |\u00a0)+<\/\1>/gi, " ").replace(/<br\s*\/?>/gi, "<br/>").replace(/ +/g, " ").trim(), g;
|
|
21888
21900
|
}
|
|
21889
|
-
function
|
|
21901
|
+
function Fi(e) {
|
|
21890
21902
|
e("span[id]").each((t, n) => {
|
|
21891
21903
|
let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
|
|
21892
21904
|
if (o.length !== 1 || o[0] !== "id") return;
|
|
@@ -21909,13 +21921,13 @@ function Pi(e) {
|
|
|
21909
21921
|
l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
|
|
21910
21922
|
});
|
|
21911
21923
|
}
|
|
21912
|
-
function
|
|
21924
|
+
function Ii(e, t = !1) {
|
|
21913
21925
|
let n = e("body");
|
|
21914
21926
|
if (n.length === 0) return;
|
|
21915
21927
|
let r = n.find("span.alinea[data-image-hash]"), i = -1;
|
|
21916
21928
|
r.each((n, r) => {
|
|
21917
21929
|
let a = e(r), o = a.attr("data-image-hash"), s;
|
|
21918
|
-
if (o &&
|
|
21930
|
+
if (o && _i[o] !== void 0 && (s = _i[o]), s === void 0) {
|
|
21919
21931
|
if (t) throw Error(`Missing alinea number mapping for image hash: "${o}". Please extract images, review them, and update the mapping in "src/lib/alineas/alineas_numbers.ts".`);
|
|
21920
21932
|
a.remove();
|
|
21921
21933
|
return;
|
|
@@ -21927,11 +21939,11 @@ function Fi(e, t = !1) {
|
|
|
21927
21939
|
i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
|
|
21928
21940
|
});
|
|
21929
21941
|
}
|
|
21930
|
-
function
|
|
21942
|
+
function Li(e) {
|
|
21931
21943
|
let t = e;
|
|
21932
21944
|
return t = t.replace(/<\/strong>(\s*)<strong>/gi, "$1"), t = t.replace(/<\/em>(\s*)<em>/gi, "$1"), t = t.replace(/<\/sup>(\s*)<sup>/gi, "$1"), t = t.replace(/<\/sub>(\s*)<sub>/gi, "$1"), t;
|
|
21933
21945
|
}
|
|
21934
|
-
function
|
|
21946
|
+
function Ri(e, t = {}) {
|
|
21935
21947
|
return `<!DOCTYPE html>
|
|
21936
21948
|
<html lang="fr">
|
|
21937
21949
|
<head>
|
|
@@ -21939,33 +21951,33 @@ function Li(e, t = {}) {
|
|
|
21939
21951
|
<title>Document simplifié</title>
|
|
21940
21952
|
</head>
|
|
21941
21953
|
<body>
|
|
21942
|
-
${
|
|
21954
|
+
${Pi(e, t)}
|
|
21943
21955
|
</body>
|
|
21944
21956
|
</html>`;
|
|
21945
21957
|
}
|
|
21946
21958
|
//#endregion
|
|
21947
21959
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
21948
|
-
function
|
|
21960
|
+
function zi(e, t) {
|
|
21949
21961
|
let n = "transformation_", r = {};
|
|
21950
|
-
for (let e of
|
|
21962
|
+
for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
21951
21963
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
21952
21964
|
for (let e of a.slice(1)) {
|
|
21953
21965
|
let t = o.transformations ??= [];
|
|
21954
21966
|
for (; e >= t.length;) t.push({});
|
|
21955
21967
|
o = t[e];
|
|
21956
21968
|
}
|
|
21957
|
-
o.output =
|
|
21958
|
-
let { sourceMap: s, title: c } =
|
|
21969
|
+
o.output = j.readFileSync(ke.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
21970
|
+
let { sourceMap: s, title: c } = j.readJsonSync(ke.join(t, e), { encoding: "utf-8" });
|
|
21959
21971
|
o.sourceMap = s ?? [], o.title = c;
|
|
21960
21972
|
}
|
|
21961
|
-
return
|
|
21973
|
+
return Bi(r, e), r;
|
|
21962
21974
|
}
|
|
21963
|
-
function
|
|
21964
|
-
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations)
|
|
21975
|
+
function Bi(e, t) {
|
|
21976
|
+
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Bi(n, t), t = n.output;
|
|
21965
21977
|
return t;
|
|
21966
21978
|
}
|
|
21967
|
-
function
|
|
21968
|
-
if (
|
|
21979
|
+
function Vi(e, t, n = "1") {
|
|
21980
|
+
if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(ke.join(t, `transformation_${n}.json`), {
|
|
21969
21981
|
sourceMap: e.sourceMap,
|
|
21970
21982
|
title: e.title
|
|
21971
21983
|
}, {
|
|
@@ -21973,24 +21985,24 @@ function Bi(e, t, n = "1") {
|
|
|
21973
21985
|
spaces: 2
|
|
21974
21986
|
});
|
|
21975
21987
|
else {
|
|
21976
|
-
|
|
21988
|
+
j.writeJsonSync(ke.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
21977
21989
|
encoding: "utf-8",
|
|
21978
21990
|
spaces: 2
|
|
21979
21991
|
});
|
|
21980
|
-
for (let [r, i] of e.transformations.entries())
|
|
21992
|
+
for (let [r, i] of e.transformations.entries()) Vi(i, t, `${n}.${r + 1}`);
|
|
21981
21993
|
}
|
|
21982
|
-
e.output !== void 0 &&
|
|
21994
|
+
e.output !== void 0 && j.writeFileSync(ke.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
21983
21995
|
}
|
|
21984
21996
|
//#endregion
|
|
21985
21997
|
//#region src/lib/server/linkers/html.ts
|
|
21986
|
-
async function
|
|
21987
|
-
let _ = t ?? (e === void 0 ? void 0 : new
|
|
21998
|
+
async function Hi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, htmlFilePath: i, htmlTransformationsInputDir: a, htmlTransformationsOutputDir: o, htmlWithLinksFilePath: s, htmlWithLinksOrReferencesFilePath: c, htmlWithLinksTransformationsOutputDir: l, htmlWithReferencesFilePath: u, linkBaseUrl: d, linkType: f, logIgnoredReferencesTypes: p, logPartialReferences: m, logReferences: h, referredLegifranceTextsInfosFilePath: g }) {
|
|
21999
|
+
let _ = t ?? (e === void 0 ? void 0 : new se(e));
|
|
21988
22000
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
21989
|
-
let v = await
|
|
21990
|
-
a === void 0 ? (y =
|
|
22001
|
+
let v = await j.readFile(i, { encoding: "utf-8" }), y;
|
|
22002
|
+
a === void 0 ? (y = be({ removeAWithHref: !0 })(v), o !== void 0 && Vi(y, o)) : y = zi(v, a);
|
|
21991
22003
|
let b = [];
|
|
21992
22004
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
21993
|
-
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await
|
|
22005
|
+
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
|
|
21994
22006
|
legiResolver: _,
|
|
21995
22007
|
date: n,
|
|
21996
22008
|
defaultTextId: r,
|
|
@@ -22007,38 +22019,38 @@ async function Vi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22007
22019
|
s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
|
|
22008
22020
|
for (let [e, t] of Object.entries(x)) {
|
|
22009
22021
|
let n = S[e];
|
|
22010
|
-
n !== void 0 && await
|
|
22022
|
+
n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
|
|
22011
22023
|
}
|
|
22012
|
-
x.links !== void 0 && l !== void 0 &&
|
|
22024
|
+
x.links !== void 0 && l !== void 0 && Vi(be()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
|
|
22013
22025
|
encoding: "utf-8",
|
|
22014
22026
|
spaces: 2
|
|
22015
22027
|
});
|
|
22016
22028
|
}
|
|
22017
22029
|
//#endregion
|
|
22018
22030
|
//#region src/lib/server/tables_of_contents.ts
|
|
22019
|
-
async function
|
|
22020
|
-
let i =
|
|
22021
|
-
for await (let e of
|
|
22031
|
+
async function Ui(e, t, n, r) {
|
|
22032
|
+
let i = zi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new T(a), s = await j.readJson(n, { encoding: "utf-8" });
|
|
22033
|
+
for await (let e of ce({
|
|
22022
22034
|
context: o,
|
|
22023
22035
|
tableOfContents: s,
|
|
22024
22036
|
transformation: i
|
|
22025
22037
|
}));
|
|
22026
|
-
await
|
|
22038
|
+
await j.writeJson(r, s, {
|
|
22027
22039
|
encoding: "utf-8",
|
|
22028
22040
|
spaces: 2
|
|
22029
22041
|
});
|
|
22030
22042
|
}
|
|
22031
|
-
async function
|
|
22032
|
-
let r =
|
|
22033
|
-
await
|
|
22043
|
+
async function Wi(e, t, n) {
|
|
22044
|
+
let r = zi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = b(r);
|
|
22045
|
+
await j.writeJson(n, i, {
|
|
22034
22046
|
encoding: "utf-8",
|
|
22035
22047
|
spaces: 2
|
|
22036
22048
|
});
|
|
22037
22049
|
}
|
|
22038
22050
|
//#endregion
|
|
22039
22051
|
//#region src/lib/server/legi/resolvers.ts
|
|
22040
|
-
function
|
|
22041
|
-
return new
|
|
22052
|
+
function Gi({ canutesDb: e }) {
|
|
22053
|
+
return new se(e);
|
|
22042
22054
|
}
|
|
22043
22055
|
//#endregion
|
|
22044
|
-
export {
|
|
22056
|
+
export { Te as LegiResolver, Hi as addLinksOrReferencesToHtmlFile, Ui as addPositionsToTableOfContentsFile, xe as buildAndInstallTextTitlesInfos, we as buildTextTitlesInfos, Gi as createLegiResolver, Ne as extractAssembleeAmendmentSearchItems, tr as extractAssembleeExposesDesMotifs, or as extractSenatAmendmentSearchItems, Pe as hashAssembleeAmendmentSearchItem, rr as hashAssembleeSearchItem, sr as hashSenatAmendmentSearchItem, ui as hashSenatSearchItem, gi as isAkomaNtosoXml, ir as isoDateFromAssembleeDocument, Zn as linkAkomaNtosoBillRaw, on as linkAssembleeBillRaw, Xn as parseAkomaNtosoBillRaw, oi as parseAmendment, an as parseAssembleeBillRaw, nr as parseAssembleeDocumentSearchContent, li as parseSenatDocumentSearchContent, zi as readTransformation, Kn as renderAkomaNtosoBillRaw, hi as resolveSenatAkomaNtosoSource, Wi as simplifiedHtmlBillFileToTableOfContentsFile, Pi as simplifyWordHtml, Ri as simplifyWordHtmlToDocument, Vi as writeTransformation };
|