@tricoteuses/tisseuse 0.20.0 → 0.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/dist/{html-C07GdZ0O.js → html-jaUHsXKQ.js} +5810 -5370
- package/dist/index.js +126 -126
- package/dist/{resolver-4v_fWVor.js → resolver-CzmDH4S3.js} +138 -130
- package/dist/server-f-legi.js +73 -92
- package/dist/server.js +554 -516
- package/dist/src/lib/extractors/action_directives_cpu.test.d.ts +1 -0
- package/dist/src/lib/extractors/links.citation_scope.test.d.ts +1 -0
- package/dist/src/lib/extractors/portion_references_cpu.test.d.ts +1 -0
- package/dist/src/lib/extractors/references.d.ts +8 -8
- package/dist/src/lib/f_legi/resolver.d.ts +0 -2
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/legi/canutes_article_preload.test.d.ts +1 -0
- package/dist/src/lib/legi/canutes_candidates.test.d.ts +1 -0
- package/dist/src/lib/legi/canutes_resolver.d.ts +5 -4
- package/dist/src/lib/legi/canutes_resolver_cache.test.d.ts +1 -0
- package/dist/src/lib/legi/canutes_section_roots.test.d.ts +1 -0
- package/dist/src/lib/legi/canutes_sql.d.ts +4 -0
- package/dist/src/lib/legi/canutes_text_titles_cache.d.ts +24 -0
- package/dist/src/lib/legi/canutes_text_titles_cache.integration.test.d.ts +1 -0
- package/dist/src/lib/legi/canutes_titles_metrics.d.ts +13 -0
- package/dist/src/lib/legi/text_titles_infos.d.ts +1 -0
- package/dist/src/lib/linkers/html.d.ts +3 -3
- package/dist/src/lib/linkers/markdown.d.ts +2 -2
- package/dist/src/lib/server/akn_rendering.test.d.ts +1 -0
- package/dist/src/lib/server/bill_action_resolver_invariance.test.d.ts +1 -0
- package/dist/src/lib/server/bill_action_target_fixtures.d.ts +7 -0
- package/dist/src/lib/server/bill_citation_anaphora.test.d.ts +1 -0
- package/dist/src/lib/server/bill_comparison.d.ts +42 -0
- package/dist/src/lib/server/bill_comparison.test.d.ts +1 -0
- package/dist/src/lib/server/bill_target_scope.test.d.ts +1 -0
- package/dist/src/lib/server/canutes_legacy_candidates.d.ts +19 -0
- package/dist/src/lib/server/canutes_only_compatibility.test.d.ts +1 -0
- package/dist/src/lib/server/databases/canutes_text_titles_cache.d.ts +8 -0
- package/dist/src/lib/server/flegi_profiling.d.ts +14 -0
- package/dist/src/lib/server/flegi_profiling.test.d.ts +1 -0
- package/dist/src/lib/server/masquage-typesense.test.d.ts +1 -0
- package/dist/src/lib/server/masquage_typesense.d.ts +36 -0
- package/dist/src/lib/server/sql_profiling.d.ts +30 -0
- package/dist/src/lib/server/sql_profiling.test.d.ts +1 -0
- package/dist/src/lib/text_parsers/action_words.d.ts +2 -0
- package/dist/src/lib/text_parsers/action_words.test.d.ts +1 -0
- package/dist/src/lib/text_parsers/texts.d.ts +1 -0
- package/dist/src/scripts/compare_legi_bills.d.ts +1 -0
- package/dist/src/scripts/configure_postgres_legi_resolver.d.ts +1 -0
- package/dist/src/scripts/profile_canutes_bill.d.ts +1 -0
- package/dist/src/scripts/test_canutes_titles_cache.d.ts +1 -0
- package/dist/src/scripts/warm_canutes_text_titles_cache.d.ts +1 -0
- package/package.json +7 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { At as e, C as t, D as n, E as r, Ft as i, Ht as a, K as o, L as s, M as c, Mt as l, N as u, O as d, Q as f, S as p, Tt as m, U as h, Ut as g, W as _, b as v, c as y, ft as b, g as x, h as ee, j as S, jt as C, k as te, kt as ne, m as re, n as ie, nt as ae, ot as oe, p as se, s as ce, t as le, tt as ue, u as de, ut as fe, v as pe, w as me, x as he } from "./html-
|
|
2
|
-
import { A as ge, At as w,
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { At as e, C as t, D as n, E as r, Ft as i, Ht as a, K as o, L as s, M as c, Mt as l, N as u, O as d, Q as f, S as p, Tt as m, U as h, Ut as g, W as _, b as v, c as y, ft as b, g as x, h as ee, j as S, jt as C, k as te, kt as ne, m as re, n as ie, nt as ae, ot as oe, p as se, s as ce, t as le, tt as ue, u as de, ut as fe, v as pe, w as me, x as he } from "./html-jaUHsXKQ.js";
|
|
2
|
+
import { A as ge, At as w, F as _e, Ft as T, Lt as E, R as ve, St as D, d as ye, ft as be, it as xe, j as O, jt as k, kt as A, n as Se, r as Ce, t as we, yt as Te, z as Ee } from "./resolver-CzmDH4S3.js";
|
|
3
|
+
import * as De from "node:crypto";
|
|
4
|
+
import { createHash as Oe } from "node:crypto";
|
|
5
|
+
import j from "fs-extra";
|
|
6
|
+
import ke from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function Ae(e, t) {
|
|
9
9
|
let n = e;
|
|
10
10
|
for (let e of t) {
|
|
11
11
|
if (typeof n != "object" || !n) return null;
|
|
@@ -13,34 +13,34 @@ function je(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function je(e) {
|
|
17
17
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function Me(e) {
|
|
20
|
+
return je(b(e).text());
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
|
|
22
|
+
function Ne(e) {
|
|
23
|
+
let t = je([
|
|
24
|
+
Ae(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
Ae(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
Ae(e, [
|
|
35
35
|
"corps",
|
|
36
36
|
"contenuAuteur",
|
|
37
37
|
"dispositifAmdtCreditPLFR"
|
|
38
38
|
])
|
|
39
|
-
].filter((e) => e !== null).map((e) =>
|
|
39
|
+
].filter((e) => e !== null).map((e) => Me(e)).join("\n")), n = Ae(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : Me(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Pe(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Pe(e, t) {
|
|
55
|
+
return Oe("sha256").update(JSON.stringify({
|
|
56
56
|
item: e,
|
|
57
57
|
metadata: t
|
|
58
58
|
})).digest("hex");
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region src/lib/extractors/article_action_targets.ts
|
|
62
|
-
function
|
|
62
|
+
function M(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return M(e.reference);
|
|
65
|
+
case "enumeration": return [...M(e.left), ...M(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
67
|
let t = [...a(e.parent)].filter((e) => e.type === "article");
|
|
68
68
|
return t.length === 1 ? [{
|
|
69
69
|
article: t[0],
|
|
70
70
|
reference: e
|
|
71
|
-
}] : t.length > 1 ? [] :
|
|
71
|
+
}] : t.length > 1 ? [] : M(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,11 +89,11 @@ function j(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/extractors/article_action_effects.ts
|
|
92
|
-
function
|
|
92
|
+
function Fe(e, t) {
|
|
93
93
|
if (t < 2) return null;
|
|
94
|
-
let n =
|
|
94
|
+
let n = O(e), r = x(e);
|
|
95
95
|
if (r.length !== t) return null;
|
|
96
|
-
let i = s(new
|
|
96
|
+
let i = s(new A(n.output)), a = (e) => Ee(n, [e])[0].position;
|
|
97
97
|
return r.map((t, n) => ({
|
|
98
98
|
sourceText: e,
|
|
99
99
|
referencePosition: a({
|
|
@@ -103,9 +103,9 @@ function Ie(e, t) {
|
|
|
103
103
|
actionPosition: a(t.position)
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function Ie(e, t, n) {
|
|
107
107
|
if (t.length < 2) return null;
|
|
108
|
-
let r =
|
|
108
|
+
let r = O(e), i = r.output, a = (e) => Ee(r, [e])[0].position, o = s(new A(i)), c = o.flatMap(M);
|
|
109
109
|
if (c.length !== t.length || c.length < 2) return null;
|
|
110
110
|
let l = he(i);
|
|
111
111
|
if (l.length > 0) return n?.kind !== "replace_portion" || l.length !== c.length || l.some((e, t) => {
|
|
@@ -161,12 +161,12 @@ function Le(e, t, n) {
|
|
|
161
161
|
let d = [], f = 0;
|
|
162
162
|
for (let e = 1; e < o.length; e += 1) {
|
|
163
163
|
let t = o[e];
|
|
164
|
-
t.type !== "reference_et_action" ||
|
|
164
|
+
t.type !== "reference_et_action" || M(t).length === 0 || o.slice(f, e).flatMap(M).length === 0 || v(i.slice(f === 0 ? 0 : o[f].position.start, t.position.start)).length === 1 && v(i.slice(t.position.start)).length === 1 && (d.push(e - 1), f = e);
|
|
165
165
|
}
|
|
166
166
|
d.push(o.length - 1);
|
|
167
167
|
let p = [], m = 0, h = 0;
|
|
168
168
|
for (let n of d) {
|
|
169
|
-
let r = o.slice(m, n + 1).flatMap(
|
|
169
|
+
let r = o.slice(m, n + 1).flatMap(M);
|
|
170
170
|
if (r.length === 0) {
|
|
171
171
|
m = n + 1;
|
|
172
172
|
continue;
|
|
@@ -205,27 +205,27 @@ function Le(e, t, n) {
|
|
|
205
205
|
}
|
|
206
206
|
//#endregion
|
|
207
207
|
//#region src/lib/server/parsed_bills.ts
|
|
208
|
-
var
|
|
209
|
-
function
|
|
208
|
+
var Le = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
209
|
+
function N(e) {
|
|
210
210
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
211
211
|
}
|
|
212
|
-
function
|
|
213
|
-
return
|
|
212
|
+
function P(e) {
|
|
213
|
+
return N(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
214
214
|
}
|
|
215
|
-
function
|
|
216
|
-
return ne(
|
|
215
|
+
function Re(e) {
|
|
216
|
+
return ne(N(e));
|
|
217
217
|
}
|
|
218
|
-
function
|
|
219
|
-
return `_TocArt${
|
|
218
|
+
function F(e) {
|
|
219
|
+
return `_TocArt${Re(e).replace(/\s+/gu, "")}`;
|
|
220
220
|
}
|
|
221
|
-
function
|
|
221
|
+
function ze(e, t) {
|
|
222
222
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
223
223
|
}
|
|
224
|
-
function
|
|
225
|
-
return
|
|
224
|
+
function Be(e) {
|
|
225
|
+
return P(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
226
226
|
}
|
|
227
227
|
function Ve(e) {
|
|
228
|
-
return
|
|
228
|
+
return Be(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
229
229
|
}
|
|
230
230
|
function He(e) {
|
|
231
231
|
switch (e.kind) {
|
|
@@ -246,7 +246,7 @@ function He(e) {
|
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
function Ue(t) {
|
|
249
|
-
let n =
|
|
249
|
+
let n = N(t.sourceText), r = /\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(n);
|
|
250
250
|
if (r?.[1] !== void 0) return e(r[1]);
|
|
251
251
|
}
|
|
252
252
|
function We(e) {
|
|
@@ -283,14 +283,14 @@ function Ke(e) {
|
|
|
283
283
|
return t.type === "bounded-interval" || Object.values(t).some(Ke);
|
|
284
284
|
}
|
|
285
285
|
function qe(e) {
|
|
286
|
-
let t =
|
|
286
|
+
let t = P(e.sourceText);
|
|
287
287
|
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);
|
|
288
288
|
}
|
|
289
289
|
function Je(e) {
|
|
290
|
-
return
|
|
290
|
+
return N(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
291
291
|
}
|
|
292
292
|
function Ye(e, t) {
|
|
293
|
-
let n = new
|
|
293
|
+
let n = new A(e, t), r = xe(n);
|
|
294
294
|
return typeof r != "string" || n.offset <= t ? null : {
|
|
295
295
|
date: r,
|
|
296
296
|
start: t,
|
|
@@ -328,7 +328,7 @@ function Qe(e) {
|
|
|
328
328
|
return n.length === 1 ? n[0] : void 0;
|
|
329
329
|
}
|
|
330
330
|
function $e(e) {
|
|
331
|
-
return
|
|
331
|
+
return P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
332
332
|
}
|
|
333
333
|
function I(e) {
|
|
334
334
|
return e?.type === "tag";
|
|
@@ -344,7 +344,7 @@ function tt(e, t) {
|
|
|
344
344
|
let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
|
|
345
345
|
if (r.has(l)) continue;
|
|
346
346
|
r.add(l);
|
|
347
|
-
let u =
|
|
347
|
+
let u = N(e(i).text());
|
|
348
348
|
n.push({
|
|
349
349
|
id: c,
|
|
350
350
|
...nt(e, t, i) ? { insideFrenchQuotes: !0 } : {},
|
|
@@ -371,14 +371,14 @@ function rt(e, t, n) {
|
|
|
371
371
|
return r;
|
|
372
372
|
}
|
|
373
373
|
function it(e, t) {
|
|
374
|
-
return t.map((t) =>
|
|
374
|
+
return t.map((t) => N(e(t).text())).filter(Boolean).join("\n");
|
|
375
375
|
}
|
|
376
376
|
function at(e) {
|
|
377
|
-
let t =
|
|
378
|
-
return !t ||
|
|
377
|
+
let t = P(e);
|
|
378
|
+
return !t || Le.test(t) ? "noise" : d.test(e) ? "directive_candidate" : "context";
|
|
379
379
|
}
|
|
380
380
|
function ot(e, t) {
|
|
381
|
-
return t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(
|
|
381
|
+
return t.tagName === "p" && (/pastille/iu.test(e(t).attr("class") ?? "") || e(t).is("[data-pastille]")) && /^\(\d+\)$/u.test(N(e(t).text()));
|
|
382
382
|
}
|
|
383
383
|
function st(e) {
|
|
384
384
|
let t = b(e, { xml: {
|
|
@@ -417,10 +417,10 @@ function lt(e, t) {
|
|
|
417
417
|
}
|
|
418
418
|
function ut(e, t, n, r, i) {
|
|
419
419
|
if (n.has(i.container)) return;
|
|
420
|
-
let a = i.id ??
|
|
420
|
+
let a = i.id ?? F(i.num ?? i.label);
|
|
421
421
|
if (r.has(a)) return;
|
|
422
422
|
r.add(a), n.add(i.container);
|
|
423
|
-
let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = I(o) ? dt(e, o) : null, c = s ? e(o).text() : "", l = I(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) =>
|
|
423
|
+
let o = i.title ? e(i.element).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0) : void 0, s = I(o) ? dt(e, o) : null, c = s ? e(o).text() : "", l = I(o) && s?.label === i.label && s.title === i.title && [`${s.label}${s.title}`, `${s.label} ${s.title}`].some((e) => P(e) === P(c)) ? {
|
|
424
424
|
element: o,
|
|
425
425
|
text: `${s.label}\n${s.title}`
|
|
426
426
|
} : void 0;
|
|
@@ -451,7 +451,7 @@ function dt(e, t) {
|
|
|
451
451
|
else for (let t of e.children) a(t);
|
|
452
452
|
};
|
|
453
453
|
a(t);
|
|
454
|
-
let o = C(
|
|
454
|
+
let o = C(N(n)), s = N(r);
|
|
455
455
|
return o && !o.title && s ? {
|
|
456
456
|
...o,
|
|
457
457
|
title: s
|
|
@@ -460,8 +460,8 @@ function dt(e, t) {
|
|
|
460
460
|
function ft(e) {
|
|
461
461
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
462
462
|
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
463
|
-
if (
|
|
464
|
-
let o =
|
|
463
|
+
if (ze(e, a)) return;
|
|
464
|
+
let o = N(e(a).text()), s = e(a).attr("id");
|
|
465
465
|
if (!s || r.has(s)) return;
|
|
466
466
|
let c = lt(e, a), l = e(a).closest("h1,h2,h3,h4,h5,h6,p.assnat9ArticleNum").get(0), u = C(o) ?? (I(l) && (a === l || e(a).find("br").length === 1) ? dt(e, l) : null);
|
|
467
467
|
u && ut(e, t, n, r, {
|
|
@@ -472,7 +472,7 @@ function ft(e) {
|
|
|
472
472
|
});
|
|
473
473
|
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
474
474
|
if (n.has(a)) return;
|
|
475
|
-
let o = C(
|
|
475
|
+
let o = C(N(e(a).text())) ?? dt(e, a);
|
|
476
476
|
o && ut(e, t, n, r, {
|
|
477
477
|
...o,
|
|
478
478
|
element: a,
|
|
@@ -483,7 +483,7 @@ function ft(e) {
|
|
|
483
483
|
return t.sort((e, t) => R(i, e.container) - R(i, t.container)), t;
|
|
484
484
|
}
|
|
485
485
|
function pt(e, t) {
|
|
486
|
-
if (
|
|
486
|
+
if (ze(e, t)) return !1;
|
|
487
487
|
let n = t.tagName?.toLowerCase();
|
|
488
488
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
489
489
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
@@ -492,7 +492,7 @@ function pt(e, t) {
|
|
|
492
492
|
function mt(e) {
|
|
493
493
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
494
494
|
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
495
|
-
if (
|
|
495
|
+
if (ze(e, a) || !e(a).hasClass("assnat9ArticleNum") && !pt(e, a)) return;
|
|
496
496
|
let o = C(e(a).text()) ?? dt(e, a);
|
|
497
497
|
o && ut(e, t, n, r, {
|
|
498
498
|
...o,
|
|
@@ -502,7 +502,7 @@ function mt(e) {
|
|
|
502
502
|
}), t;
|
|
503
503
|
}
|
|
504
504
|
function ht(e) {
|
|
505
|
-
let t =
|
|
505
|
+
let t = Re(e ?? "").replace(/[()]/gu, "").trim();
|
|
506
506
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
507
507
|
if (t.toLowerCase() === "unique") return {
|
|
508
508
|
base: 1,
|
|
@@ -529,7 +529,7 @@ function gt(e, t) {
|
|
|
529
529
|
return 0;
|
|
530
530
|
}
|
|
531
531
|
function _t(e) {
|
|
532
|
-
let t = new
|
|
532
|
+
let t = new A(e), n = be(t);
|
|
533
533
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
534
534
|
}
|
|
535
535
|
function vt(e) {
|
|
@@ -581,9 +581,9 @@ function bt(e, { warn: t = !0 } = {}) {
|
|
|
581
581
|
let n = ft(e), r = mt(e);
|
|
582
582
|
if (n.length === 0) return t && yt(r), r;
|
|
583
583
|
let i = L(e), a = (e, t) => {
|
|
584
|
-
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) =>
|
|
584
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => F(e.num ?? e.label)));
|
|
585
585
|
for (let i of t) {
|
|
586
|
-
let t =
|
|
586
|
+
let t = F(i.num ?? i.label);
|
|
587
587
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
588
588
|
}
|
|
589
589
|
return e.sort((e, t) => R(i, e.container) - R(i, t.container)), e;
|
|
@@ -604,9 +604,9 @@ function St(e, t, n) {
|
|
|
604
604
|
let i = r.parent(), a = i.parent();
|
|
605
605
|
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
606
606
|
let o = a.children().get();
|
|
607
|
-
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" ||
|
|
607
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || N(e(o[1]).text()) !== "") return;
|
|
608
608
|
let s = o.length === 4 ? o[2] : void 0;
|
|
609
|
-
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(
|
|
609
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(N(e(s).text())))) return;
|
|
610
610
|
let c = o.at(-1);
|
|
611
611
|
if (!(c.tagName !== "div" || n !== void 0 && e.contains(c, n.container) || e(c).find("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6").toArray().some((t) => C(e(t).text()) !== null))) return [
|
|
612
612
|
t.container,
|
|
@@ -637,9 +637,9 @@ function wt(e, t) {
|
|
|
637
637
|
function Tt(e, t, n, r) {
|
|
638
638
|
let i = [], a = !1;
|
|
639
639
|
for (let o of wt(e, n)) {
|
|
640
|
-
let n = e(o).is("table.akn-quoted-table") ?
|
|
640
|
+
let n = e(o).is("table.akn-quoted-table") ? yn(e, o) : N(e(o).text());
|
|
641
641
|
if (o === r?.splitAtBreak?.element && (n = r.splitAtBreak.text), !n) continue;
|
|
642
|
-
|
|
642
|
+
Le.test(n) && (a = !0);
|
|
643
643
|
let s = a ? "noise" : at(n), c = `${t}-b${i.length + 1}`;
|
|
644
644
|
e(o).attr("data-pjl-parsed-article-id", t), e(o).attr("data-pjl-parsed-block-id", c), i.push({
|
|
645
645
|
id: c,
|
|
@@ -660,7 +660,7 @@ function Et(e, t) {
|
|
|
660
660
|
function Dt(e) {
|
|
661
661
|
let t = b(e), n = Ot(t);
|
|
662
662
|
for (let e of bt(t, { warn: !1 })) {
|
|
663
|
-
let r =
|
|
663
|
+
let r = F(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
664
664
|
if (a !== r) {
|
|
665
665
|
if (a?.startsWith("_Toc") && !At(n, a, e.element)) {
|
|
666
666
|
let e = t("<span></span>").attr("id", a);
|
|
@@ -724,6 +724,44 @@ function Nt(e) {
|
|
|
724
724
|
return e?.links.filter((t) => !t.insideFrenchQuotes && (t.type === "article" || t.type === "division") && t.id !== e.qualifiedVersion?.modifyingArticleId).map((e) => e.id) ?? [];
|
|
725
725
|
}
|
|
726
726
|
function Pt(e) {
|
|
727
|
+
if (e.kind === "noise") return !1;
|
|
728
|
+
let t = P(e.text.split("«", 1)[0]).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), n = /^(?:(?:\d+°|[ivxlcdm]+[.)]|[a-z][.)])\s*)?(?:est|sont)\s+(?:ainsi\s+)?(?:abroge|modifie|complete|supprime|remplace|retabli)\w*\b/u.test(t) ? t : t.split(/\b(?:est|sont|il|elle|ils|elles)\b/iu, 1)[0];
|
|
729
|
+
return /(?:\b(?:articles?|livres?|titres?|sous[- ]?titres?|chapitres?|sections?|sous[- ]?sections?|parties?|paragraphes?|sous[- ]?paragraphes?|annexes?|etats?)\s+(?:[lrda]\s*\.?\s*-?\s*\d|\d|[ivxlcdm]+(?:er|re)?(?=\s|$|[.,;:])|(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\b)|\b(?:premier|premiere|deuxieme|troisieme|quatrieme|cinquieme|sixieme|septieme|huitieme|neuvieme|dixieme)\s+(?:article|livre|titre|chapitre|section|sous[- ]?section|partie|paragraphe)\b|\b(?:annexes?|etats?)\s+[a-z](?:\s|$))/iu.test(n);
|
|
730
|
+
}
|
|
731
|
+
function Ft(t, n) {
|
|
732
|
+
if (!n || n.articleId !== t.articleId || !/\br[ée]sultent\s+du\s+\d+°/iu.test(t.text)) return;
|
|
733
|
+
let r = (e) => P(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-"), i = r(t.text).replace(/«[^»]*»/gu, "");
|
|
734
|
+
if (/[«»]/u.test(i)) return;
|
|
735
|
+
let o = /\btels? qu['’]ils resultent du (\d+)°/u.exec(i);
|
|
736
|
+
if (!o || s(new A(i)).some((e) => [...a(e)].some((e) => e.type === "texte" && e.relative === void 0))) return;
|
|
737
|
+
let c = r(n.text);
|
|
738
|
+
if (/^\s*(\d+)°/u.exec(P(n.text))?.[1] !== o[1]) return;
|
|
739
|
+
let l = /\bles articles (.+?) deviennent respectivement les articles ([^;]+);?\s*$/u.exec(c);
|
|
740
|
+
if (!l) return;
|
|
741
|
+
let u = (t) => e(t.trim().replace(/^[lrda](?=[.\s\d])/u, (e) => e.toUpperCase())), d = (e) => {
|
|
742
|
+
let t = e.trim().split(/,\s*|\s+et\s+/u);
|
|
743
|
+
if (t.length === 0 || t.length > 64) return;
|
|
744
|
+
let n = t.map(u);
|
|
745
|
+
if (n.some((e) => e === void 0)) return;
|
|
746
|
+
let r = n;
|
|
747
|
+
return new Set(r).size === r.length ? r : void 0;
|
|
748
|
+
}, f = d(l[1]), p = d(l[2].replace(/;\s*$/u, ""));
|
|
749
|
+
if (!f || !p || f.length !== p.length) return;
|
|
750
|
+
let m = /* @__PURE__ */ new Map();
|
|
751
|
+
for (let e = 0; e < f.length; e++) {
|
|
752
|
+
let t = n.links.filter((t) => t.type === "article" && !t.insideFrenchQuotes && u(r(t.text ?? "")) === f[e]), i = [...new Set(t.map((e) => e.id))];
|
|
753
|
+
if (i.length !== 1 || !i[0]) return;
|
|
754
|
+
m.set(p[e], i[0]);
|
|
755
|
+
}
|
|
756
|
+
let h = [];
|
|
757
|
+
for (let e of i.matchAll(/\baux articles (.+?)(?=,?\s+tels? qu|,\s*la reference|;|$)/gu)) {
|
|
758
|
+
let t = d(e[1]);
|
|
759
|
+
if (!t) return;
|
|
760
|
+
h.push(...t);
|
|
761
|
+
}
|
|
762
|
+
if (!(h.length === 0 || h.some((e) => !m.has(e)))) return [...new Set(h.map((e) => m.get(e)))];
|
|
763
|
+
}
|
|
764
|
+
function It(e) {
|
|
727
765
|
let t = h(e.text);
|
|
728
766
|
if (t.length !== 1) return;
|
|
729
767
|
let n = e.links.filter((e) => e.type === "article" && !e.insideFrenchQuotes), r = n.filter((n) => {
|
|
@@ -738,13 +776,13 @@ function Pt(e) {
|
|
|
738
776
|
modifyingArticleLabel: i.text ?? ""
|
|
739
777
|
};
|
|
740
778
|
}
|
|
741
|
-
function
|
|
742
|
-
let n =
|
|
779
|
+
function Lt(e, t) {
|
|
780
|
+
let n = N(e);
|
|
743
781
|
if (!n) return;
|
|
744
782
|
let r = fe(n);
|
|
745
783
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
746
784
|
}
|
|
747
|
-
function
|
|
785
|
+
function Rt(e) {
|
|
748
786
|
let t = /* @__PURE__ */ new Map(), n = [], r = re(e.map((e) => e.text)), i = -1;
|
|
749
787
|
for (let [a, o] of e.entries()) {
|
|
750
788
|
let e = r.get(a);
|
|
@@ -752,7 +790,7 @@ function It(e) {
|
|
|
752
790
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
753
791
|
continue;
|
|
754
792
|
}
|
|
755
|
-
let s =
|
|
793
|
+
let s = Lt(o.text, n.at(-1)?.level);
|
|
756
794
|
if (s === void 0) {
|
|
757
795
|
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
758
796
|
continue;
|
|
@@ -765,14 +803,14 @@ function It(e) {
|
|
|
765
803
|
}
|
|
766
804
|
return t;
|
|
767
805
|
}
|
|
768
|
-
function
|
|
806
|
+
function zt(e, t) {
|
|
769
807
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
770
808
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
771
809
|
return n;
|
|
772
810
|
}
|
|
773
|
-
function
|
|
811
|
+
function Bt(e, t, n) {
|
|
774
812
|
if (!t) return;
|
|
775
|
-
let r =
|
|
813
|
+
let r = zt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
776
814
|
if (r.length === 0) return;
|
|
777
815
|
let i = r.map((e) => e.id);
|
|
778
816
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -787,7 +825,7 @@ function Rt(e, t, n) {
|
|
|
787
825
|
}
|
|
788
826
|
};
|
|
789
827
|
}
|
|
790
|
-
function
|
|
828
|
+
function Vt(e) {
|
|
791
829
|
let t = [], n = 0;
|
|
792
830
|
for (let r of e.blocks) {
|
|
793
831
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -801,7 +839,7 @@ function zt(e) {
|
|
|
801
839
|
}
|
|
802
840
|
return t;
|
|
803
841
|
}
|
|
804
|
-
function
|
|
842
|
+
function Ht(e, t, n) {
|
|
805
843
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
806
844
|
if (a.length === 0) return;
|
|
807
845
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -815,7 +853,7 @@ function Bt(e, t, n) {
|
|
|
815
853
|
}
|
|
816
854
|
};
|
|
817
855
|
}
|
|
818
|
-
function
|
|
856
|
+
function Ut(e, t, n) {
|
|
819
857
|
if (!t) return;
|
|
820
858
|
let r = e.directiveText.indexOf(t.text);
|
|
821
859
|
if (r === -1) return;
|
|
@@ -828,7 +866,7 @@ function Vt(e, t, n) {
|
|
|
828
866
|
stop: a
|
|
829
867
|
};
|
|
830
868
|
}
|
|
831
|
-
function
|
|
869
|
+
function Wt(e, t, n) {
|
|
832
870
|
for (let r of [...t.get(e.id) ?? [e]].reverse()) {
|
|
833
871
|
let e = n.get(r.id);
|
|
834
872
|
if (!n.has(r.id)) {
|
|
@@ -848,9 +886,9 @@ function Ht(e, t, n) {
|
|
|
848
886
|
}
|
|
849
887
|
}
|
|
850
888
|
function B(e, t) {
|
|
851
|
-
return `${e}\0${
|
|
889
|
+
return `${e}\0${Be(t)}`;
|
|
852
890
|
}
|
|
853
|
-
function
|
|
891
|
+
function Gt(e) {
|
|
854
892
|
let t = new Map(e.map((e) => [e.id, e])), n = /* @__PURE__ */ new Map();
|
|
855
893
|
return (e, r) => {
|
|
856
894
|
if (r === void 0) return;
|
|
@@ -860,28 +898,28 @@ function Ut(e) {
|
|
|
860
898
|
if (r === void 0) return;
|
|
861
899
|
i = {
|
|
862
900
|
blockById: new Map(r.blocks.map((e) => [e.id, e])),
|
|
863
|
-
contextByBlockId:
|
|
901
|
+
contextByBlockId: Rt(r.blocks),
|
|
864
902
|
textIdsByBlockId: /* @__PURE__ */ new Map()
|
|
865
903
|
}, n.set(e, i);
|
|
866
904
|
}
|
|
867
905
|
let a = i.blockById.get(r);
|
|
868
|
-
return a === void 0 ? void 0 :
|
|
906
|
+
return a === void 0 ? void 0 : Wt(a, i.contextByBlockId, i.textIdsByBlockId);
|
|
869
907
|
};
|
|
870
908
|
}
|
|
871
|
-
function
|
|
909
|
+
function Kt(e, t, n, r, i) {
|
|
872
910
|
let o = /* @__PURE__ */ new Map(), c = new Set(e.blocks.flatMap((e) => {
|
|
873
911
|
if (!e.text.includes("Art.")) return [];
|
|
874
|
-
let t =
|
|
875
|
-
return t === void 0 ? [] : m(
|
|
912
|
+
let t = Wt(e, i, o);
|
|
913
|
+
return t === void 0 ? [] : m(O(e.text).output).map(({ num: e }) => B(t, e));
|
|
876
914
|
}));
|
|
877
915
|
if (c.size === 0) return /* @__PURE__ */ new Map();
|
|
878
916
|
let l = new Set([...c].map((e) => e.slice(e.indexOf("\0") + 1))), u = t.flatMap((t) => {
|
|
879
917
|
if (Ke(t.reference)) return [];
|
|
880
918
|
let s = new Set([...a(t.reference)].filter((e) => e.type === "article" && e.num).map((e) => e.num));
|
|
881
|
-
if (![...s].some((e) => l.has(
|
|
882
|
-
let c = Mt(n,
|
|
919
|
+
if (![...s].some((e) => l.has(Be(e)))) return [];
|
|
920
|
+
let c = Mt(n, Ht(e, r, t)) ?? jt(e.blocks, t);
|
|
883
921
|
if (!c) return [];
|
|
884
|
-
let u =
|
|
922
|
+
let u = Wt(c, i, o);
|
|
885
923
|
return u === void 0 ? [] : [{
|
|
886
924
|
block: c,
|
|
887
925
|
directive: t,
|
|
@@ -895,21 +933,21 @@ function Wt(e, t, n, r, i) {
|
|
|
895
933
|
let f = new Set(t.flatMap((t) => {
|
|
896
934
|
let a = We(t);
|
|
897
935
|
if (a.length === 0) return [];
|
|
898
|
-
let s = Mt(n,
|
|
936
|
+
let s = Mt(n, Ht(e, r, t)) ?? jt(e.blocks, t);
|
|
899
937
|
if (!s) return [];
|
|
900
|
-
let c =
|
|
938
|
+
let c = Wt(s, i, o);
|
|
901
939
|
return c === void 0 ? [] : a.map(({ num: e }) => B(c, e)).filter((e) => d.has(e));
|
|
902
940
|
})), p = /* @__PURE__ */ new Map();
|
|
903
941
|
for (let { block: e, directive: t, nums: n, textId: r } of u) {
|
|
904
942
|
if (![...n].some((e) => c.has(B(r, e)))) continue;
|
|
905
|
-
let i = new Set(s(new
|
|
943
|
+
let i = new Set(s(new A(O(t.sourceText).output)).flatMap((e) => [...a(e)].filter((e) => e.type === "article" && e.num).map((e) => e.num))), o = [...n].filter((e) => c.has(B(r, e)) && !f.has(B(r, e)) && [...i].some((t) => Be(t) === Be(e)));
|
|
906
944
|
o.length > 0 && p.set(e.id, [...new Set([...p.get(e.id) ?? [], ...o])]);
|
|
907
945
|
}
|
|
908
946
|
return p;
|
|
909
947
|
}
|
|
910
|
-
function
|
|
911
|
-
let n = performance.now(), r = performance.now(), i =
|
|
912
|
-
for (let t of e.blocks) t.qualifiedVersion =
|
|
948
|
+
function qt(e, t) {
|
|
949
|
+
let n = performance.now(), r = performance.now(), i = Vt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = Rt(e.blocks);
|
|
950
|
+
for (let t of e.blocks) t.qualifiedVersion = It(t);
|
|
913
951
|
let l = performance.now() - o, u = performance.now(), d = ee(), f = e.blocks[0], p = e.title !== void 0 && f?.text.startsWith(`${e.label}\n`) && (e.directiveText === f.text || e.directiveText.startsWith(`${f.text}\n`)), m = p && e.text.startsWith(`${e.label} ${e.title}`) ? " " : "", h = pe(p ? `${e.label}${m}${e.title}${e.directiveText.slice(f.text.length)}` : e.directiveText, t === void 0 ? void 0 : d);
|
|
914
952
|
if (p && !m) {
|
|
915
953
|
let t = e.label.length;
|
|
@@ -921,14 +959,14 @@ function Gt(e, t) {
|
|
|
921
959
|
}
|
|
922
960
|
}));
|
|
923
961
|
}
|
|
924
|
-
let g = performance.now() - u, _ = performance.now(), v =
|
|
962
|
+
let g = performance.now() - u, _ = performance.now(), v = Kt(e, h, s, i, c), y = /* @__PURE__ */ new Map(), b = /* @__PURE__ */ new Map(), x = [], S, C;
|
|
925
963
|
for (let t of e.blocks) {
|
|
926
|
-
let e = Nt(t);
|
|
927
|
-
(e.length > 0 || t.qualifiedVersion || v.has(t.id)) && (x = v.has(t.id) ? [] : e, S = t.qualifiedVersion), y.set(t.id, x), b.set(t.id, S);
|
|
964
|
+
let e = Nt(t), n = e.length === 0 ? Ft(t, C) : void 0;
|
|
965
|
+
(e.length > 0 || n !== void 0 || t.qualifiedVersion || v.has(t.id) || Pt(t)) && (x = v.has(t.id) ? [] : n ?? e, S = t.qualifiedVersion), y.set(t.id, x), b.set(t.id, S), C = t;
|
|
928
966
|
}
|
|
929
967
|
l += performance.now() - _;
|
|
930
|
-
let
|
|
931
|
-
let n =
|
|
968
|
+
let te = performance.now(), ne = h.map((t) => {
|
|
969
|
+
let n = Ht(e, i, t), r = Mt(s, n) ?? jt(e.blocks, t), a = Nt(r), o = r?.id !== void 0 && v.has(r.id) ? [] : a.length > 0 ? a : r?.id === void 0 ? [] : y.get(r.id) ?? [], l = Ut(e, r, t), u = Bt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
|
|
932
970
|
return {
|
|
933
971
|
articleId: e.id,
|
|
934
972
|
blockId: r?.id,
|
|
@@ -948,19 +986,19 @@ function Gt(e, t) {
|
|
|
948
986
|
...o.length > 0 || r?.id !== void 0 && v.has(r.id) ? { targetIds: o } : {},
|
|
949
987
|
...r?.id !== void 0 && b.get(r.id) ? { qualifiedVersion: b.get(r.id) } : {}
|
|
950
988
|
};
|
|
951
|
-
}),
|
|
989
|
+
}), re = /* @__PURE__ */ new Set(), ie = /* @__PURE__ */ new Map(), ae = ne.flatMap((e) => {
|
|
952
990
|
let t = e.blockId ? s.get(e.blockId) : void 0;
|
|
953
991
|
if (!t || e.internallyCreatedTargetNums?.length) return [e];
|
|
954
|
-
if (
|
|
955
|
-
let n =
|
|
956
|
-
if (n === void 0 && (n =
|
|
957
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
992
|
+
if (re.has(t.id)) return [];
|
|
993
|
+
let n = ie.get(t.id);
|
|
994
|
+
if (n === void 0 && (n = Ie(t.text, Nt(t), e.directive), ie.set(t.id, n)), !n) {
|
|
995
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Fe(t.text, n.operations.length) : null;
|
|
958
996
|
return [r ? {
|
|
959
997
|
...e,
|
|
960
998
|
sourceAnnotations: r
|
|
961
999
|
} : e];
|
|
962
1000
|
}
|
|
963
|
-
return
|
|
1001
|
+
return re.add(t.id), [{
|
|
964
1002
|
...e,
|
|
965
1003
|
effects: n.map((t) => ({
|
|
966
1004
|
...t,
|
|
@@ -971,21 +1009,21 @@ function Gt(e, t) {
|
|
|
971
1009
|
}
|
|
972
1010
|
}))
|
|
973
1011
|
}];
|
|
974
|
-
}),
|
|
1012
|
+
}), oe = performance.now() - te;
|
|
975
1013
|
return t?.push({
|
|
976
1014
|
actionDirectiveExtraction: d,
|
|
977
1015
|
articleId: e.id,
|
|
978
1016
|
blockCount: e.blocks.length,
|
|
979
1017
|
buildRangesMs: Math.round(a * 10) / 10,
|
|
980
|
-
directiveCount:
|
|
1018
|
+
directiveCount: ae.length,
|
|
981
1019
|
directiveTextSize: e.directiveText.length,
|
|
982
1020
|
extractActionDirectivesMs: Math.round(g * 10) / 10,
|
|
983
|
-
mapDirectivesMs: Math.round(
|
|
1021
|
+
mapDirectivesMs: Math.round(oe * 10) / 10,
|
|
984
1022
|
prepareBlockIndexesMs: Math.round(l * 10) / 10,
|
|
985
1023
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
986
|
-
}),
|
|
1024
|
+
}), ae;
|
|
987
1025
|
}
|
|
988
|
-
function
|
|
1026
|
+
function Jt(e, t) {
|
|
989
1027
|
let n = /* @__PURE__ */ new Map(), r = [], i = /* @__PURE__ */ new Set(), a = /* @__PURE__ */ new Map();
|
|
990
1028
|
for (let o of e) {
|
|
991
1029
|
let e = We(o.directive);
|
|
@@ -1025,7 +1063,7 @@ function Kt(e, t) {
|
|
|
1025
1063
|
definitions: r
|
|
1026
1064
|
};
|
|
1027
1065
|
}
|
|
1028
|
-
function
|
|
1066
|
+
function Yt(e, t, n, r) {
|
|
1029
1067
|
if (t.length === 0) return e;
|
|
1030
1068
|
let i = new Map(t.flatMap((e) => {
|
|
1031
1069
|
let t = r(e.articleId, e.blockId);
|
|
@@ -1048,7 +1086,7 @@ function qt(e, t, n, r) {
|
|
|
1048
1086
|
};
|
|
1049
1087
|
});
|
|
1050
1088
|
}
|
|
1051
|
-
function
|
|
1089
|
+
function Xt(e) {
|
|
1052
1090
|
switch (e.kind) {
|
|
1053
1091
|
case "insert_after":
|
|
1054
1092
|
case "insert_before": return [e.insertText];
|
|
@@ -1066,8 +1104,8 @@ function Jt(e) {
|
|
|
1066
1104
|
default: return [];
|
|
1067
1105
|
}
|
|
1068
1106
|
}
|
|
1069
|
-
function
|
|
1070
|
-
return e.flatMap((e) =>
|
|
1107
|
+
function Zt(e) {
|
|
1108
|
+
return e.flatMap((e) => Xt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
1071
1109
|
code: "nested_french_quote_in_redaction",
|
|
1072
1110
|
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.",
|
|
1073
1111
|
details: {
|
|
@@ -1079,18 +1117,18 @@ function Yt(e) {
|
|
|
1079
1117
|
}
|
|
1080
1118
|
})));
|
|
1081
1119
|
}
|
|
1082
|
-
function
|
|
1083
|
-
return
|
|
1120
|
+
function Qt(e) {
|
|
1121
|
+
return Xt(e).map((t) => ({
|
|
1084
1122
|
directiveKind: e.kind,
|
|
1085
1123
|
text: t
|
|
1086
1124
|
}));
|
|
1087
1125
|
}
|
|
1088
|
-
function
|
|
1126
|
+
function $t(e) {
|
|
1089
1127
|
let t = /* @__PURE__ */ new Set();
|
|
1090
1128
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
1091
1129
|
return Array.from(t);
|
|
1092
1130
|
}
|
|
1093
|
-
function
|
|
1131
|
+
function en(e, t) {
|
|
1094
1132
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
1095
1133
|
for (let e of r) {
|
|
1096
1134
|
let t = n.get(e);
|
|
@@ -1102,11 +1140,11 @@ function Qt(e, t) {
|
|
|
1102
1140
|
}
|
|
1103
1141
|
return i;
|
|
1104
1142
|
}
|
|
1105
|
-
function
|
|
1143
|
+
function tn(e, t, n) {
|
|
1106
1144
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
1107
1145
|
}
|
|
1108
|
-
function
|
|
1109
|
-
let r =
|
|
1146
|
+
function nn(e, t, n) {
|
|
1147
|
+
let r = $t(n), i = r.flatMap((t) => {
|
|
1110
1148
|
for (let n of e.blocks) {
|
|
1111
1149
|
let e = n.text.indexOf(t);
|
|
1112
1150
|
if (e !== -1) return [{
|
|
@@ -1125,7 +1163,7 @@ function en(e, t, n) {
|
|
|
1125
1163
|
e.directiveText
|
|
1126
1164
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
1127
1165
|
if (!o) return [];
|
|
1128
|
-
let s =
|
|
1166
|
+
let s = en(e, t);
|
|
1129
1167
|
if (s.length === 0) return [];
|
|
1130
1168
|
let c = [], l = 0;
|
|
1131
1169
|
for (let e of r) {
|
|
@@ -1133,7 +1171,7 @@ function en(e, t, n) {
|
|
|
1133
1171
|
if (t === -1) continue;
|
|
1134
1172
|
let n = t + e.length;
|
|
1135
1173
|
l = n;
|
|
1136
|
-
let r =
|
|
1174
|
+
let r = tn(s, t, n);
|
|
1137
1175
|
r && c.push({
|
|
1138
1176
|
blockId: r.block.id,
|
|
1139
1177
|
start: t - r.start,
|
|
@@ -1143,15 +1181,15 @@ function en(e, t, n) {
|
|
|
1143
1181
|
}
|
|
1144
1182
|
return c;
|
|
1145
1183
|
}
|
|
1146
|
-
function
|
|
1184
|
+
function rn(e, t) {
|
|
1147
1185
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
1148
1186
|
return t.flatMap((e) => {
|
|
1149
1187
|
let t = n.get(e.articleId);
|
|
1150
|
-
return t ?
|
|
1188
|
+
return t ? Qt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
1151
1189
|
articleId: e.articleId,
|
|
1152
1190
|
code: "nested_french_quote_in_redaction",
|
|
1153
1191
|
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.",
|
|
1154
|
-
ranges:
|
|
1192
|
+
ranges: nn(t, e, r),
|
|
1155
1193
|
severity: "warning",
|
|
1156
1194
|
details: {
|
|
1157
1195
|
blockId: e.blockId,
|
|
@@ -1162,7 +1200,7 @@ function tn(e, t) {
|
|
|
1162
1200
|
})) : [];
|
|
1163
1201
|
});
|
|
1164
1202
|
}
|
|
1165
|
-
function
|
|
1203
|
+
function an(e, t) {
|
|
1166
1204
|
let n = new Map(e.flatMap((e) => [...re(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
1167
1205
|
articleId: e.id,
|
|
1168
1206
|
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
@@ -1185,7 +1223,7 @@ function nn(e, t) {
|
|
|
1185
1223
|
}];
|
|
1186
1224
|
});
|
|
1187
1225
|
}
|
|
1188
|
-
function
|
|
1226
|
+
function on(e, t) {
|
|
1189
1227
|
let n = new Map(e.flatMap((e) => e.blocks.map((e) => [e.id, e]))), r = /* @__PURE__ */ new Set();
|
|
1190
1228
|
return t.flatMap((e) => {
|
|
1191
1229
|
let t = e.blockId, i = e.internallyCreatedTargetNums;
|
|
@@ -1207,8 +1245,8 @@ function rn(e, t) {
|
|
|
1207
1245
|
}] : [];
|
|
1208
1246
|
});
|
|
1209
1247
|
}
|
|
1210
|
-
function
|
|
1211
|
-
let c = new
|
|
1248
|
+
function sn(e, t, n, r, i, a, o = !0, s) {
|
|
1249
|
+
let c = new ye("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 = {
|
|
1212
1250
|
sourceFormat: e,
|
|
1213
1251
|
documentDate: r,
|
|
1214
1252
|
html: t,
|
|
@@ -1232,14 +1270,14 @@ function an(e, t, n, r, i, a, o = !0, s) {
|
|
|
1232
1270
|
let f = c.timeSync("extractGlobalApplicabilityDate", () => Qe(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
1233
1271
|
let e = [];
|
|
1234
1272
|
for (let t of i) {
|
|
1235
|
-
let n =
|
|
1273
|
+
let n = qt(t, c.enabled ? p : void 0);
|
|
1236
1274
|
e.push(...n);
|
|
1237
1275
|
}
|
|
1238
1276
|
return e;
|
|
1239
|
-
}, { count: i.length }), h =
|
|
1240
|
-
...
|
|
1241
|
-
...
|
|
1242
|
-
...
|
|
1277
|
+
}, { count: i.length }), h = Gt(i), { createdArticlesByDirective: g, definitions: _ } = c.timeSync("buildInternalArticleDefinitions", () => Jt(m, h), { count: m.length }), v = c.timeSync("attachInternalArticleMetadata", () => Yt(m, _, g, h), { count: m.length }), b = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Zt(v), { count: v.length }), x = [...s ?? [], ...b], ee = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [
|
|
1278
|
+
...rn(i, v),
|
|
1279
|
+
...an(i, v),
|
|
1280
|
+
...on(i, v)
|
|
1243
1281
|
], { count: v.length }), S = {
|
|
1244
1282
|
...d,
|
|
1245
1283
|
...f ? { globalApplicabilityDate: f } : {},
|
|
@@ -1334,18 +1372,18 @@ function an(e, t, n, r, i, a, o = !0, s) {
|
|
|
1334
1372
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1335
1373
|
}), S;
|
|
1336
1374
|
}
|
|
1337
|
-
function
|
|
1375
|
+
function cn(e) {
|
|
1338
1376
|
return { items: e.map((e) => ({
|
|
1339
1377
|
id: e.id,
|
|
1340
1378
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1341
1379
|
type: "article"
|
|
1342
1380
|
})) };
|
|
1343
1381
|
}
|
|
1344
|
-
function
|
|
1345
|
-
return Array.from(de(e)).filter((e) => e.type === "article").map((e) =>
|
|
1382
|
+
function ln(e) {
|
|
1383
|
+
return Array.from(de(e)).filter((e) => e.type === "article").map((e) => P(e.line.split(/[::]/u)[0]));
|
|
1346
1384
|
}
|
|
1347
|
-
function
|
|
1348
|
-
let i = vt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ?
|
|
1385
|
+
function un(e, t, n, r) {
|
|
1386
|
+
let i = vt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(de(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? F(e.num) : b(e.html)("p.TCNumArticle").first().attr("id") ?? F(e.label) : e.id), c = o.map((e) => e.id);
|
|
1349
1387
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1350
1388
|
code: "article_toc_source_heading_mismatch",
|
|
1351
1389
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1361,8 +1399,8 @@ function cn(e, t, n, r) {
|
|
|
1361
1399
|
});
|
|
1362
1400
|
return i;
|
|
1363
1401
|
}
|
|
1364
|
-
function
|
|
1365
|
-
let r =
|
|
1402
|
+
function dn(e, t, n) {
|
|
1403
|
+
let r = ln(y(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => P(e.label)), a = cn(e), o = [...n, ...un(e, a, t, "assemblee-html")];
|
|
1366
1404
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1367
1405
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1368
1406
|
o.push({
|
|
@@ -1386,8 +1424,8 @@ function ln(e, t, n) {
|
|
|
1386
1424
|
tableOfContents: a
|
|
1387
1425
|
};
|
|
1388
1426
|
}
|
|
1389
|
-
async function
|
|
1390
|
-
let n = new
|
|
1427
|
+
async function fn(e, t) {
|
|
1428
|
+
let n = new ye("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => pn(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => Dt(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => b(i)), o = n.timeSync("extractArticleHeadings", () => bt(a)), s = new Set(o.map((e) => e.id)), c = mt(a).filter((e) => !s.has(F(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1391
1429
|
code: "article_toc_source_heading_mismatch",
|
|
1392
1430
|
message: "Some structural article headings were not retained",
|
|
1393
1431
|
details: { discardedCandidates: c }
|
|
@@ -1403,7 +1441,7 @@ async function un(e, t) {
|
|
|
1403
1441
|
directiveText: i,
|
|
1404
1442
|
blocks: r
|
|
1405
1443
|
};
|
|
1406
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Et(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () =>
|
|
1444
|
+
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => Et(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => dn(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => sn("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
|
|
1407
1445
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1408
1446
|
articleCount: h.articles.length,
|
|
1409
1447
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1411,7 +1449,7 @@ async function un(e, t) {
|
|
|
1411
1449
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1412
1450
|
}), h;
|
|
1413
1451
|
}
|
|
1414
|
-
async function
|
|
1452
|
+
async function pn(e, t) {
|
|
1415
1453
|
return {
|
|
1416
1454
|
sourceFormat: "assemblee-html",
|
|
1417
1455
|
documentDate: t.date,
|
|
@@ -1422,7 +1460,7 @@ async function dn(e, t) {
|
|
|
1422
1460
|
function V(e) {
|
|
1423
1461
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1424
1462
|
}
|
|
1425
|
-
function
|
|
1463
|
+
function mn(e) {
|
|
1426
1464
|
let t = e;
|
|
1427
1465
|
for (let e = 0; e < 3; e++) {
|
|
1428
1466
|
let e = t;
|
|
@@ -1430,33 +1468,33 @@ function fn(e) {
|
|
|
1430
1468
|
}
|
|
1431
1469
|
return t;
|
|
1432
1470
|
}
|
|
1433
|
-
function
|
|
1471
|
+
function hn(e) {
|
|
1434
1472
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1435
1473
|
}
|
|
1436
1474
|
function H(e) {
|
|
1437
1475
|
return e.name.replace(/^.*:/u, "");
|
|
1438
1476
|
}
|
|
1439
|
-
function
|
|
1477
|
+
function gn(e, t) {
|
|
1440
1478
|
return t.children.map((t) => U(e, t)).filter(Boolean).join("");
|
|
1441
1479
|
}
|
|
1442
|
-
function
|
|
1443
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1480
|
+
function _n(e, t) {
|
|
1481
|
+
return t.children.map((t) => t.type === "text" && hn(t.data) ? mn(t.data) : U(e, t)).filter(Boolean).join("");
|
|
1444
1482
|
}
|
|
1445
1483
|
function U(e, t) {
|
|
1446
1484
|
if (t.type === "text") {
|
|
1447
1485
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1448
|
-
return
|
|
1486
|
+
return hn(e) ? mn(e) : V(e);
|
|
1449
1487
|
}
|
|
1450
1488
|
if (!I(t)) return "";
|
|
1451
|
-
let n = H(t), r =
|
|
1489
|
+
let n = H(t), r = () => gn(e, t);
|
|
1452
1490
|
switch (n) {
|
|
1453
|
-
case "p": return `<p${
|
|
1491
|
+
case "p": return `<p${bn(e, t, [
|
|
1454
1492
|
"id",
|
|
1455
1493
|
"class",
|
|
1456
1494
|
"align",
|
|
1457
1495
|
"valign",
|
|
1458
1496
|
"style"
|
|
1459
|
-
])}>${r}</p>`;
|
|
1497
|
+
])}>${r()}</p>`;
|
|
1460
1498
|
case "br": return "<br>";
|
|
1461
1499
|
case "span":
|
|
1462
1500
|
case "b":
|
|
@@ -1464,42 +1502,42 @@ function U(e, t) {
|
|
|
1464
1502
|
case "u":
|
|
1465
1503
|
case "sup":
|
|
1466
1504
|
case "sub":
|
|
1467
|
-
case "abbr": return `<${n}${
|
|
1505
|
+
case "abbr": return `<${n}${bn(e, t, [
|
|
1468
1506
|
"id",
|
|
1469
1507
|
"class",
|
|
1470
1508
|
"title",
|
|
1471
1509
|
"style"
|
|
1472
|
-
])}>${r}</${n}>`;
|
|
1473
|
-
case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${
|
|
1510
|
+
])}>${r()}</${n}>`;
|
|
1511
|
+
case "a": return `<a href="${V(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${bn(e, t, [
|
|
1474
1512
|
"id",
|
|
1475
1513
|
"class",
|
|
1476
1514
|
"title",
|
|
1477
1515
|
"style"
|
|
1478
|
-
])}>${r}</a>`;
|
|
1516
|
+
])}>${r()}</a>`;
|
|
1479
1517
|
case "table":
|
|
1480
1518
|
case "thead":
|
|
1481
1519
|
case "tbody":
|
|
1482
1520
|
case "tr":
|
|
1483
1521
|
case "th":
|
|
1484
|
-
case "td": return
|
|
1485
|
-
case "caption": return `<caption${
|
|
1522
|
+
case "td": return xn(e, t, n, r());
|
|
1523
|
+
case "caption": return `<caption${bn(e, t, [
|
|
1486
1524
|
"id",
|
|
1487
1525
|
"class",
|
|
1488
1526
|
"align",
|
|
1489
1527
|
"style"
|
|
1490
|
-
])}>${r}</caption>`;
|
|
1491
|
-
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1492
|
-
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1493
|
-
case "content": return
|
|
1494
|
-
case "alinea": return
|
|
1495
|
-
case "article": return
|
|
1528
|
+
])}>${r()}</caption>`;
|
|
1529
|
+
case "num": return `<span class="akn-num">${r()}</span> `;
|
|
1530
|
+
case "heading": return `<p class="akn-heading">${r()}</p>`;
|
|
1531
|
+
case "content": return _n(e, t);
|
|
1532
|
+
case "alinea": return In(e, t, "div", "akn-alinea");
|
|
1533
|
+
case "article": return In(e, t, "article", "akn-article");
|
|
1496
1534
|
case "blockList":
|
|
1497
|
-
case "list": return `<div class="akn-list">${r}</div>`;
|
|
1498
|
-
case "item": return
|
|
1535
|
+
case "list": return `<div class="akn-list">${r()}</div>`;
|
|
1536
|
+
case "item": return In(e, t, "div", "akn-item");
|
|
1499
1537
|
case "listIntroduction":
|
|
1500
1538
|
case "listWrapUp":
|
|
1501
1539
|
case "intro":
|
|
1502
|
-
case "wrapUp": return `<div class="akn-${n}">${r}</div>`;
|
|
1540
|
+
case "wrapUp": return `<div class="akn-${n}">${r()}</div>`;
|
|
1503
1541
|
case "part":
|
|
1504
1542
|
case "title":
|
|
1505
1543
|
case "chapter":
|
|
@@ -1511,12 +1549,12 @@ function U(e, t) {
|
|
|
1511
1549
|
case "book":
|
|
1512
1550
|
case "tome":
|
|
1513
1551
|
case "subchapter":
|
|
1514
|
-
case "subsection": return
|
|
1515
|
-
case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
|
|
1516
|
-
default: return r;
|
|
1552
|
+
case "subsection": return In(e, t, "section", `akn-${n}`);
|
|
1553
|
+
case "crossHeading": return `<p class="akn-cross-heading">${r()}</p>`;
|
|
1554
|
+
default: return r();
|
|
1517
1555
|
}
|
|
1518
1556
|
}
|
|
1519
|
-
function
|
|
1557
|
+
function vn(e, t) {
|
|
1520
1558
|
let n = e(t).text();
|
|
1521
1559
|
if (!n.includes("«") || !n.includes("»") || e(t).find("table").length > 0) return;
|
|
1522
1560
|
let r = e(t).find("tr").get().filter((n) => e(n).closest("table").get(0) === t);
|
|
@@ -1527,28 +1565,28 @@ function gn(e, t) {
|
|
|
1527
1565
|
let l = s ? o[0] : void 0, u = c ? o.at(-1) : void 0;
|
|
1528
1566
|
if (l) {
|
|
1529
1567
|
let t = Number(e(l).attr("rowspan") ?? "1");
|
|
1530
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 &&
|
|
1568
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && N(e(l).text()) !== "«") return [];
|
|
1531
1569
|
i = t - 1;
|
|
1532
1570
|
}
|
|
1533
1571
|
if (u) {
|
|
1534
1572
|
let t = Number(e(u).attr("rowspan") ?? "1");
|
|
1535
|
-
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(
|
|
1573
|
+
if (!Number.isInteger(t) || t < 1 || t > r.length - n || t > 1 && !/^»\s*;?$/u.test(N(e(u).text()))) return [];
|
|
1536
1574
|
a = t - 1;
|
|
1537
1575
|
}
|
|
1538
1576
|
return [l, u];
|
|
1539
1577
|
});
|
|
1540
1578
|
if (o.some((e) => e.length !== 2)) return;
|
|
1541
|
-
let s = o.map(([t]) => t ?
|
|
1579
|
+
let s = o.map(([t]) => t ? N(e(t).text()) : ""), c = o.map(([, t]) => t ? N(e(t).text()) : "");
|
|
1542
1580
|
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("»")))) {
|
|
1543
1581
|
e(t).addClass("akn-quoted-table");
|
|
1544
1582
|
for (let [t, n] of o) t && e(t).addClass("akn-quote-column"), n && e(n).addClass("akn-quote-column");
|
|
1545
1583
|
}
|
|
1546
1584
|
}
|
|
1547
|
-
function
|
|
1548
|
-
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(
|
|
1549
|
-
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) =>
|
|
1585
|
+
function yn(e, t) {
|
|
1586
|
+
let n = e(t).find("td,th").get(), r = e(n.find((t) => e(t).hasClass("akn-quote-column") && /^»\s*;?$/u.test(N(e(t).text())))).text();
|
|
1587
|
+
return `« ${n.filter((t) => !e(t).hasClass("akn-quote-column")).map((t) => N(e(t).text())).filter(Boolean).join(" ")} »${r.includes(";") ? " ;" : ""}`;
|
|
1550
1588
|
}
|
|
1551
|
-
function
|
|
1589
|
+
function bn(e, t, n, r = {}) {
|
|
1552
1590
|
let i = [];
|
|
1553
1591
|
for (let r of n) {
|
|
1554
1592
|
if (r === "style") continue;
|
|
@@ -1558,8 +1596,8 @@ function vn(e, t, n, r = {}) {
|
|
|
1558
1596
|
let a = r.style ?? e(t).attr("style");
|
|
1559
1597
|
return a && i.push(`style="${V(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1560
1598
|
}
|
|
1561
|
-
function
|
|
1562
|
-
return `<${n}${
|
|
1599
|
+
function xn(e, t, n, r) {
|
|
1600
|
+
return `<${n}${bn(e, t, [
|
|
1563
1601
|
"id",
|
|
1564
1602
|
"class",
|
|
1565
1603
|
"colspan",
|
|
@@ -1572,56 +1610,56 @@ function yn(e, t, n, r) {
|
|
|
1572
1610
|
"cellspacing",
|
|
1573
1611
|
"cellpadding",
|
|
1574
1612
|
"style"
|
|
1575
|
-
], { style:
|
|
1613
|
+
], { style: Sn(e, t, n) })}>${r}</${n}>`;
|
|
1576
1614
|
}
|
|
1577
|
-
function
|
|
1615
|
+
function Sn(e, t, n) {
|
|
1578
1616
|
let r = e(t).attr("style") ?? "";
|
|
1579
|
-
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r =
|
|
1617
|
+
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r = Cn(r, "text-align", "center")), r || void 0;
|
|
1580
1618
|
}
|
|
1581
|
-
function
|
|
1619
|
+
function Cn(e, t, n) {
|
|
1582
1620
|
let r = e.trim();
|
|
1583
1621
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1584
1622
|
}
|
|
1585
|
-
function
|
|
1586
|
-
let n = [
|
|
1623
|
+
function wn(e, t) {
|
|
1624
|
+
let n = [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean);
|
|
1587
1625
|
return n.length === 0 ? "" : `<p class="akn-heading">${V(n.join(" "))}</p>`;
|
|
1588
1626
|
}
|
|
1589
|
-
function
|
|
1627
|
+
function Tn(e, t) {
|
|
1590
1628
|
if (!t) return !1;
|
|
1591
|
-
let n = (e) =>
|
|
1592
|
-
return n(
|
|
1629
|
+
let n = (e) => N(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1630
|
+
return n(N(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1593
1631
|
}
|
|
1594
|
-
function
|
|
1632
|
+
function En(e) {
|
|
1595
1633
|
let t = V(e);
|
|
1596
1634
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}" data-pastille="${t}"></span></p>`;
|
|
1597
1635
|
}
|
|
1598
|
-
function
|
|
1599
|
-
return
|
|
1636
|
+
function Dn(e, t) {
|
|
1637
|
+
return On([kn({
|
|
1600
1638
|
content: e,
|
|
1601
1639
|
pastille: t
|
|
1602
1640
|
})]);
|
|
1603
1641
|
}
|
|
1604
|
-
function
|
|
1642
|
+
function On(e) {
|
|
1605
1643
|
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>`;
|
|
1606
1644
|
}
|
|
1607
|
-
function
|
|
1645
|
+
function kn({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1608
1646
|
let i = n ? ` style="${V(n)}"` : "", a = r ? ` ${V(r)}` : "";
|
|
1609
|
-
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}">${
|
|
1647
|
+
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}">${En(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>`;
|
|
1610
1648
|
}
|
|
1611
|
-
function
|
|
1649
|
+
function An({ content: e, style: t, contextClass: n }) {
|
|
1612
1650
|
let r = t ? ` style="${V(t)}"` : "", i = n ? ` ${V(n)}` : "";
|
|
1613
1651
|
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>`;
|
|
1614
1652
|
}
|
|
1615
|
-
function
|
|
1653
|
+
function jn(e, t) {
|
|
1616
1654
|
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
1617
1655
|
}
|
|
1618
|
-
function
|
|
1656
|
+
function Mn(e, t) {
|
|
1619
1657
|
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1620
1658
|
}
|
|
1621
|
-
function
|
|
1659
|
+
function Nn(e, t) {
|
|
1622
1660
|
return e(t).children().get().filter((e) => I(e) ? H(e) === "content" : !1).map((t) => U(e, t)).filter(Boolean).join("\n");
|
|
1623
1661
|
}
|
|
1624
|
-
function
|
|
1662
|
+
function Pn(e, t) {
|
|
1625
1663
|
let n = [];
|
|
1626
1664
|
return e(t).children().each((t, r) => {
|
|
1627
1665
|
if (!I(r)) return;
|
|
@@ -1629,17 +1667,17 @@ function Mn(e, t) {
|
|
|
1629
1667
|
i === "num" || i === "heading" || i === "content" || n.push(U(e, r));
|
|
1630
1668
|
}), n.filter(Boolean);
|
|
1631
1669
|
}
|
|
1632
|
-
function
|
|
1633
|
-
let n = [], r = H(t), i = r === "alinea" ?
|
|
1670
|
+
function Fn(e, t) {
|
|
1671
|
+
let n = [], r = H(t), i = r === "alinea" ? jn(e, t) : void 0, a = Nn(e, t), o = Ln(e, t, r, i), s = Un(e, t);
|
|
1634
1672
|
if (i) {
|
|
1635
|
-
let r = [
|
|
1636
|
-
|
|
1673
|
+
let r = [Tn(a, N(e(t).children("num").first().text())) ? "" : wn(e, t), a].filter(Boolean).join("\n");
|
|
1674
|
+
N(r) && n.push(kn({
|
|
1637
1675
|
content: r,
|
|
1638
1676
|
pastille: i,
|
|
1639
1677
|
style: o,
|
|
1640
1678
|
contextClass: s
|
|
1641
1679
|
}));
|
|
1642
|
-
} else a && n.push(
|
|
1680
|
+
} else a && n.push(An({
|
|
1643
1681
|
content: a,
|
|
1644
1682
|
style: o,
|
|
1645
1683
|
contextClass: s
|
|
@@ -1647,30 +1685,30 @@ function Nn(e, t) {
|
|
|
1647
1685
|
for (let r of e(t).children().get()) {
|
|
1648
1686
|
if (!I(r)) continue;
|
|
1649
1687
|
let t = H(r);
|
|
1650
|
-
t === "num" || t === "heading" || t === "content" || (t === "alinea" ||
|
|
1688
|
+
t === "num" || t === "heading" || t === "content" || (t === "alinea" || Mn(e, r)) && n.push(...Fn(e, r));
|
|
1651
1689
|
}
|
|
1652
1690
|
return n;
|
|
1653
1691
|
}
|
|
1654
|
-
function
|
|
1655
|
-
let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o =
|
|
1692
|
+
function In(e, t, n, r) {
|
|
1693
|
+
let i = H(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = jn(e, t), s = Ln(e, t, i, o), c = [`<${n} ${[
|
|
1656
1694
|
a ? `id="${V(a)}"` : void 0,
|
|
1657
1695
|
`class="${r}"`,
|
|
1658
1696
|
o ? `data-pastille="${V(o)}"` : void 0,
|
|
1659
1697
|
s ? `style="${V(s)}"` : void 0
|
|
1660
1698
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1661
1699
|
if (i === "part" || i === "title") {
|
|
1662
|
-
let r =
|
|
1700
|
+
let r = Bn(e, t, i), a = Hn(e, t), o = r ? [An({
|
|
1663
1701
|
content: r,
|
|
1664
1702
|
contextClass: a
|
|
1665
1703
|
})] : [], s = () => {
|
|
1666
|
-
o.length !== 0 && (c.push(
|
|
1704
|
+
o.length !== 0 && (c.push(zn(o)), o = []);
|
|
1667
1705
|
};
|
|
1668
1706
|
return e(t).children().each((t, n) => {
|
|
1669
1707
|
if (!I(n)) return;
|
|
1670
1708
|
let r = H(n);
|
|
1671
1709
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1672
1710
|
if (r === "alinea") {
|
|
1673
|
-
o.push(...
|
|
1711
|
+
o.push(...Fn(e, n));
|
|
1674
1712
|
return;
|
|
1675
1713
|
}
|
|
1676
1714
|
s(), c.push(U(e, n));
|
|
@@ -1678,17 +1716,17 @@ function Pn(e, t, n, r) {
|
|
|
1678
1716
|
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1679
1717
|
}
|
|
1680
1718
|
if (i === "article") {
|
|
1681
|
-
let r =
|
|
1719
|
+
let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = C(r) ?? {
|
|
1682
1720
|
label: r,
|
|
1683
1721
|
num: r
|
|
1684
1722
|
}, 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>`;
|
|
1685
|
-
if (
|
|
1686
|
-
let r = [
|
|
1723
|
+
if (Mn(e, t)) {
|
|
1724
|
+
let r = [An({
|
|
1687
1725
|
content: o,
|
|
1688
|
-
contextClass:
|
|
1689
|
-
}), ...
|
|
1690
|
-
c.push(
|
|
1691
|
-
for (let n of
|
|
1726
|
+
contextClass: Gn(a.label)
|
|
1727
|
+
}), ...Fn(e, t)];
|
|
1728
|
+
c.push(On(r));
|
|
1729
|
+
for (let n of Pn(e, t)) n.includes("akn-pastille-table") || c.push(n);
|
|
1692
1730
|
return c.push(`</${n}>`), c.join("\n");
|
|
1693
1731
|
}
|
|
1694
1732
|
c.push(o);
|
|
@@ -1701,26 +1739,26 @@ function Pn(e, t, n, r) {
|
|
|
1701
1739
|
});
|
|
1702
1740
|
let u = l.join("\n");
|
|
1703
1741
|
if (i !== "article") {
|
|
1704
|
-
let n =
|
|
1742
|
+
let n = Tn(u, N(e(t).children("num").first().text())) ? "" : wn(e, t);
|
|
1705
1743
|
n && c.push(n);
|
|
1706
1744
|
}
|
|
1707
|
-
return c.push(o ?
|
|
1745
|
+
return c.push(o ? Dn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
1708
1746
|
}
|
|
1709
|
-
function
|
|
1710
|
-
let i =
|
|
1711
|
-
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i =
|
|
1747
|
+
function Ln(e, t, n, r) {
|
|
1748
|
+
let i = Rn(e(t).attr("style") ?? "", "font-family");
|
|
1749
|
+
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i = Cn(i, "text-align", "center")), i || void 0;
|
|
1712
1750
|
}
|
|
1713
|
-
function
|
|
1751
|
+
function Rn(e, t) {
|
|
1714
1752
|
return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
|
|
1715
1753
|
}
|
|
1716
|
-
function
|
|
1754
|
+
function zn(e) {
|
|
1717
1755
|
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>`;
|
|
1718
1756
|
}
|
|
1719
|
-
function
|
|
1720
|
-
let r =
|
|
1757
|
+
function Bn(e, t, n) {
|
|
1758
|
+
let r = N(e(t).children("num").first().text()), i = N(e(t).children("heading").first().text()), a = Vn(n), o = [];
|
|
1721
1759
|
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");
|
|
1722
1760
|
}
|
|
1723
|
-
function
|
|
1761
|
+
function Vn(e) {
|
|
1724
1762
|
switch (e) {
|
|
1725
1763
|
case "part": return {
|
|
1726
1764
|
num: "TCNumPartie",
|
|
@@ -1744,22 +1782,22 @@ function zn(e) {
|
|
|
1744
1782
|
};
|
|
1745
1783
|
}
|
|
1746
1784
|
}
|
|
1747
|
-
function
|
|
1748
|
-
let n =
|
|
1785
|
+
function Hn(e, t) {
|
|
1786
|
+
let n = Wn(N(e(t).children("num").first().text()));
|
|
1749
1787
|
if (n) return n;
|
|
1750
1788
|
for (let n of e(t).parents().get()) {
|
|
1751
1789
|
if (!I(n)) continue;
|
|
1752
1790
|
let t = H(n);
|
|
1753
1791
|
if (t !== "title" && t !== "part") continue;
|
|
1754
|
-
let r =
|
|
1792
|
+
let r = Wn(N(e(n).children("num").first().text()));
|
|
1755
1793
|
if (r) return r;
|
|
1756
1794
|
}
|
|
1757
1795
|
}
|
|
1758
|
-
function
|
|
1759
|
-
return
|
|
1796
|
+
function Un(e, t) {
|
|
1797
|
+
return Hn(e, t);
|
|
1760
1798
|
}
|
|
1761
|
-
function
|
|
1762
|
-
let [t, ...n] =
|
|
1799
|
+
function Wn(e) {
|
|
1800
|
+
let [t, ...n] = N(e).split(/\s+/u);
|
|
1763
1801
|
if (!t || n.length === 0) return;
|
|
1764
1802
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1765
1803
|
if ([
|
|
@@ -1769,10 +1807,10 @@ function Hn(e) {
|
|
|
1769
1807
|
"section"
|
|
1770
1808
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1771
1809
|
}
|
|
1772
|
-
function
|
|
1773
|
-
return `article-${
|
|
1810
|
+
function Gn(e) {
|
|
1811
|
+
return `article-${N(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1774
1812
|
}
|
|
1775
|
-
function
|
|
1813
|
+
function Kn(e) {
|
|
1776
1814
|
switch (e) {
|
|
1777
1815
|
case "part": return "partie";
|
|
1778
1816
|
case "book": return "livre";
|
|
@@ -1784,11 +1822,11 @@ function Wn(e) {
|
|
|
1784
1822
|
default: return;
|
|
1785
1823
|
}
|
|
1786
1824
|
}
|
|
1787
|
-
function
|
|
1788
|
-
return [
|
|
1825
|
+
function qn(e, t) {
|
|
1826
|
+
return [N(e(t).children("num").first().text()), N(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1789
1827
|
}
|
|
1790
|
-
function
|
|
1791
|
-
let n =
|
|
1828
|
+
function Jn(e, t) {
|
|
1829
|
+
let n = N(e(t).children("num").first().text()), r = N(e(t).children("heading").first().text()), i = C(n) ?? {
|
|
1792
1830
|
label: n,
|
|
1793
1831
|
num: n
|
|
1794
1832
|
};
|
|
@@ -1798,24 +1836,24 @@ function Kn(e, t) {
|
|
|
1798
1836
|
type: "article"
|
|
1799
1837
|
};
|
|
1800
1838
|
}
|
|
1801
|
-
function
|
|
1839
|
+
function Yn(e, t) {
|
|
1802
1840
|
e.items.push(...t.items);
|
|
1803
1841
|
}
|
|
1804
|
-
function
|
|
1842
|
+
function Xn(e, t) {
|
|
1805
1843
|
let n = { items: [] };
|
|
1806
1844
|
return e(t).children().each((t, r) => {
|
|
1807
1845
|
if (!I(r)) return;
|
|
1808
1846
|
let i = H(r);
|
|
1809
1847
|
if (i === "article") {
|
|
1810
|
-
n.items.push(
|
|
1848
|
+
n.items.push(Jn(e, r));
|
|
1811
1849
|
return;
|
|
1812
1850
|
}
|
|
1813
|
-
let a =
|
|
1851
|
+
let a = Kn(i);
|
|
1814
1852
|
if (!a) {
|
|
1815
|
-
|
|
1853
|
+
Yn(n, Xn(e, r));
|
|
1816
1854
|
return;
|
|
1817
1855
|
}
|
|
1818
|
-
let o =
|
|
1856
|
+
let o = qn(e, r), s = Xn(e, r);
|
|
1819
1857
|
!o && s.items.length === 0 || n.items.push({
|
|
1820
1858
|
...s,
|
|
1821
1859
|
id: e(r).attr("eId") ?? e(r).attr("GUID"),
|
|
@@ -1824,27 +1862,27 @@ function Jn(e, t) {
|
|
|
1824
1862
|
});
|
|
1825
1863
|
}), n;
|
|
1826
1864
|
}
|
|
1827
|
-
function
|
|
1865
|
+
function Zn(e) {
|
|
1828
1866
|
let t = e("body").first().get(0);
|
|
1829
|
-
return t === void 0 ? { items: [] } :
|
|
1867
|
+
return t === void 0 ? { items: [] } : Xn(e, t);
|
|
1830
1868
|
}
|
|
1831
|
-
function
|
|
1869
|
+
function Qn(e) {
|
|
1832
1870
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1833
1871
|
}
|
|
1834
|
-
function
|
|
1835
|
-
e("table").each((t, n) =>
|
|
1872
|
+
function $n(e) {
|
|
1873
|
+
e("table").each((t, n) => vn(e, n));
|
|
1836
1874
|
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>"];
|
|
1837
|
-
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(
|
|
1838
|
-
I(n) && r.push(H(n) === "article" ?
|
|
1875
|
+
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(gn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
|
|
1876
|
+
I(n) && r.push(H(n) === "article" ? In(e, n, "article", "akn-article") : U(e, n));
|
|
1839
1877
|
}), r.push("</section></div>"), r.join("\n");
|
|
1840
1878
|
}
|
|
1841
|
-
function
|
|
1879
|
+
function er(e) {
|
|
1842
1880
|
let t = b(e, { xml: {
|
|
1843
1881
|
decodeEntities: !1,
|
|
1844
1882
|
lowerCaseTags: !1,
|
|
1845
1883
|
lowerCaseAttributeNames: !1,
|
|
1846
1884
|
xmlMode: !0
|
|
1847
|
-
} }), n =
|
|
1885
|
+
} }), n = Qn(t), r = $n(t);
|
|
1848
1886
|
return {
|
|
1849
1887
|
sourceFormat: "akoma-ntoso",
|
|
1850
1888
|
documentDate: n,
|
|
@@ -1852,13 +1890,13 @@ function Qn(e) {
|
|
|
1852
1890
|
linkedHtml: r
|
|
1853
1891
|
};
|
|
1854
1892
|
}
|
|
1855
|
-
function
|
|
1856
|
-
return
|
|
1893
|
+
function tr(e) {
|
|
1894
|
+
return nr(b(e));
|
|
1857
1895
|
}
|
|
1858
|
-
function
|
|
1896
|
+
function nr(e) {
|
|
1859
1897
|
let t = [];
|
|
1860
1898
|
return e("article.akn-article").each((n, r) => {
|
|
1861
|
-
let i = e(r).find("p.TCNumArticle").first().get(0), a =
|
|
1899
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = N(i ? e(i).text() : ""), o = C(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = Tt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1862
1900
|
t.push({
|
|
1863
1901
|
id: s,
|
|
1864
1902
|
label: o.label,
|
|
@@ -1871,23 +1909,23 @@ function er(e) {
|
|
|
1871
1909
|
});
|
|
1872
1910
|
}), t;
|
|
1873
1911
|
}
|
|
1874
|
-
function
|
|
1912
|
+
function rr(e) {
|
|
1875
1913
|
let t = b(e);
|
|
1876
1914
|
return {
|
|
1877
|
-
articles:
|
|
1915
|
+
articles: nr(t),
|
|
1878
1916
|
htmlWithLinks: t.html()
|
|
1879
1917
|
};
|
|
1880
1918
|
}
|
|
1881
|
-
async function
|
|
1882
|
-
let n = new
|
|
1919
|
+
async function ir(e, t) {
|
|
1920
|
+
let n = new ye("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => b(e, { xml: {
|
|
1883
1921
|
decodeEntities: !1,
|
|
1884
1922
|
lowerCaseTags: !1,
|
|
1885
1923
|
lowerCaseAttributeNames: !1,
|
|
1886
1924
|
xmlMode: !0
|
|
1887
|
-
} })), i = t.date ??
|
|
1925
|
+
} })), i = t.date ?? Qn(r), a = n.timeSync("renderAknHtml", () => $n(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => ct(a, {
|
|
1888
1926
|
...t,
|
|
1889
1927
|
date: i
|
|
1890
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () =>
|
|
1928
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => tr(a)), c = n.timeSync("injectHiddenArticleSummary", () => Et(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => rr(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Zn(r)), p = n.timeSync("buildParsedDocument", () => sn("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, un(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
|
|
1891
1929
|
return n.log({
|
|
1892
1930
|
articleCount: p.articles.length,
|
|
1893
1931
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1895,8 +1933,8 @@ async function nr(e, t) {
|
|
|
1895
1933
|
targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
|
|
1896
1934
|
}), p;
|
|
1897
1935
|
}
|
|
1898
|
-
async function
|
|
1899
|
-
let n =
|
|
1936
|
+
async function ar(e, t) {
|
|
1937
|
+
let n = er(e), r = t.date ?? n.documentDate;
|
|
1900
1938
|
return {
|
|
1901
1939
|
sourceFormat: "akoma-ntoso",
|
|
1902
1940
|
documentDate: r,
|
|
@@ -1906,14 +1944,14 @@ async function rr(e, t) {
|
|
|
1906
1944
|
}
|
|
1907
1945
|
//#endregion
|
|
1908
1946
|
//#region src/lib/server/assemblee_document_search.ts
|
|
1909
|
-
var
|
|
1910
|
-
function
|
|
1947
|
+
var or = /\bexpos[ée]\s+des\s+motifs\b/giu, sr = /\barticle\s+(?:premier|1er|\d+)/iu;
|
|
1948
|
+
function cr(e) {
|
|
1911
1949
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1912
1950
|
}
|
|
1913
|
-
function
|
|
1914
|
-
let t =
|
|
1951
|
+
function lr(e) {
|
|
1952
|
+
let t = cr(b(e).text()), n = [...t.matchAll(or)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1915
1953
|
for (let [e, a] of n.entries()) {
|
|
1916
|
-
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c =
|
|
1954
|
+
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = sr.exec(s), l = cr(s.slice(0, c?.index ?? s.length));
|
|
1917
1955
|
if (l.length < 20 || r.has(l)) continue;
|
|
1918
1956
|
r.add(l);
|
|
1919
1957
|
let u = `expose-des-motifs-${e + 1}`;
|
|
@@ -1929,8 +1967,8 @@ function sr(e) {
|
|
|
1929
1967
|
}
|
|
1930
1968
|
return i;
|
|
1931
1969
|
}
|
|
1932
|
-
async function
|
|
1933
|
-
let i = await
|
|
1970
|
+
async function ur({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1971
|
+
let i = await fn(t, {
|
|
1934
1972
|
date: e,
|
|
1935
1973
|
includeDirectiveAnalysis: !1,
|
|
1936
1974
|
linkBaseUrl: n,
|
|
@@ -1939,7 +1977,7 @@ async function cr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1939
1977
|
});
|
|
1940
1978
|
return {
|
|
1941
1979
|
items: [...i.articles.map((e) => {
|
|
1942
|
-
let t =
|
|
1980
|
+
let t = cr(e.directiveText || e.text);
|
|
1943
1981
|
if (t) return {
|
|
1944
1982
|
anchor: e.id,
|
|
1945
1983
|
articleNumber: e.num ?? null,
|
|
@@ -1949,17 +1987,17 @@ async function cr({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1949
1987
|
label: e.label,
|
|
1950
1988
|
title: e.title ?? null
|
|
1951
1989
|
};
|
|
1952
|
-
}).filter((e) => e !== void 0), ...
|
|
1990
|
+
}).filter((e) => e !== void 0), ...lr(t)],
|
|
1953
1991
|
tableOfContents: i.tableOfContents
|
|
1954
1992
|
};
|
|
1955
1993
|
}
|
|
1956
|
-
function
|
|
1957
|
-
return
|
|
1994
|
+
function dr(e, t) {
|
|
1995
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1958
1996
|
item: e,
|
|
1959
1997
|
metadata: t
|
|
1960
1998
|
})).digest("hex");
|
|
1961
1999
|
}
|
|
1962
|
-
function
|
|
2000
|
+
function fr(e) {
|
|
1963
2001
|
if (typeof e != "object" || !e) return;
|
|
1964
2002
|
let t = e.cycleDeVie?.chrono;
|
|
1965
2003
|
if (t !== void 0) for (let e of [
|
|
@@ -1974,11 +2012,11 @@ function ur(e) {
|
|
|
1974
2012
|
}
|
|
1975
2013
|
//#endregion
|
|
1976
2014
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1977
|
-
function
|
|
2015
|
+
function pr(e) {
|
|
1978
2016
|
return e?.trim() ? b(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1979
2017
|
}
|
|
1980
|
-
function
|
|
1981
|
-
let n =
|
|
2018
|
+
function mr({ dispositifHtml: e, objetHtml: t }) {
|
|
2019
|
+
let n = pr(e), r = pr(t);
|
|
1982
2020
|
return [...n ? [{
|
|
1983
2021
|
content: n,
|
|
1984
2022
|
itemKind: "dispositif",
|
|
@@ -1989,8 +2027,8 @@ function fr({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1989
2027
|
label: "Objet"
|
|
1990
2028
|
}] : []];
|
|
1991
2029
|
}
|
|
1992
|
-
function
|
|
1993
|
-
return
|
|
2030
|
+
function hr(e, t) {
|
|
2031
|
+
return Oe("sha256").update(JSON.stringify({
|
|
1994
2032
|
item: e,
|
|
1995
2033
|
metadata: t
|
|
1996
2034
|
})).digest("hex");
|
|
@@ -2004,16 +2042,16 @@ function W(e, t) {
|
|
|
2004
2042
|
type: "amendment_action_directive"
|
|
2005
2043
|
};
|
|
2006
2044
|
}
|
|
2007
|
-
function
|
|
2045
|
+
function gr(e, t) {
|
|
2008
2046
|
return {
|
|
2009
2047
|
type: e === "start" ? "head_of_target" : "tail_after_target",
|
|
2010
2048
|
unit: t ? me(t) : "article"
|
|
2011
2049
|
};
|
|
2012
2050
|
}
|
|
2013
|
-
function
|
|
2051
|
+
function _r(e) {
|
|
2014
2052
|
return e === "start" ? "insert_before" : "insert_after";
|
|
2015
2053
|
}
|
|
2016
|
-
var
|
|
2054
|
+
var vr = T(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), G = w(l, k([E("les?\\s+", { flags: "i" }), i], { value: (e) => e[1] }), i, o), yr = w(k([E("la\\s+fin\\s+de\\s+", { flags: "i" }), G], { value: (e) => {
|
|
2017
2055
|
let t = e[1];
|
|
2018
2056
|
return {
|
|
2019
2057
|
targetReference: t,
|
|
@@ -2022,58 +2060,58 @@ var gr = D(T("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]
|
|
|
2022
2060
|
unit: me(t)
|
|
2023
2061
|
}
|
|
2024
2062
|
};
|
|
2025
|
-
} }),
|
|
2026
|
-
|
|
2027
|
-
|
|
2063
|
+
} }), k([t], { value: (e) => ({ targetScope: e[0] }) })), K = T(k([
|
|
2064
|
+
T(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
2065
|
+
T(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
2028
2066
|
G,
|
|
2029
|
-
|
|
2067
|
+
T(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
2030
2068
|
], { value: (e, t) => ({
|
|
2031
2069
|
reference: e[2],
|
|
2032
2070
|
text: t.text()
|
|
2033
|
-
}) }), { default: null }),
|
|
2071
|
+
}) }), { default: null }), br = T(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${Te})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
2034
2072
|
function q(e) {
|
|
2035
2073
|
return e?.text ?? "";
|
|
2036
2074
|
}
|
|
2037
|
-
function
|
|
2075
|
+
function xr(e) {
|
|
2038
2076
|
return { citation: ae(e.position()) };
|
|
2039
2077
|
}
|
|
2040
|
-
var J =
|
|
2078
|
+
var J = w(k([f], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => xr(t) })), Sr = E("\\S[\\s\\S]*", { value: (e, t) => xr(t) }), Y = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), Cr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
2041
2079
|
flags: "i",
|
|
2042
|
-
value: (e, t) =>
|
|
2043
|
-
}),
|
|
2080
|
+
value: (e, t) => xr(t)
|
|
2081
|
+
}), wr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
2044
2082
|
flags: "i",
|
|
2045
|
-
value: (e, t) =>
|
|
2046
|
-
}),
|
|
2083
|
+
value: (e, t) => xr(t)
|
|
2084
|
+
}), Tr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
2047
2085
|
flags: "i",
|
|
2048
|
-
value: (e, t) =>
|
|
2049
|
-
}),
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
], { value: (e) => e[2] }),
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2086
|
+
value: (e, t) => xr(t)
|
|
2087
|
+
}), Er = w(k([f], { value: (e) => ({ citation: e[0] }) }), Cr), Dr = w(k([f], { value: (e) => ({ citation: e[0] }) }), Tr), Or = k([E(`${n}s?\\s*:?\\s*`, { flags: "i" }), Er], { value: (e) => e[1] }), kr = k([E(`${r}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), Dr], { value: (e) => e[1] }), Ar = w(k([f], { value: (e) => ({ citation: e[0] }) }), wr), jr = k([
|
|
2088
|
+
br,
|
|
2089
|
+
E(`${n}s?\\s*:?\\s*`, { flags: "i" }),
|
|
2090
|
+
Ar
|
|
2091
|
+
], { value: (e) => e[2] }), Mr = k([
|
|
2092
|
+
br,
|
|
2093
|
+
E(`${n}s?\\s*:?\\s*`, { flags: "i" }),
|
|
2094
|
+
w(k([f], { value: (e) => ({ citation: e[0] }) }), Sr)
|
|
2057
2095
|
], { value: (e) => e[2] });
|
|
2058
2096
|
function X(e) {
|
|
2059
2097
|
return e?.reference;
|
|
2060
2098
|
}
|
|
2061
|
-
var
|
|
2099
|
+
var Nr = k([vr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => W(t, {
|
|
2062
2100
|
contextText: e[0],
|
|
2063
2101
|
kind: "delete_article"
|
|
2064
|
-
}) }),
|
|
2102
|
+
}) }), Pr = k([
|
|
2065
2103
|
K,
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2104
|
+
E("supprimer", { flags: "i" }),
|
|
2105
|
+
T(k([D, G], { value: (e) => e[1] }), { default: null }),
|
|
2106
|
+
T(k([D, Mr], { value: (e) => e[1] }), { default: null })
|
|
2069
2107
|
], { value: (e, t) => W(t, {
|
|
2070
2108
|
contextText: q(e[0]),
|
|
2071
2109
|
kind: "delete_portion",
|
|
2072
2110
|
targetCitation: e[3]?.citation ?? void 0,
|
|
2073
2111
|
targetReference: e[2] ?? X(e[0])
|
|
2074
|
-
}) }),
|
|
2112
|
+
}) }), Fr = k([
|
|
2075
2113
|
K,
|
|
2076
|
-
|
|
2114
|
+
w(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
|
|
2077
2115
|
Y,
|
|
2078
2116
|
J
|
|
2079
2117
|
], { value: (e, t) => W(t, {
|
|
@@ -2081,52 +2119,52 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2081
2119
|
kind: "rewrite_portion",
|
|
2082
2120
|
replacementCitation: e[3].citation,
|
|
2083
2121
|
targetReference: X(e[0])
|
|
2084
|
-
}) }),
|
|
2122
|
+
}) }), Ir = k([
|
|
2085
2123
|
K,
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2124
|
+
w(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
|
|
2125
|
+
D,
|
|
2126
|
+
br,
|
|
2127
|
+
Or,
|
|
2128
|
+
E("\\s*,?\\s*"),
|
|
2129
|
+
T(E("par\\s+", { flags: "i" }), { default: "" }),
|
|
2130
|
+
kr
|
|
2093
2131
|
], { value: (e, t) => W(t, {
|
|
2094
2132
|
contextText: q(e[0]),
|
|
2095
2133
|
kind: "replace",
|
|
2096
2134
|
replacementCitation: e[7].citation,
|
|
2097
2135
|
targetCitation: e[4].citation,
|
|
2098
2136
|
targetReference: X(e[0])
|
|
2099
|
-
}) }),
|
|
2137
|
+
}) }), Lr = k([
|
|
2100
2138
|
K,
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2139
|
+
E("substituer", { flags: "i" }),
|
|
2140
|
+
D,
|
|
2141
|
+
T(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
2104
2142
|
G,
|
|
2105
|
-
|
|
2143
|
+
E("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
2106
2144
|
J
|
|
2107
2145
|
], { value: (e, t) => W(t, {
|
|
2108
2146
|
contextText: q(e[0]),
|
|
2109
2147
|
kind: "rewrite_portion",
|
|
2110
2148
|
replacementCitation: e[6].citation,
|
|
2111
2149
|
targetReference: e[4] ?? X(e[0])
|
|
2112
|
-
}) }),
|
|
2150
|
+
}) }), Rr = k([
|
|
2113
2151
|
c,
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2152
|
+
D,
|
|
2153
|
+
E("l['’ ]article", { flags: "i" }),
|
|
2154
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
2155
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2118
2156
|
Y,
|
|
2119
2157
|
J
|
|
2120
2158
|
], { value: (e, t) => W(t, {
|
|
2121
2159
|
contextText: "",
|
|
2122
2160
|
insertCitation: e[6].citation,
|
|
2123
2161
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
2124
|
-
}) }),
|
|
2162
|
+
}) }), zr = k([
|
|
2125
2163
|
c,
|
|
2126
|
-
|
|
2164
|
+
D,
|
|
2127
2165
|
G,
|
|
2128
|
-
|
|
2129
|
-
|
|
2166
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2167
|
+
w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
2130
2168
|
Y,
|
|
2131
2169
|
J
|
|
2132
2170
|
], { value: (e, t) => W(t, {
|
|
@@ -2134,23 +2172,23 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2134
2172
|
insertCitation: e[6].citation,
|
|
2135
2173
|
kind: S(e[0]),
|
|
2136
2174
|
targetReference: e[2]
|
|
2137
|
-
}) }),
|
|
2175
|
+
}) }), Br = k([
|
|
2138
2176
|
c,
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2177
|
+
D,
|
|
2178
|
+
E("l['’ ]alin[eé]a", { flags: "i" }),
|
|
2179
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
2180
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2143
2181
|
Y,
|
|
2144
2182
|
J
|
|
2145
2183
|
], { value: (e, t) => W(t, {
|
|
2146
2184
|
contextText: "",
|
|
2147
2185
|
insertCitation: e[6].citation,
|
|
2148
2186
|
kind: S(e[0])
|
|
2149
|
-
}) }),
|
|
2187
|
+
}) }), Vr = k([
|
|
2150
2188
|
K,
|
|
2151
2189
|
te,
|
|
2152
|
-
|
|
2153
|
-
|
|
2190
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2191
|
+
w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
2154
2192
|
Y,
|
|
2155
2193
|
J
|
|
2156
2194
|
], { value: (e, t) => {
|
|
@@ -2158,32 +2196,32 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2158
2196
|
return W(t, {
|
|
2159
2197
|
contextText: q(n),
|
|
2160
2198
|
insertCitation: e[5].citation,
|
|
2161
|
-
kind:
|
|
2199
|
+
kind: _r(i),
|
|
2162
2200
|
targetReference: r,
|
|
2163
|
-
targetScope:
|
|
2201
|
+
targetScope: gr(i, r)
|
|
2164
2202
|
});
|
|
2165
|
-
} }),
|
|
2203
|
+
} }), Hr = k([
|
|
2166
2204
|
K,
|
|
2167
2205
|
c,
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2206
|
+
D,
|
|
2207
|
+
jr,
|
|
2208
|
+
E("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
2209
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2210
|
+
D,
|
|
2211
|
+
kr
|
|
2174
2212
|
], { value: (e, t) => W(t, {
|
|
2175
2213
|
contextText: q(e[0]),
|
|
2176
2214
|
insertCitation: e[7].citation,
|
|
2177
2215
|
kind: S(e[1]),
|
|
2178
2216
|
targetCitation: e[3].citation,
|
|
2179
2217
|
targetReference: X(e[0])
|
|
2180
|
-
}) }),
|
|
2218
|
+
}) }), Ur = k([
|
|
2181
2219
|
K,
|
|
2182
2220
|
c,
|
|
2183
|
-
|
|
2221
|
+
D,
|
|
2184
2222
|
G,
|
|
2185
|
-
|
|
2186
|
-
|
|
2223
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
2224
|
+
w(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
2187
2225
|
Y,
|
|
2188
2226
|
J
|
|
2189
2227
|
], { value: (e, t) => W(t, {
|
|
@@ -2191,29 +2229,29 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2191
2229
|
insertCitation: e[7].citation,
|
|
2192
2230
|
kind: S(e[1]),
|
|
2193
2231
|
targetReference: X(e[0]) ?? e[3]
|
|
2194
|
-
}) }),
|
|
2232
|
+
}) }), Wr = w(Vr, Rr, zr, Br, Lr, k([
|
|
2195
2233
|
K,
|
|
2196
2234
|
c,
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2235
|
+
D,
|
|
2236
|
+
jr,
|
|
2237
|
+
E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
2238
|
+
w(k([
|
|
2239
|
+
E("supprimer", {
|
|
2202
2240
|
flags: "i",
|
|
2203
2241
|
value: "delete_portion"
|
|
2204
2242
|
}),
|
|
2205
|
-
|
|
2206
|
-
|
|
2243
|
+
D,
|
|
2244
|
+
yr
|
|
2207
2245
|
], { value: (e) => ({
|
|
2208
2246
|
kind: e[0],
|
|
2209
2247
|
...e[2]
|
|
2210
|
-
}) }),
|
|
2211
|
-
|
|
2248
|
+
}) }), k([
|
|
2249
|
+
E("r[eé]diger\\s+ainsi", {
|
|
2212
2250
|
flags: "i",
|
|
2213
2251
|
value: "rewrite_portion"
|
|
2214
2252
|
}),
|
|
2215
|
-
|
|
2216
|
-
|
|
2253
|
+
D,
|
|
2254
|
+
yr,
|
|
2217
2255
|
Y,
|
|
2218
2256
|
J
|
|
2219
2257
|
], { value: (e) => ({
|
|
@@ -2231,10 +2269,10 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2231
2269
|
targetReference: X(e[0]) ?? n.targetReference,
|
|
2232
2270
|
targetScope: n.targetScope
|
|
2233
2271
|
});
|
|
2234
|
-
} }),
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2272
|
+
} }), Hr, Ur, k([
|
|
2273
|
+
vr,
|
|
2274
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
2275
|
+
E(`[\\s\\S]*?(?=${u})`, { flags: "i" }),
|
|
2238
2276
|
c,
|
|
2239
2277
|
Y,
|
|
2240
2278
|
f,
|
|
@@ -2245,10 +2283,10 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2245
2283
|
insertCitation: e[8],
|
|
2246
2284
|
kind: S(e[3]),
|
|
2247
2285
|
targetCitation: e[6]
|
|
2248
|
-
}) }),
|
|
2286
|
+
}) }), Ir, Fr, k([
|
|
2249
2287
|
K,
|
|
2250
|
-
|
|
2251
|
-
|
|
2288
|
+
E("compl[eé]ter", { flags: "i" }),
|
|
2289
|
+
T(k([D, G], { value: (e) => e[1] }), { default: null }),
|
|
2252
2290
|
Y,
|
|
2253
2291
|
J
|
|
2254
2292
|
], { value: (e, t) => W(t, {
|
|
@@ -2256,16 +2294,16 @@ var jr = w([gr, T("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
2256
2294
|
insertCitation: e[4].citation,
|
|
2257
2295
|
kind: "insert_after",
|
|
2258
2296
|
targetReference: e[2] ?? X(e[0])
|
|
2259
|
-
}) }),
|
|
2297
|
+
}) }), Nr, Pr);
|
|
2260
2298
|
//#endregion
|
|
2261
2299
|
//#region src/lib/server/parsed_amendments.ts
|
|
2262
|
-
function
|
|
2300
|
+
function Gr(e) {
|
|
2263
2301
|
return e.replace(/\s+/gu, " ").trim();
|
|
2264
2302
|
}
|
|
2265
|
-
function
|
|
2266
|
-
return e.split(/\n/gu).map(
|
|
2303
|
+
function Kr(e) {
|
|
2304
|
+
return e.split(/\n/gu).map(Gr).filter(Boolean).join("\n");
|
|
2267
2305
|
}
|
|
2268
|
-
function
|
|
2306
|
+
function qr(e, t) {
|
|
2269
2307
|
let { start: n, stop: r } = t;
|
|
2270
2308
|
for (; n < r && /\s/u.test(e[n]);) n++;
|
|
2271
2309
|
for (; r > n && /\s/u.test(e[r - 1]);) r--;
|
|
@@ -2274,16 +2312,16 @@ function Gr(e, t) {
|
|
|
2274
2312
|
stop: r
|
|
2275
2313
|
} : null;
|
|
2276
2314
|
}
|
|
2277
|
-
function
|
|
2278
|
-
return _e(
|
|
2315
|
+
function Jr(e, t) {
|
|
2316
|
+
return ve(_e(e), t);
|
|
2279
2317
|
}
|
|
2280
|
-
function
|
|
2318
|
+
function Yr(e) {
|
|
2281
2319
|
return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
|
|
2282
2320
|
}
|
|
2283
|
-
function
|
|
2321
|
+
function Xr(e) {
|
|
2284
2322
|
return {
|
|
2285
2323
|
articleLabel: e.targetArticleLabel ?? null,
|
|
2286
|
-
targetPosition:
|
|
2324
|
+
targetPosition: Yr(e.targetPosition),
|
|
2287
2325
|
alinea: e.targetAlinea ?? null,
|
|
2288
2326
|
alineaLabel: e.targetAlineaLabel ?? null,
|
|
2289
2327
|
subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
|
|
@@ -2298,36 +2336,36 @@ function Z(e) {
|
|
|
2298
2336
|
sourceText: e.text
|
|
2299
2337
|
};
|
|
2300
2338
|
}
|
|
2301
|
-
function
|
|
2339
|
+
function Zr(e) {
|
|
2302
2340
|
return {
|
|
2303
2341
|
...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
|
|
2304
2342
|
sourcePosition: e.position,
|
|
2305
2343
|
sourceText: e.text
|
|
2306
2344
|
};
|
|
2307
2345
|
}
|
|
2308
|
-
function
|
|
2346
|
+
function Qr(e) {
|
|
2309
2347
|
return {
|
|
2310
2348
|
...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
|
|
2311
2349
|
...e === null ? {} : { dispositifPosition: e.position },
|
|
2312
2350
|
dispositifText: e?.text ?? null
|
|
2313
2351
|
};
|
|
2314
2352
|
}
|
|
2315
|
-
function
|
|
2353
|
+
function $r(e, t, n, r = Kr(e.slice(n.start, n.stop))) {
|
|
2316
2354
|
return {
|
|
2317
|
-
originalTransformation:
|
|
2355
|
+
originalTransformation: Jr(t, n),
|
|
2318
2356
|
position: n,
|
|
2319
2357
|
text: r
|
|
2320
2358
|
};
|
|
2321
2359
|
}
|
|
2322
|
-
function
|
|
2360
|
+
function ei(e) {
|
|
2323
2361
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2324
2362
|
if (!t) return null;
|
|
2325
|
-
let n = e.dispositifHtml ?
|
|
2363
|
+
let n = e.dispositifHtml ? ge()(t) : O(t), r = n.output, i = qr(r, {
|
|
2326
2364
|
start: 0,
|
|
2327
2365
|
stop: r.length
|
|
2328
2366
|
});
|
|
2329
2367
|
return {
|
|
2330
|
-
dispositif: i === null ? null :
|
|
2368
|
+
dispositif: i === null ? null : $r(r, n, i),
|
|
2331
2369
|
simplifiedText: r,
|
|
2332
2370
|
transformation: n
|
|
2333
2371
|
};
|
|
@@ -2347,7 +2385,7 @@ function Q(e) {
|
|
|
2347
2385
|
for (let t of a(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
|
|
2348
2386
|
return [];
|
|
2349
2387
|
}
|
|
2350
|
-
function
|
|
2388
|
+
function ti(e, t) {
|
|
2351
2389
|
let n = Q(t);
|
|
2352
2390
|
return {
|
|
2353
2391
|
...e,
|
|
@@ -2355,11 +2393,11 @@ function $r(e, t) {
|
|
|
2355
2393
|
...n.length > 0 ? { alineas: n } : {}
|
|
2356
2394
|
};
|
|
2357
2395
|
}
|
|
2358
|
-
function
|
|
2396
|
+
function ni(e) {
|
|
2359
2397
|
return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
|
|
2360
2398
|
}
|
|
2361
|
-
function
|
|
2362
|
-
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(
|
|
2399
|
+
function ri(e, t) {
|
|
2400
|
+
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(ni(t.text));
|
|
2363
2401
|
if (!n) return null;
|
|
2364
2402
|
let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
|
|
2365
2403
|
return !Number.isFinite(r) || r < 1 ? null : {
|
|
@@ -2368,25 +2406,25 @@ function ti(e, t) {
|
|
|
2368
2406
|
alineas: [r]
|
|
2369
2407
|
};
|
|
2370
2408
|
}
|
|
2371
|
-
function
|
|
2409
|
+
function ii(e, t) {
|
|
2372
2410
|
if (e) return e.unit === "article" && t.alinea !== null ? {
|
|
2373
2411
|
...e,
|
|
2374
2412
|
unit: "alinéa"
|
|
2375
2413
|
} : e;
|
|
2376
2414
|
}
|
|
2377
|
-
function
|
|
2378
|
-
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(
|
|
2415
|
+
function ai(e) {
|
|
2416
|
+
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(ni(e.text));
|
|
2379
2417
|
}
|
|
2380
|
-
function
|
|
2381
|
-
return
|
|
2418
|
+
function oi(e, t, n, r) {
|
|
2419
|
+
return $r(e, t, {
|
|
2382
2420
|
start: n.position.start,
|
|
2383
2421
|
stop: r.position.stop
|
|
2384
2422
|
});
|
|
2385
2423
|
}
|
|
2386
|
-
function
|
|
2424
|
+
function si(e) {
|
|
2387
2425
|
return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
|
|
2388
2426
|
}
|
|
2389
|
-
function
|
|
2427
|
+
function ci(e, t) {
|
|
2390
2428
|
let n = { ...t.position };
|
|
2391
2429
|
function r(t) {
|
|
2392
2430
|
let r = t.exec(e.slice(n.start, n.stop));
|
|
@@ -2395,29 +2433,29 @@ function oi(e, t) {
|
|
|
2395
2433
|
stop: n.stop
|
|
2396
2434
|
});
|
|
2397
2435
|
}
|
|
2398
|
-
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),
|
|
2436
|
+
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), qr(e, n);
|
|
2399
2437
|
}
|
|
2400
|
-
function
|
|
2438
|
+
function li(e) {
|
|
2401
2439
|
return p(e);
|
|
2402
2440
|
}
|
|
2403
|
-
function
|
|
2404
|
-
return
|
|
2441
|
+
function ui(e, t) {
|
|
2442
|
+
return Wr(new A(e.slice(0, t.stop), t.start)) ?? null;
|
|
2405
2443
|
}
|
|
2406
2444
|
function $(e, t, n) {
|
|
2407
|
-
if (n) return
|
|
2445
|
+
if (n) return $r(e, t, n.position, Kr(ue(e, n)));
|
|
2408
2446
|
}
|
|
2409
|
-
function
|
|
2447
|
+
function di(e, t) {
|
|
2410
2448
|
if (!e) return;
|
|
2411
2449
|
let n = structuredClone(e);
|
|
2412
|
-
for (let e of g(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation =
|
|
2450
|
+
for (let e of g(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Jr(t, e.position));
|
|
2413
2451
|
return n;
|
|
2414
2452
|
}
|
|
2415
|
-
function
|
|
2416
|
-
let i =
|
|
2453
|
+
function fi(e, t, n, r) {
|
|
2454
|
+
let i = ci(e, n);
|
|
2417
2455
|
if (!i) return null;
|
|
2418
|
-
let a =
|
|
2456
|
+
let a = ui(e, i);
|
|
2419
2457
|
if (!a) return null;
|
|
2420
|
-
let o =
|
|
2458
|
+
let o = $r(e, t, i), s = di(a.targetReference, t), c = ti(r, s), l = li(o.text);
|
|
2421
2459
|
if (a.kind === "delete_article") return {
|
|
2422
2460
|
kind: "delete_article",
|
|
2423
2461
|
...Z(o),
|
|
@@ -2435,7 +2473,7 @@ function ui(e, t, n, r) {
|
|
|
2435
2473
|
},
|
|
2436
2474
|
targetOccurrence: l,
|
|
2437
2475
|
targetReference: s,
|
|
2438
|
-
targetScope:
|
|
2476
|
+
targetScope: ii(a.targetScope, c)
|
|
2439
2477
|
};
|
|
2440
2478
|
}
|
|
2441
2479
|
if (a.kind === "rewrite_portion") {
|
|
@@ -2452,7 +2490,7 @@ function ui(e, t, n, r) {
|
|
|
2452
2490
|
},
|
|
2453
2491
|
targetOccurrence: l,
|
|
2454
2492
|
targetReference: s,
|
|
2455
|
-
targetScope:
|
|
2493
|
+
targetScope: ii(a.targetScope, c),
|
|
2456
2494
|
replacementCitation: n,
|
|
2457
2495
|
replacementText: n.text
|
|
2458
2496
|
};
|
|
@@ -2507,19 +2545,19 @@ function ui(e, t, n, r) {
|
|
|
2507
2545
|
targetReference: s,
|
|
2508
2546
|
insertCitation: n,
|
|
2509
2547
|
insertText: n.text,
|
|
2510
|
-
targetScope:
|
|
2548
|
+
targetScope: ii(a.targetScope, c)
|
|
2511
2549
|
};
|
|
2512
2550
|
}
|
|
2513
2551
|
return null;
|
|
2514
2552
|
}
|
|
2515
|
-
function
|
|
2553
|
+
function pi(e, t) {
|
|
2516
2554
|
let n = [], r = 0, i = 0;
|
|
2517
2555
|
function a(r) {
|
|
2518
|
-
let a =
|
|
2556
|
+
let a = qr(e, {
|
|
2519
2557
|
start: i,
|
|
2520
2558
|
stop: r
|
|
2521
2559
|
});
|
|
2522
|
-
a !== null && n.push(
|
|
2560
|
+
a !== null && n.push($r(e, t, a));
|
|
2523
2561
|
}
|
|
2524
2562
|
function o(t) {
|
|
2525
2563
|
let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
|
|
@@ -2537,7 +2575,7 @@ function di(e, t) {
|
|
|
2537
2575
|
continue;
|
|
2538
2576
|
}
|
|
2539
2577
|
if (r > 0) continue;
|
|
2540
|
-
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) &&
|
|
2578
|
+
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) && ai({
|
|
2541
2579
|
originalTransformation: void 0,
|
|
2542
2580
|
position: {
|
|
2543
2581
|
start: i,
|
|
@@ -2549,8 +2587,8 @@ function di(e, t) {
|
|
|
2549
2587
|
}
|
|
2550
2588
|
return a(e.length), n;
|
|
2551
2589
|
}
|
|
2552
|
-
function
|
|
2553
|
-
let t =
|
|
2590
|
+
function mi(e) {
|
|
2591
|
+
let t = ei(e), n = t?.dispositif ?? null, r = Qr(n), i = [], a = [], o = Xr(e);
|
|
2554
2592
|
if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
|
|
2555
2593
|
code: "unsupported_sub_amendment",
|
|
2556
2594
|
message: "Les sous-amendements ne sont pas encore projetés."
|
|
@@ -2568,9 +2606,9 @@ function fi(e) {
|
|
|
2568
2606
|
});
|
|
2569
2607
|
else {
|
|
2570
2608
|
let { simplifiedText: e, transformation: r } = t, s = o, c = null;
|
|
2571
|
-
for (let t of
|
|
2572
|
-
|
|
2573
|
-
let n = c ?
|
|
2609
|
+
for (let t of pi(e, r)) {
|
|
2610
|
+
si(t) && (s = o, c = null);
|
|
2611
|
+
let n = c ? oi(e, r, c, t) : t, i = fi(e, r, n, s);
|
|
2574
2612
|
if (i) {
|
|
2575
2613
|
a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
|
|
2576
2614
|
continue;
|
|
@@ -2579,12 +2617,12 @@ function fi(e) {
|
|
|
2579
2617
|
c = n;
|
|
2580
2618
|
continue;
|
|
2581
2619
|
}
|
|
2582
|
-
let l =
|
|
2620
|
+
let l = ri(o, t);
|
|
2583
2621
|
if (l !== null) {
|
|
2584
2622
|
s = l;
|
|
2585
2623
|
continue;
|
|
2586
2624
|
}
|
|
2587
|
-
|
|
2625
|
+
ai(t) && (c = t);
|
|
2588
2626
|
}
|
|
2589
2627
|
a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
|
|
2590
2628
|
kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
|
|
@@ -2595,7 +2633,7 @@ function fi(e) {
|
|
|
2595
2633
|
}), a.length === 0 && i.push({
|
|
2596
2634
|
code: "unrecognized_dispositif",
|
|
2597
2635
|
message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
|
|
2598
|
-
...
|
|
2636
|
+
...Zr(n)
|
|
2599
2637
|
});
|
|
2600
2638
|
}
|
|
2601
2639
|
return {
|
|
@@ -2609,25 +2647,25 @@ function fi(e) {
|
|
|
2609
2647
|
}
|
|
2610
2648
|
//#endregion
|
|
2611
2649
|
//#region src/lib/server/senat_document_search.ts
|
|
2612
|
-
function
|
|
2650
|
+
function hi(e) {
|
|
2613
2651
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2614
2652
|
}
|
|
2615
|
-
function
|
|
2653
|
+
function gi(e) {
|
|
2616
2654
|
let t = C(e);
|
|
2617
2655
|
if (!t) return {
|
|
2618
2656
|
articleNumber: null,
|
|
2619
2657
|
label: e,
|
|
2620
2658
|
title: null
|
|
2621
2659
|
};
|
|
2622
|
-
let n =
|
|
2660
|
+
let n = hi(t.num ?? "") || null, r = hi(t.title ?? "") || null;
|
|
2623
2661
|
return {
|
|
2624
2662
|
articleNumber: n,
|
|
2625
2663
|
label: t.label,
|
|
2626
2664
|
title: r
|
|
2627
2665
|
};
|
|
2628
2666
|
}
|
|
2629
|
-
function
|
|
2630
|
-
let t = b(e), n = [], r =
|
|
2667
|
+
function _i(e) {
|
|
2668
|
+
let t = b(e), n = [], r = hi(t("section.akn-preamble").text());
|
|
2631
2669
|
return r && n.push({
|
|
2632
2670
|
anchor: "senat-expose-des-motifs",
|
|
2633
2671
|
articleNumber: null,
|
|
@@ -2637,9 +2675,9 @@ function hi(e) {
|
|
|
2637
2675
|
label: "Exposé des motifs",
|
|
2638
2676
|
title: null
|
|
2639
2677
|
}), t("article.akn-article").each((e, r) => {
|
|
2640
|
-
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o =
|
|
2678
|
+
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = hi(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = gi(o || s), l = i.clone();
|
|
2641
2679
|
l.children("p.TCNumArticle").remove();
|
|
2642
|
-
let u =
|
|
2680
|
+
let u = hi(l.text());
|
|
2643
2681
|
u && n.push({
|
|
2644
2682
|
anchor: i.attr("id") || null,
|
|
2645
2683
|
articleNumber: c.articleNumber,
|
|
@@ -2651,40 +2689,40 @@ function hi(e) {
|
|
|
2651
2689
|
});
|
|
2652
2690
|
}), n;
|
|
2653
2691
|
}
|
|
2654
|
-
function
|
|
2655
|
-
return
|
|
2692
|
+
function vi(e, t) {
|
|
2693
|
+
return Oe("sha256").update(JSON.stringify({
|
|
2656
2694
|
item: e,
|
|
2657
2695
|
metadata: t
|
|
2658
2696
|
})).digest("hex");
|
|
2659
2697
|
}
|
|
2660
2698
|
//#endregion
|
|
2661
2699
|
//#region src/lib/server/senat_document_sources.ts
|
|
2662
|
-
var
|
|
2663
|
-
function
|
|
2700
|
+
var yi = new Set(["senat.fr", "www.senat.fr"]), bi = "https://www.senat.fr";
|
|
2701
|
+
function xi(e) {
|
|
2664
2702
|
return e?.trim() || void 0;
|
|
2665
2703
|
}
|
|
2666
|
-
function
|
|
2704
|
+
function Si(e) {
|
|
2667
2705
|
try {
|
|
2668
|
-
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`,
|
|
2669
|
-
return
|
|
2706
|
+
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, bi);
|
|
2707
|
+
return yi.has(n.hostname.toLowerCase()) ? n : void 0;
|
|
2670
2708
|
} catch {
|
|
2671
2709
|
return;
|
|
2672
2710
|
}
|
|
2673
2711
|
}
|
|
2674
|
-
function
|
|
2675
|
-
let t =
|
|
2712
|
+
function Ci(e) {
|
|
2713
|
+
let t = xi(e);
|
|
2676
2714
|
if (t === void 0) return {
|
|
2677
2715
|
publicUrl: null,
|
|
2678
2716
|
status: "no_url"
|
|
2679
2717
|
};
|
|
2680
|
-
let n =
|
|
2718
|
+
let n = Si(t);
|
|
2681
2719
|
if (n === void 0) return {
|
|
2682
2720
|
publicUrl: t,
|
|
2683
2721
|
status: "unsupported_source"
|
|
2684
2722
|
};
|
|
2685
2723
|
let r = n.pathname;
|
|
2686
2724
|
if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
|
|
2687
|
-
akomaNtosoUrl: `${
|
|
2725
|
+
akomaNtosoUrl: `${bi}${r}`,
|
|
2688
2726
|
publicUrl: n.toString(),
|
|
2689
2727
|
status: "available"
|
|
2690
2728
|
};
|
|
@@ -2693,17 +2731,17 @@ function xi(e) {
|
|
|
2693
2731
|
publicUrl: n.toString(),
|
|
2694
2732
|
status: "unsupported_source"
|
|
2695
2733
|
} : {
|
|
2696
|
-
akomaNtosoUrl: `${
|
|
2734
|
+
akomaNtosoUrl: `${bi}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
|
|
2697
2735
|
publicUrl: n.toString(),
|
|
2698
2736
|
status: "available"
|
|
2699
2737
|
};
|
|
2700
2738
|
}
|
|
2701
|
-
function
|
|
2739
|
+
function wi(e) {
|
|
2702
2740
|
return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
|
|
2703
2741
|
}
|
|
2704
2742
|
//#endregion
|
|
2705
2743
|
//#region src/lib/alineas/alineas_numbers.ts
|
|
2706
|
-
var
|
|
2744
|
+
var Ti = {
|
|
2707
2745
|
"0150a855548f15a2af52ea057be53f5d": 1,
|
|
2708
2746
|
"039826cf379b94afefe90b25c6045ca0": 1,
|
|
2709
2747
|
"03a7e564b84662f4d957c51018e26244": 1,
|
|
@@ -21677,7 +21715,7 @@ var Ci = {
|
|
|
21677
21715
|
d16d29c923bd60c7b095b66c6058fe60: 1664,
|
|
21678
21716
|
"1c14c2adf5cfda3220b2057160e10e91": 1665,
|
|
21679
21717
|
e44c55ca1ac46ff46420686a466c9fc6: 1665
|
|
21680
|
-
},
|
|
21718
|
+
}, Ei = "\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", Di = "\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", Oi = "\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", ki = "\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", Ai = "\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", ji = {
|
|
21681
21719
|
assnatetatagr: { bold: !0 },
|
|
21682
21720
|
assnatetatagrgr: { bold: !0 },
|
|
21683
21721
|
assnatetatatr: { bold: !0 },
|
|
@@ -21778,29 +21816,29 @@ var Ci = {
|
|
|
21778
21816
|
assnatxl67: { align: "center" },
|
|
21779
21817
|
assnatenteteequilibre: { align: "center" }
|
|
21780
21818
|
};
|
|
21781
|
-
function
|
|
21782
|
-
let t = Object.keys(
|
|
21783
|
-
for (let n of t) if (e.includes(n)) return
|
|
21819
|
+
function Mi(e) {
|
|
21820
|
+
let t = Object.keys(ji).sort((e, t) => t.length - e.length);
|
|
21821
|
+
for (let n of t) if (e.includes(n)) return ji[n];
|
|
21784
21822
|
return null;
|
|
21785
21823
|
}
|
|
21786
|
-
function
|
|
21787
|
-
return
|
|
21824
|
+
function Ni(e) {
|
|
21825
|
+
return De.createHash("md5").update(e).digest("hex");
|
|
21788
21826
|
}
|
|
21789
|
-
function
|
|
21827
|
+
function Pi(e) {
|
|
21790
21828
|
return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
|
|
21791
21829
|
}
|
|
21792
|
-
function
|
|
21830
|
+
function Fi(e) {
|
|
21793
21831
|
return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
|
|
21794
21832
|
}
|
|
21795
|
-
function
|
|
21833
|
+
function Ii(e) {
|
|
21796
21834
|
if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
|
|
21797
21835
|
let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
|
|
21798
21836
|
return !(t && parseFloat(t[1]) < 8);
|
|
21799
21837
|
}
|
|
21800
|
-
function
|
|
21838
|
+
function Li(e) {
|
|
21801
21839
|
return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
|
|
21802
21840
|
}
|
|
21803
|
-
function
|
|
21841
|
+
function Ri(e) {
|
|
21804
21842
|
if (!e) return;
|
|
21805
21843
|
let t = [
|
|
21806
21844
|
"width",
|
|
@@ -21835,15 +21873,15 @@ function Ii(e) {
|
|
|
21835
21873
|
}
|
|
21836
21874
|
return n.length > 0 ? n.join("; ") : void 0;
|
|
21837
21875
|
}
|
|
21838
|
-
function
|
|
21876
|
+
function zi(e, t) {
|
|
21839
21877
|
return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
|
|
21840
21878
|
}
|
|
21841
|
-
function
|
|
21879
|
+
function Bi(e) {
|
|
21842
21880
|
if (!e) return null;
|
|
21843
21881
|
let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
|
|
21844
21882
|
return t ? t[1].toLowerCase() : null;
|
|
21845
21883
|
}
|
|
21846
|
-
function
|
|
21884
|
+
function Vi(e) {
|
|
21847
21885
|
if (!e) return null;
|
|
21848
21886
|
for (let [t, n] of [
|
|
21849
21887
|
[/assnat1Tome|assnatAN1PARTIE/i, 1],
|
|
@@ -21855,7 +21893,7 @@ function zi(e) {
|
|
|
21855
21893
|
]) if (t.test(e)) return n;
|
|
21856
21894
|
return null;
|
|
21857
21895
|
}
|
|
21858
|
-
function
|
|
21896
|
+
function Hi(e, t = {}) {
|
|
21859
21897
|
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = b(e, { xml: { decodeEntities: !1 } });
|
|
21860
21898
|
a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
|
|
21861
21899
|
let n = a(t).closest("table");
|
|
@@ -21881,7 +21919,7 @@ function Bi(e, t = {}) {
|
|
|
21881
21919
|
if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
|
|
21882
21920
|
let e = i.attr();
|
|
21883
21921
|
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")) {
|
|
21884
|
-
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ?
|
|
21922
|
+
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? Ni(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
|
|
21885
21923
|
n.replaceWith(`<span class="alinea"${i}></span>`);
|
|
21886
21924
|
return;
|
|
21887
21925
|
}
|
|
@@ -21900,7 +21938,7 @@ function Bi(e, t = {}) {
|
|
|
21900
21938
|
(!r || r === "\xA0") && n.remove();
|
|
21901
21939
|
}), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
|
|
21902
21940
|
function o(e) {
|
|
21903
|
-
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i =
|
|
21941
|
+
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = Pi(n) || r === "b" || r === "strong", o = Fi(n) || r === "i" || r === "em", s = Ii(n) || r === "sup", c = Li(n) || r === "sub", l = t.attr("class") || "";
|
|
21904
21942
|
return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
|
|
21905
21943
|
bold: i,
|
|
21906
21944
|
italic: o,
|
|
@@ -21934,7 +21972,7 @@ function Bi(e, t = {}) {
|
|
|
21934
21972
|
c = e;
|
|
21935
21973
|
}
|
|
21936
21974
|
for (a("p").each((e, t) => {
|
|
21937
|
-
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s =
|
|
21975
|
+
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = Vi(i);
|
|
21938
21976
|
if (i.includes("assnatFARCouvTitreD")) {
|
|
21939
21977
|
let e = r.html() || "";
|
|
21940
21978
|
r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
|
|
@@ -21967,11 +22005,11 @@ function Bi(e, t = {}) {
|
|
|
21967
22005
|
let c = r.text().trim().startsWith("«");
|
|
21968
22006
|
if (s && !c) {
|
|
21969
22007
|
let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
|
|
21970
|
-
n &&
|
|
22008
|
+
n && zi(o, i) && e.attr("align", "center"), r.replaceWith(e);
|
|
21971
22009
|
} else {
|
|
21972
|
-
let e =
|
|
22010
|
+
let e = Mi(i), t;
|
|
21973
22011
|
if (n) {
|
|
21974
|
-
let n =
|
|
22012
|
+
let n = Bi(o);
|
|
21975
22013
|
n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
|
|
21976
22014
|
}
|
|
21977
22015
|
if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
|
|
@@ -21981,7 +22019,7 @@ function Bi(e, t = {}) {
|
|
|
21981
22019
|
}
|
|
21982
22020
|
}), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
|
|
21983
22021
|
let r = a(t), i = r.attr("style"), o = r.attr("class");
|
|
21984
|
-
n &&
|
|
22022
|
+
n && zi(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
|
|
21985
22023
|
}), a("a").each((e, t) => {
|
|
21986
22024
|
let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
|
|
21987
22025
|
for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
|
|
@@ -22020,7 +22058,7 @@ function Bi(e, t = {}) {
|
|
|
22020
22058
|
}), a("br").each((e, t) => {
|
|
22021
22059
|
a(t).removeAttr("style").removeAttr("class");
|
|
22022
22060
|
}), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
|
|
22023
|
-
let n = a(t), r =
|
|
22061
|
+
let n = a(t), r = Ri(n.attr("style"));
|
|
22024
22062
|
n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
|
|
22025
22063
|
}), a("td, th").each((e, t) => {
|
|
22026
22064
|
let n = a(t), r = n.children();
|
|
@@ -22038,17 +22076,17 @@ function Bi(e, t = {}) {
|
|
|
22038
22076
|
!isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
|
|
22039
22077
|
}
|
|
22040
22078
|
}), a("li").each((e, t) => {
|
|
22041
|
-
let n = a(t), r =
|
|
22079
|
+
let n = a(t), r = Bi(n.attr("style"));
|
|
22042
22080
|
n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
|
|
22043
22081
|
let i = n.html() || "", o = i.replace(/^(\s| | |\u00a0)+/, "");
|
|
22044
22082
|
o !== i && n.html(o);
|
|
22045
|
-
}),
|
|
22083
|
+
}), Ui(a), Wi(a, i);
|
|
22046
22084
|
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 = "";
|
|
22047
|
-
m && (h +=
|
|
22085
|
+
m && (h += Ai), f && (h += Di), p && (h += Oi), u && (h += Ei), d && (h += ki);
|
|
22048
22086
|
let g = h ? `<style>${h}</style>\n${l}` : l;
|
|
22049
|
-
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 =
|
|
22087
|
+
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 = Gi(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;
|
|
22050
22088
|
}
|
|
22051
|
-
function
|
|
22089
|
+
function Ui(e) {
|
|
22052
22090
|
e("span[id]").each((t, n) => {
|
|
22053
22091
|
let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
|
|
22054
22092
|
if (o.length !== 1 || o[0] !== "id") return;
|
|
@@ -22071,13 +22109,13 @@ function Vi(e) {
|
|
|
22071
22109
|
l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
|
|
22072
22110
|
});
|
|
22073
22111
|
}
|
|
22074
|
-
function
|
|
22112
|
+
function Wi(e, t = !1) {
|
|
22075
22113
|
let n = e("body");
|
|
22076
22114
|
if (n.length === 0) return;
|
|
22077
22115
|
let r = n.find("span.alinea[data-image-hash]"), i = -1;
|
|
22078
22116
|
r.each((n, r) => {
|
|
22079
22117
|
let a = e(r), o = a.attr("data-image-hash"), s;
|
|
22080
|
-
if (o &&
|
|
22118
|
+
if (o && Ti[o] !== void 0 && (s = Ti[o]), s === void 0) {
|
|
22081
22119
|
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".`);
|
|
22082
22120
|
a.remove();
|
|
22083
22121
|
return;
|
|
@@ -22089,11 +22127,11 @@ function Hi(e, t = !1) {
|
|
|
22089
22127
|
i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
|
|
22090
22128
|
});
|
|
22091
22129
|
}
|
|
22092
|
-
function
|
|
22130
|
+
function Gi(e) {
|
|
22093
22131
|
let t = e;
|
|
22094
22132
|
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;
|
|
22095
22133
|
}
|
|
22096
|
-
function
|
|
22134
|
+
function Ki(e, t = {}) {
|
|
22097
22135
|
return `<!DOCTYPE html>
|
|
22098
22136
|
<html lang="fr">
|
|
22099
22137
|
<head>
|
|
@@ -22101,33 +22139,33 @@ function Wi(e, t = {}) {
|
|
|
22101
22139
|
<title>Document simplifié</title>
|
|
22102
22140
|
</head>
|
|
22103
22141
|
<body>
|
|
22104
|
-
${
|
|
22142
|
+
${Hi(e, t)}
|
|
22105
22143
|
</body>
|
|
22106
22144
|
</html>`;
|
|
22107
22145
|
}
|
|
22108
22146
|
//#endregion
|
|
22109
22147
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
22110
|
-
function
|
|
22148
|
+
function qi(e, t) {
|
|
22111
22149
|
let n = "transformation_", r = {};
|
|
22112
|
-
for (let e of
|
|
22150
|
+
for (let e of j.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
22113
22151
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
22114
22152
|
for (let e of a.slice(1)) {
|
|
22115
22153
|
let t = o.transformations ??= [];
|
|
22116
22154
|
for (; e >= t.length;) t.push({});
|
|
22117
22155
|
o = t[e];
|
|
22118
22156
|
}
|
|
22119
|
-
o.output =
|
|
22120
|
-
let { sourceMap: s, title: c } =
|
|
22157
|
+
o.output = j.readFileSync(ke.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
22158
|
+
let { sourceMap: s, title: c } = j.readJsonSync(ke.join(t, e), { encoding: "utf-8" });
|
|
22121
22159
|
o.sourceMap = s ?? [], o.title = c;
|
|
22122
22160
|
}
|
|
22123
|
-
return
|
|
22161
|
+
return Ji(r, e), r;
|
|
22124
22162
|
}
|
|
22125
|
-
function
|
|
22126
|
-
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations)
|
|
22163
|
+
function Ji(e, t) {
|
|
22164
|
+
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) Ji(n, t), t = n.output;
|
|
22127
22165
|
return t;
|
|
22128
22166
|
}
|
|
22129
|
-
function
|
|
22130
|
-
if (
|
|
22167
|
+
function Yi(e, t, n = "1") {
|
|
22168
|
+
if (j.ensureDirSync(t), e.transformations === void 0) j.writeJsonSync(ke.join(t, `transformation_${n}.json`), {
|
|
22131
22169
|
sourceMap: e.sourceMap,
|
|
22132
22170
|
title: e.title
|
|
22133
22171
|
}, {
|
|
@@ -22135,21 +22173,21 @@ function qi(e, t, n = "1") {
|
|
|
22135
22173
|
spaces: 2
|
|
22136
22174
|
});
|
|
22137
22175
|
else {
|
|
22138
|
-
|
|
22176
|
+
j.writeJsonSync(ke.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
22139
22177
|
encoding: "utf-8",
|
|
22140
22178
|
spaces: 2
|
|
22141
22179
|
});
|
|
22142
|
-
for (let [r, i] of e.transformations.entries())
|
|
22180
|
+
for (let [r, i] of e.transformations.entries()) Yi(i, t, `${n}.${r + 1}`);
|
|
22143
22181
|
}
|
|
22144
|
-
e.output !== void 0 &&
|
|
22182
|
+
e.output !== void 0 && j.writeFileSync(ke.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
22145
22183
|
}
|
|
22146
22184
|
//#endregion
|
|
22147
22185
|
//#region src/lib/server/linkers/html.ts
|
|
22148
|
-
async function
|
|
22186
|
+
async function Xi({ 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 }) {
|
|
22149
22187
|
let _ = t ?? (e === void 0 ? void 0 : new se(e));
|
|
22150
22188
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
22151
|
-
let v = await
|
|
22152
|
-
a === void 0 ? (y =
|
|
22189
|
+
let v = await j.readFile(i, { encoding: "utf-8" }), y;
|
|
22190
|
+
a === void 0 ? (y = ge({ removeAWithHref: !0 })(v), o !== void 0 && Yi(y, o)) : y = qi(v, a);
|
|
22153
22191
|
let b = [];
|
|
22154
22192
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
22155
22193
|
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await le({
|
|
@@ -22169,38 +22207,38 @@ async function Ji({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
22169
22207
|
s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
|
|
22170
22208
|
for (let [e, t] of Object.entries(x)) {
|
|
22171
22209
|
let n = S[e];
|
|
22172
|
-
n !== void 0 && await
|
|
22210
|
+
n !== void 0 && await j.writeFile(n, t.html, { encoding: "utf-8" });
|
|
22173
22211
|
}
|
|
22174
|
-
x.links !== void 0 && l !== void 0 &&
|
|
22212
|
+
x.links !== void 0 && l !== void 0 && Yi(ge()(x.links.html), l), g !== void 0 && await j.writeJson(g, ee, {
|
|
22175
22213
|
encoding: "utf-8",
|
|
22176
22214
|
spaces: 2
|
|
22177
22215
|
});
|
|
22178
22216
|
}
|
|
22179
22217
|
//#endregion
|
|
22180
22218
|
//#region src/lib/server/tables_of_contents.ts
|
|
22181
|
-
async function
|
|
22182
|
-
let i =
|
|
22219
|
+
async function Zi(e, t, n, r) {
|
|
22220
|
+
let i = qi(await j.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new A(a), s = await j.readJson(n, { encoding: "utf-8" });
|
|
22183
22221
|
for await (let e of ce({
|
|
22184
22222
|
context: o,
|
|
22185
22223
|
tableOfContents: s,
|
|
22186
22224
|
transformation: i
|
|
22187
22225
|
}));
|
|
22188
|
-
await
|
|
22226
|
+
await j.writeJson(r, s, {
|
|
22189
22227
|
encoding: "utf-8",
|
|
22190
22228
|
spaces: 2
|
|
22191
22229
|
});
|
|
22192
22230
|
}
|
|
22193
|
-
async function
|
|
22194
|
-
let r =
|
|
22195
|
-
await
|
|
22231
|
+
async function Qi(e, t, n) {
|
|
22232
|
+
let r = qi(await j.readFile(e, { encoding: "utf-8" }), t).output, i = y(r);
|
|
22233
|
+
await j.writeJson(n, i, {
|
|
22196
22234
|
encoding: "utf-8",
|
|
22197
22235
|
spaces: 2
|
|
22198
22236
|
});
|
|
22199
22237
|
}
|
|
22200
22238
|
//#endregion
|
|
22201
22239
|
//#region src/lib/server/legi/resolvers.ts
|
|
22202
|
-
function
|
|
22240
|
+
function $i({ canutesDb: e }) {
|
|
22203
22241
|
return new se(e);
|
|
22204
22242
|
}
|
|
22205
22243
|
//#endregion
|
|
22206
|
-
export {
|
|
22244
|
+
export { we as LegiResolver, Xi as addLinksOrReferencesToHtmlFile, Zi as addPositionsToTableOfContentsFile, Se as buildAndInstallTextTitlesInfos, Ce as buildTextTitlesInfos, $i as createLegiResolver, Ne as extractAssembleeAmendmentSearchItems, lr as extractAssembleeExposesDesMotifs, mr as extractSenatAmendmentSearchItems, Pe as hashAssembleeAmendmentSearchItem, dr as hashAssembleeSearchItem, hr as hashSenatAmendmentSearchItem, vi as hashSenatSearchItem, wi as isAkomaNtosoXml, fr as isoDateFromAssembleeDocument, ar as linkAkomaNtosoBillRaw, pn as linkAssembleeBillRaw, ir as parseAkomaNtosoBillRaw, mi as parseAmendment, fn as parseAssembleeBillRaw, ur as parseAssembleeDocumentSearchContent, _i as parseSenatDocumentSearchContent, qi as readTransformation, er as renderAkomaNtosoBillRaw, Ci as resolveSenatAkomaNtosoSource, Qi as simplifiedHtmlBillFileToTableOfContentsFile, Hi as simplifyWordHtml, Ki as simplifyWordHtmlToDocument, Yi as writeTransformation };
|