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