@tricoteuses/tisseuse 0.16.1 → 0.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server.js +673 -652
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as e, B as t, C as n, Ct as r, D as i, E as a, Et as o, F as s, It as c, J as l, Lt as u, O as d, Q as f, R as p, S as m, T as h, Tt as g, Z as _, b as v, c as y, g as b, h as x, it as ee, j as S, jt as te, k as
|
|
2
|
-
import { $ as
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { A as e, B as t, C as n, Ct as r, D as i, E as a, Et as o, F as s, It as c, J as l, Lt as u, O as d, Q as f, R as p, S as m, T as h, Tt as g, Z as _, b as v, c as y, g as b, h as x, it as ee, j as S, jt as te, k as ne, kt as re, m as ie, mt as ae, n as oe, nt as se, ot as C, p as ce, s as le, t as ue, u as de, v as fe, wt as pe, x as me, yt as he } from "./html-BTeBbxJE.js";
|
|
2
|
+
import { $ as ge, Dt as w, Et as T, F as _e, I as ve, N as ye, Nt as E, O as be, Tt as D, ct as xe, et as Se, ht as Ce, jt as O, k as we, kt as Te, n as Ee, o as De, r as Oe, st as ke, t as Ae, vt as k } from "./resolver-CuP8arVX.js";
|
|
3
|
+
import * as je from "node:crypto";
|
|
4
|
+
import { createHash as Me } from "node:crypto";
|
|
5
|
+
import A from "fs-extra";
|
|
6
|
+
import Ne from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function Pe(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 Me(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function Fe(e) {
|
|
17
17
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function Ie(e) {
|
|
20
|
+
return Fe(C(e).text());
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
|
|
22
|
+
function Le(e) {
|
|
23
|
+
let t = Fe([
|
|
24
|
+
Pe(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
Pe(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
Pe(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) => Ie(e)).join("\n")), n = Pe(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : Ie(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Fe(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Re(e, t) {
|
|
55
|
+
return Me("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 j(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return j(e.reference);
|
|
65
|
+
case "enumeration": return [...j(e.left), ...j(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
67
|
let t = [...c(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 ? [] : j(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,15 +89,15 @@ function N(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/text_parsers/table_row_targets.ts
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
var ze = Te("lignes du tableau constituant", w([
|
|
93
|
+
E("les ", { flags: "i" }),
|
|
94
|
+
ke,
|
|
95
|
+
E(" et ", { flags: "i" }),
|
|
96
|
+
ke,
|
|
97
|
+
E(" lignes du tableau constituant le ", { flags: "i" }),
|
|
98
98
|
te,
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
ge,
|
|
100
|
+
ae
|
|
101
101
|
], { value: (e, t) => {
|
|
102
102
|
let n = e[1], r = e[3], i = e[5];
|
|
103
103
|
if (!(i.type !== "alinéa" || i.index === void 0 || n < 1 || r !== n + 1)) return {
|
|
@@ -108,16 +108,16 @@ var Le = we("lignes du tableau constituant", T([
|
|
|
108
108
|
position: t.position()
|
|
109
109
|
};
|
|
110
110
|
} }));
|
|
111
|
-
function
|
|
112
|
-
return [...
|
|
111
|
+
function Be(e) {
|
|
112
|
+
return [...ze.extract(new D(e), { overlapWindow: 50 })];
|
|
113
113
|
}
|
|
114
114
|
//#endregion
|
|
115
115
|
//#region src/lib/extractors/article_action_effects.ts
|
|
116
|
-
function
|
|
116
|
+
function Ve(e, t) {
|
|
117
117
|
if (t < 2) return null;
|
|
118
|
-
let n =
|
|
118
|
+
let n = we(e), r = b(e);
|
|
119
119
|
if (r.length !== t) return null;
|
|
120
|
-
let i = s(new
|
|
120
|
+
let i = s(new D(n.output)), a = (e) => ve(n, [e])[0].position;
|
|
121
121
|
return r.map((t, n) => ({
|
|
122
122
|
sourceText: e,
|
|
123
123
|
referencePosition: a({
|
|
@@ -127,20 +127,20 @@ function ze(e, t) {
|
|
|
127
127
|
actionPosition: a(t.position)
|
|
128
128
|
}));
|
|
129
129
|
}
|
|
130
|
-
function
|
|
130
|
+
function He(e, t, n) {
|
|
131
131
|
if (t.length < 2) return null;
|
|
132
|
-
let r =
|
|
132
|
+
let r = we(e), i = r.output, a = (e) => ve(r, [e])[0].position, o = s(new D(i)), c = o.flatMap(j);
|
|
133
133
|
if (c.length !== t.length || c.length < 2) return null;
|
|
134
|
-
let l =
|
|
134
|
+
let l = Be(i);
|
|
135
135
|
if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
|
|
136
136
|
let n = c[t];
|
|
137
|
-
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !
|
|
137
|
+
return n.article.num !== e.article.num || n.article.position.start !== e.article.position.start || n.article.position.stop !== e.article.position.stop || !se(n.reference).some((t) => t.kind === "single" && t.steps.some((t) => t.type === "alinéa" && t.index === e.alineaIndex));
|
|
138
138
|
}) ? null : c.map((r, i) => ({
|
|
139
139
|
targetId: t[i],
|
|
140
140
|
directive: {
|
|
141
141
|
...n,
|
|
142
142
|
reference: r.reference,
|
|
143
|
-
portionSelectors:
|
|
143
|
+
portionSelectors: se(r.reference),
|
|
144
144
|
tableTarget: {
|
|
145
145
|
type: "table",
|
|
146
146
|
rowIndex: l[i].rowIndex,
|
|
@@ -185,12 +185,12 @@ function Be(e, t, n) {
|
|
|
185
185
|
let d = [], f = 0;
|
|
186
186
|
for (let e = 1; e < o.length; e += 1) {
|
|
187
187
|
let t = o[e];
|
|
188
|
-
t.type !== "reference_et_action" ||
|
|
188
|
+
t.type !== "reference_et_action" || j(t).length === 0 || o.slice(f, e).flatMap(j).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
|
|
189
189
|
}
|
|
190
190
|
d.push(o.length - 1);
|
|
191
191
|
let p = [], m = 0, h = 0;
|
|
192
192
|
for (let n of d) {
|
|
193
|
-
let r = o.slice(m, n + 1).flatMap(
|
|
193
|
+
let r = o.slice(m, n + 1).flatMap(j);
|
|
194
194
|
if (r.length === 0) {
|
|
195
195
|
m = n + 1;
|
|
196
196
|
continue;
|
|
@@ -219,7 +219,7 @@ function Be(e, t, n) {
|
|
|
219
219
|
stop: i.length
|
|
220
220
|
},
|
|
221
221
|
reference: n.reference,
|
|
222
|
-
portionSelectors:
|
|
222
|
+
portionSelectors: se(n.reference)
|
|
223
223
|
}
|
|
224
224
|
});
|
|
225
225
|
}
|
|
@@ -227,16 +227,16 @@ function Be(e, t, n) {
|
|
|
227
227
|
}
|
|
228
228
|
return h === t.length ? p : null;
|
|
229
229
|
}
|
|
230
|
-
var
|
|
230
|
+
var Ue = Te("dans sa rédaction", w([w([E("dans sa rédaction ", { flags: "i" }), T(E("issue ", { flags: "i" }), E("résultante ", { flags: "i" }), E("résultant ", { flags: "i" }))], { value: "qualified-version-redaction" }), T(w([E("de l'", { flags: "i" }), t], { value: (e) => e[1] }), p)], { value: (e) => e[1] }));
|
|
231
231
|
//#endregion
|
|
232
232
|
//#region src/lib/extractors/qualified_versions.ts
|
|
233
|
-
function
|
|
234
|
-
let t =
|
|
235
|
-
for (let e of
|
|
233
|
+
function We(e) {
|
|
234
|
+
let t = we(e), n = [];
|
|
235
|
+
for (let e of Ue.extract(new D(t.output), { jumpExact: !0 })) for (let r of u(e)) {
|
|
236
236
|
if (r.type !== "parent-enfant" || r.parent.type !== "texte" || r.parent.nature !== "LOI") continue;
|
|
237
237
|
let e = [...c(r.child)].filter((e) => e.type === "article" && e.position.start < r.parent.position.start);
|
|
238
238
|
if (e.length === 1) {
|
|
239
|
-
n.push(
|
|
239
|
+
n.push(ve(t, [e[0].position])[0].position);
|
|
240
240
|
break;
|
|
241
241
|
}
|
|
242
242
|
}
|
|
@@ -244,29 +244,29 @@ function He(e) {
|
|
|
244
244
|
}
|
|
245
245
|
//#endregion
|
|
246
246
|
//#region src/lib/server/parsed_bills.ts
|
|
247
|
-
var
|
|
248
|
-
function
|
|
247
|
+
var Ge = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
248
|
+
function M(e) {
|
|
249
249
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
250
250
|
}
|
|
251
|
-
function
|
|
252
|
-
return
|
|
251
|
+
function N(e) {
|
|
252
|
+
return M(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
253
253
|
}
|
|
254
|
-
function
|
|
255
|
-
return r(
|
|
254
|
+
function Ke(e) {
|
|
255
|
+
return r(M(e));
|
|
256
256
|
}
|
|
257
|
-
function
|
|
258
|
-
return `_TocArt${
|
|
257
|
+
function P(e) {
|
|
258
|
+
return `_TocArt${Ke(e).replace(/\s+/gu, "")}`;
|
|
259
259
|
}
|
|
260
|
-
function
|
|
260
|
+
function qe(e, t) {
|
|
261
261
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
262
262
|
}
|
|
263
|
-
function
|
|
264
|
-
return
|
|
263
|
+
function Je(e) {
|
|
264
|
+
return N(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
265
265
|
}
|
|
266
|
-
function
|
|
267
|
-
return
|
|
266
|
+
function Ye(e) {
|
|
267
|
+
return Je(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
268
268
|
}
|
|
269
|
-
function
|
|
269
|
+
function Xe(e) {
|
|
270
270
|
switch (e.kind) {
|
|
271
271
|
case "insert_after":
|
|
272
272
|
case "insert_before": return e.insertText;
|
|
@@ -284,12 +284,12 @@ function Je(e) {
|
|
|
284
284
|
default: return;
|
|
285
285
|
}
|
|
286
286
|
}
|
|
287
|
-
function
|
|
288
|
-
let t =
|
|
289
|
-
if (n?.[1] !== void 0) return
|
|
287
|
+
function Ze(e) {
|
|
288
|
+
let t = M(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);
|
|
289
|
+
if (n?.[1] !== void 0) return pe(n[1]);
|
|
290
290
|
}
|
|
291
|
-
function
|
|
292
|
-
let t =
|
|
291
|
+
function Qe(e) {
|
|
292
|
+
let t = Xe(e), n = he(t ?? "");
|
|
293
293
|
if (n.length > 0 && t !== void 0) return n.map((e, r) => {
|
|
294
294
|
let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
|
|
295
295
|
return {
|
|
@@ -297,58 +297,58 @@ function Xe(e) {
|
|
|
297
297
|
text: o
|
|
298
298
|
};
|
|
299
299
|
});
|
|
300
|
-
let r =
|
|
300
|
+
let r = Ze(e);
|
|
301
301
|
return r === void 0 ? [] : [{
|
|
302
302
|
num: r,
|
|
303
303
|
text: t ?? e.sourceText
|
|
304
304
|
}];
|
|
305
305
|
}
|
|
306
|
-
function
|
|
306
|
+
function $e(e, t = /* @__PURE__ */ new Set()) {
|
|
307
307
|
if (e == null) return t;
|
|
308
308
|
if (Array.isArray(e)) {
|
|
309
|
-
for (let n of e)
|
|
309
|
+
for (let n of e) $e(n, t);
|
|
310
310
|
return t;
|
|
311
311
|
}
|
|
312
312
|
if (typeof e != "object") return t;
|
|
313
313
|
let n = e;
|
|
314
314
|
n.type === "article" && typeof n.num == "string" && t.add(n.num);
|
|
315
|
-
for (let e of Object.values(n))
|
|
315
|
+
for (let e of Object.values(n)) $e(e, t);
|
|
316
316
|
return t;
|
|
317
317
|
}
|
|
318
|
-
function
|
|
319
|
-
let t =
|
|
318
|
+
function et(e) {
|
|
319
|
+
let t = N(e.sourceText);
|
|
320
320
|
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);
|
|
321
321
|
}
|
|
322
|
-
function
|
|
323
|
-
return
|
|
322
|
+
function tt(e) {
|
|
323
|
+
return M(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
324
324
|
}
|
|
325
|
-
function
|
|
326
|
-
let n = new
|
|
325
|
+
function nt(e, t) {
|
|
326
|
+
let n = new D(e, t), r = Se(n);
|
|
327
327
|
return typeof r != "string" || n.offset <= t ? null : {
|
|
328
328
|
date: r,
|
|
329
329
|
start: t,
|
|
330
330
|
stop: n.offset
|
|
331
331
|
};
|
|
332
332
|
}
|
|
333
|
-
function
|
|
333
|
+
function rt(e, t) {
|
|
334
334
|
let n = /\d/u.exec(e.slice(t));
|
|
335
335
|
if (!n) return null;
|
|
336
336
|
let r = t + n.index;
|
|
337
|
-
return e.slice(t, r).trim().length > 0 ? null :
|
|
337
|
+
return e.slice(t, r).trim().length > 0 ? null : nt(e, r);
|
|
338
338
|
}
|
|
339
|
-
function
|
|
339
|
+
function it(e) {
|
|
340
340
|
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);
|
|
341
341
|
for (; o !== -1;) {
|
|
342
342
|
let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
|
|
343
343
|
if (l) {
|
|
344
|
-
let e =
|
|
344
|
+
let e = rt(c, l[0].length);
|
|
345
345
|
e && i.push(e.date);
|
|
346
346
|
}
|
|
347
347
|
let u = n.exec(c);
|
|
348
348
|
if (u) {
|
|
349
349
|
let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
|
|
350
350
|
for (r.lastIndex = 0; r.exec(t) !== null;) {
|
|
351
|
-
let e =
|
|
351
|
+
let e = rt(t, r.lastIndex);
|
|
352
352
|
e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
|
|
353
353
|
}
|
|
354
354
|
}
|
|
@@ -356,20 +356,20 @@ function nt(e) {
|
|
|
356
356
|
}
|
|
357
357
|
return i;
|
|
358
358
|
}
|
|
359
|
-
function
|
|
360
|
-
let t =
|
|
359
|
+
function at(e) {
|
|
360
|
+
let t = it(tt(e).toLowerCase()), n = Array.from(new Set(t));
|
|
361
361
|
return n.length === 1 ? n[0] : void 0;
|
|
362
362
|
}
|
|
363
|
-
function
|
|
364
|
-
return
|
|
363
|
+
function ot(e) {
|
|
364
|
+
return N(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
365
365
|
}
|
|
366
|
-
function
|
|
366
|
+
function F(e) {
|
|
367
367
|
return e?.type === "tag";
|
|
368
368
|
}
|
|
369
|
-
function
|
|
369
|
+
function st(e, t) {
|
|
370
370
|
return e.html(t) ?? "";
|
|
371
371
|
}
|
|
372
|
-
function
|
|
372
|
+
function ct(e, t) {
|
|
373
373
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
374
374
|
for (let i of e(t).find("a").get()) {
|
|
375
375
|
let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
|
|
@@ -377,43 +377,43 @@ function ot(e, t) {
|
|
|
377
377
|
let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
|
|
378
378
|
if (r.has(l)) continue;
|
|
379
379
|
r.add(l);
|
|
380
|
-
let u =
|
|
380
|
+
let u = M(e(i).text());
|
|
381
381
|
n.push({
|
|
382
382
|
id: c,
|
|
383
|
-
...
|
|
383
|
+
...lt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
|
|
384
384
|
...u ? { text: u } : {},
|
|
385
385
|
type: s
|
|
386
386
|
});
|
|
387
387
|
}
|
|
388
388
|
return n;
|
|
389
389
|
}
|
|
390
|
-
function
|
|
391
|
-
let r =
|
|
390
|
+
function lt(e, t, n) {
|
|
391
|
+
let r = ut(e, t, n);
|
|
392
392
|
return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
|
|
393
393
|
}
|
|
394
|
-
function
|
|
394
|
+
function ut(e, t, n) {
|
|
395
395
|
if (t === n) return "";
|
|
396
396
|
if (t.type === "text") return t.data ?? "";
|
|
397
|
-
if (!
|
|
397
|
+
if (!F(t)) return "";
|
|
398
398
|
let r = "";
|
|
399
399
|
for (let i of e(t).contents().get()) {
|
|
400
400
|
if (i === n) return r;
|
|
401
|
-
if (
|
|
401
|
+
if (F(i) && e.contains(i, n)) return r + ut(e, i, n);
|
|
402
402
|
r += e(i).text();
|
|
403
403
|
}
|
|
404
404
|
return r;
|
|
405
405
|
}
|
|
406
|
-
function
|
|
407
|
-
return t.map((t) =>
|
|
406
|
+
function dt(e, t) {
|
|
407
|
+
return t.map((t) => M(e(t).text())).filter(Boolean).join("\n");
|
|
408
408
|
}
|
|
409
|
-
function
|
|
410
|
-
let t =
|
|
411
|
-
return !t ||
|
|
409
|
+
function ft(e) {
|
|
410
|
+
let t = N(e);
|
|
411
|
+
return !t || Ge.test(t) ? "noise" : i.test(e) ? "directive_candidate" : "context";
|
|
412
412
|
}
|
|
413
|
-
async function
|
|
413
|
+
async function pt(e, t, n) {
|
|
414
414
|
if (n === void 0) throw Error("A document date is required to add links to legal references.");
|
|
415
415
|
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.");
|
|
416
|
-
let r = t.legiResolver ?? new
|
|
416
|
+
let r = t.legiResolver ?? new ce(t.canutesDb), { output: i } = await oe({
|
|
417
417
|
date: n,
|
|
418
418
|
html: e,
|
|
419
419
|
includeInternalArticleLinks: t.includeInternalArticleLinks,
|
|
@@ -426,13 +426,13 @@ async function dt(e, t, n) {
|
|
|
426
426
|
});
|
|
427
427
|
return i ?? e;
|
|
428
428
|
}
|
|
429
|
-
function
|
|
429
|
+
function mt(e, t) {
|
|
430
430
|
let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
|
|
431
|
-
return
|
|
431
|
+
return F(r) && F(n) && e(n).parents("table").get(0) === r ? r : F(n) ? n : t;
|
|
432
432
|
}
|
|
433
|
-
function
|
|
433
|
+
function ht(e, t, n, r) {
|
|
434
434
|
if (t.has(r.container)) return;
|
|
435
|
-
let i = r.id ??
|
|
435
|
+
let i = r.id ?? P(r.num ?? r.label);
|
|
436
436
|
n.has(i) || (n.add(i), t.add(r.container), e.push({
|
|
437
437
|
id: i,
|
|
438
438
|
label: r.label,
|
|
@@ -442,25 +442,25 @@ function pt(e, t, n, r) {
|
|
|
442
442
|
container: r.container
|
|
443
443
|
}));
|
|
444
444
|
}
|
|
445
|
-
function
|
|
445
|
+
function I(e) {
|
|
446
446
|
let t = /* @__PURE__ */ new Map();
|
|
447
447
|
return e("body *").each((e, n) => {
|
|
448
448
|
t.set(n, e);
|
|
449
449
|
}), t;
|
|
450
450
|
}
|
|
451
|
-
function
|
|
451
|
+
function L(e, t) {
|
|
452
452
|
return e.get(t) ?? 2 ** 53 - 1;
|
|
453
453
|
}
|
|
454
|
-
function
|
|
454
|
+
function gt(e) {
|
|
455
455
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
456
456
|
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
457
|
-
if (
|
|
458
|
-
let o = g(
|
|
457
|
+
if (qe(e, a)) return;
|
|
458
|
+
let o = g(M(e(a).text()));
|
|
459
459
|
if (!o) return;
|
|
460
460
|
let s = e(a).attr("id");
|
|
461
461
|
if (!s || r.has(s)) return;
|
|
462
|
-
let c =
|
|
463
|
-
|
|
462
|
+
let c = mt(e, a);
|
|
463
|
+
ht(t, n, r, {
|
|
464
464
|
id: s,
|
|
465
465
|
...o,
|
|
466
466
|
element: a,
|
|
@@ -468,37 +468,37 @@ function mt(e) {
|
|
|
468
468
|
});
|
|
469
469
|
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
470
470
|
if (n.has(a)) return;
|
|
471
|
-
let o = g(
|
|
472
|
-
o &&
|
|
471
|
+
let o = g(M(e(a).text()));
|
|
472
|
+
o && ht(t, n, r, {
|
|
473
473
|
...o,
|
|
474
474
|
element: a,
|
|
475
475
|
container: a
|
|
476
476
|
});
|
|
477
477
|
});
|
|
478
|
-
let i =
|
|
479
|
-
return t.sort((e, t) =>
|
|
478
|
+
let i = I(e);
|
|
479
|
+
return t.sort((e, t) => L(i, e.container) - L(i, t.container)), t;
|
|
480
480
|
}
|
|
481
|
-
function
|
|
482
|
-
if (
|
|
481
|
+
function _t(e, t) {
|
|
482
|
+
if (qe(e, t)) return !1;
|
|
483
483
|
let n = t.tagName?.toLowerCase();
|
|
484
484
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
485
485
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
486
486
|
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));
|
|
487
487
|
}
|
|
488
|
-
function
|
|
488
|
+
function vt(e) {
|
|
489
489
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
490
490
|
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
491
|
-
if (
|
|
491
|
+
if (qe(e, a) || !e(a).hasClass("assnat9ArticleNum") && !_t(e, a)) return;
|
|
492
492
|
let o = g(e(a).text());
|
|
493
|
-
o &&
|
|
493
|
+
o && ht(t, n, r, {
|
|
494
494
|
...o,
|
|
495
495
|
element: a,
|
|
496
496
|
container: a
|
|
497
497
|
});
|
|
498
498
|
}), t;
|
|
499
499
|
}
|
|
500
|
-
function
|
|
501
|
-
let t =
|
|
500
|
+
function yt(e) {
|
|
501
|
+
let t = Ke(e ?? "").replace(/[()]/gu, "").trim();
|
|
502
502
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
503
503
|
if (t.toLowerCase() === "unique") return {
|
|
504
504
|
base: 1,
|
|
@@ -507,7 +507,7 @@ function _t(e) {
|
|
|
507
507
|
};
|
|
508
508
|
let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
|
|
509
509
|
if (!n) return;
|
|
510
|
-
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 :
|
|
510
|
+
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : xt(i);
|
|
511
511
|
if (a !== void 0) return {
|
|
512
512
|
base: r,
|
|
513
513
|
suffixOrder: a,
|
|
@@ -515,7 +515,7 @@ function _t(e) {
|
|
|
515
515
|
text: t
|
|
516
516
|
};
|
|
517
517
|
}
|
|
518
|
-
function
|
|
518
|
+
function bt(e, t) {
|
|
519
519
|
if (t.base !== e.base) return t.base - e.base;
|
|
520
520
|
if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
|
|
521
521
|
for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
|
|
@@ -524,14 +524,14 @@ function vt(e, t) {
|
|
|
524
524
|
}
|
|
525
525
|
return 0;
|
|
526
526
|
}
|
|
527
|
-
function
|
|
528
|
-
let t = new
|
|
527
|
+
function xt(e) {
|
|
528
|
+
let t = new D(e), n = xe(t);
|
|
529
529
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
530
530
|
}
|
|
531
|
-
function
|
|
531
|
+
function St(e) {
|
|
532
532
|
let t = [], n = e.map((e) => ({
|
|
533
533
|
heading: e,
|
|
534
|
-
token:
|
|
534
|
+
token: yt(e.num)
|
|
535
535
|
}));
|
|
536
536
|
n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
|
|
537
537
|
code: "article_toc_out_of_order",
|
|
@@ -540,7 +540,7 @@ function bt(e) {
|
|
|
540
540
|
let r;
|
|
541
541
|
for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
|
|
542
542
|
if (r !== void 0) {
|
|
543
|
-
let n =
|
|
543
|
+
let n = bt(r, i);
|
|
544
544
|
n === 0 ? t.push({
|
|
545
545
|
code: "article_toc_duplicate_number",
|
|
546
546
|
message: `Article ${e.num ?? e.label} is repeated`,
|
|
@@ -569,40 +569,40 @@ function bt(e) {
|
|
|
569
569
|
}
|
|
570
570
|
return t;
|
|
571
571
|
}
|
|
572
|
-
function
|
|
573
|
-
let t =
|
|
572
|
+
function Ct(e) {
|
|
573
|
+
let t = St(e);
|
|
574
574
|
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) });
|
|
575
575
|
}
|
|
576
|
-
function
|
|
577
|
-
let n =
|
|
578
|
-
if (n.length === 0) return t &&
|
|
579
|
-
let i =
|
|
580
|
-
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) =>
|
|
576
|
+
function wt(e, { warn: t = !0 } = {}) {
|
|
577
|
+
let n = gt(e), r = vt(e);
|
|
578
|
+
if (n.length === 0) return t && Ct(r), r;
|
|
579
|
+
let i = I(e), a = (e, t) => {
|
|
580
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => P(e.num ?? e.label)));
|
|
581
581
|
for (let i of t) {
|
|
582
|
-
let t =
|
|
582
|
+
let t = P(i.num ?? i.label);
|
|
583
583
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
584
584
|
}
|
|
585
|
-
return e.sort((e, t) =>
|
|
586
|
-
}, 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 &&
|
|
587
|
-
return t &&
|
|
585
|
+
return e.sort((e, t) => L(i, e.container) - L(i, t.container)), e;
|
|
586
|
+
}, 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 && St(c).length > St(s).length ? s : c;
|
|
587
|
+
return t && Ct(l), l;
|
|
588
588
|
}
|
|
589
|
-
function
|
|
589
|
+
function Tt(e) {
|
|
590
590
|
let t = e.next;
|
|
591
591
|
for (; t !== null;) {
|
|
592
|
-
if (
|
|
592
|
+
if (F(t)) return t;
|
|
593
593
|
t = t.next;
|
|
594
594
|
}
|
|
595
595
|
return null;
|
|
596
596
|
}
|
|
597
|
-
function
|
|
597
|
+
function Et(e, t, n) {
|
|
598
598
|
let r = e(t.container);
|
|
599
599
|
if (!r.is("p.assnat9ArticleNum")) return;
|
|
600
600
|
let i = r.parent(), a = i.parent();
|
|
601
601
|
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
602
602
|
let o = a.children().get();
|
|
603
|
-
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" ||
|
|
603
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || M(e(o[1]).text()) !== "") return;
|
|
604
604
|
let s = o.length === 4 ? o[2] : void 0;
|
|
605
|
-
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(
|
|
605
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(M(e(s).text())))) return;
|
|
606
606
|
let c = o.at(-1);
|
|
607
607
|
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) => g(e(t).text()) !== null))) return [
|
|
608
608
|
t.container,
|
|
@@ -610,117 +610,117 @@ function wt(e, t, n) {
|
|
|
610
610
|
c
|
|
611
611
|
];
|
|
612
612
|
}
|
|
613
|
-
function
|
|
613
|
+
function Dt(e, t, n, r = I(e)) {
|
|
614
614
|
let i = [t.container], a = n?.container;
|
|
615
|
-
for (let e =
|
|
615
|
+
for (let e = Tt(t.container); e !== null && e !== a; e = Tt(e)) i.push(e);
|
|
616
616
|
if (i.length > 1) return i;
|
|
617
|
-
let o =
|
|
617
|
+
let o = Et(e, t, n);
|
|
618
618
|
if (o !== void 0) return o;
|
|
619
|
-
let s =
|
|
619
|
+
let s = L(r, t.container), c = a ? L(r, a) : -1;
|
|
620
620
|
return e("body > *").get().filter((e) => {
|
|
621
|
-
let t =
|
|
621
|
+
let t = L(r, e);
|
|
622
622
|
return t >= s && (c === -1 || t < c);
|
|
623
623
|
});
|
|
624
624
|
}
|
|
625
|
-
function
|
|
625
|
+
function Ot(e, t) {
|
|
626
626
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
627
627
|
for (let i of t) {
|
|
628
628
|
let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
|
|
629
|
-
for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || r.has(t) || (r.add(t), n.push(t));
|
|
629
|
+
for (let t of a) e(t).is("table.akn-pastille-table,p.pastille") || e(t).is("p,li") && e(t).closest("table.akn-quoted-table").length > 0 || r.has(t) || (r.add(t), n.push(t));
|
|
630
630
|
}
|
|
631
631
|
return n;
|
|
632
632
|
}
|
|
633
|
-
function
|
|
633
|
+
function kt(e, t, n) {
|
|
634
634
|
let r = [], i = !1;
|
|
635
|
-
for (let a of
|
|
636
|
-
let n =
|
|
635
|
+
for (let a of Ot(e, n)) {
|
|
636
|
+
let n = e(a).is("table.akn-quoted-table") ? _n(e, a) : M(e(a).text());
|
|
637
637
|
if (!n) continue;
|
|
638
|
-
|
|
639
|
-
let o = i ? "noise" :
|
|
638
|
+
Ge.test(n) && (i = !0);
|
|
639
|
+
let o = i ? "noise" : ft(n), s = `${t}-b${r.length + 1}`;
|
|
640
640
|
e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
|
|
641
641
|
id: s,
|
|
642
642
|
articleId: t,
|
|
643
643
|
kind: o,
|
|
644
|
-
links:
|
|
644
|
+
links: ct(e, a),
|
|
645
645
|
text: n,
|
|
646
|
-
html:
|
|
646
|
+
html: st(e, a)
|
|
647
647
|
});
|
|
648
648
|
}
|
|
649
649
|
return r;
|
|
650
650
|
}
|
|
651
|
-
function
|
|
651
|
+
function At(e, t) {
|
|
652
652
|
if (t.length === 0) return e;
|
|
653
653
|
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>`;
|
|
654
654
|
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}`;
|
|
655
655
|
}
|
|
656
|
-
function
|
|
657
|
-
let t =
|
|
658
|
-
for (let e of
|
|
659
|
-
let r =
|
|
656
|
+
function jt(e) {
|
|
657
|
+
let t = C(e), n = Mt(t);
|
|
658
|
+
for (let e of wt(t, { warn: !1 })) {
|
|
659
|
+
let r = P(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
660
660
|
if (a !== r) {
|
|
661
|
-
if (a?.startsWith("_Toc") && !
|
|
661
|
+
if (a?.startsWith("_Toc") && !Pt(n, a, e.element)) {
|
|
662
662
|
let e = t("<span></span>").attr("id", a);
|
|
663
663
|
i.before(e);
|
|
664
664
|
let r = e.get(0);
|
|
665
|
-
|
|
665
|
+
F(r) && R(n, a, r);
|
|
666
666
|
}
|
|
667
|
-
a &&
|
|
667
|
+
a && Nt(n, a, e.element), i.attr("id", r), R(n, r, e.element);
|
|
668
668
|
}
|
|
669
669
|
}
|
|
670
|
-
let r =
|
|
670
|
+
let r = wt(t), i = I(t);
|
|
671
671
|
for (let [e, a] of r.entries()) {
|
|
672
|
-
let o =
|
|
672
|
+
let o = Dt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
|
|
673
673
|
for (let e of o) {
|
|
674
674
|
let r = t(e).attr("data-alinea")?.trim();
|
|
675
675
|
if (!r) continue;
|
|
676
676
|
let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
|
|
677
|
-
if (
|
|
677
|
+
if (Pt(n, i, e)) continue;
|
|
678
678
|
let o = t(e).attr("id");
|
|
679
679
|
if (o && o !== i) {
|
|
680
680
|
let r = t("<span></span>").attr("id", i);
|
|
681
681
|
t(e).before(r);
|
|
682
682
|
let a = r.get(0);
|
|
683
|
-
|
|
684
|
-
} else o &&
|
|
683
|
+
F(a) && R(n, i, a);
|
|
684
|
+
} else o && Nt(n, o, e), t(e).attr("id", i), R(n, i, e);
|
|
685
685
|
}
|
|
686
686
|
}
|
|
687
687
|
return t.html();
|
|
688
688
|
}
|
|
689
|
-
function
|
|
689
|
+
function Mt(e) {
|
|
690
690
|
let t = /* @__PURE__ */ new Map();
|
|
691
691
|
for (let n of e("[id]").get()) {
|
|
692
692
|
let r = e(n).attr("id");
|
|
693
|
-
r &&
|
|
693
|
+
r && R(t, r, n);
|
|
694
694
|
}
|
|
695
695
|
return t;
|
|
696
696
|
}
|
|
697
|
-
function
|
|
697
|
+
function R(e, t, n) {
|
|
698
698
|
let r = e.get(t);
|
|
699
699
|
r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
|
|
700
700
|
}
|
|
701
|
-
function
|
|
701
|
+
function Nt(e, t, n) {
|
|
702
702
|
let r = e.get(t);
|
|
703
703
|
r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
|
|
704
704
|
}
|
|
705
|
-
function
|
|
705
|
+
function Pt(e, t, n) {
|
|
706
706
|
for (let r of e.get(t) ?? []) if (r !== n) return !0;
|
|
707
707
|
return !1;
|
|
708
708
|
}
|
|
709
|
-
function
|
|
710
|
-
let n =
|
|
709
|
+
function Ft(e, t) {
|
|
710
|
+
let n = ot("sourceText" in t ? t.sourceText : "");
|
|
711
711
|
if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
|
|
712
|
-
let t =
|
|
712
|
+
let t = ot(e.text);
|
|
713
713
|
return t.length > 0 && (n.includes(t) || t.includes(n));
|
|
714
714
|
});
|
|
715
715
|
}
|
|
716
|
-
function
|
|
716
|
+
function It(e, t) {
|
|
717
717
|
if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
|
|
718
718
|
}
|
|
719
|
-
function
|
|
719
|
+
function Lt(e) {
|
|
720
720
|
return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
|
|
721
721
|
}
|
|
722
|
-
function
|
|
723
|
-
let t =
|
|
722
|
+
function Rt(e) {
|
|
723
|
+
let t = We(e.text);
|
|
724
724
|
if (t.length !== 1) return;
|
|
725
725
|
let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
|
|
726
726
|
let r = n.text ?? "", i = e.text.indexOf(r);
|
|
@@ -734,21 +734,21 @@ function It(e) {
|
|
|
734
734
|
modifyingArticleLabel: i.text ?? ""
|
|
735
735
|
};
|
|
736
736
|
}
|
|
737
|
-
function
|
|
738
|
-
let n =
|
|
737
|
+
function zt(e, t) {
|
|
738
|
+
let n = M(e);
|
|
739
739
|
if (!n) return;
|
|
740
740
|
let r = ee(n);
|
|
741
741
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
742
742
|
}
|
|
743
|
-
function
|
|
744
|
-
let t = /* @__PURE__ */ new Map(), n = [], r =
|
|
743
|
+
function Bt(e) {
|
|
744
|
+
let t = /* @__PURE__ */ new Map(), n = [], r = ie(e.map((e) => e.text)), i = -1;
|
|
745
745
|
for (let [a, o] of e.entries()) {
|
|
746
746
|
let e = r.get(a);
|
|
747
747
|
if (e && (i = e.endIndex), a <= i) {
|
|
748
748
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
749
749
|
continue;
|
|
750
750
|
}
|
|
751
|
-
let s =
|
|
751
|
+
let s = zt(o.text, n.at(-1)?.level);
|
|
752
752
|
if (s === void 0) {
|
|
753
753
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
754
754
|
continue;
|
|
@@ -761,14 +761,14 @@ function Rt(e) {
|
|
|
761
761
|
}
|
|
762
762
|
return t;
|
|
763
763
|
}
|
|
764
|
-
function
|
|
764
|
+
function Vt(e, t) {
|
|
765
765
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
766
766
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
767
767
|
return n;
|
|
768
768
|
}
|
|
769
|
-
function
|
|
769
|
+
function Ht(e, t, n) {
|
|
770
770
|
if (!t) return;
|
|
771
|
-
let r =
|
|
771
|
+
let r = Vt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
772
772
|
if (r.length === 0) return;
|
|
773
773
|
let i = r.map((e) => e.id);
|
|
774
774
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -783,7 +783,7 @@ function Bt(e, t, n) {
|
|
|
783
783
|
}
|
|
784
784
|
};
|
|
785
785
|
}
|
|
786
|
-
function
|
|
786
|
+
function Ut(e) {
|
|
787
787
|
let t = [], n = 0;
|
|
788
788
|
for (let r of e.blocks) {
|
|
789
789
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -797,7 +797,7 @@ function Vt(e) {
|
|
|
797
797
|
}
|
|
798
798
|
return t;
|
|
799
799
|
}
|
|
800
|
-
function
|
|
800
|
+
function Wt(e, t, n) {
|
|
801
801
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
802
802
|
if (a.length === 0) return;
|
|
803
803
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -811,7 +811,7 @@ function Ht(e, t, n) {
|
|
|
811
811
|
}
|
|
812
812
|
};
|
|
813
813
|
}
|
|
814
|
-
function
|
|
814
|
+
function Gt(e, t, n) {
|
|
815
815
|
if (!t) return;
|
|
816
816
|
let r = e.directiveText.indexOf(t.text);
|
|
817
817
|
if (r === -1) return;
|
|
@@ -824,15 +824,15 @@ function Ut(e, t, n) {
|
|
|
824
824
|
stop: a
|
|
825
825
|
};
|
|
826
826
|
}
|
|
827
|
-
function
|
|
828
|
-
let n = performance.now(), r = performance.now(), i =
|
|
827
|
+
function Kt(e, t) {
|
|
828
|
+
let n = performance.now(), r = performance.now(), i = Ut(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Bt(e.blocks), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), d = [], f;
|
|
829
829
|
for (let t of e.blocks) {
|
|
830
|
-
t.qualifiedVersion =
|
|
831
|
-
let e =
|
|
830
|
+
t.qualifiedVersion = Rt(t);
|
|
831
|
+
let e = Lt(t);
|
|
832
832
|
(e.length > 0 || t.qualifiedVersion) && (d = e, f = t.qualifiedVersion), l.set(t.id, d), u.set(t.id, f);
|
|
833
833
|
}
|
|
834
|
-
let p = performance.now() - o, m = performance.now(), h = x(), g =
|
|
835
|
-
let n =
|
|
834
|
+
let p = performance.now() - o, m = performance.now(), h = x(), g = fe(e.directiveText, t === void 0 ? void 0 : h), _ = performance.now() - m, v = performance.now(), y = g.map((t) => {
|
|
835
|
+
let n = Wt(e, i, t), r = It(s, n) ?? Ft(e.blocks, t), a = Lt(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], d = Gt(e, r, t), f = Ht(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
|
|
836
836
|
return {
|
|
837
837
|
articleId: e.id,
|
|
838
838
|
blockId: r?.id,
|
|
@@ -856,8 +856,8 @@ function Wt(e, t) {
|
|
|
856
856
|
if (!t) return [e];
|
|
857
857
|
if (b.has(t.id)) return [];
|
|
858
858
|
let n = ee.get(t.id);
|
|
859
|
-
if (n === void 0 && (n =
|
|
860
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
859
|
+
if (n === void 0 && (n = He(t.text, Lt(t), e.directive), ee.set(t.id, n)), !n) {
|
|
860
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ve(t.text, n.operations.length) : null;
|
|
861
861
|
return [r ? {
|
|
862
862
|
...e,
|
|
863
863
|
sourceAnnotations: r
|
|
@@ -888,13 +888,13 @@ function Wt(e, t) {
|
|
|
888
888
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
889
889
|
}), S;
|
|
890
890
|
}
|
|
891
|
-
function
|
|
891
|
+
function qt(e) {
|
|
892
892
|
let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
|
|
893
893
|
for (let i of e) {
|
|
894
|
-
let e =
|
|
894
|
+
let e = Qe(i.directive);
|
|
895
895
|
if (e.length === 0) continue;
|
|
896
896
|
let a = e.map(({ num: e }) => ({
|
|
897
|
-
definitionId: `${i.articleId}:article:${
|
|
897
|
+
definitionId: `${i.articleId}:article:${Ye(e)}`,
|
|
898
898
|
num: e
|
|
899
899
|
}));
|
|
900
900
|
t.set(i, a);
|
|
@@ -917,13 +917,13 @@ function Gt(e) {
|
|
|
917
917
|
definitions: n
|
|
918
918
|
};
|
|
919
919
|
}
|
|
920
|
-
function
|
|
921
|
-
let r = new Map(t.map((e) => [
|
|
920
|
+
function Jt(e, t, n) {
|
|
921
|
+
let r = new Map(t.map((e) => [Je(e.num), e]));
|
|
922
922
|
return e.map((e) => {
|
|
923
|
-
let t = n.get(e), i = t?.[0], a = [
|
|
923
|
+
let t = n.get(e), i = t?.[0], a = [...$e(e.directive.reference)].map((e) => r.get(Je(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
|
|
924
924
|
definitionId: a.definitionId,
|
|
925
925
|
num: a.num
|
|
926
|
-
}, s =
|
|
926
|
+
}, s = et(e.directive), c = (e.targetIds?.length ?? 0) > 0;
|
|
927
927
|
return {
|
|
928
928
|
...e,
|
|
929
929
|
...i === void 0 ? {} : { createdArticle: i },
|
|
@@ -936,7 +936,7 @@ function Kt(e, t, n) {
|
|
|
936
936
|
};
|
|
937
937
|
});
|
|
938
938
|
}
|
|
939
|
-
function
|
|
939
|
+
function Yt(e) {
|
|
940
940
|
switch (e.kind) {
|
|
941
941
|
case "insert_after":
|
|
942
942
|
case "insert_before": return [e.insertText];
|
|
@@ -954,8 +954,8 @@ function qt(e) {
|
|
|
954
954
|
default: return [];
|
|
955
955
|
}
|
|
956
956
|
}
|
|
957
|
-
function
|
|
958
|
-
return e.flatMap((e) =>
|
|
957
|
+
function Xt(e) {
|
|
958
|
+
return e.flatMap((e) => Yt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
959
959
|
code: "nested_french_quote_in_redaction",
|
|
960
960
|
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.",
|
|
961
961
|
details: {
|
|
@@ -967,18 +967,18 @@ function Jt(e) {
|
|
|
967
967
|
}
|
|
968
968
|
})));
|
|
969
969
|
}
|
|
970
|
-
function
|
|
971
|
-
return
|
|
970
|
+
function Zt(e) {
|
|
971
|
+
return Yt(e).map((t) => ({
|
|
972
972
|
directiveKind: e.kind,
|
|
973
973
|
text: t
|
|
974
974
|
}));
|
|
975
975
|
}
|
|
976
|
-
function
|
|
976
|
+
function Qt(e) {
|
|
977
977
|
let t = /* @__PURE__ */ new Set();
|
|
978
978
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
979
979
|
return Array.from(t);
|
|
980
980
|
}
|
|
981
|
-
function
|
|
981
|
+
function $t(e, t) {
|
|
982
982
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
983
983
|
for (let e of r) {
|
|
984
984
|
let t = n.get(e);
|
|
@@ -990,11 +990,11 @@ function Zt(e, t) {
|
|
|
990
990
|
}
|
|
991
991
|
return i;
|
|
992
992
|
}
|
|
993
|
-
function
|
|
993
|
+
function en(e, t, n) {
|
|
994
994
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
995
995
|
}
|
|
996
|
-
function
|
|
997
|
-
let r =
|
|
996
|
+
function tn(e, t, n) {
|
|
997
|
+
let r = Qt(n), i = r.flatMap((t) => {
|
|
998
998
|
for (let n of e.blocks) {
|
|
999
999
|
let e = n.text.indexOf(t);
|
|
1000
1000
|
if (e !== -1) return [{
|
|
@@ -1013,7 +1013,7 @@ function $t(e, t, n) {
|
|
|
1013
1013
|
e.directiveText
|
|
1014
1014
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
1015
1015
|
if (!o) return [];
|
|
1016
|
-
let s =
|
|
1016
|
+
let s = $t(e, t);
|
|
1017
1017
|
if (s.length === 0) return [];
|
|
1018
1018
|
let c = [], l = 0;
|
|
1019
1019
|
for (let e of r) {
|
|
@@ -1021,7 +1021,7 @@ function $t(e, t, n) {
|
|
|
1021
1021
|
if (t === -1) continue;
|
|
1022
1022
|
let n = t + e.length;
|
|
1023
1023
|
l = n;
|
|
1024
|
-
let r =
|
|
1024
|
+
let r = en(s, t, n);
|
|
1025
1025
|
r && c.push({
|
|
1026
1026
|
blockId: r.block.id,
|
|
1027
1027
|
start: t - r.start,
|
|
@@ -1031,15 +1031,15 @@ function $t(e, t, n) {
|
|
|
1031
1031
|
}
|
|
1032
1032
|
return c;
|
|
1033
1033
|
}
|
|
1034
|
-
function
|
|
1034
|
+
function nn(e, t) {
|
|
1035
1035
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
1036
1036
|
return t.flatMap((e) => {
|
|
1037
1037
|
let t = n.get(e.articleId);
|
|
1038
|
-
return t ?
|
|
1038
|
+
return t ? Zt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
1039
1039
|
articleId: e.articleId,
|
|
1040
1040
|
code: "nested_french_quote_in_redaction",
|
|
1041
1041
|
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.",
|
|
1042
|
-
ranges:
|
|
1042
|
+
ranges: tn(t, e, r),
|
|
1043
1043
|
severity: "warning",
|
|
1044
1044
|
details: {
|
|
1045
1045
|
blockId: e.blockId,
|
|
@@ -1050,8 +1050,8 @@ function en(e, t) {
|
|
|
1050
1050
|
})) : [];
|
|
1051
1051
|
});
|
|
1052
1052
|
}
|
|
1053
|
-
function
|
|
1054
|
-
let n = new Map(e.flatMap((e) => [...
|
|
1053
|
+
function rn(e, t) {
|
|
1054
|
+
let n = new Map(e.flatMap((e) => [...ie(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
1055
1055
|
articleId: e.id,
|
|
1056
1056
|
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
1057
1057
|
...n
|
|
@@ -1073,8 +1073,8 @@ function tn(e, t) {
|
|
|
1073
1073
|
}];
|
|
1074
1074
|
});
|
|
1075
1075
|
}
|
|
1076
|
-
function
|
|
1077
|
-
let c = new
|
|
1076
|
+
function an(e, t, n, r, i, a, o = !0, s) {
|
|
1077
|
+
let c = new De("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 = {
|
|
1078
1078
|
sourceFormat: e,
|
|
1079
1079
|
documentDate: r,
|
|
1080
1080
|
html: t,
|
|
@@ -1095,14 +1095,14 @@ function nn(e, t, n, r, i, a, o = !0, s) {
|
|
|
1095
1095
|
directiveTextSize: u.length
|
|
1096
1096
|
}), e;
|
|
1097
1097
|
}
|
|
1098
|
-
let f = c.timeSync("extractGlobalApplicabilityDate", () =>
|
|
1098
|
+
let f = c.timeSync("extractGlobalApplicabilityDate", () => at(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
1099
1099
|
let e = [];
|
|
1100
1100
|
for (let t of i) {
|
|
1101
|
-
let n =
|
|
1101
|
+
let n = Kt(t, c.enabled ? p : void 0);
|
|
1102
1102
|
e.push(...n);
|
|
1103
1103
|
}
|
|
1104
1104
|
return e;
|
|
1105
|
-
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () =>
|
|
1105
|
+
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => qt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Jt(m, g, h), { count: m.length }), v = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Xt(_), { count: _.length }), b = [...s ?? [], ...v], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...nn(i, _), ...rn(i, _)], { count: _.length }), ee = {
|
|
1106
1106
|
...d,
|
|
1107
1107
|
...f ? { globalApplicabilityDate: f } : {},
|
|
1108
1108
|
...g.length > 0 ? { internalArticleDefinitions: g } : {},
|
|
@@ -1196,18 +1196,18 @@ function nn(e, t, n, r, i, a, o = !0, s) {
|
|
|
1196
1196
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1197
1197
|
}), ee;
|
|
1198
1198
|
}
|
|
1199
|
-
function
|
|
1199
|
+
function on(e) {
|
|
1200
1200
|
return { items: e.map((e) => ({
|
|
1201
1201
|
id: e.id,
|
|
1202
1202
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1203
1203
|
type: "article"
|
|
1204
1204
|
})) };
|
|
1205
1205
|
}
|
|
1206
|
-
function
|
|
1207
|
-
return Array.from(
|
|
1206
|
+
function sn(e) {
|
|
1207
|
+
return Array.from(de(e)).filter((e) => e.type === "article").map((e) => N(e.line.split(/[::]/u)[0]));
|
|
1208
1208
|
}
|
|
1209
|
-
function
|
|
1210
|
-
let i =
|
|
1209
|
+
function cn(e, t, n, r) {
|
|
1210
|
+
let i = St(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? P(e.num) : C(e.html)("p.TCNumArticle").first().attr("id") ?? P(e.label) : e.id), c = o.map((e) => e.id);
|
|
1211
1211
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1212
1212
|
code: "article_toc_source_heading_mismatch",
|
|
1213
1213
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1223,8 +1223,8 @@ function on(e, t, n, r) {
|
|
|
1223
1223
|
});
|
|
1224
1224
|
return i;
|
|
1225
1225
|
}
|
|
1226
|
-
function
|
|
1227
|
-
let r =
|
|
1226
|
+
function ln(e, t, n) {
|
|
1227
|
+
let r = sn(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => N(e.label)), a = on(e), o = [...n, ...cn(e, a, t, "assemblee-html")];
|
|
1228
1228
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1229
1229
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1230
1230
|
o.push({
|
|
@@ -1248,24 +1248,24 @@ function sn(e, t, n) {
|
|
|
1248
1248
|
tableOfContents: a
|
|
1249
1249
|
};
|
|
1250
1250
|
}
|
|
1251
|
-
async function
|
|
1252
|
-
let n = new
|
|
1251
|
+
async function un(e, t) {
|
|
1252
|
+
let n = new De("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => dn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => jt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => C(i)), o = n.timeSync("extractArticleHeadings", () => wt(a)), s = new Set(o.map((e) => e.id)), c = vt(a).filter((e) => !s.has(P(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1253
1253
|
code: "article_toc_source_heading_mismatch",
|
|
1254
1254
|
message: "Some structural article headings were not retained",
|
|
1255
1255
|
details: { discardedCandidates: c }
|
|
1256
|
-
}] : [], u =
|
|
1257
|
-
let n =
|
|
1256
|
+
}] : [], u = I(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
|
|
1257
|
+
let n = Dt(a, e, o[t + 1], u), r = kt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1258
1258
|
return {
|
|
1259
1259
|
id: e.id,
|
|
1260
1260
|
label: e.label,
|
|
1261
1261
|
num: e.num,
|
|
1262
1262
|
title: e.title,
|
|
1263
|
-
text:
|
|
1264
|
-
html: n.map((e) =>
|
|
1263
|
+
text: dt(a, n),
|
|
1264
|
+
html: n.map((e) => st(a, e)).join("\n"),
|
|
1265
1265
|
directiveText: i,
|
|
1266
1266
|
blocks: r
|
|
1267
1267
|
};
|
|
1268
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1268
|
+
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => At(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => ln(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => an("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
|
|
1269
1269
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1270
1270
|
articleCount: h.articles.length,
|
|
1271
1271
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1273,18 +1273,18 @@ async function cn(e, t) {
|
|
|
1273
1273
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1274
1274
|
}), h;
|
|
1275
1275
|
}
|
|
1276
|
-
async function
|
|
1276
|
+
async function dn(e, t) {
|
|
1277
1277
|
return {
|
|
1278
1278
|
sourceFormat: "assemblee-html",
|
|
1279
1279
|
documentDate: t.date,
|
|
1280
1280
|
html: e,
|
|
1281
|
-
linkedHtml: await
|
|
1281
|
+
linkedHtml: await pt(e, t, t.date)
|
|
1282
1282
|
};
|
|
1283
1283
|
}
|
|
1284
|
-
function
|
|
1284
|
+
function z(e) {
|
|
1285
1285
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1286
1286
|
}
|
|
1287
|
-
function
|
|
1287
|
+
function fn(e) {
|
|
1288
1288
|
let t = e;
|
|
1289
1289
|
for (let e = 0; e < 3; e++) {
|
|
1290
1290
|
let e = t;
|
|
@@ -1292,27 +1292,27 @@ function un(e) {
|
|
|
1292
1292
|
}
|
|
1293
1293
|
return t;
|
|
1294
1294
|
}
|
|
1295
|
-
function
|
|
1295
|
+
function pn(e) {
|
|
1296
1296
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1297
1297
|
}
|
|
1298
|
-
function
|
|
1298
|
+
function B(e) {
|
|
1299
1299
|
return e.name.replace(/^.*:/u, "");
|
|
1300
1300
|
}
|
|
1301
|
-
function
|
|
1302
|
-
return t.children.map((t) =>
|
|
1301
|
+
function mn(e, t) {
|
|
1302
|
+
return t.children.map((t) => V(e, t)).filter(Boolean).join("");
|
|
1303
1303
|
}
|
|
1304
|
-
function
|
|
1305
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1304
|
+
function hn(e, t) {
|
|
1305
|
+
return t.children.map((t) => t.type === "text" && pn(t.data) ? fn(t.data) : V(e, t)).filter(Boolean).join("");
|
|
1306
1306
|
}
|
|
1307
|
-
function
|
|
1307
|
+
function V(e, t) {
|
|
1308
1308
|
if (t.type === "text") {
|
|
1309
1309
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1310
|
-
return
|
|
1310
|
+
return pn(e) ? fn(e) : z(e);
|
|
1311
1311
|
}
|
|
1312
|
-
if (!
|
|
1313
|
-
let n =
|
|
1312
|
+
if (!F(t)) return "";
|
|
1313
|
+
let n = B(t), r = mn(e, t);
|
|
1314
1314
|
switch (n) {
|
|
1315
|
-
case "p": return `<p${
|
|
1315
|
+
case "p": return `<p${H(e, t, [
|
|
1316
1316
|
"id",
|
|
1317
1317
|
"class",
|
|
1318
1318
|
"align",
|
|
@@ -1326,13 +1326,13 @@ function U(e, t) {
|
|
|
1326
1326
|
case "u":
|
|
1327
1327
|
case "sup":
|
|
1328
1328
|
case "sub":
|
|
1329
|
-
case "abbr": return `<${n}${
|
|
1329
|
+
case "abbr": return `<${n}${H(e, t, [
|
|
1330
1330
|
"id",
|
|
1331
1331
|
"class",
|
|
1332
1332
|
"title",
|
|
1333
1333
|
"style"
|
|
1334
1334
|
])}>${r}</${n}>`;
|
|
1335
|
-
case "a": return `<a href="${
|
|
1335
|
+
case "a": return `<a href="${z(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${H(e, t, [
|
|
1336
1336
|
"id",
|
|
1337
1337
|
"class",
|
|
1338
1338
|
"title",
|
|
@@ -1343,8 +1343,8 @@ function U(e, t) {
|
|
|
1343
1343
|
case "tbody":
|
|
1344
1344
|
case "tr":
|
|
1345
1345
|
case "th":
|
|
1346
|
-
case "td": return
|
|
1347
|
-
case "caption": return `<caption${
|
|
1346
|
+
case "td": return vn(e, t, n, r);
|
|
1347
|
+
case "caption": return `<caption${H(e, t, [
|
|
1348
1348
|
"id",
|
|
1349
1349
|
"class",
|
|
1350
1350
|
"align",
|
|
@@ -1352,12 +1352,12 @@ function U(e, t) {
|
|
|
1352
1352
|
])}>${r}</caption>`;
|
|
1353
1353
|
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1354
1354
|
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1355
|
-
case "content": return
|
|
1356
|
-
case "alinea": return
|
|
1357
|
-
case "article": return
|
|
1355
|
+
case "content": return hn(e, t);
|
|
1356
|
+
case "alinea": return U(e, t, "div", "akn-alinea");
|
|
1357
|
+
case "article": return U(e, t, "article", "akn-article");
|
|
1358
1358
|
case "blockList":
|
|
1359
1359
|
case "list": return `<div class="akn-list">${r}</div>`;
|
|
1360
|
-
case "item": return
|
|
1360
|
+
case "item": return U(e, t, "div", "akn-item");
|
|
1361
1361
|
case "listIntroduction":
|
|
1362
1362
|
case "listWrapUp":
|
|
1363
1363
|
case "intro":
|
|
@@ -1373,23 +1373,43 @@ function U(e, t) {
|
|
|
1373
1373
|
case "book":
|
|
1374
1374
|
case "tome":
|
|
1375
1375
|
case "subchapter":
|
|
1376
|
-
case "subsection": return
|
|
1376
|
+
case "subsection": return U(e, t, "section", `akn-${n}`);
|
|
1377
1377
|
case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
|
|
1378
1378
|
default: return r;
|
|
1379
1379
|
}
|
|
1380
1380
|
}
|
|
1381
|
-
function
|
|
1381
|
+
function gn(e, t) {
|
|
1382
|
+
let n = e(t).text();
|
|
1383
|
+
if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
|
|
1384
|
+
let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
|
|
1385
|
+
if (r.length === 0) return;
|
|
1386
|
+
let i = r.map((t) => {
|
|
1387
|
+
let n = e(t).children("td,th").get();
|
|
1388
|
+
return n.length >= 3 ? [n[0], n.at(-1)] : [];
|
|
1389
|
+
});
|
|
1390
|
+
if (i.some((e) => e.length !== 2)) return;
|
|
1391
|
+
let a = i.map(([t]) => M(e(t).text())), o = i.map(([, t]) => M(e(t).text()));
|
|
1392
|
+
if (!(a.filter((e) => e === "«").length !== 1 || o.filter((e) => /^»\s*;?$/u.test(e)).length !== 1 || a.some((e) => e !== "" && e !== "«") || o.some((e) => e !== "" && !/^»\s*;?$/u.test(e)) || i.some(([t, n]) => [t, n].some((t) => e(t).attr("colspan") !== void 0 || e(t).attr("rowspan") !== void 0))) && !(a.indexOf("«") > o.findIndex((e) => e.startsWith("»")))) {
|
|
1393
|
+
e(t).addClass("akn-quoted-table");
|
|
1394
|
+
for (let [t, n] of i) e(t).addClass("akn-quote-column"), e(n).addClass("akn-quote-column");
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
function _n(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(M(e(t).text())))).text();
|
|
1399
|
+
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => M(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
|
|
1400
|
+
}
|
|
1401
|
+
function H(e, t, n, r = {}) {
|
|
1382
1402
|
let i = [];
|
|
1383
1403
|
for (let r of n) {
|
|
1384
1404
|
if (r === "style") continue;
|
|
1385
1405
|
let n = e(t).attr(r);
|
|
1386
|
-
n !== void 0 && i.push(`${r}="${
|
|
1406
|
+
n !== void 0 && i.push(`${r}="${z(n)}"`);
|
|
1387
1407
|
}
|
|
1388
1408
|
let a = r.style ?? e(t).attr("style");
|
|
1389
|
-
return a && i.push(`style="${
|
|
1409
|
+
return a && i.push(`style="${z(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1390
1410
|
}
|
|
1391
|
-
function
|
|
1392
|
-
return `<${n}${
|
|
1411
|
+
function vn(e, t, n, r) {
|
|
1412
|
+
return `<${n}${H(e, t, [
|
|
1393
1413
|
"id",
|
|
1394
1414
|
"class",
|
|
1395
1415
|
"colspan",
|
|
@@ -1402,155 +1422,155 @@ function hn(e, t, n, r) {
|
|
|
1402
1422
|
"cellspacing",
|
|
1403
1423
|
"cellpadding",
|
|
1404
1424
|
"style"
|
|
1405
|
-
], { style:
|
|
1425
|
+
], { style: yn(e, t, n) })}>${r}</${n}>`;
|
|
1406
1426
|
}
|
|
1407
|
-
function
|
|
1427
|
+
function yn(e, t, n) {
|
|
1408
1428
|
let r = e(t).attr("style") ?? "";
|
|
1409
|
-
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 = bn(r, "text-align", "center")), r || void 0;
|
|
1410
1430
|
}
|
|
1411
|
-
function
|
|
1431
|
+
function bn(e, t, n) {
|
|
1412
1432
|
let r = e.trim();
|
|
1413
1433
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1414
1434
|
}
|
|
1415
|
-
function
|
|
1416
|
-
let n = [
|
|
1417
|
-
return n.length === 0 ? "" : `<p class="akn-heading">${
|
|
1435
|
+
function xn(e, t) {
|
|
1436
|
+
let n = [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean);
|
|
1437
|
+
return n.length === 0 ? "" : `<p class="akn-heading">${z(n.join(" "))}</p>`;
|
|
1418
1438
|
}
|
|
1419
|
-
function
|
|
1439
|
+
function Sn(e, t) {
|
|
1420
1440
|
if (!t) return !1;
|
|
1421
|
-
let n = (e) =>
|
|
1422
|
-
return n(
|
|
1441
|
+
let n = (e) => M(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1442
|
+
return n(M(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1423
1443
|
}
|
|
1424
|
-
function
|
|
1425
|
-
let t =
|
|
1444
|
+
function Cn(e) {
|
|
1445
|
+
let t = z(e);
|
|
1426
1446
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
|
|
1427
1447
|
}
|
|
1428
|
-
function
|
|
1429
|
-
return
|
|
1448
|
+
function wn(e, t) {
|
|
1449
|
+
return Tn([En({
|
|
1430
1450
|
content: e,
|
|
1431
1451
|
pastille: t
|
|
1432
1452
|
})]);
|
|
1433
1453
|
}
|
|
1434
|
-
function
|
|
1454
|
+
function Tn(e) {
|
|
1435
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>`;
|
|
1436
1456
|
}
|
|
1437
|
-
function
|
|
1438
|
-
let i = n ? ` style="${
|
|
1439
|
-
return `<tr${r ? ` class="${
|
|
1457
|
+
function En({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1458
|
+
let i = n ? ` style="${z(n)}"` : "", a = r ? ` ${z(r)}` : "";
|
|
1459
|
+
return `<tr${r ? ` class="${z(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${Cn(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>`;
|
|
1440
1460
|
}
|
|
1441
|
-
function
|
|
1442
|
-
let r = t ? ` style="${
|
|
1443
|
-
return `<tr${n ? ` class="${
|
|
1461
|
+
function Dn({ content: e, style: t, contextClass: n }) {
|
|
1462
|
+
let r = t ? ` style="${z(t)}"` : "", i = n ? ` ${z(n)}` : "";
|
|
1463
|
+
return `<tr${n ? ` class="${z(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>`;
|
|
1444
1464
|
}
|
|
1445
|
-
function
|
|
1465
|
+
function On(e, t) {
|
|
1446
1466
|
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
1447
1467
|
}
|
|
1448
|
-
function
|
|
1468
|
+
function kn(e, t) {
|
|
1449
1469
|
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1450
1470
|
}
|
|
1451
|
-
function
|
|
1452
|
-
return e(t).children().get().filter((e) =>
|
|
1471
|
+
function An(e, t) {
|
|
1472
|
+
return e(t).children().get().filter((e) => F(e) ? B(e) === "content" : !1).map((t) => V(e, t)).filter(Boolean).join("\n");
|
|
1453
1473
|
}
|
|
1454
|
-
function
|
|
1474
|
+
function jn(e, t) {
|
|
1455
1475
|
let n = [];
|
|
1456
1476
|
return e(t).children().each((t, r) => {
|
|
1457
|
-
if (!
|
|
1458
|
-
let i =
|
|
1459
|
-
i === "num" || i === "heading" || i === "content" || n.push(
|
|
1477
|
+
if (!F(r)) return;
|
|
1478
|
+
let i = B(r);
|
|
1479
|
+
i === "num" || i === "heading" || i === "content" || n.push(V(e, r));
|
|
1460
1480
|
}), n.filter(Boolean);
|
|
1461
1481
|
}
|
|
1462
|
-
function
|
|
1463
|
-
let n = [], r =
|
|
1482
|
+
function Mn(e, t) {
|
|
1483
|
+
let n = [], r = B(t), i = r === "alinea" ? On(e, t) : void 0, a = An(e, t), o = Nn(e, t, r, i), s = zn(e, t);
|
|
1464
1484
|
if (i) {
|
|
1465
|
-
let r = [
|
|
1466
|
-
|
|
1485
|
+
let r = [Sn(a, M(e(t).children("num").first().text())) ? "" : xn(e, t), a].filter(Boolean).join("\n");
|
|
1486
|
+
M(r) && n.push(En({
|
|
1467
1487
|
content: r,
|
|
1468
1488
|
pastille: i,
|
|
1469
1489
|
style: o,
|
|
1470
1490
|
contextClass: s
|
|
1471
1491
|
}));
|
|
1472
|
-
} else a && n.push(
|
|
1492
|
+
} else a && n.push(Dn({
|
|
1473
1493
|
content: a,
|
|
1474
1494
|
style: o,
|
|
1475
1495
|
contextClass: s
|
|
1476
1496
|
}));
|
|
1477
1497
|
for (let r of e(t).children().get()) {
|
|
1478
|
-
if (!
|
|
1479
|
-
let t =
|
|
1480
|
-
t === "num" || t === "heading" || t === "content" || (t === "alinea" ||
|
|
1498
|
+
if (!F(r)) continue;
|
|
1499
|
+
let t = B(r);
|
|
1500
|
+
t === "num" || t === "heading" || t === "content" || (t === "alinea" || kn(e, r)) && n.push(...Mn(e, r));
|
|
1481
1501
|
}
|
|
1482
1502
|
return n;
|
|
1483
1503
|
}
|
|
1484
|
-
function
|
|
1485
|
-
let i =
|
|
1486
|
-
a ? `id="${
|
|
1504
|
+
function U(e, t, n, r) {
|
|
1505
|
+
let i = B(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = On(e, t), s = Nn(e, t, i, o), c = [`<${n} ${[
|
|
1506
|
+
a ? `id="${z(a)}"` : void 0,
|
|
1487
1507
|
`class="${r}"`,
|
|
1488
|
-
o ? `data-pastille="${
|
|
1489
|
-
s ? `style="${
|
|
1508
|
+
o ? `data-pastille="${z(o)}"` : void 0,
|
|
1509
|
+
s ? `style="${z(s)}"` : void 0
|
|
1490
1510
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1491
1511
|
if (i === "part" || i === "title") {
|
|
1492
|
-
let r =
|
|
1512
|
+
let r = In(e, t, i), a = Rn(e, t), o = r ? [Dn({
|
|
1493
1513
|
content: r,
|
|
1494
1514
|
contextClass: a
|
|
1495
1515
|
})] : [], s = () => {
|
|
1496
|
-
o.length !== 0 && (c.push(
|
|
1516
|
+
o.length !== 0 && (c.push(Fn(o)), o = []);
|
|
1497
1517
|
};
|
|
1498
1518
|
return e(t).children().each((t, n) => {
|
|
1499
|
-
if (!
|
|
1500
|
-
let r =
|
|
1519
|
+
if (!F(n)) return;
|
|
1520
|
+
let r = B(n);
|
|
1501
1521
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1502
1522
|
if (r === "alinea") {
|
|
1503
|
-
o.push(...
|
|
1523
|
+
o.push(...Mn(e, n));
|
|
1504
1524
|
return;
|
|
1505
1525
|
}
|
|
1506
|
-
s(), c.push(
|
|
1526
|
+
s(), c.push(V(e, n));
|
|
1507
1527
|
}
|
|
1508
1528
|
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1509
1529
|
}
|
|
1510
1530
|
if (i === "article") {
|
|
1511
|
-
let r =
|
|
1531
|
+
let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = g(r) ?? {
|
|
1512
1532
|
label: r,
|
|
1513
1533
|
num: r
|
|
1514
|
-
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${
|
|
1515
|
-
if (
|
|
1516
|
-
let r = [
|
|
1534
|
+
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${z(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${z(a.label)}${i ? ` : ${z(i)}` : ""}</p>`;
|
|
1535
|
+
if (kn(e, t)) {
|
|
1536
|
+
let r = [Dn({
|
|
1517
1537
|
content: o,
|
|
1518
|
-
contextClass:
|
|
1519
|
-
}), ...
|
|
1520
|
-
c.push(
|
|
1521
|
-
for (let n of
|
|
1538
|
+
contextClass: Vn(a.label)
|
|
1539
|
+
}), ...Mn(e, t)];
|
|
1540
|
+
c.push(Tn(r));
|
|
1541
|
+
for (let n of jn(e, t)) n.includes("akn-pastille-table") || c.push(n);
|
|
1522
1542
|
return c.push(`</${n}>`), c.join("\n");
|
|
1523
1543
|
}
|
|
1524
1544
|
c.push(o);
|
|
1525
1545
|
}
|
|
1526
1546
|
let l = [];
|
|
1527
1547
|
for (let n of ["content", "children"]) e(t).children().each((t, r) => {
|
|
1528
|
-
if (!
|
|
1529
|
-
let i =
|
|
1530
|
-
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(
|
|
1548
|
+
if (!F(r)) return;
|
|
1549
|
+
let i = B(r);
|
|
1550
|
+
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(V(e, r));
|
|
1531
1551
|
});
|
|
1532
1552
|
let u = l.join("\n");
|
|
1533
1553
|
if (i !== "article") {
|
|
1534
|
-
let n =
|
|
1554
|
+
let n = Sn(u, M(e(t).children("num").first().text())) ? "" : xn(e, t);
|
|
1535
1555
|
n && c.push(n);
|
|
1536
1556
|
}
|
|
1537
|
-
return c.push(o ?
|
|
1557
|
+
return c.push(o ? wn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
1538
1558
|
}
|
|
1539
|
-
function
|
|
1540
|
-
let i =
|
|
1541
|
-
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i =
|
|
1559
|
+
function Nn(e, t, n, r) {
|
|
1560
|
+
let i = Pn(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 = bn(i, "text-align", "center")), i || void 0;
|
|
1542
1562
|
}
|
|
1543
|
-
function
|
|
1563
|
+
function Pn(e, t) {
|
|
1544
1564
|
return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
|
|
1545
1565
|
}
|
|
1546
|
-
function
|
|
1566
|
+
function Fn(e) {
|
|
1547
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>`;
|
|
1548
1568
|
}
|
|
1549
|
-
function
|
|
1550
|
-
let r =
|
|
1551
|
-
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${
|
|
1569
|
+
function In(e, t, n) {
|
|
1570
|
+
let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = Ln(n), o = [];
|
|
1571
|
+
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${z(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${z(i)}</span></p>`), o.join("\n");
|
|
1552
1572
|
}
|
|
1553
|
-
function
|
|
1573
|
+
function Ln(e) {
|
|
1554
1574
|
switch (e) {
|
|
1555
1575
|
case "part": return {
|
|
1556
1576
|
num: "TCNumPartie",
|
|
@@ -1574,22 +1594,22 @@ function Fn(e) {
|
|
|
1574
1594
|
};
|
|
1575
1595
|
}
|
|
1576
1596
|
}
|
|
1577
|
-
function
|
|
1578
|
-
let n =
|
|
1597
|
+
function Rn(e, t) {
|
|
1598
|
+
let n = Bn(M(e(t).children("num").first().text()));
|
|
1579
1599
|
if (n) return n;
|
|
1580
1600
|
for (let n of e(t).parents().get()) {
|
|
1581
|
-
if (!
|
|
1582
|
-
let t =
|
|
1601
|
+
if (!F(n)) continue;
|
|
1602
|
+
let t = B(n);
|
|
1583
1603
|
if (t !== "title" && t !== "part") continue;
|
|
1584
|
-
let r =
|
|
1604
|
+
let r = Bn(M(e(n).children("num").first().text()));
|
|
1585
1605
|
if (r) return r;
|
|
1586
1606
|
}
|
|
1587
1607
|
}
|
|
1588
|
-
function
|
|
1589
|
-
return
|
|
1608
|
+
function zn(e, t) {
|
|
1609
|
+
return Rn(e, t);
|
|
1590
1610
|
}
|
|
1591
|
-
function
|
|
1592
|
-
let [t, ...n] =
|
|
1611
|
+
function Bn(e) {
|
|
1612
|
+
let [t, ...n] = M(e).split(/\s+/u);
|
|
1593
1613
|
if (!t || n.length === 0) return;
|
|
1594
1614
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1595
1615
|
if ([
|
|
@@ -1599,10 +1619,10 @@ function Rn(e) {
|
|
|
1599
1619
|
"section"
|
|
1600
1620
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1601
1621
|
}
|
|
1602
|
-
function
|
|
1603
|
-
return `article-${
|
|
1622
|
+
function Vn(e) {
|
|
1623
|
+
return `article-${M(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1604
1624
|
}
|
|
1605
|
-
function
|
|
1625
|
+
function Hn(e) {
|
|
1606
1626
|
switch (e) {
|
|
1607
1627
|
case "part": return "partie";
|
|
1608
1628
|
case "book": return "livre";
|
|
@@ -1614,11 +1634,11 @@ function Bn(e) {
|
|
|
1614
1634
|
default: return;
|
|
1615
1635
|
}
|
|
1616
1636
|
}
|
|
1617
|
-
function
|
|
1618
|
-
return [
|
|
1637
|
+
function Un(e, t) {
|
|
1638
|
+
return [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1619
1639
|
}
|
|
1620
|
-
function
|
|
1621
|
-
let n =
|
|
1640
|
+
function Wn(e, t) {
|
|
1641
|
+
let n = M(e(t).children("num").first().text()), r = M(e(t).children("heading").first().text()), i = g(n) ?? {
|
|
1622
1642
|
label: n,
|
|
1623
1643
|
num: n
|
|
1624
1644
|
};
|
|
@@ -1628,24 +1648,24 @@ function Hn(e, t) {
|
|
|
1628
1648
|
type: "article"
|
|
1629
1649
|
};
|
|
1630
1650
|
}
|
|
1631
|
-
function
|
|
1651
|
+
function Gn(e, t) {
|
|
1632
1652
|
e.items.push(...t.items);
|
|
1633
1653
|
}
|
|
1634
|
-
function
|
|
1654
|
+
function Kn(e, t) {
|
|
1635
1655
|
let n = { items: [] };
|
|
1636
1656
|
return e(t).children().each((t, r) => {
|
|
1637
|
-
if (!
|
|
1638
|
-
let i =
|
|
1657
|
+
if (!F(r)) return;
|
|
1658
|
+
let i = B(r);
|
|
1639
1659
|
if (i === "article") {
|
|
1640
|
-
n.items.push(
|
|
1660
|
+
n.items.push(Wn(e, r));
|
|
1641
1661
|
return;
|
|
1642
1662
|
}
|
|
1643
|
-
let a =
|
|
1663
|
+
let a = Hn(i);
|
|
1644
1664
|
if (!a) {
|
|
1645
|
-
|
|
1665
|
+
Gn(n, Kn(e, r));
|
|
1646
1666
|
return;
|
|
1647
1667
|
}
|
|
1648
|
-
let o =
|
|
1668
|
+
let o = Un(e, r), s = Kn(e, r);
|
|
1649
1669
|
!o && s.items.length === 0 || n.items.push({
|
|
1650
1670
|
...s,
|
|
1651
1671
|
id: e(r).attr("eId") ?? e(r).attr("GUID"),
|
|
@@ -1654,26 +1674,27 @@ function Wn(e, t) {
|
|
|
1654
1674
|
});
|
|
1655
1675
|
}), n;
|
|
1656
1676
|
}
|
|
1657
|
-
function
|
|
1677
|
+
function qn(e) {
|
|
1658
1678
|
let t = e("body").first().get(0);
|
|
1659
|
-
return t === void 0 ? { items: [] } :
|
|
1679
|
+
return t === void 0 ? { items: [] } : Kn(e, t);
|
|
1660
1680
|
}
|
|
1661
|
-
function
|
|
1681
|
+
function Jn(e) {
|
|
1662
1682
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1663
1683
|
}
|
|
1664
|
-
function
|
|
1684
|
+
function Yn(e) {
|
|
1685
|
+
e("table").each((t, n) => gn(e, n));
|
|
1665
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>"];
|
|
1666
|
-
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(
|
|
1667
|
-
|
|
1687
|
+
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(mn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
|
|
1688
|
+
F(n) && r.push(B(n) === "article" ? U(e, n, "article", "akn-article") : V(e, n));
|
|
1668
1689
|
}), r.push("</section></div>"), r.join("\n");
|
|
1669
1690
|
}
|
|
1670
|
-
function
|
|
1671
|
-
let t =
|
|
1691
|
+
function Xn(e) {
|
|
1692
|
+
let t = C(e, { xml: {
|
|
1672
1693
|
decodeEntities: !1,
|
|
1673
1694
|
lowerCaseTags: !1,
|
|
1674
1695
|
lowerCaseAttributeNames: !1,
|
|
1675
1696
|
xmlMode: !0
|
|
1676
|
-
} }), n =
|
|
1697
|
+
} }), n = Jn(t), r = Yn(t);
|
|
1677
1698
|
return {
|
|
1678
1699
|
sourceFormat: "akoma-ntoso",
|
|
1679
1700
|
documentDate: n,
|
|
@@ -1681,42 +1702,42 @@ function Jn(e) {
|
|
|
1681
1702
|
linkedHtml: r
|
|
1682
1703
|
};
|
|
1683
1704
|
}
|
|
1684
|
-
function
|
|
1685
|
-
return
|
|
1705
|
+
function Zn(e) {
|
|
1706
|
+
return Qn(C(e));
|
|
1686
1707
|
}
|
|
1687
|
-
function
|
|
1708
|
+
function Qn(e) {
|
|
1688
1709
|
let t = [];
|
|
1689
1710
|
return e("article.akn-article").each((n, r) => {
|
|
1690
|
-
let i = e(r).find("p.TCNumArticle").first().get(0), a =
|
|
1711
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = M(i ? e(i).text() : ""), o = g(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = kt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1691
1712
|
t.push({
|
|
1692
1713
|
id: s,
|
|
1693
1714
|
label: o.label,
|
|
1694
1715
|
num: o.num,
|
|
1695
1716
|
title: o.title,
|
|
1696
|
-
text:
|
|
1697
|
-
html:
|
|
1717
|
+
text: dt(e, c),
|
|
1718
|
+
html: st(e, r),
|
|
1698
1719
|
directiveText: u,
|
|
1699
1720
|
blocks: l
|
|
1700
1721
|
});
|
|
1701
1722
|
}), t;
|
|
1702
1723
|
}
|
|
1703
|
-
function
|
|
1704
|
-
let t =
|
|
1724
|
+
function $n(e) {
|
|
1725
|
+
let t = C(e);
|
|
1705
1726
|
return {
|
|
1706
|
-
articles:
|
|
1727
|
+
articles: Qn(t),
|
|
1707
1728
|
htmlWithLinks: t.html()
|
|
1708
1729
|
};
|
|
1709
1730
|
}
|
|
1710
|
-
async function
|
|
1711
|
-
let n = new
|
|
1731
|
+
async function er(e, t) {
|
|
1732
|
+
let n = new De("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => C(e, { xml: {
|
|
1712
1733
|
decodeEntities: !1,
|
|
1713
1734
|
lowerCaseTags: !1,
|
|
1714
1735
|
lowerCaseAttributeNames: !1,
|
|
1715
1736
|
xmlMode: !0
|
|
1716
|
-
} })), i = t.date ??
|
|
1737
|
+
} })), i = t.date ?? Jn(r), a = n.timeSync("renderAknHtml", () => Yn(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => pt(a, {
|
|
1717
1738
|
...t,
|
|
1718
1739
|
date: i
|
|
1719
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () =>
|
|
1740
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => Zn(a)), c = n.timeSync("injectHiddenArticleSummary", () => At(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => $n(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => qn(r)), p = n.timeSync("buildParsedDocument", () => an("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, cn(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
|
|
1720
1741
|
return n.log({
|
|
1721
1742
|
articleCount: p.articles.length,
|
|
1722
1743
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1724,25 +1745,25 @@ async function Qn(e, t) {
|
|
|
1724
1745
|
targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
|
|
1725
1746
|
}), p;
|
|
1726
1747
|
}
|
|
1727
|
-
async function
|
|
1728
|
-
let n =
|
|
1748
|
+
async function tr(e, t) {
|
|
1749
|
+
let n = Xn(e), r = t.date ?? n.documentDate;
|
|
1729
1750
|
return {
|
|
1730
1751
|
sourceFormat: "akoma-ntoso",
|
|
1731
1752
|
documentDate: r,
|
|
1732
1753
|
html: n.html,
|
|
1733
|
-
linkedHtml: await
|
|
1754
|
+
linkedHtml: await pt(n.html, t, r)
|
|
1734
1755
|
};
|
|
1735
1756
|
}
|
|
1736
1757
|
//#endregion
|
|
1737
1758
|
//#region src/lib/server/assemblee_document_search.ts
|
|
1738
|
-
var
|
|
1739
|
-
function
|
|
1759
|
+
var nr = /\bexpos[ée]\s+des\s+motifs\b/giu, rr = /\barticle\s+(?:premier|1er|\d+)/iu;
|
|
1760
|
+
function ir(e) {
|
|
1740
1761
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1741
1762
|
}
|
|
1742
|
-
function
|
|
1743
|
-
let t =
|
|
1763
|
+
function ar(e) {
|
|
1764
|
+
let t = ir(C(e).text()), n = [...t.matchAll(nr)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1744
1765
|
for (let [e, a] of n.entries()) {
|
|
1745
|
-
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 = rr.exec(s), l = ir(s.slice(0, c?.index ?? s.length));
|
|
1746
1767
|
if (l.length < 20 || r.has(l)) continue;
|
|
1747
1768
|
r.add(l);
|
|
1748
1769
|
let u = `expose-des-motifs-${e + 1}`;
|
|
@@ -1758,8 +1779,8 @@ function rr(e) {
|
|
|
1758
1779
|
}
|
|
1759
1780
|
return i;
|
|
1760
1781
|
}
|
|
1761
|
-
async function
|
|
1762
|
-
let i = await
|
|
1782
|
+
async function or({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1783
|
+
let i = await un(t, {
|
|
1763
1784
|
date: e,
|
|
1764
1785
|
includeDirectiveAnalysis: !1,
|
|
1765
1786
|
linkBaseUrl: n,
|
|
@@ -1768,7 +1789,7 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1768
1789
|
});
|
|
1769
1790
|
return {
|
|
1770
1791
|
items: [...i.articles.map((e) => {
|
|
1771
|
-
let t =
|
|
1792
|
+
let t = ir(e.directiveText || e.text);
|
|
1772
1793
|
if (t) return {
|
|
1773
1794
|
anchor: e.id,
|
|
1774
1795
|
articleNumber: e.num ?? null,
|
|
@@ -1778,17 +1799,17 @@ async function ir({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1778
1799
|
label: e.label,
|
|
1779
1800
|
title: e.title ?? null
|
|
1780
1801
|
};
|
|
1781
|
-
}).filter((e) => e !== void 0), ...
|
|
1802
|
+
}).filter((e) => e !== void 0), ...ar(t)],
|
|
1782
1803
|
tableOfContents: i.tableOfContents
|
|
1783
1804
|
};
|
|
1784
1805
|
}
|
|
1785
|
-
function
|
|
1786
|
-
return
|
|
1806
|
+
function sr(e, t) {
|
|
1807
|
+
return Me("sha256").update(JSON.stringify({
|
|
1787
1808
|
item: e,
|
|
1788
1809
|
metadata: t
|
|
1789
1810
|
})).digest("hex");
|
|
1790
1811
|
}
|
|
1791
|
-
function
|
|
1812
|
+
function cr(e) {
|
|
1792
1813
|
if (typeof e != "object" || !e) return;
|
|
1793
1814
|
let t = e.cycleDeVie?.chrono;
|
|
1794
1815
|
if (t !== void 0) for (let e of [
|
|
@@ -1803,11 +1824,11 @@ function or(e) {
|
|
|
1803
1824
|
}
|
|
1804
1825
|
//#endregion
|
|
1805
1826
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1806
|
-
function
|
|
1807
|
-
return e?.trim() ?
|
|
1827
|
+
function lr(e) {
|
|
1828
|
+
return e?.trim() ? C(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1808
1829
|
}
|
|
1809
|
-
function
|
|
1810
|
-
let n =
|
|
1830
|
+
function ur({ dispositifHtml: e, objetHtml: t }) {
|
|
1831
|
+
let n = lr(e), r = lr(t);
|
|
1811
1832
|
return [...n ? [{
|
|
1812
1833
|
content: n,
|
|
1813
1834
|
itemKind: "dispositif",
|
|
@@ -1818,8 +1839,8 @@ function cr({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1818
1839
|
label: "Objet"
|
|
1819
1840
|
}] : []];
|
|
1820
1841
|
}
|
|
1821
|
-
function
|
|
1822
|
-
return
|
|
1842
|
+
function dr(e, t) {
|
|
1843
|
+
return Me("sha256").update(JSON.stringify({
|
|
1823
1844
|
item: e,
|
|
1824
1845
|
metadata: t
|
|
1825
1846
|
})).digest("hex");
|
|
@@ -1833,16 +1854,16 @@ function W(e, t) {
|
|
|
1833
1854
|
type: "amendment_action_directive"
|
|
1834
1855
|
};
|
|
1835
1856
|
}
|
|
1836
|
-
function
|
|
1857
|
+
function fr(e, t) {
|
|
1837
1858
|
return {
|
|
1838
1859
|
type: e === "start" ? "head_of_target" : "tail_after_target",
|
|
1839
1860
|
unit: t ? n(t) : "article"
|
|
1840
1861
|
};
|
|
1841
1862
|
}
|
|
1842
|
-
function
|
|
1863
|
+
function pr(e) {
|
|
1843
1864
|
return e === "start" ? "insert_before" : "insert_after";
|
|
1844
1865
|
}
|
|
1845
|
-
var
|
|
1866
|
+
var mr = O(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = T(o, w([E("les?\\s+", { flags: "i" }), re], { value: (e) => e[1] }), re, p), hr = T(w([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
|
|
1846
1867
|
let t = e[1];
|
|
1847
1868
|
return {
|
|
1848
1869
|
targetReference: t,
|
|
@@ -1851,58 +1872,58 @@ var fr = k(D("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]
|
|
|
1851
1872
|
unit: n(t)
|
|
1852
1873
|
}
|
|
1853
1874
|
};
|
|
1854
|
-
} }),
|
|
1855
|
-
|
|
1856
|
-
|
|
1875
|
+
} }), w([m], { value: (e) => ({ targetScope: e[0] }) })), K = O(w([
|
|
1876
|
+
O(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1877
|
+
O(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1857
1878
|
G,
|
|
1858
|
-
|
|
1879
|
+
O(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
1859
1880
|
], { value: (e, t) => ({
|
|
1860
1881
|
reference: e[2],
|
|
1861
1882
|
text: t.text()
|
|
1862
|
-
}) }), { default: null }),
|
|
1883
|
+
}) }), { default: null }), gr = O(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Ce})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
1863
1884
|
function q(e) {
|
|
1864
1885
|
return e?.text ?? "";
|
|
1865
1886
|
}
|
|
1866
|
-
function
|
|
1887
|
+
function _r(e) {
|
|
1867
1888
|
return { citation: f(e.position()) };
|
|
1868
1889
|
}
|
|
1869
|
-
var J =
|
|
1890
|
+
var J = T(w([l], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => _r(t) })), vr = E("\\S[\\s\\S]*", { value: (e, t) => _r(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), yr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
1870
1891
|
flags: "i",
|
|
1871
|
-
value: (e, t) =>
|
|
1872
|
-
}),
|
|
1892
|
+
value: (e, t) => _r(t)
|
|
1893
|
+
}), br = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
1873
1894
|
flags: "i",
|
|
1874
|
-
value: (e, t) =>
|
|
1875
|
-
}),
|
|
1895
|
+
value: (e, t) => _r(t)
|
|
1896
|
+
}), xr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
1876
1897
|
flags: "i",
|
|
1877
|
-
value: (e, t) =>
|
|
1878
|
-
}),
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
], { value: (e) => e[2] }),
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1898
|
+
value: (e, t) => _r(t)
|
|
1899
|
+
}), Sr = T(w([l], { value: (e) => ({ citation: e[0] }) }), yr), Cr = T(w([l], { value: (e) => ({ citation: e[0] }) }), xr), wr = w([E(`${a}s?\\s*:?\\s*`, { flags: "i" }), Sr], { value: (e) => e[1] }), Tr = w([E(`${h}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Cr], { value: (e) => e[1] }), Er = T(w([l], { value: (e) => ({ citation: e[0] }) }), br), Dr = w([
|
|
1900
|
+
gr,
|
|
1901
|
+
E(`${a}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1902
|
+
Er
|
|
1903
|
+
], { value: (e) => e[2] }), Or = w([
|
|
1904
|
+
gr,
|
|
1905
|
+
E(`${a}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1906
|
+
T(w([l], { value: (e) => ({ citation: e[0] }) }), vr)
|
|
1886
1907
|
], { value: (e) => e[2] });
|
|
1887
1908
|
function X(e) {
|
|
1888
1909
|
return e?.reference;
|
|
1889
1910
|
}
|
|
1890
|
-
var
|
|
1911
|
+
var kr = w([mr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
|
|
1891
1912
|
contextText: e[0],
|
|
1892
1913
|
kind: "delete_article"
|
|
1893
|
-
}) }),
|
|
1914
|
+
}) }), Ar = w([
|
|
1894
1915
|
K,
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1916
|
+
E("supprimer", { flags: "i" }),
|
|
1917
|
+
O(w([k, G], { value: (e) => e[1] }), { default: null }),
|
|
1918
|
+
O(w([k, Or], { value: (e) => e[1] }), { default: null })
|
|
1898
1919
|
], { value: (e, t) => W(t, {
|
|
1899
1920
|
contextText: q(e[0]),
|
|
1900
1921
|
kind: "delete_portion",
|
|
1901
1922
|
targetCitation: e[3]?.citation ?? void 0,
|
|
1902
1923
|
targetReference: e[2] ?? X(e[0])
|
|
1903
|
-
}) }),
|
|
1924
|
+
}) }), jr = w([
|
|
1904
1925
|
K,
|
|
1905
|
-
E(
|
|
1926
|
+
T(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
|
|
1906
1927
|
Y,
|
|
1907
1928
|
J
|
|
1908
1929
|
], { value: (e, t) => W(t, {
|
|
@@ -1910,76 +1931,76 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1910
1931
|
kind: "rewrite_portion",
|
|
1911
1932
|
replacementCitation: e[3].citation,
|
|
1912
1933
|
targetReference: X(e[0])
|
|
1913
|
-
}) }),
|
|
1934
|
+
}) }), Mr = w([
|
|
1914
1935
|
K,
|
|
1915
|
-
E(
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1936
|
+
T(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
|
|
1937
|
+
k,
|
|
1938
|
+
gr,
|
|
1939
|
+
wr,
|
|
1940
|
+
E("\\s*,?\\s*"),
|
|
1941
|
+
O(E("par\\s+", { flags: "i" }), { default: "" }),
|
|
1942
|
+
Tr
|
|
1922
1943
|
], { value: (e, t) => W(t, {
|
|
1923
1944
|
contextText: q(e[0]),
|
|
1924
1945
|
kind: "replace",
|
|
1925
1946
|
replacementCitation: e[7].citation,
|
|
1926
1947
|
targetCitation: e[4].citation,
|
|
1927
1948
|
targetReference: X(e[0])
|
|
1928
|
-
}) }),
|
|
1949
|
+
}) }), Nr = w([
|
|
1929
1950
|
K,
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1951
|
+
E("substituer", { flags: "i" }),
|
|
1952
|
+
k,
|
|
1953
|
+
O(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
1933
1954
|
G,
|
|
1934
|
-
|
|
1955
|
+
E("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
1935
1956
|
J
|
|
1936
1957
|
], { value: (e, t) => W(t, {
|
|
1937
1958
|
contextText: q(e[0]),
|
|
1938
1959
|
kind: "rewrite_portion",
|
|
1939
1960
|
replacementCitation: e[6].citation,
|
|
1940
1961
|
targetReference: e[4] ?? X(e[0])
|
|
1941
|
-
}) }),
|
|
1962
|
+
}) }), Pr = w([
|
|
1942
1963
|
e,
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1964
|
+
k,
|
|
1965
|
+
E("l['’ ]article", { flags: "i" }),
|
|
1966
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1967
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1947
1968
|
Y,
|
|
1948
1969
|
J
|
|
1949
1970
|
], { value: (e, t) => W(t, {
|
|
1950
1971
|
contextText: "",
|
|
1951
1972
|
insertCitation: e[6].citation,
|
|
1952
1973
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
1953
|
-
}) }),
|
|
1974
|
+
}) }), Fr = w([
|
|
1954
1975
|
e,
|
|
1955
|
-
|
|
1976
|
+
k,
|
|
1956
1977
|
G,
|
|
1957
|
-
|
|
1958
|
-
E(
|
|
1978
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1979
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1959
1980
|
Y,
|
|
1960
1981
|
J
|
|
1961
1982
|
], { value: (e, t) => W(t, {
|
|
1962
1983
|
contextText: "",
|
|
1963
1984
|
insertCitation: e[6].citation,
|
|
1964
|
-
kind:
|
|
1985
|
+
kind: ne(e[0]),
|
|
1965
1986
|
targetReference: e[2]
|
|
1966
|
-
}) }),
|
|
1987
|
+
}) }), Ir = w([
|
|
1967
1988
|
e,
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
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" }),
|
|
1972
1993
|
Y,
|
|
1973
1994
|
J
|
|
1974
1995
|
], { value: (e, t) => W(t, {
|
|
1975
1996
|
contextText: "",
|
|
1976
1997
|
insertCitation: e[6].citation,
|
|
1977
|
-
kind:
|
|
1978
|
-
}) }),
|
|
1998
|
+
kind: ne(e[0])
|
|
1999
|
+
}) }), Lr = w([
|
|
1979
2000
|
K,
|
|
1980
2001
|
d,
|
|
1981
|
-
|
|
1982
|
-
E(
|
|
2002
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2003
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1983
2004
|
Y,
|
|
1984
2005
|
J
|
|
1985
2006
|
], { value: (e, t) => {
|
|
@@ -1987,62 +2008,62 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1987
2008
|
return W(t, {
|
|
1988
2009
|
contextText: q(n),
|
|
1989
2010
|
insertCitation: e[5].citation,
|
|
1990
|
-
kind:
|
|
2011
|
+
kind: pr(i),
|
|
1991
2012
|
targetReference: r,
|
|
1992
|
-
targetScope:
|
|
2013
|
+
targetScope: fr(i, r)
|
|
1993
2014
|
});
|
|
1994
|
-
} }),
|
|
2015
|
+
} }), Rr = w([
|
|
1995
2016
|
K,
|
|
1996
2017
|
e,
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2018
|
+
k,
|
|
2019
|
+
Dr,
|
|
2020
|
+
E("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
2021
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2022
|
+
k,
|
|
2023
|
+
Tr
|
|
2003
2024
|
], { value: (e, t) => W(t, {
|
|
2004
2025
|
contextText: q(e[0]),
|
|
2005
2026
|
insertCitation: e[7].citation,
|
|
2006
|
-
kind:
|
|
2027
|
+
kind: ne(e[1]),
|
|
2007
2028
|
targetCitation: e[3].citation,
|
|
2008
2029
|
targetReference: X(e[0])
|
|
2009
|
-
}) }),
|
|
2030
|
+
}) }), zr = w([
|
|
2010
2031
|
K,
|
|
2011
2032
|
e,
|
|
2012
|
-
|
|
2033
|
+
k,
|
|
2013
2034
|
G,
|
|
2014
|
-
|
|
2015
|
-
E(
|
|
2035
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2036
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
2016
2037
|
Y,
|
|
2017
2038
|
J
|
|
2018
2039
|
], { value: (e, t) => W(t, {
|
|
2019
2040
|
contextText: q(e[0]),
|
|
2020
2041
|
insertCitation: e[7].citation,
|
|
2021
|
-
kind:
|
|
2042
|
+
kind: ne(e[1]),
|
|
2022
2043
|
targetReference: X(e[0]) ?? e[3]
|
|
2023
|
-
}) }),
|
|
2044
|
+
}) }), Br = T(Lr, Pr, Fr, Ir, Nr, w([
|
|
2024
2045
|
K,
|
|
2025
2046
|
e,
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2047
|
+
k,
|
|
2048
|
+
Dr,
|
|
2049
|
+
E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
2050
|
+
T(w([
|
|
2051
|
+
E("supprimer", {
|
|
2031
2052
|
flags: "i",
|
|
2032
2053
|
value: "delete_portion"
|
|
2033
2054
|
}),
|
|
2034
|
-
|
|
2035
|
-
|
|
2055
|
+
k,
|
|
2056
|
+
hr
|
|
2036
2057
|
], { value: (e) => ({
|
|
2037
2058
|
kind: e[0],
|
|
2038
2059
|
...e[2]
|
|
2039
|
-
}) }),
|
|
2040
|
-
|
|
2060
|
+
}) }), w([
|
|
2061
|
+
E("r[eé]diger\\s+ainsi", {
|
|
2041
2062
|
flags: "i",
|
|
2042
2063
|
value: "rewrite_portion"
|
|
2043
2064
|
}),
|
|
2044
|
-
|
|
2045
|
-
|
|
2065
|
+
k,
|
|
2066
|
+
hr,
|
|
2046
2067
|
Y,
|
|
2047
2068
|
J
|
|
2048
2069
|
], { value: (e) => ({
|
|
@@ -2060,10 +2081,10 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2060
2081
|
targetReference: X(e[0]) ?? n.targetReference,
|
|
2061
2082
|
targetScope: n.targetScope
|
|
2062
2083
|
});
|
|
2063
|
-
} }),
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
|
|
2084
|
+
} }), Rr, zr, w([
|
|
2085
|
+
mr,
|
|
2086
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2087
|
+
E(`[\\s\\S]*?(?=${S})`, { flags: "i" }),
|
|
2067
2088
|
e,
|
|
2068
2089
|
Y,
|
|
2069
2090
|
l,
|
|
@@ -2072,12 +2093,12 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2072
2093
|
], { value: (e, t) => W(t, {
|
|
2073
2094
|
contextText: e[0],
|
|
2074
2095
|
insertCitation: e[8],
|
|
2075
|
-
kind:
|
|
2096
|
+
kind: ne(e[3]),
|
|
2076
2097
|
targetCitation: e[6]
|
|
2077
|
-
}) }),
|
|
2098
|
+
}) }), Mr, jr, w([
|
|
2078
2099
|
K,
|
|
2079
|
-
|
|
2080
|
-
|
|
2100
|
+
E("compl[eé]ter", { flags: "i" }),
|
|
2101
|
+
O(w([k, G], { value: (e) => e[1] }), { default: null }),
|
|
2081
2102
|
Y,
|
|
2082
2103
|
J
|
|
2083
2104
|
], { value: (e, t) => W(t, {
|
|
@@ -2085,16 +2106,16 @@ var Dr = T([fr, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2085
2106
|
insertCitation: e[4].citation,
|
|
2086
2107
|
kind: "insert_after",
|
|
2087
2108
|
targetReference: e[2] ?? X(e[0])
|
|
2088
|
-
}) }),
|
|
2109
|
+
}) }), kr, Ar);
|
|
2089
2110
|
//#endregion
|
|
2090
2111
|
//#region src/lib/server/parsed_amendments.ts
|
|
2091
|
-
function
|
|
2112
|
+
function Vr(e) {
|
|
2092
2113
|
return e.replace(/\s+/gu, " ").trim();
|
|
2093
2114
|
}
|
|
2094
|
-
function
|
|
2095
|
-
return e.split(/\n/gu).map(
|
|
2115
|
+
function Hr(e) {
|
|
2116
|
+
return e.split(/\n/gu).map(Vr).filter(Boolean).join("\n");
|
|
2096
2117
|
}
|
|
2097
|
-
function
|
|
2118
|
+
function Ur(e, t) {
|
|
2098
2119
|
let { start: n, stop: r } = t;
|
|
2099
2120
|
for (; n < r && /\s/u.test(e[n]);) n++;
|
|
2100
2121
|
for (; r > n && /\s/u.test(e[r - 1]);) r--;
|
|
@@ -2103,16 +2124,16 @@ function Vr(e, t) {
|
|
|
2103
2124
|
stop: r
|
|
2104
2125
|
} : null;
|
|
2105
2126
|
}
|
|
2106
|
-
function
|
|
2107
|
-
return
|
|
2127
|
+
function Wr(e, t) {
|
|
2128
|
+
return _e(ye(e), t);
|
|
2108
2129
|
}
|
|
2109
|
-
function
|
|
2130
|
+
function Gr(e) {
|
|
2110
2131
|
return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
|
|
2111
2132
|
}
|
|
2112
|
-
function
|
|
2133
|
+
function Kr(e) {
|
|
2113
2134
|
return {
|
|
2114
2135
|
articleLabel: e.targetArticleLabel ?? null,
|
|
2115
|
-
targetPosition:
|
|
2136
|
+
targetPosition: Gr(e.targetPosition),
|
|
2116
2137
|
alinea: e.targetAlinea ?? null,
|
|
2117
2138
|
alineaLabel: e.targetAlineaLabel ?? null,
|
|
2118
2139
|
subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
|
|
@@ -2127,36 +2148,36 @@ function Z(e) {
|
|
|
2127
2148
|
sourceText: e.text
|
|
2128
2149
|
};
|
|
2129
2150
|
}
|
|
2130
|
-
function
|
|
2151
|
+
function qr(e) {
|
|
2131
2152
|
return {
|
|
2132
2153
|
...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
|
|
2133
2154
|
sourcePosition: e.position,
|
|
2134
2155
|
sourceText: e.text
|
|
2135
2156
|
};
|
|
2136
2157
|
}
|
|
2137
|
-
function
|
|
2158
|
+
function Jr(e) {
|
|
2138
2159
|
return {
|
|
2139
2160
|
...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
|
|
2140
2161
|
...e === null ? {} : { dispositifPosition: e.position },
|
|
2141
2162
|
dispositifText: e?.text ?? null
|
|
2142
2163
|
};
|
|
2143
2164
|
}
|
|
2144
|
-
function
|
|
2165
|
+
function Yr(e, t, n, r = Hr(e.slice(n.start, n.stop))) {
|
|
2145
2166
|
return {
|
|
2146
|
-
originalTransformation:
|
|
2167
|
+
originalTransformation: Wr(t, n),
|
|
2147
2168
|
position: n,
|
|
2148
2169
|
text: r
|
|
2149
2170
|
};
|
|
2150
2171
|
}
|
|
2151
|
-
function
|
|
2172
|
+
function Xr(e) {
|
|
2152
2173
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2153
2174
|
if (!t) return null;
|
|
2154
|
-
let n = e.dispositifHtml ?
|
|
2175
|
+
let n = e.dispositifHtml ? be()(t) : we(t), r = n.output, i = Ur(r, {
|
|
2155
2176
|
start: 0,
|
|
2156
2177
|
stop: r.length
|
|
2157
2178
|
});
|
|
2158
2179
|
return {
|
|
2159
|
-
dispositif: i === null ? null :
|
|
2180
|
+
dispositif: i === null ? null : Yr(r, n, i),
|
|
2160
2181
|
simplifiedText: r,
|
|
2161
2182
|
transformation: n
|
|
2162
2183
|
};
|
|
@@ -2176,7 +2197,7 @@ function Q(e) {
|
|
|
2176
2197
|
for (let t of c(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
|
|
2177
2198
|
return [];
|
|
2178
2199
|
}
|
|
2179
|
-
function
|
|
2200
|
+
function Zr(e, t) {
|
|
2180
2201
|
let n = Q(t);
|
|
2181
2202
|
return {
|
|
2182
2203
|
...e,
|
|
@@ -2184,11 +2205,11 @@ function Yr(e, t) {
|
|
|
2184
2205
|
...n.length > 0 ? { alineas: n } : {}
|
|
2185
2206
|
};
|
|
2186
2207
|
}
|
|
2187
|
-
function
|
|
2208
|
+
function Qr(e) {
|
|
2188
2209
|
return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
|
|
2189
2210
|
}
|
|
2190
|
-
function
|
|
2191
|
-
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(
|
|
2211
|
+
function $r(e, t) {
|
|
2212
|
+
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Qr(t.text));
|
|
2192
2213
|
if (!n) return null;
|
|
2193
2214
|
let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
|
|
2194
2215
|
return !Number.isFinite(r) || r < 1 ? null : {
|
|
@@ -2197,25 +2218,25 @@ function Zr(e, t) {
|
|
|
2197
2218
|
alineas: [r]
|
|
2198
2219
|
};
|
|
2199
2220
|
}
|
|
2200
|
-
function
|
|
2221
|
+
function ei(e, t) {
|
|
2201
2222
|
if (e) return e.unit === "article" && t.alinea !== null ? {
|
|
2202
2223
|
...e,
|
|
2203
2224
|
unit: "alinéa"
|
|
2204
2225
|
} : e;
|
|
2205
2226
|
}
|
|
2206
|
-
function
|
|
2207
|
-
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(
|
|
2227
|
+
function ti(e) {
|
|
2228
|
+
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Qr(e.text));
|
|
2208
2229
|
}
|
|
2209
|
-
function
|
|
2210
|
-
return
|
|
2230
|
+
function ni(e, t, n, r) {
|
|
2231
|
+
return Yr(e, t, {
|
|
2211
2232
|
start: n.position.start,
|
|
2212
2233
|
stop: r.position.stop
|
|
2213
2234
|
});
|
|
2214
2235
|
}
|
|
2215
|
-
function
|
|
2236
|
+
function ri(e) {
|
|
2216
2237
|
return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
|
|
2217
2238
|
}
|
|
2218
|
-
function
|
|
2239
|
+
function ii(e, t) {
|
|
2219
2240
|
let n = { ...t.position };
|
|
2220
2241
|
function r(t) {
|
|
2221
2242
|
let r = t.exec(e.slice(n.start, n.stop));
|
|
@@ -2224,29 +2245,29 @@ function ni(e, t) {
|
|
|
2224
2245
|
stop: n.stop
|
|
2225
2246
|
});
|
|
2226
2247
|
}
|
|
2227
|
-
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), Ur(e, n);
|
|
2228
2249
|
}
|
|
2229
|
-
function
|
|
2230
|
-
return
|
|
2250
|
+
function ai(e) {
|
|
2251
|
+
return me(e);
|
|
2231
2252
|
}
|
|
2232
|
-
function
|
|
2233
|
-
return
|
|
2253
|
+
function oi(e, t) {
|
|
2254
|
+
return Br(new D(e.slice(0, t.stop), t.start)) ?? null;
|
|
2234
2255
|
}
|
|
2235
2256
|
function $(e, t, n) {
|
|
2236
|
-
if (n) return
|
|
2257
|
+
if (n) return Yr(e, t, n.position, Hr(_(e, n)));
|
|
2237
2258
|
}
|
|
2238
|
-
function
|
|
2259
|
+
function si(e, t) {
|
|
2239
2260
|
if (!e) return;
|
|
2240
2261
|
let n = structuredClone(e);
|
|
2241
|
-
for (let e of u(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation =
|
|
2262
|
+
for (let e of u(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Wr(t, e.position));
|
|
2242
2263
|
return n;
|
|
2243
2264
|
}
|
|
2244
|
-
function
|
|
2245
|
-
let i =
|
|
2265
|
+
function ci(e, t, n, r) {
|
|
2266
|
+
let i = ii(e, n);
|
|
2246
2267
|
if (!i) return null;
|
|
2247
|
-
let a =
|
|
2268
|
+
let a = oi(e, i);
|
|
2248
2269
|
if (!a) return null;
|
|
2249
|
-
let o =
|
|
2270
|
+
let o = Yr(e, t, i), s = si(a.targetReference, t), c = Zr(r, s), l = ai(o.text);
|
|
2250
2271
|
if (a.kind === "delete_article") return {
|
|
2251
2272
|
kind: "delete_article",
|
|
2252
2273
|
...Z(o),
|
|
@@ -2264,7 +2285,7 @@ function oi(e, t, n, r) {
|
|
|
2264
2285
|
},
|
|
2265
2286
|
targetOccurrence: l,
|
|
2266
2287
|
targetReference: s,
|
|
2267
|
-
targetScope:
|
|
2288
|
+
targetScope: ei(a.targetScope, c)
|
|
2268
2289
|
};
|
|
2269
2290
|
}
|
|
2270
2291
|
if (a.kind === "rewrite_portion") {
|
|
@@ -2281,7 +2302,7 @@ function oi(e, t, n, r) {
|
|
|
2281
2302
|
},
|
|
2282
2303
|
targetOccurrence: l,
|
|
2283
2304
|
targetReference: s,
|
|
2284
|
-
targetScope:
|
|
2305
|
+
targetScope: ei(a.targetScope, c),
|
|
2285
2306
|
replacementCitation: n,
|
|
2286
2307
|
replacementText: n.text
|
|
2287
2308
|
};
|
|
@@ -2336,19 +2357,19 @@ function oi(e, t, n, r) {
|
|
|
2336
2357
|
targetReference: s,
|
|
2337
2358
|
insertCitation: n,
|
|
2338
2359
|
insertText: n.text,
|
|
2339
|
-
targetScope:
|
|
2360
|
+
targetScope: ei(a.targetScope, c)
|
|
2340
2361
|
};
|
|
2341
2362
|
}
|
|
2342
2363
|
return null;
|
|
2343
2364
|
}
|
|
2344
|
-
function
|
|
2365
|
+
function li(e, t) {
|
|
2345
2366
|
let n = [], r = 0, i = 0;
|
|
2346
2367
|
function a(r) {
|
|
2347
|
-
let a =
|
|
2368
|
+
let a = Ur(e, {
|
|
2348
2369
|
start: i,
|
|
2349
2370
|
stop: r
|
|
2350
2371
|
});
|
|
2351
|
-
a !== null && n.push(
|
|
2372
|
+
a !== null && n.push(Yr(e, t, a));
|
|
2352
2373
|
}
|
|
2353
2374
|
function o(t) {
|
|
2354
2375
|
let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
|
|
@@ -2366,7 +2387,7 @@ function si(e, t) {
|
|
|
2366
2387
|
continue;
|
|
2367
2388
|
}
|
|
2368
2389
|
if (r > 0) continue;
|
|
2369
|
-
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) && ti({
|
|
2370
2391
|
originalTransformation: void 0,
|
|
2371
2392
|
position: {
|
|
2372
2393
|
start: i,
|
|
@@ -2378,8 +2399,8 @@ function si(e, t) {
|
|
|
2378
2399
|
}
|
|
2379
2400
|
return a(e.length), n;
|
|
2380
2401
|
}
|
|
2381
|
-
function
|
|
2382
|
-
let t =
|
|
2402
|
+
function ui(e) {
|
|
2403
|
+
let t = Xr(e), n = t?.dispositif ?? null, r = Jr(n), i = [], a = [], o = Kr(e);
|
|
2383
2404
|
if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
|
|
2384
2405
|
code: "unsupported_sub_amendment",
|
|
2385
2406
|
message: "Les sous-amendements ne sont pas encore projetés."
|
|
@@ -2397,9 +2418,9 @@ function ci(e) {
|
|
|
2397
2418
|
});
|
|
2398
2419
|
else {
|
|
2399
2420
|
let { simplifiedText: e, transformation: r } = t, s = o, c = null;
|
|
2400
|
-
for (let t of
|
|
2401
|
-
|
|
2402
|
-
let n = c ?
|
|
2421
|
+
for (let t of li(e, r)) {
|
|
2422
|
+
ri(t) && (s = o, c = null);
|
|
2423
|
+
let n = c ? ni(e, r, c, t) : t, i = ci(e, r, n, s);
|
|
2403
2424
|
if (i) {
|
|
2404
2425
|
a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
|
|
2405
2426
|
continue;
|
|
@@ -2408,12 +2429,12 @@ function ci(e) {
|
|
|
2408
2429
|
c = n;
|
|
2409
2430
|
continue;
|
|
2410
2431
|
}
|
|
2411
|
-
let l =
|
|
2432
|
+
let l = $r(o, t);
|
|
2412
2433
|
if (l !== null) {
|
|
2413
2434
|
s = l;
|
|
2414
2435
|
continue;
|
|
2415
2436
|
}
|
|
2416
|
-
|
|
2437
|
+
ti(t) && (c = t);
|
|
2417
2438
|
}
|
|
2418
2439
|
a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
|
|
2419
2440
|
kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
|
|
@@ -2424,7 +2445,7 @@ function ci(e) {
|
|
|
2424
2445
|
}), a.length === 0 && i.push({
|
|
2425
2446
|
code: "unrecognized_dispositif",
|
|
2426
2447
|
message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
|
|
2427
|
-
...
|
|
2448
|
+
...qr(n)
|
|
2428
2449
|
});
|
|
2429
2450
|
}
|
|
2430
2451
|
return {
|
|
@@ -2438,25 +2459,25 @@ function ci(e) {
|
|
|
2438
2459
|
}
|
|
2439
2460
|
//#endregion
|
|
2440
2461
|
//#region src/lib/server/senat_document_search.ts
|
|
2441
|
-
function
|
|
2462
|
+
function di(e) {
|
|
2442
2463
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2443
2464
|
}
|
|
2444
|
-
function
|
|
2465
|
+
function fi(e) {
|
|
2445
2466
|
let t = g(e);
|
|
2446
2467
|
if (!t) return {
|
|
2447
2468
|
articleNumber: null,
|
|
2448
2469
|
label: e,
|
|
2449
2470
|
title: null
|
|
2450
2471
|
};
|
|
2451
|
-
let n =
|
|
2472
|
+
let n = di(t.num ?? "") || null, r = di(t.title ?? "") || null;
|
|
2452
2473
|
return {
|
|
2453
2474
|
articleNumber: n,
|
|
2454
2475
|
label: t.label,
|
|
2455
2476
|
title: r
|
|
2456
2477
|
};
|
|
2457
2478
|
}
|
|
2458
|
-
function
|
|
2459
|
-
let t =
|
|
2479
|
+
function pi(e) {
|
|
2480
|
+
let t = C(e), n = [], r = di(t("section.akn-preamble").text());
|
|
2460
2481
|
return r && n.push({
|
|
2461
2482
|
anchor: "senat-expose-des-motifs",
|
|
2462
2483
|
articleNumber: null,
|
|
@@ -2466,9 +2487,9 @@ function di(e) {
|
|
|
2466
2487
|
label: "Exposé des motifs",
|
|
2467
2488
|
title: null
|
|
2468
2489
|
}), t("article.akn-article").each((e, r) => {
|
|
2469
|
-
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 = di(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = fi(o || s), l = i.clone();
|
|
2470
2491
|
l.children("p.TCNumArticle").remove();
|
|
2471
|
-
let u =
|
|
2492
|
+
let u = di(l.text());
|
|
2472
2493
|
u && n.push({
|
|
2473
2494
|
anchor: i.attr("id") || null,
|
|
2474
2495
|
articleNumber: c.articleNumber,
|
|
@@ -2480,40 +2501,40 @@ function di(e) {
|
|
|
2480
2501
|
});
|
|
2481
2502
|
}), n;
|
|
2482
2503
|
}
|
|
2483
|
-
function
|
|
2484
|
-
return
|
|
2504
|
+
function mi(e, t) {
|
|
2505
|
+
return Me("sha256").update(JSON.stringify({
|
|
2485
2506
|
item: e,
|
|
2486
2507
|
metadata: t
|
|
2487
2508
|
})).digest("hex");
|
|
2488
2509
|
}
|
|
2489
2510
|
//#endregion
|
|
2490
2511
|
//#region src/lib/server/senat_document_sources.ts
|
|
2491
|
-
var
|
|
2492
|
-
function
|
|
2512
|
+
var hi = new Set(["senat.fr", "www.senat.fr"]), gi = "https://www.senat.fr";
|
|
2513
|
+
function _i(e) {
|
|
2493
2514
|
return e?.trim() || void 0;
|
|
2494
2515
|
}
|
|
2495
|
-
function
|
|
2516
|
+
function vi(e) {
|
|
2496
2517
|
try {
|
|
2497
|
-
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`,
|
|
2498
|
-
return
|
|
2518
|
+
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, gi);
|
|
2519
|
+
return hi.has(n.hostname.toLowerCase()) ? n : void 0;
|
|
2499
2520
|
} catch {
|
|
2500
2521
|
return;
|
|
2501
2522
|
}
|
|
2502
2523
|
}
|
|
2503
|
-
function
|
|
2504
|
-
let t =
|
|
2524
|
+
function yi(e) {
|
|
2525
|
+
let t = _i(e);
|
|
2505
2526
|
if (t === void 0) return {
|
|
2506
2527
|
publicUrl: null,
|
|
2507
2528
|
status: "no_url"
|
|
2508
2529
|
};
|
|
2509
|
-
let n =
|
|
2530
|
+
let n = vi(t);
|
|
2510
2531
|
if (n === void 0) return {
|
|
2511
2532
|
publicUrl: t,
|
|
2512
2533
|
status: "unsupported_source"
|
|
2513
2534
|
};
|
|
2514
2535
|
let r = n.pathname;
|
|
2515
2536
|
if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
|
|
2516
|
-
akomaNtosoUrl: `${
|
|
2537
|
+
akomaNtosoUrl: `${gi}${r}`,
|
|
2517
2538
|
publicUrl: n.toString(),
|
|
2518
2539
|
status: "available"
|
|
2519
2540
|
};
|
|
@@ -2522,17 +2543,17 @@ function _i(e) {
|
|
|
2522
2543
|
publicUrl: n.toString(),
|
|
2523
2544
|
status: "unsupported_source"
|
|
2524
2545
|
} : {
|
|
2525
|
-
akomaNtosoUrl: `${
|
|
2546
|
+
akomaNtosoUrl: `${gi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
|
|
2526
2547
|
publicUrl: n.toString(),
|
|
2527
2548
|
status: "available"
|
|
2528
2549
|
};
|
|
2529
2550
|
}
|
|
2530
|
-
function
|
|
2551
|
+
function bi(e) {
|
|
2531
2552
|
return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
|
|
2532
2553
|
}
|
|
2533
2554
|
//#endregion
|
|
2534
2555
|
//#region src/lib/alineas/alineas_numbers.ts
|
|
2535
|
-
var
|
|
2556
|
+
var xi = {
|
|
2536
2557
|
"0150a855548f15a2af52ea057be53f5d": 1,
|
|
2537
2558
|
"039826cf379b94afefe90b25c6045ca0": 1,
|
|
2538
2559
|
"03a7e564b84662f4d957c51018e26244": 1,
|
|
@@ -21506,7 +21527,7 @@ var yi = {
|
|
|
21506
21527
|
d16d29c923bd60c7b095b66c6058fe60: 1664,
|
|
21507
21528
|
"1c14c2adf5cfda3220b2057160e10e91": 1665,
|
|
21508
21529
|
e44c55ca1ac46ff46420686a466c9fc6: 1665
|
|
21509
|
-
},
|
|
21530
|
+
}, Si = "\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", Ci = "\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", wi = "\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", Ti = "\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", Ei = "\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", Di = {
|
|
21510
21531
|
assnatetatagr: { bold: !0 },
|
|
21511
21532
|
assnatetatagrgr: { bold: !0 },
|
|
21512
21533
|
assnatetatatr: { bold: !0 },
|
|
@@ -21607,29 +21628,29 @@ var yi = {
|
|
|
21607
21628
|
assnatxl67: { align: "center" },
|
|
21608
21629
|
assnatenteteequilibre: { align: "center" }
|
|
21609
21630
|
};
|
|
21610
|
-
function
|
|
21611
|
-
let t = Object.keys(
|
|
21612
|
-
for (let n of t) if (e.includes(n)) return
|
|
21631
|
+
function Oi(e) {
|
|
21632
|
+
let t = Object.keys(Di).sort((e, t) => t.length - e.length);
|
|
21633
|
+
for (let n of t) if (e.includes(n)) return Di[n];
|
|
21613
21634
|
return null;
|
|
21614
21635
|
}
|
|
21615
|
-
function
|
|
21616
|
-
return
|
|
21636
|
+
function ki(e) {
|
|
21637
|
+
return je.createHash("md5").update(e).digest("hex");
|
|
21617
21638
|
}
|
|
21618
|
-
function
|
|
21639
|
+
function Ai(e) {
|
|
21619
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;
|
|
21620
21641
|
}
|
|
21621
|
-
function
|
|
21642
|
+
function ji(e) {
|
|
21622
21643
|
return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
|
|
21623
21644
|
}
|
|
21624
|
-
function
|
|
21645
|
+
function Mi(e) {
|
|
21625
21646
|
if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
|
|
21626
21647
|
let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
|
|
21627
21648
|
return !(t && parseFloat(t[1]) < 8);
|
|
21628
21649
|
}
|
|
21629
|
-
function
|
|
21650
|
+
function Ni(e) {
|
|
21630
21651
|
return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
|
|
21631
21652
|
}
|
|
21632
|
-
function
|
|
21653
|
+
function Pi(e) {
|
|
21633
21654
|
if (!e) return;
|
|
21634
21655
|
let t = [
|
|
21635
21656
|
"width",
|
|
@@ -21664,15 +21685,15 @@ function Mi(e) {
|
|
|
21664
21685
|
}
|
|
21665
21686
|
return n.length > 0 ? n.join("; ") : void 0;
|
|
21666
21687
|
}
|
|
21667
|
-
function
|
|
21688
|
+
function Fi(e, t) {
|
|
21668
21689
|
return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
|
|
21669
21690
|
}
|
|
21670
|
-
function
|
|
21691
|
+
function Ii(e) {
|
|
21671
21692
|
if (!e) return null;
|
|
21672
21693
|
let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
|
|
21673
21694
|
return t ? t[1].toLowerCase() : null;
|
|
21674
21695
|
}
|
|
21675
|
-
function
|
|
21696
|
+
function Li(e) {
|
|
21676
21697
|
if (!e) return null;
|
|
21677
21698
|
for (let [t, n] of [
|
|
21678
21699
|
[/assnat1Tome|assnatAN1PARTIE/i, 1],
|
|
@@ -21684,8 +21705,8 @@ function Fi(e) {
|
|
|
21684
21705
|
]) if (t.test(e)) return n;
|
|
21685
21706
|
return null;
|
|
21686
21707
|
}
|
|
21687
|
-
function
|
|
21688
|
-
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a =
|
|
21708
|
+
function Ri(e, t = {}) {
|
|
21709
|
+
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = C(e, { xml: { decodeEntities: !1 } });
|
|
21689
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) => {
|
|
21690
21711
|
let n = a(t).closest("table");
|
|
21691
21712
|
n.length > 0 && n.remove();
|
|
@@ -21710,7 +21731,7 @@ function Ii(e, t = {}) {
|
|
|
21710
21731
|
if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
|
|
21711
21732
|
let e = i.attr();
|
|
21712
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")) {
|
|
21713
|
-
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ?
|
|
21734
|
+
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? ki(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
|
|
21714
21735
|
n.replaceWith(`<span class="alinea"${i}></span>`);
|
|
21715
21736
|
return;
|
|
21716
21737
|
}
|
|
@@ -21729,7 +21750,7 @@ function Ii(e, t = {}) {
|
|
|
21729
21750
|
(!r || r === "\xA0") && n.remove();
|
|
21730
21751
|
}), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
|
|
21731
21752
|
function o(e) {
|
|
21732
|
-
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 = Ai(n) || r === "b" || r === "strong", o = ji(n) || r === "i" || r === "em", s = Mi(n) || r === "sup", c = Ni(n) || r === "sub", l = t.attr("class") || "";
|
|
21733
21754
|
return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
|
|
21734
21755
|
bold: i,
|
|
21735
21756
|
italic: o,
|
|
@@ -21763,7 +21784,7 @@ function Ii(e, t = {}) {
|
|
|
21763
21784
|
c = e;
|
|
21764
21785
|
}
|
|
21765
21786
|
for (a("p").each((e, t) => {
|
|
21766
|
-
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 = Li(i);
|
|
21767
21788
|
if (i.includes("assnatFARCouvTitreD")) {
|
|
21768
21789
|
let e = r.html() || "";
|
|
21769
21790
|
r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
|
|
@@ -21796,11 +21817,11 @@ function Ii(e, t = {}) {
|
|
|
21796
21817
|
let c = r.text().trim().startsWith("«");
|
|
21797
21818
|
if (s && !c) {
|
|
21798
21819
|
let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
|
|
21799
|
-
n &&
|
|
21820
|
+
n && Fi(o, i) && e.attr("align", "center"), r.replaceWith(e);
|
|
21800
21821
|
} else {
|
|
21801
|
-
let e =
|
|
21822
|
+
let e = Oi(i), t;
|
|
21802
21823
|
if (n) {
|
|
21803
|
-
let n =
|
|
21824
|
+
let n = Ii(o);
|
|
21804
21825
|
n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
|
|
21805
21826
|
}
|
|
21806
21827
|
if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
|
|
@@ -21810,7 +21831,7 @@ function Ii(e, t = {}) {
|
|
|
21810
21831
|
}
|
|
21811
21832
|
}), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
|
|
21812
21833
|
let r = a(t), i = r.attr("style"), o = r.attr("class");
|
|
21813
|
-
n &&
|
|
21834
|
+
n && Fi(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
|
|
21814
21835
|
}), a("a").each((e, t) => {
|
|
21815
21836
|
let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
|
|
21816
21837
|
for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
|
|
@@ -21849,7 +21870,7 @@ function Ii(e, t = {}) {
|
|
|
21849
21870
|
}), a("br").each((e, t) => {
|
|
21850
21871
|
a(t).removeAttr("style").removeAttr("class");
|
|
21851
21872
|
}), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
|
|
21852
|
-
let n = a(t), r =
|
|
21873
|
+
let n = a(t), r = Pi(n.attr("style"));
|
|
21853
21874
|
n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
|
|
21854
21875
|
}), a("td, th").each((e, t) => {
|
|
21855
21876
|
let n = a(t), r = n.children();
|
|
@@ -21867,17 +21888,17 @@ function Ii(e, t = {}) {
|
|
|
21867
21888
|
!isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
|
|
21868
21889
|
}
|
|
21869
21890
|
}), a("li").each((e, t) => {
|
|
21870
|
-
let n = a(t), r =
|
|
21891
|
+
let n = a(t), r = Ii(n.attr("style"));
|
|
21871
21892
|
n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
|
|
21872
21893
|
let i = n.html() || "", o = i.replace(/^(\s| | |\u00a0)+/, "");
|
|
21873
21894
|
o !== i && n.html(o);
|
|
21874
|
-
}),
|
|
21895
|
+
}), zi(a), Bi(a, i);
|
|
21875
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 = "";
|
|
21876
|
-
m && (h +=
|
|
21897
|
+
m && (h += Ei), f && (h += Ci), p && (h += wi), u && (h += Si), d && (h += Ti);
|
|
21877
21898
|
let g = h ? `<style>${h}</style>\n${l}` : l;
|
|
21878
|
-
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 = Vi(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;
|
|
21879
21900
|
}
|
|
21880
|
-
function
|
|
21901
|
+
function zi(e) {
|
|
21881
21902
|
e("span[id]").each((t, n) => {
|
|
21882
21903
|
let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
|
|
21883
21904
|
if (o.length !== 1 || o[0] !== "id") return;
|
|
@@ -21900,13 +21921,13 @@ function Li(e) {
|
|
|
21900
21921
|
l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
|
|
21901
21922
|
});
|
|
21902
21923
|
}
|
|
21903
|
-
function
|
|
21924
|
+
function Bi(e, t = !1) {
|
|
21904
21925
|
let n = e("body");
|
|
21905
21926
|
if (n.length === 0) return;
|
|
21906
21927
|
let r = n.find("span.alinea[data-image-hash]"), i = -1;
|
|
21907
21928
|
r.each((n, r) => {
|
|
21908
21929
|
let a = e(r), o = a.attr("data-image-hash"), s;
|
|
21909
|
-
if (o &&
|
|
21930
|
+
if (o && xi[o] !== void 0 && (s = xi[o]), s === void 0) {
|
|
21910
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".`);
|
|
21911
21932
|
a.remove();
|
|
21912
21933
|
return;
|
|
@@ -21918,11 +21939,11 @@ function Ri(e, t = !1) {
|
|
|
21918
21939
|
i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
|
|
21919
21940
|
});
|
|
21920
21941
|
}
|
|
21921
|
-
function
|
|
21942
|
+
function Vi(e) {
|
|
21922
21943
|
let t = e;
|
|
21923
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;
|
|
21924
21945
|
}
|
|
21925
|
-
function
|
|
21946
|
+
function Hi(e, t = {}) {
|
|
21926
21947
|
return `<!DOCTYPE html>
|
|
21927
21948
|
<html lang="fr">
|
|
21928
21949
|
<head>
|
|
@@ -21930,33 +21951,33 @@ function Bi(e, t = {}) {
|
|
|
21930
21951
|
<title>Document simplifié</title>
|
|
21931
21952
|
</head>
|
|
21932
21953
|
<body>
|
|
21933
|
-
${
|
|
21954
|
+
${Ri(e, t)}
|
|
21934
21955
|
</body>
|
|
21935
21956
|
</html>`;
|
|
21936
21957
|
}
|
|
21937
21958
|
//#endregion
|
|
21938
21959
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
21939
|
-
function
|
|
21960
|
+
function Ui(e, t) {
|
|
21940
21961
|
let n = "transformation_", r = {};
|
|
21941
|
-
for (let e of
|
|
21962
|
+
for (let e of A.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
21942
21963
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
21943
21964
|
for (let e of a.slice(1)) {
|
|
21944
21965
|
let t = o.transformations ??= [];
|
|
21945
21966
|
for (; e >= t.length;) t.push({});
|
|
21946
21967
|
o = t[e];
|
|
21947
21968
|
}
|
|
21948
|
-
o.output =
|
|
21949
|
-
let { sourceMap: s, title: c } =
|
|
21969
|
+
o.output = A.readFileSync(Ne.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
21970
|
+
let { sourceMap: s, title: c } = A.readJsonSync(Ne.join(t, e), { encoding: "utf-8" });
|
|
21950
21971
|
o.sourceMap = s ?? [], o.title = c;
|
|
21951
21972
|
}
|
|
21952
|
-
return
|
|
21973
|
+
return Wi(r, e), r;
|
|
21953
21974
|
}
|
|
21954
|
-
function
|
|
21955
|
-
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations)
|
|
21975
|
+
function Wi(e, t) {
|
|
21976
|
+
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Wi(n, t), t = n.output;
|
|
21956
21977
|
return t;
|
|
21957
21978
|
}
|
|
21958
|
-
function
|
|
21959
|
-
if (
|
|
21979
|
+
function Gi(e, t, n = "1") {
|
|
21980
|
+
if (A.ensureDirSync(t), e.transformations === void 0) A.writeJsonSync(Ne.join(t, `transformation_${n}.json`), {
|
|
21960
21981
|
sourceMap: e.sourceMap,
|
|
21961
21982
|
title: e.title
|
|
21962
21983
|
}, {
|
|
@@ -21964,24 +21985,24 @@ function Ui(e, t, n = "1") {
|
|
|
21964
21985
|
spaces: 2
|
|
21965
21986
|
});
|
|
21966
21987
|
else {
|
|
21967
|
-
|
|
21988
|
+
A.writeJsonSync(Ne.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
21968
21989
|
encoding: "utf-8",
|
|
21969
21990
|
spaces: 2
|
|
21970
21991
|
});
|
|
21971
|
-
for (let [r, i] of e.transformations.entries())
|
|
21992
|
+
for (let [r, i] of e.transformations.entries()) Gi(i, t, `${n}.${r + 1}`);
|
|
21972
21993
|
}
|
|
21973
|
-
e.output !== void 0 &&
|
|
21994
|
+
e.output !== void 0 && A.writeFileSync(Ne.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
21974
21995
|
}
|
|
21975
21996
|
//#endregion
|
|
21976
21997
|
//#region src/lib/server/linkers/html.ts
|
|
21977
|
-
async function
|
|
21978
|
-
let _ = t ?? (e === void 0 ? void 0 : new
|
|
21998
|
+
async function Ki({ 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 ce(e));
|
|
21979
22000
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
21980
|
-
let v = await
|
|
21981
|
-
a === void 0 ? (y =
|
|
22001
|
+
let v = await A.readFile(i, { encoding: "utf-8" }), y;
|
|
22002
|
+
a === void 0 ? (y = be({ removeAWithHref: !0 })(v), o !== void 0 && Gi(y, o)) : y = Ui(v, a);
|
|
21982
22003
|
let b = [];
|
|
21983
22004
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
21984
|
-
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await
|
|
22005
|
+
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await ue({
|
|
21985
22006
|
legiResolver: _,
|
|
21986
22007
|
date: n,
|
|
21987
22008
|
defaultTextId: r,
|
|
@@ -21998,38 +22019,38 @@ async function Wi({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
21998
22019
|
s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
|
|
21999
22020
|
for (let [e, t] of Object.entries(x)) {
|
|
22000
22021
|
let n = S[e];
|
|
22001
|
-
n !== void 0 && await
|
|
22022
|
+
n !== void 0 && await A.writeFile(n, t.html, { encoding: "utf-8" });
|
|
22002
22023
|
}
|
|
22003
|
-
x.links !== void 0 && l !== void 0 &&
|
|
22024
|
+
x.links !== void 0 && l !== void 0 && Gi(be()(x.links.html), l), g !== void 0 && await A.writeJson(g, ee, {
|
|
22004
22025
|
encoding: "utf-8",
|
|
22005
22026
|
spaces: 2
|
|
22006
22027
|
});
|
|
22007
22028
|
}
|
|
22008
22029
|
//#endregion
|
|
22009
22030
|
//#region src/lib/server/tables_of_contents.ts
|
|
22010
|
-
async function
|
|
22011
|
-
let i =
|
|
22012
|
-
for await (let e of
|
|
22031
|
+
async function qi(e, t, n, r) {
|
|
22032
|
+
let i = Ui(await A.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await A.readJson(n, { encoding: "utf-8" });
|
|
22033
|
+
for await (let e of le({
|
|
22013
22034
|
context: o,
|
|
22014
22035
|
tableOfContents: s,
|
|
22015
22036
|
transformation: i
|
|
22016
22037
|
}));
|
|
22017
|
-
await
|
|
22038
|
+
await A.writeJson(r, s, {
|
|
22018
22039
|
encoding: "utf-8",
|
|
22019
22040
|
spaces: 2
|
|
22020
22041
|
});
|
|
22021
22042
|
}
|
|
22022
|
-
async function
|
|
22023
|
-
let r =
|
|
22024
|
-
await
|
|
22043
|
+
async function Ji(e, t, n) {
|
|
22044
|
+
let r = Ui(await A.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
|
|
22045
|
+
await A.writeJson(n, i, {
|
|
22025
22046
|
encoding: "utf-8",
|
|
22026
22047
|
spaces: 2
|
|
22027
22048
|
});
|
|
22028
22049
|
}
|
|
22029
22050
|
//#endregion
|
|
22030
22051
|
//#region src/lib/server/legi/resolvers.ts
|
|
22031
|
-
function
|
|
22032
|
-
return new
|
|
22052
|
+
function Yi({ canutesDb: e }) {
|
|
22053
|
+
return new ce(e);
|
|
22033
22054
|
}
|
|
22034
22055
|
//#endregion
|
|
22035
|
-
export {
|
|
22056
|
+
export { Ae as LegiResolver, Ki as addLinksOrReferencesToHtmlFile, qi as addPositionsToTableOfContentsFile, Ee as buildAndInstallTextTitlesInfos, Oe as buildTextTitlesInfos, Yi as createLegiResolver, Le as extractAssembleeAmendmentSearchItems, ar as extractAssembleeExposesDesMotifs, ur as extractSenatAmendmentSearchItems, Re as hashAssembleeAmendmentSearchItem, sr as hashAssembleeSearchItem, dr as hashSenatAmendmentSearchItem, mi as hashSenatSearchItem, bi as isAkomaNtosoXml, cr as isoDateFromAssembleeDocument, tr as linkAkomaNtosoBillRaw, dn as linkAssembleeBillRaw, er as parseAkomaNtosoBillRaw, ui as parseAmendment, un as parseAssembleeBillRaw, or as parseAssembleeDocumentSearchContent, pi as parseSenatDocumentSearchContent, Ui as readTransformation, Xn as renderAkomaNtosoBillRaw, yi as resolveSenatAkomaNtosoSource, Ji as simplifiedHtmlBillFileToTableOfContentsFile, Ri as simplifyWordHtml, Hi as simplifyWordHtmlToDocument, Gi as writeTransformation };
|