@tricoteuses/tisseuse 0.15.1 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{html-D5hxZhPd.js → html-BDmDxEJF.js} +4446 -4387
- package/dist/index.js +6 -6
- package/dist/server.js +700 -672
- package/dist/src/lib/extractors/action_directives.d.ts +7 -0
- package/package.json +1 -1
package/dist/server.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as e,
|
|
2
|
-
import { Dt as
|
|
3
|
-
import * as
|
|
4
|
-
import { createHash as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import { A as e, C as t, Ct as n, D as r, E as i, Et as a, F as o, It as s, J as c, Lt as l, O as u, Q as d, R as f, S as p, T as m, Tt as h, Z as g, b as _, c as v, g as y, h as b, it as x, j as ee, k as S, kt as te, m as ne, n as re, nt as ie, ot as C, p as ae, s as oe, t as se, u as ce, v as le, wt as ue, x as de, yt as fe } from "./html-BDmDxEJF.js";
|
|
2
|
+
import { Dt as w, Et as T, F as pe, I as me, N as he, Nt as E, O as ge, Tt as D, ct as _e, et as ve, ht as ye, jt as O, k as be, n as xe, o as Se, r as Ce, t as we, vt as k } from "./resolver-CuP8arVX.js";
|
|
3
|
+
import * as Te from "node:crypto";
|
|
4
|
+
import { createHash as Ee } from "node:crypto";
|
|
5
|
+
import A from "fs-extra";
|
|
6
|
+
import De from "node:path";
|
|
7
7
|
//#region src/lib/server/assemblee_amendment_search.ts
|
|
8
|
-
function
|
|
8
|
+
function Oe(e, t) {
|
|
9
9
|
let n = e;
|
|
10
10
|
for (let e of t) {
|
|
11
11
|
if (typeof n != "object" || !n) return null;
|
|
@@ -13,34 +13,34 @@ function Te(e, t) {
|
|
|
13
13
|
}
|
|
14
14
|
return typeof n == "string" && n.trim() ? n.trim() : null;
|
|
15
15
|
}
|
|
16
|
-
function
|
|
16
|
+
function ke(e) {
|
|
17
17
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
19
|
+
function Ae(e) {
|
|
20
|
+
return ke(C(e).text());
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let t =
|
|
24
|
-
|
|
22
|
+
function je(e) {
|
|
23
|
+
let t = ke([
|
|
24
|
+
Oe(e, [
|
|
25
25
|
"corps",
|
|
26
26
|
"contenuAuteur",
|
|
27
27
|
"dispositif"
|
|
28
28
|
]),
|
|
29
|
-
|
|
29
|
+
Oe(e, [
|
|
30
30
|
"corps",
|
|
31
31
|
"contenuAuteur",
|
|
32
32
|
"dispositifAmdtCreditPLF"
|
|
33
33
|
]),
|
|
34
|
-
|
|
34
|
+
Oe(e, [
|
|
35
35
|
"corps",
|
|
36
36
|
"contenuAuteur",
|
|
37
37
|
"dispositifAmdtCreditPLFR"
|
|
38
38
|
])
|
|
39
|
-
].filter((e) => e !== null).map((e) =>
|
|
39
|
+
].filter((e) => e !== null).map((e) => Ae(e)).join("\n")), n = Oe(e, [
|
|
40
40
|
"corps",
|
|
41
41
|
"contenuAuteur",
|
|
42
42
|
"exposeSommaire"
|
|
43
|
-
]), r = n === null ? "" :
|
|
43
|
+
]), r = n === null ? "" : Ae(n);
|
|
44
44
|
return [...t ? [{
|
|
45
45
|
content: t,
|
|
46
46
|
itemKind: "dispositif",
|
|
@@ -51,24 +51,24 @@ function Oe(e) {
|
|
|
51
51
|
label: "Exposé sommaire"
|
|
52
52
|
}] : []];
|
|
53
53
|
}
|
|
54
|
-
function
|
|
55
|
-
return
|
|
54
|
+
function Me(e, t) {
|
|
55
|
+
return Ee("sha256").update(JSON.stringify({
|
|
56
56
|
item: e,
|
|
57
57
|
metadata: t
|
|
58
58
|
})).digest("hex");
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region src/lib/extractors/article_action_targets.ts
|
|
62
|
-
function
|
|
62
|
+
function j(e) {
|
|
63
63
|
switch (e.type) {
|
|
64
|
-
case "reference_et_action": return
|
|
65
|
-
case "enumeration": return [...
|
|
64
|
+
case "reference_et_action": return j(e.reference);
|
|
65
|
+
case "enumeration": return [...j(e.left), ...j(e.right)];
|
|
66
66
|
case "parent-enfant": {
|
|
67
|
-
let t = [...
|
|
67
|
+
let t = [...s(e.parent)].filter((e) => e.type === "article");
|
|
68
68
|
return t.length === 1 ? [{
|
|
69
69
|
article: t[0],
|
|
70
70
|
reference: e
|
|
71
|
-
}] : t.length > 1 ? [] :
|
|
71
|
+
}] : t.length > 1 ? [] : j(e.child).map((t) => ({
|
|
72
72
|
article: t.article,
|
|
73
73
|
reference: {
|
|
74
74
|
...e,
|
|
@@ -89,11 +89,11 @@ function N(e) {
|
|
|
89
89
|
}
|
|
90
90
|
//#endregion
|
|
91
91
|
//#region src/lib/extractors/article_action_effects.ts
|
|
92
|
-
function
|
|
92
|
+
function Ne(e, t) {
|
|
93
93
|
if (t < 2) return null;
|
|
94
|
-
let n =
|
|
94
|
+
let n = be(e), r = y(e);
|
|
95
95
|
if (r.length !== t) return null;
|
|
96
|
-
let i =
|
|
96
|
+
let i = o(new D(n.output)), a = (e) => me(n, [e])[0].position;
|
|
97
97
|
return r.map((t, n) => ({
|
|
98
98
|
sourceText: e,
|
|
99
99
|
referencePosition: a({
|
|
@@ -103,17 +103,17 @@ function Ae(e, t) {
|
|
|
103
103
|
actionPosition: a(t.position)
|
|
104
104
|
}));
|
|
105
105
|
}
|
|
106
|
-
function
|
|
106
|
+
function Pe(e, t) {
|
|
107
107
|
if (t.length < 2) return null;
|
|
108
|
-
let n =
|
|
109
|
-
if (
|
|
110
|
-
let
|
|
111
|
-
if (
|
|
112
|
-
let n =
|
|
108
|
+
let n = be(e), r = n.output, i = (e) => me(n, [e])[0].position, a = o(new D(r)), s = a.flatMap(j);
|
|
109
|
+
if (s.length !== t.length || s.length < 2) return null;
|
|
110
|
+
let c = s.filter(({ reference: e }) => e.type === "parent-enfant" && e.parent.type === "texte" && e.parent.nature !== "CODE");
|
|
111
|
+
if (c.length > 0 && c.length < s.length) {
|
|
112
|
+
let n = s.filter((e) => !c.includes(e));
|
|
113
113
|
if (n.length !== 1) return null;
|
|
114
|
-
let a = n[0],
|
|
115
|
-
return !
|
|
116
|
-
targetId:
|
|
114
|
+
let a = n[0], o = t[s.indexOf(a)], l = _(r);
|
|
115
|
+
return !o || l.length !== 1 || l[0].kind === "compound" ? null : [{
|
|
116
|
+
targetId: o,
|
|
117
117
|
sourceAnnotation: {
|
|
118
118
|
sourceText: e,
|
|
119
119
|
referencePosition: i(a.reference.position),
|
|
@@ -133,20 +133,20 @@ function je(e, t) {
|
|
|
133
133
|
}
|
|
134
134
|
}];
|
|
135
135
|
}
|
|
136
|
-
let
|
|
136
|
+
let l = [], u = 0;
|
|
137
137
|
for (let e = 1; e < a.length; e += 1) {
|
|
138
138
|
let t = a[e];
|
|
139
|
-
t.type !== "reference_et_action" ||
|
|
139
|
+
t.type !== "reference_et_action" || j(t).length === 0 || a.slice(u, e).flatMap(j).length === 0 || _(r.slice(u === 0 ? 0 : a[u].position.start, t.position.start)).length === 1 && _(r.slice(t.position.start)).length === 1 && (l.push(e - 1), u = e);
|
|
140
140
|
}
|
|
141
|
-
|
|
141
|
+
l.push(a.length - 1);
|
|
142
142
|
let d = [], f = 0, p = 0;
|
|
143
|
-
for (let n of
|
|
144
|
-
let o = a.slice(f, n + 1).flatMap(
|
|
143
|
+
for (let n of l) {
|
|
144
|
+
let o = a.slice(f, n + 1).flatMap(j);
|
|
145
145
|
if (o.length === 0) {
|
|
146
146
|
f = n + 1;
|
|
147
147
|
continue;
|
|
148
148
|
}
|
|
149
|
-
let s = f === 0 ? 0 : a[f].position.start, c = a[n + 1]?.position.start ?? r.length, l =
|
|
149
|
+
let s = f === 0 ? 0 : a[f].position.start, c = a[n + 1]?.position.start ?? r.length, l = _(r.slice(s, c));
|
|
150
150
|
if (l.length !== 1 || l[0].kind === "compound") return null;
|
|
151
151
|
let u = l[0];
|
|
152
152
|
for (let n of o) {
|
|
@@ -170,7 +170,7 @@ function je(e, t) {
|
|
|
170
170
|
stop: r.length
|
|
171
171
|
},
|
|
172
172
|
reference: n.reference,
|
|
173
|
-
portionSelectors:
|
|
173
|
+
portionSelectors: ie(n.reference)
|
|
174
174
|
}
|
|
175
175
|
});
|
|
176
176
|
}
|
|
@@ -180,29 +180,29 @@ function je(e, t) {
|
|
|
180
180
|
}
|
|
181
181
|
//#endregion
|
|
182
182
|
//#region src/lib/server/parsed_bills.ts
|
|
183
|
-
var
|
|
184
|
-
function
|
|
183
|
+
var Fe = /^expos[ée]\s+des\s+motifs\b/iu;
|
|
184
|
+
function M(e) {
|
|
185
185
|
return (e ?? "").replace(/\u00a0/g, " ").replace(/\s+/g, " ").trim();
|
|
186
186
|
}
|
|
187
|
-
function
|
|
188
|
-
return
|
|
187
|
+
function N(e) {
|
|
188
|
+
return M(e).toLowerCase().normalize("NFD").replace(/\p{Diacritic}/gu, "");
|
|
189
189
|
}
|
|
190
|
-
function
|
|
191
|
-
return
|
|
190
|
+
function Ie(e) {
|
|
191
|
+
return n(M(e));
|
|
192
192
|
}
|
|
193
|
-
function
|
|
194
|
-
return `_TocArt${
|
|
193
|
+
function P(e) {
|
|
194
|
+
return `_TocArt${Ie(e).replace(/\s+/gu, "")}`;
|
|
195
195
|
}
|
|
196
|
-
function
|
|
196
|
+
function Le(e, t) {
|
|
197
197
|
return e(t).closest(".assnatTOC6,.assnatTOC5,.assnatTOC4").length > 0;
|
|
198
198
|
}
|
|
199
|
-
function
|
|
200
|
-
return
|
|
199
|
+
function Re(e) {
|
|
200
|
+
return N(e).replace(/[‐‑‒–—]/gu, "-").replace(/\s*\.\s*/gu, ".");
|
|
201
201
|
}
|
|
202
|
-
function
|
|
203
|
-
return
|
|
202
|
+
function ze(e) {
|
|
203
|
+
return Re(e).replace(/[^a-z0-9]+/gu, "-").replace(/^-|-$/gu, "");
|
|
204
204
|
}
|
|
205
|
-
function
|
|
205
|
+
function Be(e) {
|
|
206
206
|
switch (e.kind) {
|
|
207
207
|
case "insert_after":
|
|
208
208
|
case "insert_before": return e.insertText;
|
|
@@ -220,12 +220,12 @@ function Le(e) {
|
|
|
220
220
|
default: return;
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
|
-
function
|
|
224
|
-
let
|
|
225
|
-
if (
|
|
223
|
+
function Ve(e) {
|
|
224
|
+
let t = M(e.sourceText), n = /\b(?:ins[ée]r[ée]s?|cr[ée][ée]s?|ajout[ée]s?|compl[ée]t[ée]s?\s+par)\b[\s\S]{0,160}?\barticle\s+(.+?)\s+ainsi\s+r[ée]dig[ée]s?\b/iu.exec(t);
|
|
225
|
+
if (n?.[1] !== void 0) return ue(n[1]);
|
|
226
226
|
}
|
|
227
|
-
function
|
|
228
|
-
let t =
|
|
227
|
+
function He(e) {
|
|
228
|
+
let t = Be(e), n = fe(t ?? "");
|
|
229
229
|
if (n.length > 0 && t !== void 0) return n.map((e, r) => {
|
|
230
230
|
let i = e.start, a = n[r + 1]?.start ?? t.length, o = t.slice(i, a).trim();
|
|
231
231
|
return {
|
|
@@ -233,58 +233,58 @@ function ze(e) {
|
|
|
233
233
|
text: o
|
|
234
234
|
};
|
|
235
235
|
});
|
|
236
|
-
let r =
|
|
236
|
+
let r = Ve(e);
|
|
237
237
|
return r === void 0 ? [] : [{
|
|
238
238
|
num: r,
|
|
239
239
|
text: t ?? e.sourceText
|
|
240
240
|
}];
|
|
241
241
|
}
|
|
242
|
-
function
|
|
242
|
+
function Ue(e, t = /* @__PURE__ */ new Set()) {
|
|
243
243
|
if (e == null) return t;
|
|
244
244
|
if (Array.isArray(e)) {
|
|
245
|
-
for (let n of e)
|
|
245
|
+
for (let n of e) Ue(n, t);
|
|
246
246
|
return t;
|
|
247
247
|
}
|
|
248
248
|
if (typeof e != "object") return t;
|
|
249
249
|
let n = e;
|
|
250
250
|
n.type === "article" && typeof n.num == "string" && t.add(n.num);
|
|
251
|
-
for (let e of Object.values(n))
|
|
251
|
+
for (let e of Object.values(n)) Ue(e, t);
|
|
252
252
|
return t;
|
|
253
253
|
}
|
|
254
|
-
function
|
|
255
|
-
let t =
|
|
254
|
+
function We(e) {
|
|
255
|
+
let t = N(e.sourceText);
|
|
256
256
|
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);
|
|
257
257
|
}
|
|
258
|
-
function
|
|
259
|
-
return
|
|
258
|
+
function Ge(e) {
|
|
259
|
+
return M(e).replace(/[’']/gu, "'").replace(/[‐‑‒–—]/gu, "-");
|
|
260
260
|
}
|
|
261
|
-
function
|
|
262
|
-
let n = new
|
|
261
|
+
function Ke(e, t) {
|
|
262
|
+
let n = new D(e, t), r = ve(n);
|
|
263
263
|
return typeof r != "string" || n.offset <= t ? null : {
|
|
264
264
|
date: r,
|
|
265
265
|
start: t,
|
|
266
266
|
stop: n.offset
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
|
-
function
|
|
269
|
+
function qe(e, t) {
|
|
270
270
|
let n = /\d/u.exec(e.slice(t));
|
|
271
271
|
if (!n) return null;
|
|
272
272
|
let r = t + n.index;
|
|
273
|
-
return e.slice(t, r).trim().length > 0 ? null :
|
|
273
|
+
return e.slice(t, r).trim().length > 0 ? null : Ke(e, r);
|
|
274
274
|
}
|
|
275
|
-
function
|
|
275
|
+
function Je(e) {
|
|
276
276
|
let t = /^la présente loi (?:s['’]appli(?:que|quent)|entr(?:e|ent) en vigueur) (?:[aà] compter (?:du|de|d['’])|au|le)\s*/u, n = /^la présente loi s['’]appli(?:que|quent)\s*:\s*/u, r = /\b[aà] compter (?:du|de|d['’])\s*/gu, i = [], a = "la présente loi", o = e.indexOf(a);
|
|
277
277
|
for (; o !== -1;) {
|
|
278
278
|
let s = e.indexOf(a, o + 15), c = e.slice(o, o + 1400), l = t.exec(c);
|
|
279
279
|
if (l) {
|
|
280
|
-
let e =
|
|
280
|
+
let e = qe(c, l[0].length);
|
|
281
281
|
e && i.push(e.date);
|
|
282
282
|
}
|
|
283
283
|
let u = n.exec(c);
|
|
284
284
|
if (u) {
|
|
285
285
|
let e = /\barticle\s+\w/iu.exec(c), t = e === null ? c.slice(u[0].length) : c.slice(u[0].length, e.index);
|
|
286
286
|
for (r.lastIndex = 0; r.exec(t) !== null;) {
|
|
287
|
-
let e =
|
|
287
|
+
let e = qe(t, r.lastIndex);
|
|
288
288
|
e && /^\s+pour\s+les\s+autres\s+dispositions\s+fiscales\b/iu.test(t.slice(e.stop)) && i.push(e.date);
|
|
289
289
|
}
|
|
290
290
|
}
|
|
@@ -292,20 +292,20 @@ function Ge(e) {
|
|
|
292
292
|
}
|
|
293
293
|
return i;
|
|
294
294
|
}
|
|
295
|
-
function
|
|
296
|
-
let t = Ge(
|
|
295
|
+
function Ye(e) {
|
|
296
|
+
let t = Je(Ge(e).toLowerCase()), n = Array.from(new Set(t));
|
|
297
297
|
return n.length === 1 ? n[0] : void 0;
|
|
298
298
|
}
|
|
299
|
-
function
|
|
300
|
-
return
|
|
299
|
+
function Xe(e) {
|
|
300
|
+
return N(e).replace(/[’]/gu, "'").replace(/[‐‑‒–—]/gu, "-").replace(/^(?:(?:article\s+[^:]+|[a-z][.)]|[ivxlcdm]+\.|\d+°)\s*(?:-\s*)?)+/iu, "");
|
|
301
301
|
}
|
|
302
|
-
function
|
|
302
|
+
function F(e) {
|
|
303
303
|
return e?.type === "tag";
|
|
304
304
|
}
|
|
305
|
-
function
|
|
305
|
+
function Ze(e, t) {
|
|
306
306
|
return e.html(t) ?? "";
|
|
307
307
|
}
|
|
308
|
-
function
|
|
308
|
+
function Qe(e, t) {
|
|
309
309
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
310
310
|
for (let i of e(t).find("a").get()) {
|
|
311
311
|
let a = e(i).attr("href") ?? "", o = /\/legifrance\/(articles|sections|textes)\/([^?#"]+)/u.exec(a);
|
|
@@ -313,46 +313,46 @@ function Ye(e, t) {
|
|
|
313
313
|
let s = o[1] === "articles" ? "article" : o[1] === "sections" ? "division" : "text", c = o[2].replace(/\.md$/u, ""), l = `${s}\0${c}`;
|
|
314
314
|
if (r.has(l)) continue;
|
|
315
315
|
r.add(l);
|
|
316
|
-
let u =
|
|
316
|
+
let u = M(e(i).text());
|
|
317
317
|
n.push({
|
|
318
318
|
id: c,
|
|
319
|
-
|
|
319
|
+
...$e(e, t, i) ? { insideFrenchQuotes: !0 } : {},
|
|
320
320
|
...u ? { text: u } : {},
|
|
321
321
|
type: s
|
|
322
322
|
});
|
|
323
323
|
}
|
|
324
324
|
return n;
|
|
325
325
|
}
|
|
326
|
-
function
|
|
327
|
-
let r =
|
|
326
|
+
function $e(e, t, n) {
|
|
327
|
+
let r = et(e, t, n);
|
|
328
328
|
return (r.match(/«/gu) ?? []).length > (r.match(/»/gu) ?? []).length;
|
|
329
329
|
}
|
|
330
|
-
function
|
|
330
|
+
function et(e, t, n) {
|
|
331
331
|
if (t === n) return "";
|
|
332
332
|
if (t.type === "text") return t.data ?? "";
|
|
333
|
-
if (!
|
|
333
|
+
if (!F(t)) return "";
|
|
334
334
|
let r = "";
|
|
335
335
|
for (let i of e(t).contents().get()) {
|
|
336
336
|
if (i === n) return r;
|
|
337
|
-
if (
|
|
337
|
+
if (F(i) && e.contains(i, n)) return r + et(e, i, n);
|
|
338
338
|
r += e(i).text();
|
|
339
339
|
}
|
|
340
340
|
return r;
|
|
341
341
|
}
|
|
342
|
-
function
|
|
343
|
-
return t.map((t) =>
|
|
342
|
+
function tt(e, t) {
|
|
343
|
+
return t.map((t) => M(e(t).text())).filter(Boolean).join("\n");
|
|
344
344
|
}
|
|
345
|
-
function
|
|
346
|
-
let t =
|
|
347
|
-
return !t ||
|
|
345
|
+
function nt(e) {
|
|
346
|
+
let t = N(e);
|
|
347
|
+
return !t || Fe.test(t) ? "noise" : r.test(e) ? "directive_candidate" : "context";
|
|
348
348
|
}
|
|
349
|
-
async function
|
|
349
|
+
async function rt(e, t, n) {
|
|
350
350
|
if (n === void 0) throw Error("A document date is required to add links to legal references.");
|
|
351
351
|
if (t.legiResolver === void 0 && t.canutesDb === void 0) throw Error("A Canutes database or an explicit legal resolver is required to add links to legal references.");
|
|
352
|
-
let { output: r } = await
|
|
352
|
+
let { output: r } = await re({
|
|
353
353
|
date: n,
|
|
354
354
|
html: e,
|
|
355
|
-
legiResolver: t.legiResolver ?? new
|
|
355
|
+
legiResolver: t.legiResolver ?? new ae(t.canutesDb),
|
|
356
356
|
linkBaseUrl: t.linkBaseUrl,
|
|
357
357
|
linkType: t.linkType,
|
|
358
358
|
logIgnoredReferencesTypes: t.logIgnoredReferencesTypes,
|
|
@@ -361,13 +361,13 @@ async function et(e, t, n) {
|
|
|
361
361
|
});
|
|
362
362
|
return r ?? e;
|
|
363
363
|
}
|
|
364
|
-
function
|
|
364
|
+
function it(e, t) {
|
|
365
365
|
let n = e(t).closest("h1,h2,h3,h4,h5,h6,p,td,th").get(0), r = e(t).closest("table").get(0);
|
|
366
|
-
return
|
|
366
|
+
return F(r) && F(n) && e(n).parents("table").get(0) === r ? r : F(n) ? n : t;
|
|
367
367
|
}
|
|
368
|
-
function
|
|
368
|
+
function at(e, t, n, r) {
|
|
369
369
|
if (t.has(r.container)) return;
|
|
370
|
-
let i = r.id ??
|
|
370
|
+
let i = r.id ?? P(r.num ?? r.label);
|
|
371
371
|
n.has(i) || (n.add(i), t.add(r.container), e.push({
|
|
372
372
|
id: i,
|
|
373
373
|
label: r.label,
|
|
@@ -377,25 +377,25 @@ function nt(e, t, n, r) {
|
|
|
377
377
|
container: r.container
|
|
378
378
|
}));
|
|
379
379
|
}
|
|
380
|
-
function
|
|
380
|
+
function ot(e) {
|
|
381
381
|
let t = /* @__PURE__ */ new Map();
|
|
382
382
|
return e("body *").each((e, n) => {
|
|
383
383
|
t.set(n, e);
|
|
384
384
|
}), t;
|
|
385
385
|
}
|
|
386
|
-
function
|
|
386
|
+
function I(e, t) {
|
|
387
387
|
return e.get(t) ?? 2 ** 53 - 1;
|
|
388
388
|
}
|
|
389
|
-
function
|
|
389
|
+
function st(e) {
|
|
390
390
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
391
391
|
e("a[id], span[id], h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]").each((i, a) => {
|
|
392
|
-
if (
|
|
393
|
-
let o =
|
|
392
|
+
if (Le(e, a)) return;
|
|
393
|
+
let o = h(M(e(a).text()));
|
|
394
394
|
if (!o) return;
|
|
395
395
|
let s = e(a).attr("id");
|
|
396
396
|
if (!s || r.has(s)) return;
|
|
397
|
-
let c =
|
|
398
|
-
|
|
397
|
+
let c = it(e, a);
|
|
398
|
+
at(t, n, r, {
|
|
399
399
|
id: s,
|
|
400
400
|
...o,
|
|
401
401
|
element: a,
|
|
@@ -403,37 +403,37 @@ function it(e) {
|
|
|
403
403
|
});
|
|
404
404
|
}), e("h1:not([id]), h2:not([id]), h3:not([id]), h4:not([id]), h5:not([id]), h6:not([id])").each((i, a) => {
|
|
405
405
|
if (n.has(a)) return;
|
|
406
|
-
let o =
|
|
407
|
-
o &&
|
|
406
|
+
let o = h(M(e(a).text()));
|
|
407
|
+
o && at(t, n, r, {
|
|
408
408
|
...o,
|
|
409
409
|
element: a,
|
|
410
410
|
container: a
|
|
411
411
|
});
|
|
412
412
|
});
|
|
413
|
-
let i =
|
|
414
|
-
return t.sort((e, t) =>
|
|
413
|
+
let i = ot(e);
|
|
414
|
+
return t.sort((e, t) => I(i, e.container) - I(i, t.container)), t;
|
|
415
415
|
}
|
|
416
|
-
function
|
|
417
|
-
if (
|
|
416
|
+
function ct(e, t) {
|
|
417
|
+
if (Le(e, t)) return !1;
|
|
418
418
|
let n = t.tagName?.toLowerCase();
|
|
419
419
|
if (n !== "p") return /^h[1-6]$/u.test(n ?? "");
|
|
420
420
|
let r = e(t).attr("style") ?? "", i = e(t).html() ?? "";
|
|
421
421
|
return /text-align\s*:\s*center/iu.test(r) && (/font-weight\s*:\s*bold/iu.test(r) || /font-weight\s*:\s*bold/iu.test(i) || /<(?:strong|b)(?:\s|>)/iu.test(i));
|
|
422
422
|
}
|
|
423
|
-
function
|
|
423
|
+
function lt(e) {
|
|
424
424
|
let t = [], n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
|
|
425
425
|
return e("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6,p").each((i, a) => {
|
|
426
|
-
if (
|
|
427
|
-
let o =
|
|
428
|
-
o &&
|
|
426
|
+
if (Le(e, a) || !e(a).hasClass("assnat9ArticleNum") && !ct(e, a)) return;
|
|
427
|
+
let o = h(e(a).text());
|
|
428
|
+
o && at(t, n, r, {
|
|
429
429
|
...o,
|
|
430
430
|
element: a,
|
|
431
431
|
container: a
|
|
432
432
|
});
|
|
433
433
|
}), t;
|
|
434
434
|
}
|
|
435
|
-
function
|
|
436
|
-
let t =
|
|
435
|
+
function ut(e) {
|
|
436
|
+
let t = Ie(e ?? "").replace(/[()]/gu, "").trim();
|
|
437
437
|
if (!t || t.toLowerCase() === "liminaire") return;
|
|
438
438
|
if (t.toLowerCase() === "unique") return {
|
|
439
439
|
base: 1,
|
|
@@ -442,7 +442,7 @@ function st(e) {
|
|
|
442
442
|
};
|
|
443
443
|
let n = /^(\d+|premier)(?:\s+([a-z]+))?(?:\s+([A-Z]+))?$/u.exec(t);
|
|
444
444
|
if (!n) return;
|
|
445
|
-
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 :
|
|
445
|
+
let r = n[1] === "premier" ? 1 : Number.parseInt(n[1], 10), i = n[2], a = i === void 0 ? 0 : ft(i);
|
|
446
446
|
if (a !== void 0) return {
|
|
447
447
|
base: r,
|
|
448
448
|
suffixOrder: a,
|
|
@@ -450,7 +450,7 @@ function st(e) {
|
|
|
450
450
|
text: t
|
|
451
451
|
};
|
|
452
452
|
}
|
|
453
|
-
function
|
|
453
|
+
function dt(e, t) {
|
|
454
454
|
if (t.base !== e.base) return t.base - e.base;
|
|
455
455
|
if (t.suffixOrder !== e.suffixOrder) return t.suffixOrder - e.suffixOrder;
|
|
456
456
|
for (let n = 0; n <= Math.max(e.letters?.length ?? 0, t.letters?.length ?? 0); n++) {
|
|
@@ -459,14 +459,14 @@ function ct(e, t) {
|
|
|
459
459
|
}
|
|
460
460
|
return 0;
|
|
461
461
|
}
|
|
462
|
-
function
|
|
463
|
-
let t = new
|
|
462
|
+
function ft(e) {
|
|
463
|
+
let t = new D(e), n = _e(t);
|
|
464
464
|
if (!(n === void 0 || t.offset !== e.length) && !(typeof n != "object" || !n || !("value" in n) || typeof n.value != "number")) return n.value - 1;
|
|
465
465
|
}
|
|
466
|
-
function
|
|
466
|
+
function pt(e) {
|
|
467
467
|
let t = [], n = e.map((e) => ({
|
|
468
468
|
heading: e,
|
|
469
|
-
token:
|
|
469
|
+
token: ut(e.num)
|
|
470
470
|
}));
|
|
471
471
|
n.filter(({ token: e }) => e?.text === "unique").length > 0 && e.length > 1 && t.push({
|
|
472
472
|
code: "article_toc_out_of_order",
|
|
@@ -475,7 +475,7 @@ function ut(e) {
|
|
|
475
475
|
let r;
|
|
476
476
|
for (let { heading: e, token: i } of n) if (!(i === void 0 || i.text === "unique")) {
|
|
477
477
|
if (r !== void 0) {
|
|
478
|
-
let n =
|
|
478
|
+
let n = dt(r, i);
|
|
479
479
|
n === 0 ? t.push({
|
|
480
480
|
code: "article_toc_duplicate_number",
|
|
481
481
|
message: `Article ${e.num ?? e.label} is repeated`,
|
|
@@ -504,60 +504,60 @@ function ut(e) {
|
|
|
504
504
|
}
|
|
505
505
|
return t;
|
|
506
506
|
}
|
|
507
|
-
function
|
|
508
|
-
let t =
|
|
507
|
+
function mt(e) {
|
|
508
|
+
let t = pt(e);
|
|
509
509
|
t.length > 0 && process.env.TISSEUSE_WARN_ASSEMBLEE_HEADING_SEQUENCE === "1" && console.warn("Incoherent Assemblée article heading sequence", { issues: t.map((e) => e.message) });
|
|
510
510
|
}
|
|
511
|
-
function
|
|
512
|
-
let n =
|
|
513
|
-
if (n.length === 0) return t &&
|
|
514
|
-
let i =
|
|
515
|
-
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) =>
|
|
511
|
+
function ht(e, { warn: t = !0 } = {}) {
|
|
512
|
+
let n = st(e), r = lt(e);
|
|
513
|
+
if (n.length === 0) return t && mt(r), r;
|
|
514
|
+
let i = ot(e), a = (e, t) => {
|
|
515
|
+
let n = new Set(e.map((e) => e.container)), r = new Set(e.map((e) => P(e.num ?? e.label)));
|
|
516
516
|
for (let i of t) {
|
|
517
|
-
let t =
|
|
517
|
+
let t = P(i.num ?? i.label);
|
|
518
518
|
n.has(i.container) || r.has(t) || (n.add(i.container), r.add(t), e.push(i));
|
|
519
519
|
}
|
|
520
|
-
return e.sort((e, t) =>
|
|
521
|
-
}, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 &&
|
|
522
|
-
return t &&
|
|
520
|
+
return e.sort((e, t) => I(i, e.container) - I(i, t.container)), e;
|
|
521
|
+
}, o = r.filter((t) => e(t.element).is("p.assnat9ArticleNum,h1,h2,h3,h4,h5,h6")), s = a([...n], o), c = a([...s], r.filter((e) => !o.includes(e))), l = s.length >= 2 && pt(c).length > pt(s).length ? s : c;
|
|
522
|
+
return t && mt(l), l;
|
|
523
523
|
}
|
|
524
|
-
function
|
|
524
|
+
function gt(e) {
|
|
525
525
|
let t = e.next;
|
|
526
526
|
for (; t !== null;) {
|
|
527
|
-
if (
|
|
527
|
+
if (F(t)) return t;
|
|
528
528
|
t = t.next;
|
|
529
529
|
}
|
|
530
530
|
return null;
|
|
531
531
|
}
|
|
532
|
-
function
|
|
532
|
+
function _t(e, t, n) {
|
|
533
533
|
let r = e(t.container);
|
|
534
534
|
if (!r.is("p.assnat9ArticleNum")) return;
|
|
535
535
|
let i = r.parent(), a = i.parent();
|
|
536
536
|
if (!i.is("div") || i.children().length !== 1 || !a.is("div")) return;
|
|
537
537
|
let o = a.children().get();
|
|
538
|
-
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" ||
|
|
538
|
+
if (o.length !== 3 && o.length !== 4 || o[0] !== i.get(0) || o[1]?.tagName !== "span" || M(e(o[1]).text()) !== "") return;
|
|
539
539
|
let s = o.length === 4 ? o[2] : void 0;
|
|
540
|
-
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(
|
|
540
|
+
if (s !== void 0 && (s.tagName !== "p" || !e(s).hasClass("assnat9ArticleNum") || !/^\(non modifié\)$/iu.test(M(e(s).text())))) return;
|
|
541
541
|
let c = o.at(-1);
|
|
542
|
-
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) =>
|
|
542
|
+
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) => h(e(t).text()) !== null))) return [
|
|
543
543
|
t.container,
|
|
544
544
|
...s === void 0 ? [] : [s],
|
|
545
545
|
c
|
|
546
546
|
];
|
|
547
547
|
}
|
|
548
|
-
function
|
|
548
|
+
function vt(e, t, n, r = ot(e)) {
|
|
549
549
|
let i = [t.container], a = n?.container;
|
|
550
|
-
for (let e =
|
|
550
|
+
for (let e = gt(t.container); e !== null && e !== a; e = gt(e)) i.push(e);
|
|
551
551
|
if (i.length > 1) return i;
|
|
552
|
-
let o =
|
|
552
|
+
let o = _t(e, t, n);
|
|
553
553
|
if (o !== void 0) return o;
|
|
554
|
-
let s =
|
|
554
|
+
let s = I(r, t.container), c = a ? I(r, a) : -1;
|
|
555
555
|
return e("body > *").get().filter((e) => {
|
|
556
|
-
let t =
|
|
556
|
+
let t = I(r, e);
|
|
557
557
|
return t >= s && (c === -1 || t < c);
|
|
558
558
|
});
|
|
559
559
|
}
|
|
560
|
-
function
|
|
560
|
+
function yt(e, t) {
|
|
561
561
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
562
562
|
for (let i of t) {
|
|
563
563
|
let t = "p,li,table", a = e(i).is(t) ? [i] : e(i).find(t).get();
|
|
@@ -565,125 +565,130 @@ function gt(e, t) {
|
|
|
565
565
|
}
|
|
566
566
|
return n;
|
|
567
567
|
}
|
|
568
|
-
function
|
|
568
|
+
function bt(e, t, n) {
|
|
569
569
|
let r = [], i = !1;
|
|
570
|
-
for (let a of
|
|
571
|
-
let n =
|
|
570
|
+
for (let a of yt(e, n)) {
|
|
571
|
+
let n = M(e(a).text());
|
|
572
572
|
if (!n) continue;
|
|
573
|
-
|
|
574
|
-
let o = i ? "noise" :
|
|
573
|
+
Fe.test(n) && (i = !0);
|
|
574
|
+
let o = i ? "noise" : nt(n), s = `${t}-b${r.length + 1}`;
|
|
575
575
|
e(a).attr("data-pjl-parsed-article-id", t), e(a).attr("data-pjl-parsed-block-id", s), r.push({
|
|
576
576
|
id: s,
|
|
577
577
|
articleId: t,
|
|
578
578
|
kind: o,
|
|
579
|
-
links:
|
|
579
|
+
links: Qe(e, a),
|
|
580
580
|
text: n,
|
|
581
|
-
html:
|
|
581
|
+
html: Ze(e, a)
|
|
582
582
|
});
|
|
583
583
|
}
|
|
584
584
|
return r;
|
|
585
585
|
}
|
|
586
|
-
function
|
|
586
|
+
function xt(e, t) {
|
|
587
587
|
if (t.length === 0) return e;
|
|
588
588
|
let n = `<div style="display: none;">\n${t.map((e) => `<p class="assnatTOC6"><a href="#${e.id}"><span class="assnatHyperlink" style="font-weight:bold; text-decoration:none; color:#000000">${e.label.toUpperCase()}</span></a></p>`).join("\n")}\n</div>`;
|
|
589
589
|
return e.includes("class=\"assnatSection3\"") ? e.replace(/(<div class="assnatSection3">)/u, `${n}$1`) : e.includes("id=\"formCorrection:panel:1:table\"") ? e.replace(/(<div id="formCorrection:panel:1:table">)/u, `${n}$1`) : `${n}\n${e}`;
|
|
590
590
|
}
|
|
591
|
-
function
|
|
592
|
-
let t =
|
|
593
|
-
for (let e of
|
|
594
|
-
let r =
|
|
591
|
+
function St(e) {
|
|
592
|
+
let t = C(e), n = Ct(t);
|
|
593
|
+
for (let e of ht(t, { warn: !1 })) {
|
|
594
|
+
let r = P(e.num ?? e.label.replace(/^Article\s+/iu, "")), i = t(e.element), a = i.attr("id");
|
|
595
595
|
if (a !== r) {
|
|
596
|
-
if (a?.startsWith("_Toc") && !
|
|
596
|
+
if (a?.startsWith("_Toc") && !Tt(n, a, e.element)) {
|
|
597
597
|
let e = t("<span></span>").attr("id", a);
|
|
598
598
|
i.before(e);
|
|
599
599
|
let r = e.get(0);
|
|
600
|
-
|
|
600
|
+
F(r) && L(n, a, r);
|
|
601
601
|
}
|
|
602
|
-
a &&
|
|
602
|
+
a && wt(n, a, e.element), i.attr("id", r), L(n, r, e.element);
|
|
603
603
|
}
|
|
604
604
|
}
|
|
605
|
-
let r =
|
|
605
|
+
let r = ht(t), i = ot(t);
|
|
606
606
|
for (let [e, a] of r.entries()) {
|
|
607
|
-
let o =
|
|
607
|
+
let o = vt(t, a, r[e + 1], i).flatMap((e) => t(e).is("span.alinea[data-alinea]") ? [e] : t(e).find("span.alinea[data-alinea]").get());
|
|
608
608
|
for (let e of o) {
|
|
609
609
|
let r = t(e).attr("data-alinea")?.trim();
|
|
610
610
|
if (!r) continue;
|
|
611
611
|
let i = `${a.id}-alinea-${r.replace(/\s+/gu, "")}`;
|
|
612
|
-
if (
|
|
612
|
+
if (Tt(n, i, e)) continue;
|
|
613
613
|
let o = t(e).attr("id");
|
|
614
614
|
if (o && o !== i) {
|
|
615
615
|
let r = t("<span></span>").attr("id", i);
|
|
616
616
|
t(e).before(r);
|
|
617
617
|
let a = r.get(0);
|
|
618
|
-
|
|
619
|
-
} else o &&
|
|
618
|
+
F(a) && L(n, i, a);
|
|
619
|
+
} else o && wt(n, o, e), t(e).attr("id", i), L(n, i, e);
|
|
620
620
|
}
|
|
621
621
|
}
|
|
622
622
|
return t.html();
|
|
623
623
|
}
|
|
624
|
-
function
|
|
624
|
+
function Ct(e) {
|
|
625
625
|
let t = /* @__PURE__ */ new Map();
|
|
626
626
|
for (let n of e("[id]").get()) {
|
|
627
627
|
let r = e(n).attr("id");
|
|
628
|
-
r &&
|
|
628
|
+
r && L(t, r, n);
|
|
629
629
|
}
|
|
630
630
|
return t;
|
|
631
631
|
}
|
|
632
|
-
function
|
|
632
|
+
function L(e, t, n) {
|
|
633
633
|
let r = e.get(t);
|
|
634
634
|
r === void 0 && (r = /* @__PURE__ */ new Set(), e.set(t, r)), r.add(n);
|
|
635
635
|
}
|
|
636
|
-
function
|
|
636
|
+
function wt(e, t, n) {
|
|
637
637
|
let r = e.get(t);
|
|
638
638
|
r !== void 0 && (r.delete(n), r.size === 0 && e.delete(t));
|
|
639
639
|
}
|
|
640
|
-
function
|
|
640
|
+
function Tt(e, t, n) {
|
|
641
641
|
for (let r of e.get(t) ?? []) if (r !== n) return !0;
|
|
642
642
|
return !1;
|
|
643
643
|
}
|
|
644
|
-
function
|
|
645
|
-
let n =
|
|
644
|
+
function Et(e, t) {
|
|
645
|
+
let n = Xe("sourceText" in t ? t.sourceText : "");
|
|
646
646
|
if (n) return e.filter((e) => e.kind === "directive_candidate").find((e) => {
|
|
647
|
-
let t =
|
|
647
|
+
let t = Xe(e.text);
|
|
648
648
|
return t.length > 0 && (n.includes(t) || t.includes(n));
|
|
649
649
|
});
|
|
650
650
|
}
|
|
651
|
-
function
|
|
651
|
+
function Dt(e, t) {
|
|
652
652
|
if (t) return t.blockIds.map((t) => e.get(t)).find((e) => e?.kind === "directive_candidate");
|
|
653
653
|
}
|
|
654
|
-
function
|
|
654
|
+
function Ot(e) {
|
|
655
655
|
return e?.links.filter((e) => !e.insideFrenchQuotes && (e.type === "article" || e.type === "division")).map((e) => e.id) ?? [];
|
|
656
656
|
}
|
|
657
|
-
function
|
|
658
|
-
let n =
|
|
657
|
+
function kt(e, t) {
|
|
658
|
+
let n = M(e);
|
|
659
659
|
if (!n) return;
|
|
660
|
-
let r =
|
|
660
|
+
let r = x(n);
|
|
661
661
|
return r ? r.level : n.endsWith(":") ? (t ?? -1) + 1 : void 0;
|
|
662
662
|
}
|
|
663
|
-
function
|
|
664
|
-
let t = /* @__PURE__ */ new Map(), n = [];
|
|
665
|
-
for (let
|
|
666
|
-
let e =
|
|
667
|
-
if (e
|
|
668
|
-
t.set(
|
|
663
|
+
function At(e) {
|
|
664
|
+
let t = /* @__PURE__ */ new Map(), n = [], r = ne(e.map((e) => e.text)), i = -1;
|
|
665
|
+
for (let [a, o] of e.entries()) {
|
|
666
|
+
let e = r.get(a);
|
|
667
|
+
if (e && (i = e.endIndex), a <= i) {
|
|
668
|
+
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
669
669
|
continue;
|
|
670
670
|
}
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
671
|
+
let s = kt(o.text, n.at(-1)?.level);
|
|
672
|
+
if (s === void 0) {
|
|
673
|
+
t.set(o.id, [...n.map((e) => e.block), o]);
|
|
674
|
+
continue;
|
|
675
|
+
}
|
|
676
|
+
for (; n.length > 0 && n[n.length - 1].level >= s;) n.pop();
|
|
677
|
+
t.set(o.id, [...n.map((e) => e.block), o]), n.push({
|
|
678
|
+
level: s,
|
|
679
|
+
block: o
|
|
675
680
|
});
|
|
676
681
|
}
|
|
677
682
|
return t;
|
|
678
683
|
}
|
|
679
|
-
function
|
|
684
|
+
function jt(e, t) {
|
|
680
685
|
let n = [], r = /* @__PURE__ */ new Set();
|
|
681
686
|
for (let i of [...e ?? [], ...t]) i !== void 0 && (r.has(i.id) || (r.add(i.id), n.push(i)));
|
|
682
687
|
return n;
|
|
683
688
|
}
|
|
684
|
-
function
|
|
689
|
+
function Mt(e, t, n) {
|
|
685
690
|
if (!t) return;
|
|
686
|
-
let r =
|
|
691
|
+
let r = jt(e, t.blockIds.map((e) => n.get(e)).filter((e) => e !== void 0));
|
|
687
692
|
if (r.length === 0) return;
|
|
688
693
|
let i = r.map((e) => e.id);
|
|
689
694
|
if (i.length === t.blockIds.length && i.every((e, n) => e === t.blockIds[n])) return;
|
|
@@ -698,7 +703,7 @@ function At(e, t, n) {
|
|
|
698
703
|
}
|
|
699
704
|
};
|
|
700
705
|
}
|
|
701
|
-
function
|
|
706
|
+
function Nt(e) {
|
|
702
707
|
let t = [], n = 0;
|
|
703
708
|
for (let r of e.blocks) {
|
|
704
709
|
let i = e.directiveText.indexOf(r.text, n);
|
|
@@ -712,7 +717,7 @@ function jt(e) {
|
|
|
712
717
|
}
|
|
713
718
|
return t;
|
|
714
719
|
}
|
|
715
|
-
function
|
|
720
|
+
function Pt(e, t, n) {
|
|
716
721
|
let { start: r, stop: i } = n.sourcePosition, a = t.filter((e) => e.stop > r && e.start < i);
|
|
717
722
|
if (a.length === 0) return;
|
|
718
723
|
let o = a[0], s = a[a.length - 1], c = o.start, l = s.stop;
|
|
@@ -726,7 +731,7 @@ function Mt(e, t, n) {
|
|
|
726
731
|
}
|
|
727
732
|
};
|
|
728
733
|
}
|
|
729
|
-
function
|
|
734
|
+
function Ft(e, t, n) {
|
|
730
735
|
if (!t) return;
|
|
731
736
|
let r = e.directiveText.indexOf(t.text);
|
|
732
737
|
if (r === -1) return;
|
|
@@ -739,14 +744,14 @@ function Nt(e, t, n) {
|
|
|
739
744
|
stop: a
|
|
740
745
|
};
|
|
741
746
|
}
|
|
742
|
-
function
|
|
743
|
-
let n = performance.now(), r = performance.now(), i =
|
|
747
|
+
function It(e, t) {
|
|
748
|
+
let n = performance.now(), r = performance.now(), i = Nt(e), a = performance.now() - r, o = performance.now(), s = new Map(e.blocks.map((e) => [e.id, e])), c = At(e.blocks), l = /* @__PURE__ */ new Map(), u = [];
|
|
744
749
|
for (let t of e.blocks) {
|
|
745
|
-
let e =
|
|
750
|
+
let e = Ot(t);
|
|
746
751
|
e.length > 0 && (u = e), l.set(t.id, u);
|
|
747
752
|
}
|
|
748
|
-
let d = performance.now() - o, f = performance.now(), p =
|
|
749
|
-
let n =
|
|
753
|
+
let d = performance.now() - o, f = performance.now(), p = b(), m = le(e.directiveText, t === void 0 ? void 0 : p), h = performance.now() - f, g = performance.now(), _ = m.map((t) => {
|
|
754
|
+
let n = Pt(e, i, t), r = Dt(s, n) ?? Et(e.blocks, t), a = Ot(r), o = a.length > 0 ? a : r?.id === void 0 ? [] : l.get(r.id) ?? [], u = Ft(e, r, t), d = Mt(r?.id === void 0 ? void 0 : c.get(r.id), n, s);
|
|
750
755
|
return {
|
|
751
756
|
articleId: e.id,
|
|
752
757
|
blockId: r?.id,
|
|
@@ -764,19 +769,19 @@ function Pt(e, t) {
|
|
|
764
769
|
directive: t,
|
|
765
770
|
...o.length > 0 ? { targetIds: o } : {}
|
|
766
771
|
};
|
|
767
|
-
}),
|
|
772
|
+
}), v = /* @__PURE__ */ new Set(), y = /* @__PURE__ */ new Map(), x = _.flatMap((e) => {
|
|
768
773
|
let t = e.blockId ? s.get(e.blockId) : void 0;
|
|
769
774
|
if (!t) return [e];
|
|
770
|
-
if (
|
|
771
|
-
let n =
|
|
772
|
-
if (n === void 0 && (n =
|
|
773
|
-
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ?
|
|
775
|
+
if (v.has(t.id)) return [];
|
|
776
|
+
let n = y.get(t.id);
|
|
777
|
+
if (n === void 0 && (n = Pe(t.text, Ot(t)), y.set(t.id, n)), !n) {
|
|
778
|
+
let n = e.directive, r = e.targetIds?.length === 1 && n.kind === "compound" ? Ne(t.text, n.operations.length) : null;
|
|
774
779
|
return [r ? {
|
|
775
780
|
...e,
|
|
776
781
|
sourceAnnotations: r
|
|
777
782
|
} : e];
|
|
778
783
|
}
|
|
779
|
-
return
|
|
784
|
+
return v.add(t.id), [{
|
|
780
785
|
...e,
|
|
781
786
|
effects: n.map((t) => ({
|
|
782
787
|
...t,
|
|
@@ -787,7 +792,7 @@ function Pt(e, t) {
|
|
|
787
792
|
}
|
|
788
793
|
}))
|
|
789
794
|
}];
|
|
790
|
-
}),
|
|
795
|
+
}), ee = performance.now() - g;
|
|
791
796
|
return t?.push({
|
|
792
797
|
actionDirectiveExtraction: p,
|
|
793
798
|
articleId: e.id,
|
|
@@ -796,18 +801,18 @@ function Pt(e, t) {
|
|
|
796
801
|
directiveCount: x.length,
|
|
797
802
|
directiveTextSize: e.directiveText.length,
|
|
798
803
|
extractActionDirectivesMs: Math.round(h * 10) / 10,
|
|
799
|
-
mapDirectivesMs: Math.round(
|
|
804
|
+
mapDirectivesMs: Math.round(ee * 10) / 10,
|
|
800
805
|
prepareBlockIndexesMs: Math.round(d * 10) / 10,
|
|
801
806
|
totalMs: Math.round((performance.now() - n) * 10) / 10
|
|
802
807
|
}), x;
|
|
803
808
|
}
|
|
804
|
-
function
|
|
809
|
+
function Lt(e) {
|
|
805
810
|
let t = /* @__PURE__ */ new Map(), n = [], r = /* @__PURE__ */ new Set();
|
|
806
811
|
for (let i of e) {
|
|
807
|
-
let e =
|
|
812
|
+
let e = He(i.directive);
|
|
808
813
|
if (e.length === 0) continue;
|
|
809
814
|
let a = e.map(({ num: e }) => ({
|
|
810
|
-
definitionId: `${i.articleId}:article:${
|
|
815
|
+
definitionId: `${i.articleId}:article:${ze(e)}`,
|
|
811
816
|
num: e
|
|
812
817
|
}));
|
|
813
818
|
t.set(i, a);
|
|
@@ -830,13 +835,13 @@ function Ft(e) {
|
|
|
830
835
|
definitions: n
|
|
831
836
|
};
|
|
832
837
|
}
|
|
833
|
-
function
|
|
834
|
-
let r = new Map(t.map((e) => [
|
|
838
|
+
function Rt(e, t, n) {
|
|
839
|
+
let r = new Map(t.map((e) => [Re(e.num), e]));
|
|
835
840
|
return e.map((e) => {
|
|
836
|
-
let t = n.get(e), i = t?.[0], a = [...
|
|
841
|
+
let t = n.get(e), i = t?.[0], a = [...Ue(e.directive.reference)].map((e) => r.get(Re(e))).filter((e) => e !== void 0 && e.definitionId !== i?.definitionId)[0], o = a === void 0 ? void 0 : {
|
|
837
842
|
definitionId: a.definitionId,
|
|
838
843
|
num: a.num
|
|
839
|
-
}, s =
|
|
844
|
+
}, s = We(e.directive), c = (e.targetIds?.length ?? 0) > 0;
|
|
840
845
|
return {
|
|
841
846
|
...e,
|
|
842
847
|
...i === void 0 ? {} : { createdArticle: i },
|
|
@@ -849,7 +854,7 @@ function It(e, t, n) {
|
|
|
849
854
|
};
|
|
850
855
|
});
|
|
851
856
|
}
|
|
852
|
-
function
|
|
857
|
+
function zt(e) {
|
|
853
858
|
switch (e.kind) {
|
|
854
859
|
case "insert_after":
|
|
855
860
|
case "insert_before": return [e.insertText];
|
|
@@ -867,8 +872,8 @@ function Lt(e) {
|
|
|
867
872
|
default: return [];
|
|
868
873
|
}
|
|
869
874
|
}
|
|
870
|
-
function
|
|
871
|
-
return e.flatMap((e) =>
|
|
875
|
+
function Bt(e) {
|
|
876
|
+
return e.flatMap((e) => zt(e.directive).filter((e) => /[«»]/u.test(e)).map((t) => ({
|
|
872
877
|
code: "nested_french_quote_in_redaction",
|
|
873
878
|
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.",
|
|
874
879
|
details: {
|
|
@@ -880,18 +885,18 @@ function Rt(e) {
|
|
|
880
885
|
}
|
|
881
886
|
})));
|
|
882
887
|
}
|
|
883
|
-
function
|
|
884
|
-
return
|
|
888
|
+
function Vt(e) {
|
|
889
|
+
return zt(e).map((t) => ({
|
|
885
890
|
directiveKind: e.kind,
|
|
886
891
|
text: t
|
|
887
892
|
}));
|
|
888
893
|
}
|
|
889
|
-
function
|
|
894
|
+
function Ht(e) {
|
|
890
895
|
let t = /* @__PURE__ */ new Set();
|
|
891
896
|
for (let n of e.matchAll(/«[^«»\n]+»/gu)) t.add(n[0]);
|
|
892
897
|
return Array.from(t);
|
|
893
898
|
}
|
|
894
|
-
function
|
|
899
|
+
function Ut(e, t) {
|
|
895
900
|
let n = new Map(e.blocks.map((e) => [e.id, e])), r = t.sourceBlockIds ?? e.blocks.map((e) => e.id), i = [], a = 0;
|
|
896
901
|
for (let e of r) {
|
|
897
902
|
let t = n.get(e);
|
|
@@ -903,11 +908,11 @@ function Vt(e, t) {
|
|
|
903
908
|
}
|
|
904
909
|
return i;
|
|
905
910
|
}
|
|
906
|
-
function
|
|
911
|
+
function Wt(e, t, n) {
|
|
907
912
|
return e.find((e) => t >= e.start && n <= e.stop);
|
|
908
913
|
}
|
|
909
|
-
function
|
|
910
|
-
let r =
|
|
914
|
+
function Gt(e, t, n) {
|
|
915
|
+
let r = Ht(n), i = r.flatMap((t) => {
|
|
911
916
|
for (let n of e.blocks) {
|
|
912
917
|
let e = n.text.indexOf(t);
|
|
913
918
|
if (e !== -1) return [{
|
|
@@ -926,7 +931,7 @@ function Ut(e, t, n) {
|
|
|
926
931
|
e.directiveText
|
|
927
932
|
].filter((e) => e !== void 0 && e.length > 0), o = a.find((e) => r.some((t) => e.includes(t))) ?? a[0];
|
|
928
933
|
if (!o) return [];
|
|
929
|
-
let s =
|
|
934
|
+
let s = Ut(e, t);
|
|
930
935
|
if (s.length === 0) return [];
|
|
931
936
|
let c = [], l = 0;
|
|
932
937
|
for (let e of r) {
|
|
@@ -934,7 +939,7 @@ function Ut(e, t, n) {
|
|
|
934
939
|
if (t === -1) continue;
|
|
935
940
|
let n = t + e.length;
|
|
936
941
|
l = n;
|
|
937
|
-
let r =
|
|
942
|
+
let r = Wt(s, t, n);
|
|
938
943
|
r && c.push({
|
|
939
944
|
blockId: r.block.id,
|
|
940
945
|
start: t - r.start,
|
|
@@ -944,15 +949,15 @@ function Ut(e, t, n) {
|
|
|
944
949
|
}
|
|
945
950
|
return c;
|
|
946
951
|
}
|
|
947
|
-
function
|
|
952
|
+
function Kt(e, t) {
|
|
948
953
|
let n = new Map(e.map((e) => [e.id, e]));
|
|
949
954
|
return t.flatMap((e) => {
|
|
950
955
|
let t = n.get(e.articleId);
|
|
951
|
-
return t ?
|
|
956
|
+
return t ? Vt(e.directive).filter(({ text: e }) => /[«»]/u.test(e)).map(({ directiveKind: n, text: r }) => ({
|
|
952
957
|
articleId: e.articleId,
|
|
953
958
|
code: "nested_french_quote_in_redaction",
|
|
954
959
|
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.",
|
|
955
|
-
ranges:
|
|
960
|
+
ranges: Gt(t, e, r),
|
|
956
961
|
severity: "warning",
|
|
957
962
|
details: {
|
|
958
963
|
blockId: e.blockId,
|
|
@@ -963,13 +968,36 @@ function Wt(e, t) {
|
|
|
963
968
|
})) : [];
|
|
964
969
|
});
|
|
965
970
|
}
|
|
966
|
-
function
|
|
967
|
-
let
|
|
971
|
+
function qt(e, t) {
|
|
972
|
+
let n = new Map(e.flatMap((e) => [...ne(e.blocks.map((e) => e.text))].map(([t, n]) => [e.blocks[t].id, {
|
|
973
|
+
articleId: e.id,
|
|
974
|
+
blockIds: e.blocks.slice(t - 1, n.endIndex + 1).map((e) => e.id),
|
|
975
|
+
...n
|
|
976
|
+
}])));
|
|
977
|
+
return t.flatMap((e) => {
|
|
978
|
+
let [t, r] = e.sourceBlockIds ?? [], i = n.get(r);
|
|
979
|
+
return !i || i.articleId !== e.articleId || i.blockIds[0] !== t || !i.blockIds.every((t) => e.sourceBlockIds?.includes(t)) || e.directive.kind !== "replace_portion" || !e.directive.replacementText.startsWith(`${i.marker}. - `) ? [] : [{
|
|
980
|
+
articleId: e.articleId,
|
|
981
|
+
code: "subdivision_redaction_quote_outside_citation",
|
|
982
|
+
message: "Ce passage a été interprété avec le numéro de la subdivision à l’intérieur de la citation.",
|
|
983
|
+
details: { interpretedText: `« ${e.directive.replacementText} »` },
|
|
984
|
+
ranges: [{
|
|
985
|
+
blockId: r,
|
|
986
|
+
start: 0,
|
|
987
|
+
stop: i.prefix.length,
|
|
988
|
+
text: i.prefix
|
|
989
|
+
}],
|
|
990
|
+
severity: "warning"
|
|
991
|
+
}];
|
|
992
|
+
});
|
|
993
|
+
}
|
|
994
|
+
function Jt(e, t, n, r, i, a, o = !0, s) {
|
|
995
|
+
let c = new Se("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 = {
|
|
968
996
|
sourceFormat: e,
|
|
969
997
|
documentDate: r,
|
|
970
998
|
html: t,
|
|
971
999
|
htmlWithLinks: n,
|
|
972
|
-
tableOfContents: a ?? c.timeSync("extractTableOfContents", () =>
|
|
1000
|
+
tableOfContents: a ?? c.timeSync("extractTableOfContents", () => v(u), { inputSize: u.length }),
|
|
973
1001
|
articles: i
|
|
974
1002
|
};
|
|
975
1003
|
if (!o) {
|
|
@@ -985,14 +1013,14 @@ function Gt(e, t, n, r, i, a, o = !0, s) {
|
|
|
985
1013
|
directiveTextSize: u.length
|
|
986
1014
|
}), e;
|
|
987
1015
|
}
|
|
988
|
-
let f = c.timeSync("extractGlobalApplicabilityDate", () =>
|
|
1016
|
+
let f = c.timeSync("extractGlobalApplicabilityDate", () => Ye(i.map((e) => e.text).join("\n"))), p = [], m = c.timeSync("extractDirectivesFromArticles", () => {
|
|
989
1017
|
let e = [];
|
|
990
1018
|
for (let t of i) {
|
|
991
|
-
let n =
|
|
1019
|
+
let n = It(t, c.enabled ? p : void 0);
|
|
992
1020
|
e.push(...n);
|
|
993
1021
|
}
|
|
994
1022
|
return e;
|
|
995
|
-
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () =>
|
|
1023
|
+
}, { count: i.length }), { createdArticlesByDirective: h, definitions: g } = c.timeSync("buildInternalArticleDefinitions", () => Lt(m), { count: m.length }), _ = c.timeSync("attachInternalArticleMetadata", () => Rt(m, g, h), { count: m.length }), y = c.timeSync("collectNestedFrenchQuoteDiagnostics", () => Bt(_), { count: _.length }), b = [...s ?? [], ...y], x = c.timeSync("collectNestedFrenchQuoteAnnotations", () => [...Kt(i, _), ...qt(i, _)], { count: _.length }), ee = {
|
|
996
1024
|
...d,
|
|
997
1025
|
...f ? { globalApplicabilityDate: f } : {},
|
|
998
1026
|
...g.length > 0 ? { internalArticleDefinitions: g } : {},
|
|
@@ -1086,18 +1114,18 @@ function Gt(e, t, n, r, i, a, o = !0, s) {
|
|
|
1086
1114
|
slowDirectiveArticles: p.toSorted((e, t) => t.totalMs - e.totalMs).slice(0, 10)
|
|
1087
1115
|
}), ee;
|
|
1088
1116
|
}
|
|
1089
|
-
function
|
|
1117
|
+
function Yt(e) {
|
|
1090
1118
|
return { items: e.map((e) => ({
|
|
1091
1119
|
id: e.id,
|
|
1092
1120
|
line: e.title ? `${e.label} : ${e.title}` : e.label,
|
|
1093
1121
|
type: "article"
|
|
1094
1122
|
})) };
|
|
1095
1123
|
}
|
|
1096
|
-
function
|
|
1097
|
-
return Array.from(
|
|
1124
|
+
function Xt(e) {
|
|
1125
|
+
return Array.from(ce(e)).filter((e) => e.type === "article").map((e) => N(e.line.split(/[::]/u)[0]));
|
|
1098
1126
|
}
|
|
1099
|
-
function
|
|
1100
|
-
let i =
|
|
1127
|
+
function Zt(e, t, n, r) {
|
|
1128
|
+
let i = pt(e), a = new Set(Array.from(n.matchAll(/\s+id=(?:"([^"]+)"|'([^']+)')/gu), (e) => e[1] ?? e[2])), o = Array.from(ce(t)).filter((e) => e.type === "article"), s = e.map((e) => r === "akoma-ntoso" ? e.num ? P(e.num) : C(e.html)("p.TCNumArticle").first().attr("id") ?? P(e.label) : e.id), c = o.map((e) => e.id);
|
|
1101
1129
|
(c.length !== s.length || c.some((e, t) => e !== s[t])) && i.push({
|
|
1102
1130
|
code: "article_toc_source_heading_mismatch",
|
|
1103
1131
|
message: "The table of contents differs from the parsed article headings",
|
|
@@ -1113,8 +1141,8 @@ function Jt(e, t, n, r) {
|
|
|
1113
1141
|
});
|
|
1114
1142
|
return i;
|
|
1115
1143
|
}
|
|
1116
|
-
function
|
|
1117
|
-
let r =
|
|
1144
|
+
function Qt(e, t, n) {
|
|
1145
|
+
let r = Xt(v(e.map((e) => e.directiveText).filter(Boolean).join("\n"))), i = e.map((e) => N(e.label)), a = Yt(e), o = [...n, ...Zt(e, a, t, "assemblee-html")];
|
|
1118
1146
|
if (r.length > 0 && (r.length !== i.length || r.some((e, t) => e !== i[t]))) {
|
|
1119
1147
|
let t = r.findIndex((e, t) => e !== i[t]);
|
|
1120
1148
|
o.push({
|
|
@@ -1138,24 +1166,24 @@ function Yt(e, t, n) {
|
|
|
1138
1166
|
tableOfContents: a
|
|
1139
1167
|
};
|
|
1140
1168
|
}
|
|
1141
|
-
async function
|
|
1142
|
-
let n = new
|
|
1169
|
+
async function $t(e, t) {
|
|
1170
|
+
let n = new Se("parseAssembleeBillRaw"), r = t.linkedHtml === void 0 ? await n.time("linkAssembleeBillRaw", () => en(e, t)) : void 0, i = n.timeSync("applyArticleAnchorIds", () => St(t.linkedHtml ?? r.linkedHtml), { inputSize: e.length }), a = n.timeSync("cheerioLoadLinkedHtml", () => C(i)), o = n.timeSync("extractArticleHeadings", () => ht(a)), s = new Set(o.map((e) => e.id)), c = lt(a).filter((e) => !s.has(P(e.num ?? e.label))).map((e) => e.label), l = c.length > 0 ? [{
|
|
1143
1171
|
code: "article_toc_source_heading_mismatch",
|
|
1144
1172
|
message: "Some structural article headings were not retained",
|
|
1145
1173
|
details: { discardedCandidates: c }
|
|
1146
|
-
}] : [], u =
|
|
1147
|
-
let n =
|
|
1174
|
+
}] : [], u = ot(a), d = n.timeSync("extractArticlesAndBlocks", () => o.map((e, t) => {
|
|
1175
|
+
let n = vt(a, e, o[t + 1], u), r = bt(a, e.id, n), i = r.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1148
1176
|
return {
|
|
1149
1177
|
id: e.id,
|
|
1150
1178
|
label: e.label,
|
|
1151
1179
|
num: e.num,
|
|
1152
1180
|
title: e.title,
|
|
1153
|
-
text:
|
|
1154
|
-
html: n.map((e) =>
|
|
1181
|
+
text: tt(a, n),
|
|
1182
|
+
html: n.map((e) => Ze(a, e)).join("\n"),
|
|
1155
1183
|
directiveText: i,
|
|
1156
1184
|
blocks: r
|
|
1157
1185
|
};
|
|
1158
|
-
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () =>
|
|
1186
|
+
}), { count: o.length }), f = n.timeSync("injectHiddenArticleSummary", () => xt(a.html(), d)), { diagnostics: p, tableOfContents: m } = n.timeSync("buildAssembleeTableOfContents", () => Qt(d, f, l), { count: d.length }), h = n.timeSync("buildParsedDocument", () => Jt("assemblee-html", e, f, t.date, d, m, t.includeDirectiveAnalysis, p));
|
|
1159
1187
|
return h.diagnostics?.length && process.env.TISSEUSE_WARN_PARSED_BILL_DIAGNOSTICS === "1" && console.warn("Assemblée bill parsing diagnostics", h.diagnostics), n.log({
|
|
1160
1188
|
articleCount: h.articles.length,
|
|
1161
1189
|
blockCount: h.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1163,18 +1191,18 @@ async function Xt(e, t) {
|
|
|
1163
1191
|
targetDirectiveCount: h.directives.filter((e) => e.targetIds !== void 0).length
|
|
1164
1192
|
}), h;
|
|
1165
1193
|
}
|
|
1166
|
-
async function
|
|
1194
|
+
async function en(e, t) {
|
|
1167
1195
|
return {
|
|
1168
1196
|
sourceFormat: "assemblee-html",
|
|
1169
1197
|
documentDate: t.date,
|
|
1170
1198
|
html: e,
|
|
1171
|
-
linkedHtml: await
|
|
1199
|
+
linkedHtml: await rt(e, t, t.date)
|
|
1172
1200
|
};
|
|
1173
1201
|
}
|
|
1174
|
-
function
|
|
1202
|
+
function R(e) {
|
|
1175
1203
|
return e.replace(/&/gu, "&").replace(/</gu, "<").replace(/>/gu, ">").replace(/"/gu, """);
|
|
1176
1204
|
}
|
|
1177
|
-
function
|
|
1205
|
+
function tn(e) {
|
|
1178
1206
|
let t = e;
|
|
1179
1207
|
for (let e = 0; e < 3; e++) {
|
|
1180
1208
|
let e = t;
|
|
@@ -1182,27 +1210,27 @@ function Qt(e) {
|
|
|
1182
1210
|
}
|
|
1183
1211
|
return t;
|
|
1184
1212
|
}
|
|
1185
|
-
function
|
|
1213
|
+
function nn(e) {
|
|
1186
1214
|
return /(?:<|&lt;)\/?(?:p|br|span|b|i|u|sup|sub|table|thead|tbody|tr|th|td|ul|ol|li)\b/iu.test(e);
|
|
1187
1215
|
}
|
|
1188
|
-
function
|
|
1216
|
+
function z(e) {
|
|
1189
1217
|
return e.name.replace(/^.*:/u, "");
|
|
1190
1218
|
}
|
|
1191
|
-
function
|
|
1192
|
-
return t.children.map((t) =>
|
|
1219
|
+
function rn(e, t) {
|
|
1220
|
+
return t.children.map((t) => B(e, t)).filter(Boolean).join("");
|
|
1193
1221
|
}
|
|
1194
|
-
function
|
|
1195
|
-
return t.children.map((t) => t.type === "text" &&
|
|
1222
|
+
function an(e, t) {
|
|
1223
|
+
return t.children.map((t) => t.type === "text" && nn(t.data) ? tn(t.data) : B(e, t)).filter(Boolean).join("");
|
|
1196
1224
|
}
|
|
1197
|
-
function
|
|
1225
|
+
function B(e, t) {
|
|
1198
1226
|
if (t.type === "text") {
|
|
1199
1227
|
let e = t.data.replace(/\s+\./gu, ".");
|
|
1200
|
-
return
|
|
1228
|
+
return nn(e) ? tn(e) : R(e);
|
|
1201
1229
|
}
|
|
1202
|
-
if (!
|
|
1203
|
-
let n =
|
|
1230
|
+
if (!F(t)) return "";
|
|
1231
|
+
let n = z(t), r = rn(e, t);
|
|
1204
1232
|
switch (n) {
|
|
1205
|
-
case "p": return `<p${
|
|
1233
|
+
case "p": return `<p${V(e, t, [
|
|
1206
1234
|
"id",
|
|
1207
1235
|
"class",
|
|
1208
1236
|
"align",
|
|
@@ -1216,13 +1244,13 @@ function V(e, t) {
|
|
|
1216
1244
|
case "u":
|
|
1217
1245
|
case "sup":
|
|
1218
1246
|
case "sub":
|
|
1219
|
-
case "abbr": return `<${n}${
|
|
1247
|
+
case "abbr": return `<${n}${V(e, t, [
|
|
1220
1248
|
"id",
|
|
1221
1249
|
"class",
|
|
1222
1250
|
"title",
|
|
1223
1251
|
"style"
|
|
1224
1252
|
])}>${r}</${n}>`;
|
|
1225
|
-
case "a": return `<a href="${
|
|
1253
|
+
case "a": return `<a href="${R(e(t).attr("href") ?? e(t).attr("target") ?? "#")}"${V(e, t, [
|
|
1226
1254
|
"id",
|
|
1227
1255
|
"class",
|
|
1228
1256
|
"title",
|
|
@@ -1233,8 +1261,8 @@ function V(e, t) {
|
|
|
1233
1261
|
case "tbody":
|
|
1234
1262
|
case "tr":
|
|
1235
1263
|
case "th":
|
|
1236
|
-
case "td": return
|
|
1237
|
-
case "caption": return `<caption${
|
|
1264
|
+
case "td": return on(e, t, n, r);
|
|
1265
|
+
case "caption": return `<caption${V(e, t, [
|
|
1238
1266
|
"id",
|
|
1239
1267
|
"class",
|
|
1240
1268
|
"align",
|
|
@@ -1242,12 +1270,12 @@ function V(e, t) {
|
|
|
1242
1270
|
])}>${r}</caption>`;
|
|
1243
1271
|
case "num": return `<span class="akn-num">${r}</span> `;
|
|
1244
1272
|
case "heading": return `<p class="akn-heading">${r}</p>`;
|
|
1245
|
-
case "content": return
|
|
1246
|
-
case "alinea": return
|
|
1247
|
-
case "article": return
|
|
1273
|
+
case "content": return an(e, t);
|
|
1274
|
+
case "alinea": return H(e, t, "div", "akn-alinea");
|
|
1275
|
+
case "article": return H(e, t, "article", "akn-article");
|
|
1248
1276
|
case "blockList":
|
|
1249
1277
|
case "list": return `<div class="akn-list">${r}</div>`;
|
|
1250
|
-
case "item": return
|
|
1278
|
+
case "item": return H(e, t, "div", "akn-item");
|
|
1251
1279
|
case "listIntroduction":
|
|
1252
1280
|
case "listWrapUp":
|
|
1253
1281
|
case "intro":
|
|
@@ -1263,23 +1291,23 @@ function V(e, t) {
|
|
|
1263
1291
|
case "book":
|
|
1264
1292
|
case "tome":
|
|
1265
1293
|
case "subchapter":
|
|
1266
|
-
case "subsection": return
|
|
1294
|
+
case "subsection": return H(e, t, "section", `akn-${n}`);
|
|
1267
1295
|
case "crossHeading": return `<p class="akn-cross-heading">${r}</p>`;
|
|
1268
1296
|
default: return r;
|
|
1269
1297
|
}
|
|
1270
1298
|
}
|
|
1271
|
-
function
|
|
1299
|
+
function V(e, t, n, r = {}) {
|
|
1272
1300
|
let i = [];
|
|
1273
1301
|
for (let r of n) {
|
|
1274
1302
|
if (r === "style") continue;
|
|
1275
1303
|
let n = e(t).attr(r);
|
|
1276
|
-
n !== void 0 && i.push(`${r}="${
|
|
1304
|
+
n !== void 0 && i.push(`${r}="${R(n)}"`);
|
|
1277
1305
|
}
|
|
1278
1306
|
let a = r.style ?? e(t).attr("style");
|
|
1279
|
-
return a && i.push(`style="${
|
|
1307
|
+
return a && i.push(`style="${R(a)}"`), i.length > 0 ? ` ${i.join(" ")}` : "";
|
|
1280
1308
|
}
|
|
1281
|
-
function
|
|
1282
|
-
return `<${n}${
|
|
1309
|
+
function on(e, t, n, r) {
|
|
1310
|
+
return `<${n}${V(e, t, [
|
|
1283
1311
|
"id",
|
|
1284
1312
|
"class",
|
|
1285
1313
|
"colspan",
|
|
@@ -1292,155 +1320,155 @@ function nn(e, t, n, r) {
|
|
|
1292
1320
|
"cellspacing",
|
|
1293
1321
|
"cellpadding",
|
|
1294
1322
|
"style"
|
|
1295
|
-
], { style:
|
|
1323
|
+
], { style: sn(e, t, n) })}>${r}</${n}>`;
|
|
1296
1324
|
}
|
|
1297
|
-
function
|
|
1325
|
+
function sn(e, t, n) {
|
|
1298
1326
|
let r = e(t).attr("style") ?? "";
|
|
1299
|
-
return (n === "td" || n === "th") && /font-weight\s*:\s*bold/iu.test(r) && !/text-align\s*:/iu.test(r) && (r =
|
|
1327
|
+
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;
|
|
1300
1328
|
}
|
|
1301
|
-
function
|
|
1329
|
+
function cn(e, t, n) {
|
|
1302
1330
|
let r = e.trim();
|
|
1303
1331
|
return `${r}${r && !r.endsWith(";") ? ";" : ""} ${t}: ${n};`.trim();
|
|
1304
1332
|
}
|
|
1305
|
-
function
|
|
1306
|
-
let n = [
|
|
1307
|
-
return n.length === 0 ? "" : `<p class="akn-heading">${
|
|
1333
|
+
function ln(e, t) {
|
|
1334
|
+
let n = [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean);
|
|
1335
|
+
return n.length === 0 ? "" : `<p class="akn-heading">${R(n.join(" "))}</p>`;
|
|
1308
1336
|
}
|
|
1309
|
-
function
|
|
1337
|
+
function un(e, t) {
|
|
1310
1338
|
if (!t) return !1;
|
|
1311
|
-
let n = (e) =>
|
|
1312
|
-
return n(
|
|
1339
|
+
let n = (e) => M(e).replace(/\s+/gu, " ").replace(/\s*[..]\s*(?=[–—-])/gu, " ").trim();
|
|
1340
|
+
return n(M(e.replace(/<[^>]*>/gu, " ").replace(/ /gu, " ").replace(/ /giu, " ").replace(/–/giu, "–"))).startsWith(n(t));
|
|
1313
1341
|
}
|
|
1314
|
-
function
|
|
1315
|
-
let t =
|
|
1342
|
+
function dn(e) {
|
|
1343
|
+
let t = R(e);
|
|
1316
1344
|
return `<p data-pastille="${t}" class="pastille"><span aria-label="pastille ${t}">${t}</span></p>`;
|
|
1317
1345
|
}
|
|
1318
|
-
function
|
|
1319
|
-
return
|
|
1346
|
+
function fn(e, t) {
|
|
1347
|
+
return pn([mn({
|
|
1320
1348
|
content: e,
|
|
1321
1349
|
pastille: t
|
|
1322
1350
|
})]);
|
|
1323
1351
|
}
|
|
1324
|
-
function
|
|
1352
|
+
function pn(e) {
|
|
1325
1353
|
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>`;
|
|
1326
1354
|
}
|
|
1327
|
-
function
|
|
1328
|
-
let i = n ? ` style="${
|
|
1329
|
-
return `<tr${r ? ` class="${
|
|
1355
|
+
function mn({ content: e, pastille: t, style: n, contextClass: r }) {
|
|
1356
|
+
let i = n ? ` style="${R(n)}"` : "", a = r ? ` ${R(r)}` : "";
|
|
1357
|
+
return `<tr${r ? ` class="${R(r)} hideable"` : ""}><td style="overflow: hidden; width: 5.0%;" class="texte-col-0 texte-col-pastille no-right-border"><div class="tableauComparatifCell${a}">${dn(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>`;
|
|
1330
1358
|
}
|
|
1331
|
-
function
|
|
1332
|
-
let r = t ? ` style="${
|
|
1333
|
-
return `<tr${n ? ` class="${
|
|
1359
|
+
function hn({ content: e, style: t, contextClass: n }) {
|
|
1360
|
+
let r = t ? ` style="${R(t)}"` : "", i = n ? ` ${R(n)}` : "";
|
|
1361
|
+
return `<tr${n ? ` class="${R(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>`;
|
|
1334
1362
|
}
|
|
1335
|
-
function
|
|
1363
|
+
function gn(e, t) {
|
|
1336
1364
|
return e(t).attr("data:pastille") ?? e(t).attr("pastille");
|
|
1337
1365
|
}
|
|
1338
|
-
function
|
|
1366
|
+
function _n(e, t) {
|
|
1339
1367
|
return e(t).find("alinea[data\\:pastille],alinea[pastille]").length > 0;
|
|
1340
1368
|
}
|
|
1341
|
-
function
|
|
1342
|
-
return e(t).children().get().filter((e) =>
|
|
1369
|
+
function vn(e, t) {
|
|
1370
|
+
return e(t).children().get().filter((e) => F(e) ? z(e) === "content" : !1).map((t) => B(e, t)).filter(Boolean).join("\n");
|
|
1343
1371
|
}
|
|
1344
|
-
function
|
|
1372
|
+
function yn(e, t) {
|
|
1345
1373
|
let n = [];
|
|
1346
1374
|
return e(t).children().each((t, r) => {
|
|
1347
|
-
if (!
|
|
1348
|
-
let i =
|
|
1349
|
-
i === "num" || i === "heading" || i === "content" || n.push(
|
|
1375
|
+
if (!F(r)) return;
|
|
1376
|
+
let i = z(r);
|
|
1377
|
+
i === "num" || i === "heading" || i === "content" || n.push(B(e, r));
|
|
1350
1378
|
}), n.filter(Boolean);
|
|
1351
1379
|
}
|
|
1352
|
-
function
|
|
1353
|
-
let n = [], r =
|
|
1380
|
+
function bn(e, t) {
|
|
1381
|
+
let n = [], r = z(t), i = r === "alinea" ? gn(e, t) : void 0, a = vn(e, t), o = xn(e, t, r, i), s = Dn(e, t);
|
|
1354
1382
|
if (i) {
|
|
1355
|
-
let r = [
|
|
1356
|
-
|
|
1383
|
+
let r = [un(a, M(e(t).children("num").first().text())) ? "" : ln(e, t), a].filter(Boolean).join("\n");
|
|
1384
|
+
M(r) && n.push(mn({
|
|
1357
1385
|
content: r,
|
|
1358
1386
|
pastille: i,
|
|
1359
1387
|
style: o,
|
|
1360
1388
|
contextClass: s
|
|
1361
1389
|
}));
|
|
1362
|
-
} else a && n.push(
|
|
1390
|
+
} else a && n.push(hn({
|
|
1363
1391
|
content: a,
|
|
1364
1392
|
style: o,
|
|
1365
1393
|
contextClass: s
|
|
1366
1394
|
}));
|
|
1367
1395
|
for (let r of e(t).children().get()) {
|
|
1368
|
-
if (!
|
|
1369
|
-
let t =
|
|
1370
|
-
t === "num" || t === "heading" || t === "content" || (t === "alinea" ||
|
|
1396
|
+
if (!F(r)) continue;
|
|
1397
|
+
let t = z(r);
|
|
1398
|
+
t === "num" || t === "heading" || t === "content" || (t === "alinea" || _n(e, r)) && n.push(...bn(e, r));
|
|
1371
1399
|
}
|
|
1372
1400
|
return n;
|
|
1373
1401
|
}
|
|
1374
|
-
function
|
|
1375
|
-
let i =
|
|
1376
|
-
a ? `id="${
|
|
1402
|
+
function H(e, t, n, r) {
|
|
1403
|
+
let i = z(t), a = e(t).attr("eId") ?? e(t).attr("GUID"), o = gn(e, t), s = xn(e, t, i, o), c = [`<${n} ${[
|
|
1404
|
+
a ? `id="${R(a)}"` : void 0,
|
|
1377
1405
|
`class="${r}"`,
|
|
1378
|
-
o ? `data-pastille="${
|
|
1379
|
-
s ? `style="${
|
|
1406
|
+
o ? `data-pastille="${R(o)}"` : void 0,
|
|
1407
|
+
s ? `style="${R(s)}"` : void 0
|
|
1380
1408
|
].filter((e) => e !== void 0).join(" ")}>`];
|
|
1381
1409
|
if (i === "part" || i === "title") {
|
|
1382
|
-
let r =
|
|
1410
|
+
let r = wn(e, t, i), a = En(e, t), o = r ? [hn({
|
|
1383
1411
|
content: r,
|
|
1384
1412
|
contextClass: a
|
|
1385
1413
|
})] : [], s = () => {
|
|
1386
|
-
o.length !== 0 && (c.push(
|
|
1414
|
+
o.length !== 0 && (c.push(Cn(o)), o = []);
|
|
1387
1415
|
};
|
|
1388
1416
|
return e(t).children().each((t, n) => {
|
|
1389
|
-
if (!
|
|
1390
|
-
let r =
|
|
1417
|
+
if (!F(n)) return;
|
|
1418
|
+
let r = z(n);
|
|
1391
1419
|
if (!(r === "num" || r === "heading" || r === "content")) {
|
|
1392
1420
|
if (r === "alinea") {
|
|
1393
|
-
o.push(...
|
|
1421
|
+
o.push(...bn(e, n));
|
|
1394
1422
|
return;
|
|
1395
1423
|
}
|
|
1396
|
-
s(), c.push(
|
|
1424
|
+
s(), c.push(B(e, n));
|
|
1397
1425
|
}
|
|
1398
1426
|
}), s(), c.push(`</${n}>`), c.join("\n");
|
|
1399
1427
|
}
|
|
1400
1428
|
if (i === "article") {
|
|
1401
|
-
let r =
|
|
1429
|
+
let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = h(r) ?? {
|
|
1402
1430
|
label: r,
|
|
1403
1431
|
num: r
|
|
1404
|
-
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${
|
|
1405
|
-
if (
|
|
1406
|
-
let r = [
|
|
1432
|
+
}, o = `<p class="TCNumArticle as-text toc-article dispositif" id="${R(`_TocArt${(a.num ?? r).replace(/\s+/gu, "")}`)}">${R(a.label)}${i ? ` : ${R(i)}` : ""}</p>`;
|
|
1433
|
+
if (_n(e, t)) {
|
|
1434
|
+
let r = [hn({
|
|
1407
1435
|
content: o,
|
|
1408
|
-
contextClass:
|
|
1409
|
-
}), ...
|
|
1410
|
-
c.push(
|
|
1411
|
-
for (let n of
|
|
1436
|
+
contextClass: kn(a.label)
|
|
1437
|
+
}), ...bn(e, t)];
|
|
1438
|
+
c.push(pn(r));
|
|
1439
|
+
for (let n of yn(e, t)) n.includes("akn-pastille-table") || c.push(n);
|
|
1412
1440
|
return c.push(`</${n}>`), c.join("\n");
|
|
1413
1441
|
}
|
|
1414
1442
|
c.push(o);
|
|
1415
1443
|
}
|
|
1416
1444
|
let l = [];
|
|
1417
1445
|
for (let n of ["content", "children"]) e(t).children().each((t, r) => {
|
|
1418
|
-
if (!
|
|
1419
|
-
let i =
|
|
1420
|
-
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(
|
|
1446
|
+
if (!F(r)) return;
|
|
1447
|
+
let i = z(r);
|
|
1448
|
+
i === "num" || i === "heading" || n === "content" && i !== "content" || n === "children" && i === "content" || l.push(B(e, r));
|
|
1421
1449
|
});
|
|
1422
1450
|
let u = l.join("\n");
|
|
1423
1451
|
if (i !== "article") {
|
|
1424
|
-
let n =
|
|
1452
|
+
let n = un(u, M(e(t).children("num").first().text())) ? "" : ln(e, t);
|
|
1425
1453
|
n && c.push(n);
|
|
1426
1454
|
}
|
|
1427
|
-
return c.push(o ?
|
|
1455
|
+
return c.push(o ? fn(u, o) : u), c.push(`</${n}>`), c.join("\n");
|
|
1428
1456
|
}
|
|
1429
|
-
function
|
|
1430
|
-
let i =
|
|
1431
|
-
return !r && n !== "article" && /font-weight\s*:\s*bold/iu.test(i) && !/text-align\s*:/iu.test(i) && (i =
|
|
1457
|
+
function xn(e, t, n, r) {
|
|
1458
|
+
let i = Sn(e(t).attr("style") ?? "", "font-family");
|
|
1459
|
+
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;
|
|
1432
1460
|
}
|
|
1433
|
-
function
|
|
1461
|
+
function Sn(e, t) {
|
|
1434
1462
|
return e.split(";").map((e) => e.trim()).filter(Boolean).filter((e) => !e.toLowerCase().startsWith(`${t.toLowerCase()}:`)).join(";");
|
|
1435
1463
|
}
|
|
1436
|
-
function
|
|
1464
|
+
function Cn(e) {
|
|
1437
1465
|
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>`;
|
|
1438
1466
|
}
|
|
1439
|
-
function
|
|
1440
|
-
let r =
|
|
1441
|
-
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${
|
|
1467
|
+
function wn(e, t, n) {
|
|
1468
|
+
let r = M(e(t).children("num").first().text()), i = M(e(t).children("heading").first().text()), a = Tn(n), o = [];
|
|
1469
|
+
return r && o.push(`<p class="${a.num} as-text dispositif"><span aria-label="">${R(r)}</span></p>`), i && o.push(`<p class="${a.heading} as-text dispositif"><span aria-label="">${R(i)}</span></p>`), o.join("\n");
|
|
1442
1470
|
}
|
|
1443
|
-
function
|
|
1471
|
+
function Tn(e) {
|
|
1444
1472
|
switch (e) {
|
|
1445
1473
|
case "part": return {
|
|
1446
1474
|
num: "TCNumPartie",
|
|
@@ -1464,22 +1492,22 @@ function Cn(e) {
|
|
|
1464
1492
|
};
|
|
1465
1493
|
}
|
|
1466
1494
|
}
|
|
1467
|
-
function
|
|
1468
|
-
let n =
|
|
1495
|
+
function En(e, t) {
|
|
1496
|
+
let n = On(M(e(t).children("num").first().text()));
|
|
1469
1497
|
if (n) return n;
|
|
1470
1498
|
for (let n of e(t).parents().get()) {
|
|
1471
|
-
if (!
|
|
1472
|
-
let t =
|
|
1499
|
+
if (!F(n)) continue;
|
|
1500
|
+
let t = z(n);
|
|
1473
1501
|
if (t !== "title" && t !== "part") continue;
|
|
1474
|
-
let r =
|
|
1502
|
+
let r = On(M(e(n).children("num").first().text()));
|
|
1475
1503
|
if (r) return r;
|
|
1476
1504
|
}
|
|
1477
1505
|
}
|
|
1478
|
-
function
|
|
1479
|
-
return
|
|
1506
|
+
function Dn(e, t) {
|
|
1507
|
+
return En(e, t);
|
|
1480
1508
|
}
|
|
1481
|
-
function
|
|
1482
|
-
let [t, ...n] =
|
|
1509
|
+
function On(e) {
|
|
1510
|
+
let [t, ...n] = M(e).split(/\s+/u);
|
|
1483
1511
|
if (!t || n.length === 0) return;
|
|
1484
1512
|
let r = t.toLocaleLowerCase("fr-FR");
|
|
1485
1513
|
if ([
|
|
@@ -1489,10 +1517,10 @@ function En(e) {
|
|
|
1489
1517
|
"section"
|
|
1490
1518
|
].includes(r)) return `${r}-${n.join("_")}`;
|
|
1491
1519
|
}
|
|
1492
|
-
function
|
|
1493
|
-
return `article-${
|
|
1520
|
+
function kn(e) {
|
|
1521
|
+
return `article-${M(e).replace(/^Article\s+/iu, "").replace(/\s+/gu, "_")} article`;
|
|
1494
1522
|
}
|
|
1495
|
-
function
|
|
1523
|
+
function An(e) {
|
|
1496
1524
|
switch (e) {
|
|
1497
1525
|
case "part": return "partie";
|
|
1498
1526
|
case "book": return "livre";
|
|
@@ -1504,11 +1532,11 @@ function On(e) {
|
|
|
1504
1532
|
default: return;
|
|
1505
1533
|
}
|
|
1506
1534
|
}
|
|
1507
|
-
function
|
|
1508
|
-
return [
|
|
1535
|
+
function jn(e, t) {
|
|
1536
|
+
return [M(e(t).children("num").first().text()), M(e(t).children("heading").first().text())].filter(Boolean).join(" ");
|
|
1509
1537
|
}
|
|
1510
|
-
function
|
|
1511
|
-
let n =
|
|
1538
|
+
function Mn(e, t) {
|
|
1539
|
+
let n = M(e(t).children("num").first().text()), r = M(e(t).children("heading").first().text()), i = h(n) ?? {
|
|
1512
1540
|
label: n,
|
|
1513
1541
|
num: n
|
|
1514
1542
|
};
|
|
@@ -1518,24 +1546,24 @@ function An(e, t) {
|
|
|
1518
1546
|
type: "article"
|
|
1519
1547
|
};
|
|
1520
1548
|
}
|
|
1521
|
-
function
|
|
1549
|
+
function Nn(e, t) {
|
|
1522
1550
|
e.items.push(...t.items);
|
|
1523
1551
|
}
|
|
1524
|
-
function
|
|
1552
|
+
function Pn(e, t) {
|
|
1525
1553
|
let n = { items: [] };
|
|
1526
1554
|
return e(t).children().each((t, r) => {
|
|
1527
|
-
if (!
|
|
1528
|
-
let i =
|
|
1555
|
+
if (!F(r)) return;
|
|
1556
|
+
let i = z(r);
|
|
1529
1557
|
if (i === "article") {
|
|
1530
|
-
n.items.push(
|
|
1558
|
+
n.items.push(Mn(e, r));
|
|
1531
1559
|
return;
|
|
1532
1560
|
}
|
|
1533
|
-
let a =
|
|
1561
|
+
let a = An(i);
|
|
1534
1562
|
if (!a) {
|
|
1535
|
-
|
|
1563
|
+
Nn(n, Pn(e, r));
|
|
1536
1564
|
return;
|
|
1537
1565
|
}
|
|
1538
|
-
let o =
|
|
1566
|
+
let o = jn(e, r), s = Pn(e, r);
|
|
1539
1567
|
!o && s.items.length === 0 || n.items.push({
|
|
1540
1568
|
...s,
|
|
1541
1569
|
id: e(r).attr("eId") ?? e(r).attr("GUID"),
|
|
@@ -1544,26 +1572,26 @@ function Mn(e, t) {
|
|
|
1544
1572
|
});
|
|
1545
1573
|
}), n;
|
|
1546
1574
|
}
|
|
1547
|
-
function
|
|
1575
|
+
function Fn(e) {
|
|
1548
1576
|
let t = e("body").first().get(0);
|
|
1549
|
-
return t === void 0 ? { items: [] } :
|
|
1577
|
+
return t === void 0 ? { items: [] } : Pn(e, t);
|
|
1550
1578
|
}
|
|
1551
|
-
function
|
|
1579
|
+
function In(e) {
|
|
1552
1580
|
return e("FRBRExpression FRBRdate[name=\"#depot\"]").attr("date") ?? e("FRBRWork FRBRdate[name=\"#presentation\"]").attr("date");
|
|
1553
1581
|
}
|
|
1554
|
-
function
|
|
1582
|
+
function Ln(e) {
|
|
1555
1583
|
let t = e("preamble").first(), n = e("body").first(), r = ["<div class=\"akn-bill\">"];
|
|
1556
|
-
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(
|
|
1557
|
-
|
|
1584
|
+
return t.length > 0 && (r.push("<section class=\"akn-preamble\">"), r.push(rn(e, t.get(0))), r.push("</section>")), r.push("<section class=\"akn-body\">"), n.children().each((t, n) => {
|
|
1585
|
+
F(n) && r.push(z(n) === "article" ? H(e, n, "article", "akn-article") : B(e, n));
|
|
1558
1586
|
}), r.push("</section></div>"), r.join("\n");
|
|
1559
1587
|
}
|
|
1560
|
-
function
|
|
1561
|
-
let t =
|
|
1588
|
+
function Rn(e) {
|
|
1589
|
+
let t = C(e, { xml: {
|
|
1562
1590
|
decodeEntities: !1,
|
|
1563
1591
|
lowerCaseTags: !1,
|
|
1564
1592
|
lowerCaseAttributeNames: !1,
|
|
1565
1593
|
xmlMode: !0
|
|
1566
|
-
} }), n =
|
|
1594
|
+
} }), n = In(t), r = Ln(t);
|
|
1567
1595
|
return {
|
|
1568
1596
|
sourceFormat: "akoma-ntoso",
|
|
1569
1597
|
documentDate: n,
|
|
@@ -1571,42 +1599,42 @@ function In(e) {
|
|
|
1571
1599
|
linkedHtml: r
|
|
1572
1600
|
};
|
|
1573
1601
|
}
|
|
1574
|
-
function
|
|
1575
|
-
return
|
|
1602
|
+
function zn(e) {
|
|
1603
|
+
return Bn(C(e));
|
|
1576
1604
|
}
|
|
1577
|
-
function
|
|
1605
|
+
function Bn(e) {
|
|
1578
1606
|
let t = [];
|
|
1579
1607
|
return e("article.akn-article").each((n, r) => {
|
|
1580
|
-
let i = e(r).find("p.TCNumArticle").first().get(0), a =
|
|
1608
|
+
let i = e(r).find("p.TCNumArticle").first().get(0), a = M(i ? e(i).text() : ""), o = h(a) ?? { label: a || `Article ${n + 1}` }, s = e(r).attr("id") ?? `akn-article-${String(n + 1).padStart(3, "0")}`, c = [r], l = bt(e, s, c), u = l.filter((e) => e.kind !== "noise").map((e) => e.text).join("\n");
|
|
1581
1609
|
t.push({
|
|
1582
1610
|
id: s,
|
|
1583
1611
|
label: o.label,
|
|
1584
1612
|
num: o.num,
|
|
1585
1613
|
title: o.title,
|
|
1586
|
-
text:
|
|
1587
|
-
html:
|
|
1614
|
+
text: tt(e, c),
|
|
1615
|
+
html: Ze(e, r),
|
|
1588
1616
|
directiveText: u,
|
|
1589
1617
|
blocks: l
|
|
1590
1618
|
});
|
|
1591
1619
|
}), t;
|
|
1592
1620
|
}
|
|
1593
|
-
function
|
|
1594
|
-
let t =
|
|
1621
|
+
function Vn(e) {
|
|
1622
|
+
let t = C(e);
|
|
1595
1623
|
return {
|
|
1596
|
-
articles:
|
|
1624
|
+
articles: Bn(t),
|
|
1597
1625
|
htmlWithLinks: t.html()
|
|
1598
1626
|
};
|
|
1599
1627
|
}
|
|
1600
|
-
async function
|
|
1601
|
-
let n = new
|
|
1628
|
+
async function Hn(e, t) {
|
|
1629
|
+
let n = new Se("parseAkomaNtosoBillRaw"), r = n.timeSync("cheerioLoadXml", () => C(e, { xml: {
|
|
1602
1630
|
decodeEntities: !1,
|
|
1603
1631
|
lowerCaseTags: !1,
|
|
1604
1632
|
lowerCaseAttributeNames: !1,
|
|
1605
1633
|
xmlMode: !0
|
|
1606
|
-
} })), i = t.date ??
|
|
1634
|
+
} })), i = t.date ?? In(r), a = n.timeSync("renderAknHtml", () => Ln(r), { inputSize: e.length }), o = t.linkedHtml ?? await n.time("addLinksToRenderedAknHtml", () => rt(a, {
|
|
1607
1635
|
...t,
|
|
1608
1636
|
date: i
|
|
1609
|
-
}, i)), s = n.timeSync("extractRenderedAknArticles", () =>
|
|
1637
|
+
}, i)), s = n.timeSync("extractRenderedAknArticles", () => zn(a)), c = n.timeSync("injectHiddenArticleSummary", () => xt(o, s)), { articles: l, htmlWithLinks: u } = n.timeSync("extractLinkedAknArticlesAndTaggedHtml", () => Vn(c)), d = l.length > 0 ? l : s, f = n.timeSync("extractAknTableOfContents", () => Fn(r)), p = n.timeSync("buildParsedDocument", () => Jt("akoma-ntoso", a, l.length > 0 ? u : c, i, d, f, t.includeDirectiveAnalysis, Zt(d, f, l.length > 0 ? u : c, "akoma-ntoso")));
|
|
1610
1638
|
return n.log({
|
|
1611
1639
|
articleCount: p.articles.length,
|
|
1612
1640
|
blockCount: p.articles.reduce((e, t) => e + t.blocks.length, 0),
|
|
@@ -1614,25 +1642,25 @@ async function Bn(e, t) {
|
|
|
1614
1642
|
targetDirectiveCount: p.directives.filter((e) => e.targetIds !== void 0).length
|
|
1615
1643
|
}), p;
|
|
1616
1644
|
}
|
|
1617
|
-
async function
|
|
1618
|
-
let n =
|
|
1645
|
+
async function Un(e, t) {
|
|
1646
|
+
let n = Rn(e), r = t.date ?? n.documentDate;
|
|
1619
1647
|
return {
|
|
1620
1648
|
sourceFormat: "akoma-ntoso",
|
|
1621
1649
|
documentDate: r,
|
|
1622
1650
|
html: n.html,
|
|
1623
|
-
linkedHtml: await
|
|
1651
|
+
linkedHtml: await rt(n.html, t, r)
|
|
1624
1652
|
};
|
|
1625
1653
|
}
|
|
1626
1654
|
//#endregion
|
|
1627
1655
|
//#region src/lib/server/assemblee_document_search.ts
|
|
1628
|
-
var
|
|
1629
|
-
function
|
|
1656
|
+
var Wn = /\bexpos[ée]\s+des\s+motifs\b/giu, Gn = /\barticle\s+(?:premier|1er|\d+)/iu;
|
|
1657
|
+
function Kn(e) {
|
|
1630
1658
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
1631
1659
|
}
|
|
1632
|
-
function
|
|
1633
|
-
let t =
|
|
1660
|
+
function qn(e) {
|
|
1661
|
+
let t = Kn(C(e).text()), n = [...t.matchAll(Wn)], r = /* @__PURE__ */ new Set(), i = [];
|
|
1634
1662
|
for (let [e, a] of n.entries()) {
|
|
1635
|
-
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c =
|
|
1663
|
+
let o = (a.index ?? 0) + a[0].length, s = t.slice(o), c = Gn.exec(s), l = Kn(s.slice(0, c?.index ?? s.length));
|
|
1636
1664
|
if (l.length < 20 || r.has(l)) continue;
|
|
1637
1665
|
r.add(l);
|
|
1638
1666
|
let u = `expose-des-motifs-${e + 1}`;
|
|
@@ -1648,8 +1676,8 @@ function Gn(e) {
|
|
|
1648
1676
|
}
|
|
1649
1677
|
return i;
|
|
1650
1678
|
}
|
|
1651
|
-
async function
|
|
1652
|
-
let i = await
|
|
1679
|
+
async function Jn({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
1680
|
+
let i = await $t(t, {
|
|
1653
1681
|
date: e,
|
|
1654
1682
|
includeDirectiveAnalysis: !1,
|
|
1655
1683
|
linkBaseUrl: n,
|
|
@@ -1658,7 +1686,7 @@ async function Kn({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1658
1686
|
});
|
|
1659
1687
|
return {
|
|
1660
1688
|
items: [...i.articles.map((e) => {
|
|
1661
|
-
let t =
|
|
1689
|
+
let t = Kn(e.directiveText || e.text);
|
|
1662
1690
|
if (t) return {
|
|
1663
1691
|
anchor: e.id,
|
|
1664
1692
|
articleNumber: e.num ?? null,
|
|
@@ -1668,17 +1696,17 @@ async function Kn({ date: e, html: t, linkBaseUrl: n, linkType: r }) {
|
|
|
1668
1696
|
label: e.label,
|
|
1669
1697
|
title: e.title ?? null
|
|
1670
1698
|
};
|
|
1671
|
-
}).filter((e) => e !== void 0), ...
|
|
1699
|
+
}).filter((e) => e !== void 0), ...qn(t)],
|
|
1672
1700
|
tableOfContents: i.tableOfContents
|
|
1673
1701
|
};
|
|
1674
1702
|
}
|
|
1675
|
-
function
|
|
1676
|
-
return
|
|
1703
|
+
function Yn(e, t) {
|
|
1704
|
+
return Ee("sha256").update(JSON.stringify({
|
|
1677
1705
|
item: e,
|
|
1678
1706
|
metadata: t
|
|
1679
1707
|
})).digest("hex");
|
|
1680
1708
|
}
|
|
1681
|
-
function
|
|
1709
|
+
function Xn(e) {
|
|
1682
1710
|
if (typeof e != "object" || !e) return;
|
|
1683
1711
|
let t = e.cycleDeVie?.chrono;
|
|
1684
1712
|
if (t !== void 0) for (let e of [
|
|
@@ -1693,11 +1721,11 @@ function Jn(e) {
|
|
|
1693
1721
|
}
|
|
1694
1722
|
//#endregion
|
|
1695
1723
|
//#region src/lib/server/senat_amendment_search.ts
|
|
1696
|
-
function
|
|
1697
|
-
return e?.trim() ?
|
|
1724
|
+
function Zn(e) {
|
|
1725
|
+
return e?.trim() ? C(e).text().replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim() : "";
|
|
1698
1726
|
}
|
|
1699
|
-
function
|
|
1700
|
-
let n =
|
|
1727
|
+
function Qn({ dispositifHtml: e, objetHtml: t }) {
|
|
1728
|
+
let n = Zn(e), r = Zn(t);
|
|
1701
1729
|
return [...n ? [{
|
|
1702
1730
|
content: n,
|
|
1703
1731
|
itemKind: "dispositif",
|
|
@@ -1708,8 +1736,8 @@ function Xn({ dispositifHtml: e, objetHtml: t }) {
|
|
|
1708
1736
|
label: "Objet"
|
|
1709
1737
|
}] : []];
|
|
1710
1738
|
}
|
|
1711
|
-
function
|
|
1712
|
-
return
|
|
1739
|
+
function $n(e, t) {
|
|
1740
|
+
return Ee("sha256").update(JSON.stringify({
|
|
1713
1741
|
item: e,
|
|
1714
1742
|
metadata: t
|
|
1715
1743
|
})).digest("hex");
|
|
@@ -1723,76 +1751,76 @@ function U(e, t) {
|
|
|
1723
1751
|
type: "amendment_action_directive"
|
|
1724
1752
|
};
|
|
1725
1753
|
}
|
|
1726
|
-
function
|
|
1754
|
+
function er(e, n) {
|
|
1727
1755
|
return {
|
|
1728
1756
|
type: e === "start" ? "head_of_target" : "tail_after_target",
|
|
1729
|
-
unit:
|
|
1757
|
+
unit: n ? t(n) : "article"
|
|
1730
1758
|
};
|
|
1731
1759
|
}
|
|
1732
|
-
function
|
|
1760
|
+
function tr(e) {
|
|
1733
1761
|
return e === "start" ? "insert_before" : "insert_after";
|
|
1734
1762
|
}
|
|
1735
|
-
var
|
|
1736
|
-
let
|
|
1763
|
+
var nr = O(E("[\\s\\S]*?(?=supprimer|substituer|remplacer|ins[eé]rer|compl[eé]ter|r[eé]diger)", { flags: "i" }), { default: "" }), W = T(a, w([E("les?\\s+", { flags: "i" }), te], { value: (e) => e[1] }), te, f), rr = T(w([E("la\\s+fin\\s+de\\s+", { flags: "i" }), W], { value: (e) => {
|
|
1764
|
+
let n = e[1];
|
|
1737
1765
|
return {
|
|
1738
|
-
targetReference:
|
|
1766
|
+
targetReference: n,
|
|
1739
1767
|
targetScope: {
|
|
1740
1768
|
type: "tail_after_target",
|
|
1741
|
-
unit:
|
|
1769
|
+
unit: t(n)
|
|
1742
1770
|
}
|
|
1743
1771
|
};
|
|
1744
|
-
} }),
|
|
1745
|
-
|
|
1746
|
-
|
|
1772
|
+
} }), w([p], { value: (e) => ({ targetScope: e[0] }) })), G = O(w([
|
|
1773
|
+
O(E("(?:[aà]\\s+la\\s+fin\\s+(?:du|de\\s+la|de\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1774
|
+
O(E("(?:au\\s+d[eé]but\\s+d(?:u|e\\s+la|e\\s+l['’]?)\\s*)", { flags: "i" }), { default: "" }),
|
|
1747
1775
|
W,
|
|
1748
|
-
|
|
1776
|
+
O(E("\\s*,?\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*)?", { flags: "i" }), { default: "" })
|
|
1749
1777
|
], { value: (e, t) => ({
|
|
1750
1778
|
reference: e[2],
|
|
1751
1779
|
text: t.text()
|
|
1752
|
-
}) }), { default: null }),
|
|
1780
|
+
}) }), { default: null }), ir = O(E(`(?:(?:[aà]\\s+)?la\\s+(?:derni(?:ère|ere)|${ye})\\s+occurrence\\s+)`, { flags: "i" }), { default: "" });
|
|
1753
1781
|
function K(e) {
|
|
1754
1782
|
return e?.text ?? "";
|
|
1755
1783
|
}
|
|
1756
|
-
function
|
|
1757
|
-
return { citation:
|
|
1784
|
+
function ar(e) {
|
|
1785
|
+
return { citation: d(e.position()) };
|
|
1758
1786
|
}
|
|
1759
|
-
var q =
|
|
1787
|
+
var q = T(w([c], { value: (e) => ({ citation: e[0] }) }), E("\\S[\\s\\S]*", { value: (e, t) => ar(t) })), or = E("\\S[\\s\\S]*", { value: (e, t) => ar(t) }), J = E("[^:«“\"]*(?::\\s*)?", { flags: "i" }), sr = E("\\S[\\s\\S]*?(?=\\s+par\\s+(?:les?\\s+)?(?:mots?|montants?|taux|références?|mentions?|dates?|années?)\\s*:)", {
|
|
1760
1788
|
flags: "i",
|
|
1761
|
-
value: (e, t) =>
|
|
1762
|
-
}),
|
|
1789
|
+
value: (e, t) => ar(t)
|
|
1790
|
+
}), cr = E("\\S[\\s\\S]*?(?=\\s+(?:ins[eé]rer|ajouter|supprimer|r[eé]diger)\\b)", {
|
|
1763
1791
|
flags: "i",
|
|
1764
|
-
value: (e, t) =>
|
|
1765
|
-
}),
|
|
1792
|
+
value: (e, t) => ar(t)
|
|
1793
|
+
}), lr = E("\\S[\\s\\S]*?(?=\\s*(?:(?:[IVXLCDM]+)\\s*[.\\-–—]+\\s*|\\d+°\\s*|[a-z]\\)\\s*|$))", {
|
|
1766
1794
|
flags: "i",
|
|
1767
|
-
value: (e, t) =>
|
|
1768
|
-
}),
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
], { value: (e) => e[2] }),
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1795
|
+
value: (e, t) => ar(t)
|
|
1796
|
+
}), ur = T(w([c], { value: (e) => ({ citation: e[0] }) }), sr), dr = T(w([c], { value: (e) => ({ citation: e[0] }) }), lr), fr = w([E(`${i}s?\\s*:?\\s*`, { flags: "i" }), ur], { value: (e) => e[1] }), pr = w([E(`${m}s?(?: suivant(?:e)?s?)?\\s*:?\\s*`, { flags: "i" }), dr], { value: (e) => e[1] }), mr = T(w([c], { value: (e) => ({ citation: e[0] }) }), cr), hr = w([
|
|
1797
|
+
ir,
|
|
1798
|
+
E(`${i}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1799
|
+
mr
|
|
1800
|
+
], { value: (e) => e[2] }), gr = w([
|
|
1801
|
+
ir,
|
|
1802
|
+
E(`${i}s?\\s*:?\\s*`, { flags: "i" }),
|
|
1803
|
+
T(w([c], { value: (e) => ({ citation: e[0] }) }), or)
|
|
1776
1804
|
], { value: (e) => e[2] });
|
|
1777
1805
|
function Y(e) {
|
|
1778
1806
|
return e?.reference;
|
|
1779
1807
|
}
|
|
1780
|
-
var
|
|
1808
|
+
var _r = w([nr, E("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e, t) => U(t, {
|
|
1781
1809
|
contextText: e[0],
|
|
1782
1810
|
kind: "delete_article"
|
|
1783
|
-
}) }),
|
|
1811
|
+
}) }), vr = w([
|
|
1784
1812
|
G,
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1813
|
+
E("supprimer", { flags: "i" }),
|
|
1814
|
+
O(w([k, W], { value: (e) => e[1] }), { default: null }),
|
|
1815
|
+
O(w([k, gr], { value: (e) => e[1] }), { default: null })
|
|
1788
1816
|
], { value: (e, t) => U(t, {
|
|
1789
1817
|
contextText: K(e[0]),
|
|
1790
1818
|
kind: "delete_portion",
|
|
1791
1819
|
targetCitation: e[3]?.citation ?? void 0,
|
|
1792
1820
|
targetReference: e[2] ?? Y(e[0])
|
|
1793
|
-
}) }),
|
|
1821
|
+
}) }), yr = w([
|
|
1794
1822
|
G,
|
|
1795
|
-
E(
|
|
1823
|
+
T(E("r[eé]diger\\s+ainsi", { flags: "i" }), E("r[eé]tablir", { flags: "i" })),
|
|
1796
1824
|
J,
|
|
1797
1825
|
q
|
|
1798
1826
|
], { value: (e, t) => U(t, {
|
|
@@ -1800,76 +1828,76 @@ var hr = T([er, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1800
1828
|
kind: "rewrite_portion",
|
|
1801
1829
|
replacementCitation: e[3].citation,
|
|
1802
1830
|
targetReference: Y(e[0])
|
|
1803
|
-
}) }),
|
|
1831
|
+
}) }), br = w([
|
|
1804
1832
|
G,
|
|
1805
|
-
E(
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1833
|
+
T(E("substituer", { flags: "i" }), E("remplacer", { flags: "i" })),
|
|
1834
|
+
k,
|
|
1835
|
+
ir,
|
|
1836
|
+
fr,
|
|
1837
|
+
E("\\s*,?\\s*"),
|
|
1838
|
+
O(E("par\\s+", { flags: "i" }), { default: "" }),
|
|
1839
|
+
pr
|
|
1812
1840
|
], { value: (e, t) => U(t, {
|
|
1813
1841
|
contextText: K(e[0]),
|
|
1814
1842
|
kind: "replace",
|
|
1815
1843
|
replacementCitation: e[7].citation,
|
|
1816
1844
|
targetCitation: e[4].citation,
|
|
1817
1845
|
targetReference: Y(e[0])
|
|
1818
|
-
}) }),
|
|
1846
|
+
}) }), xr = w([
|
|
1819
1847
|
G,
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1848
|
+
E("substituer", { flags: "i" }),
|
|
1849
|
+
k,
|
|
1850
|
+
O(E("(?:[aà]|aux?|à la)\\s+", { flags: "i" }), { default: "" }),
|
|
1823
1851
|
W,
|
|
1824
|
-
|
|
1852
|
+
E("[\\s\\S]*?(?=[«“\"]|$)"),
|
|
1825
1853
|
q
|
|
1826
1854
|
], { value: (e, t) => U(t, {
|
|
1827
1855
|
contextText: K(e[0]),
|
|
1828
1856
|
kind: "rewrite_portion",
|
|
1829
1857
|
replacementCitation: e[6].citation,
|
|
1830
1858
|
targetReference: e[4] ?? Y(e[0])
|
|
1831
|
-
}) }),
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1859
|
+
}) }), Sr = w([
|
|
1860
|
+
e,
|
|
1861
|
+
k,
|
|
1862
|
+
E("l['’ ]article", { flags: "i" }),
|
|
1863
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1864
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1837
1865
|
J,
|
|
1838
1866
|
q
|
|
1839
1867
|
], { value: (e, t) => U(t, {
|
|
1840
1868
|
contextText: "",
|
|
1841
1869
|
insertCitation: e[6].citation,
|
|
1842
1870
|
kind: e[0] === "before" ? "insert_article_before" : "insert_article_after"
|
|
1843
|
-
}) }),
|
|
1844
|
-
|
|
1845
|
-
|
|
1871
|
+
}) }), Cr = w([
|
|
1872
|
+
e,
|
|
1873
|
+
k,
|
|
1846
1874
|
W,
|
|
1847
|
-
|
|
1848
|
-
E(
|
|
1875
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1876
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1849
1877
|
J,
|
|
1850
1878
|
q
|
|
1851
1879
|
], { value: (e, t) => U(t, {
|
|
1852
1880
|
contextText: "",
|
|
1853
1881
|
insertCitation: e[6].citation,
|
|
1854
|
-
kind:
|
|
1882
|
+
kind: S(e[0]),
|
|
1855
1883
|
targetReference: e[2]
|
|
1856
|
-
}) }),
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1884
|
+
}) }), wr = w([
|
|
1885
|
+
e,
|
|
1886
|
+
k,
|
|
1887
|
+
E("l['’ ]alin[eé]a", { flags: "i" }),
|
|
1888
|
+
E("[\\s\\S]*?(?=ins[eé]rer)", { flags: "i" }),
|
|
1889
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1862
1890
|
J,
|
|
1863
1891
|
q
|
|
1864
1892
|
], { value: (e, t) => U(t, {
|
|
1865
1893
|
contextText: "",
|
|
1866
1894
|
insertCitation: e[6].citation,
|
|
1867
|
-
kind:
|
|
1868
|
-
}) }),
|
|
1895
|
+
kind: S(e[0])
|
|
1896
|
+
}) }), Tr = w([
|
|
1869
1897
|
G,
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
E(
|
|
1898
|
+
u,
|
|
1899
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1900
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1873
1901
|
J,
|
|
1874
1902
|
q
|
|
1875
1903
|
], { value: (e, t) => {
|
|
@@ -1877,62 +1905,62 @@ var hr = T([er, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1877
1905
|
return U(t, {
|
|
1878
1906
|
contextText: K(n),
|
|
1879
1907
|
insertCitation: e[5].citation,
|
|
1880
|
-
kind:
|
|
1908
|
+
kind: tr(i),
|
|
1881
1909
|
targetReference: r,
|
|
1882
|
-
targetScope:
|
|
1910
|
+
targetScope: er(i, r)
|
|
1883
1911
|
});
|
|
1884
|
-
} }),
|
|
1912
|
+
} }), Er = w([
|
|
1885
1913
|
G,
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1914
|
+
e,
|
|
1915
|
+
k,
|
|
1916
|
+
hr,
|
|
1917
|
+
E("[\\s\\S]*?(?=ins[eé]rer)"),
|
|
1918
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1919
|
+
k,
|
|
1920
|
+
pr
|
|
1893
1921
|
], { value: (e, t) => U(t, {
|
|
1894
1922
|
contextText: K(e[0]),
|
|
1895
1923
|
insertCitation: e[7].citation,
|
|
1896
|
-
kind:
|
|
1924
|
+
kind: S(e[1]),
|
|
1897
1925
|
targetCitation: e[3].citation,
|
|
1898
1926
|
targetReference: Y(e[0])
|
|
1899
|
-
}) }),
|
|
1927
|
+
}) }), Dr = w([
|
|
1900
1928
|
G,
|
|
1901
|
-
|
|
1902
|
-
|
|
1929
|
+
e,
|
|
1930
|
+
k,
|
|
1903
1931
|
W,
|
|
1904
|
-
|
|
1905
|
-
E(
|
|
1932
|
+
E("[\\s\\S]*?(?=ins[eé]rer|ajouter)", { flags: "i" }),
|
|
1933
|
+
T(E("ins[eé]rer", { flags: "i" }), E("ajouter", { flags: "i" })),
|
|
1906
1934
|
J,
|
|
1907
1935
|
q
|
|
1908
1936
|
], { value: (e, t) => U(t, {
|
|
1909
1937
|
contextText: K(e[0]),
|
|
1910
1938
|
insertCitation: e[7].citation,
|
|
1911
|
-
kind:
|
|
1939
|
+
kind: S(e[1]),
|
|
1912
1940
|
targetReference: Y(e[0]) ?? e[3]
|
|
1913
|
-
}) }),
|
|
1941
|
+
}) }), Or = T(Tr, Sr, Cr, wr, xr, w([
|
|
1914
1942
|
G,
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1943
|
+
e,
|
|
1944
|
+
k,
|
|
1945
|
+
hr,
|
|
1946
|
+
E("[\\s\\S]*?(?=supprimer|r[eé]diger)", { flags: "i" }),
|
|
1947
|
+
T(w([
|
|
1948
|
+
E("supprimer", {
|
|
1921
1949
|
flags: "i",
|
|
1922
1950
|
value: "delete_portion"
|
|
1923
1951
|
}),
|
|
1924
|
-
|
|
1925
|
-
|
|
1952
|
+
k,
|
|
1953
|
+
rr
|
|
1926
1954
|
], { value: (e) => ({
|
|
1927
1955
|
kind: e[0],
|
|
1928
1956
|
...e[2]
|
|
1929
|
-
}) }),
|
|
1930
|
-
|
|
1957
|
+
}) }), w([
|
|
1958
|
+
E("r[eé]diger\\s+ainsi", {
|
|
1931
1959
|
flags: "i",
|
|
1932
1960
|
value: "rewrite_portion"
|
|
1933
1961
|
}),
|
|
1934
|
-
|
|
1935
|
-
|
|
1962
|
+
k,
|
|
1963
|
+
rr,
|
|
1936
1964
|
J,
|
|
1937
1965
|
q
|
|
1938
1966
|
], { value: (e) => ({
|
|
@@ -1950,24 +1978,24 @@ var hr = T([er, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1950
1978
|
targetReference: Y(e[0]) ?? n.targetReference,
|
|
1951
1979
|
targetScope: n.targetScope
|
|
1952
1980
|
});
|
|
1953
|
-
} }),
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1981
|
+
} }), Er, Dr, w([
|
|
1982
|
+
nr,
|
|
1983
|
+
E("ins[eé]rer", { flags: "i" }),
|
|
1984
|
+
E(`[\\s\\S]*?(?=${ee})`, { flags: "i" }),
|
|
1985
|
+
e,
|
|
1958
1986
|
J,
|
|
1959
|
-
|
|
1987
|
+
c,
|
|
1960
1988
|
J,
|
|
1961
|
-
|
|
1989
|
+
c
|
|
1962
1990
|
], { value: (e, t) => U(t, {
|
|
1963
1991
|
contextText: e[0],
|
|
1964
1992
|
insertCitation: e[8],
|
|
1965
|
-
kind:
|
|
1993
|
+
kind: S(e[3]),
|
|
1966
1994
|
targetCitation: e[6]
|
|
1967
|
-
}) }),
|
|
1995
|
+
}) }), br, yr, w([
|
|
1968
1996
|
G,
|
|
1969
|
-
|
|
1970
|
-
|
|
1997
|
+
E("compl[eé]ter", { flags: "i" }),
|
|
1998
|
+
O(w([k, W], { value: (e) => e[1] }), { default: null }),
|
|
1971
1999
|
J,
|
|
1972
2000
|
q
|
|
1973
2001
|
], { value: (e, t) => U(t, {
|
|
@@ -1975,16 +2003,16 @@ var hr = T([er, D("supprimer\\s+cet\\s+article", { flags: "i" })], { value: (e,
|
|
|
1975
2003
|
insertCitation: e[4].citation,
|
|
1976
2004
|
kind: "insert_after",
|
|
1977
2005
|
targetReference: e[2] ?? Y(e[0])
|
|
1978
|
-
}) }),
|
|
2006
|
+
}) }), _r, vr);
|
|
1979
2007
|
//#endregion
|
|
1980
2008
|
//#region src/lib/server/parsed_amendments.ts
|
|
1981
|
-
function
|
|
2009
|
+
function kr(e) {
|
|
1982
2010
|
return e.replace(/\s+/gu, " ").trim();
|
|
1983
2011
|
}
|
|
1984
|
-
function
|
|
1985
|
-
return e.split(/\n/gu).map(
|
|
2012
|
+
function Ar(e) {
|
|
2013
|
+
return e.split(/\n/gu).map(kr).filter(Boolean).join("\n");
|
|
1986
2014
|
}
|
|
1987
|
-
function
|
|
2015
|
+
function jr(e, t) {
|
|
1988
2016
|
let { start: n, stop: r } = t;
|
|
1989
2017
|
for (; n < r && /\s/u.test(e[n]);) n++;
|
|
1990
2018
|
for (; r > n && /\s/u.test(e[r - 1]);) r--;
|
|
@@ -1993,16 +2021,16 @@ function kr(e, t) {
|
|
|
1993
2021
|
stop: r
|
|
1994
2022
|
} : null;
|
|
1995
2023
|
}
|
|
1996
|
-
function
|
|
1997
|
-
return
|
|
2024
|
+
function Mr(e, t) {
|
|
2025
|
+
return pe(he(e), t);
|
|
1998
2026
|
}
|
|
1999
|
-
function
|
|
2027
|
+
function Nr(e) {
|
|
2000
2028
|
return e === "before_article" || e === "on_article" || e === "after_article" ? e : "unknown";
|
|
2001
2029
|
}
|
|
2002
|
-
function
|
|
2030
|
+
function Pr(e) {
|
|
2003
2031
|
return {
|
|
2004
2032
|
articleLabel: e.targetArticleLabel ?? null,
|
|
2005
|
-
targetPosition:
|
|
2033
|
+
targetPosition: Nr(e.targetPosition),
|
|
2006
2034
|
alinea: e.targetAlinea ?? null,
|
|
2007
2035
|
alineaLabel: e.targetAlineaLabel ?? null,
|
|
2008
2036
|
subdivisionSourceId: e.targetSubdivisionSourceId ?? null,
|
|
@@ -2017,36 +2045,36 @@ function X(e) {
|
|
|
2017
2045
|
sourceText: e.text
|
|
2018
2046
|
};
|
|
2019
2047
|
}
|
|
2020
|
-
function
|
|
2048
|
+
function Fr(e) {
|
|
2021
2049
|
return {
|
|
2022
2050
|
...e.originalTransformation === void 0 ? {} : { sourceOriginalTransformation: e.originalTransformation },
|
|
2023
2051
|
sourcePosition: e.position,
|
|
2024
2052
|
sourceText: e.text
|
|
2025
2053
|
};
|
|
2026
2054
|
}
|
|
2027
|
-
function
|
|
2055
|
+
function Ir(e) {
|
|
2028
2056
|
return {
|
|
2029
2057
|
...e?.originalTransformation === void 0 ? {} : { dispositifOriginalTransformation: e.originalTransformation },
|
|
2030
2058
|
...e === null ? {} : { dispositifPosition: e.position },
|
|
2031
2059
|
dispositifText: e?.text ?? null
|
|
2032
2060
|
};
|
|
2033
2061
|
}
|
|
2034
|
-
function
|
|
2062
|
+
function Lr(e, t, n, r = Ar(e.slice(n.start, n.stop))) {
|
|
2035
2063
|
return {
|
|
2036
|
-
originalTransformation:
|
|
2064
|
+
originalTransformation: Mr(t, n),
|
|
2037
2065
|
position: n,
|
|
2038
2066
|
text: r
|
|
2039
2067
|
};
|
|
2040
2068
|
}
|
|
2041
|
-
function
|
|
2069
|
+
function Rr(e) {
|
|
2042
2070
|
let t = e.dispositifHtml ?? e.dispositifText;
|
|
2043
2071
|
if (!t) return null;
|
|
2044
|
-
let n = e.dispositifHtml ?
|
|
2072
|
+
let n = e.dispositifHtml ? ge()(t) : be(t), r = n.output, i = jr(r, {
|
|
2045
2073
|
start: 0,
|
|
2046
2074
|
stop: r.length
|
|
2047
2075
|
});
|
|
2048
2076
|
return {
|
|
2049
|
-
dispositif: i === null ? null :
|
|
2077
|
+
dispositif: i === null ? null : Lr(r, n, i),
|
|
2050
2078
|
simplifiedText: r,
|
|
2051
2079
|
transformation: n
|
|
2052
2080
|
};
|
|
@@ -2063,10 +2091,10 @@ function Z(e) {
|
|
|
2063
2091
|
return t === void 0 ? [] : Array.from({ length: e.count }, (e, n) => t + n);
|
|
2064
2092
|
}
|
|
2065
2093
|
if (e.type === "exclusion") return Z(e.left);
|
|
2066
|
-
for (let t of
|
|
2094
|
+
for (let t of s(e)) if (t.type === "alinéa" && typeof t.index == "number" && t.index > 0) return [t.index];
|
|
2067
2095
|
return [];
|
|
2068
2096
|
}
|
|
2069
|
-
function
|
|
2097
|
+
function zr(e, t) {
|
|
2070
2098
|
let n = Z(t);
|
|
2071
2099
|
return {
|
|
2072
2100
|
...e,
|
|
@@ -2074,11 +2102,11 @@ function Lr(e, t) {
|
|
|
2074
2102
|
...n.length > 0 ? { alineas: n } : {}
|
|
2075
2103
|
};
|
|
2076
2104
|
}
|
|
2077
|
-
function
|
|
2105
|
+
function Br(e) {
|
|
2078
2106
|
return e.replace(/^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*/iu, "").replace(/^\s*(?:\d+°|[a-z]\))\s*/iu, "").trim();
|
|
2079
2107
|
}
|
|
2080
|
-
function
|
|
2081
|
-
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(
|
|
2108
|
+
function Vr(e, t) {
|
|
2109
|
+
let n = /^alin[eé]as?\s+(?:(\d+)|1er|premier)\b/iu.exec(Br(t.text));
|
|
2082
2110
|
if (!n) return null;
|
|
2083
2111
|
let r = n[1] === void 0 ? 1 : Number.parseInt(n[1], 10);
|
|
2084
2112
|
return !Number.isFinite(r) || r < 1 ? null : {
|
|
@@ -2087,25 +2115,25 @@ function zr(e, t) {
|
|
|
2087
2115
|
alineas: [r]
|
|
2088
2116
|
};
|
|
2089
2117
|
}
|
|
2090
|
-
function
|
|
2118
|
+
function Hr(e, t) {
|
|
2091
2119
|
if (e) return e.unit === "article" && t.alinea !== null ? {
|
|
2092
2120
|
...e,
|
|
2093
2121
|
unit: "alinéa"
|
|
2094
2122
|
} : e;
|
|
2095
2123
|
}
|
|
2096
|
-
function
|
|
2097
|
-
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(
|
|
2124
|
+
function Ur(e) {
|
|
2125
|
+
return /^(?:apr[eè]s|avant|(?:au|a[uù])\s+d[eé]but|(?:a|à)\s+la\s+fin)\b/iu.test(Br(e.text));
|
|
2098
2126
|
}
|
|
2099
|
-
function
|
|
2100
|
-
return
|
|
2127
|
+
function Wr(e, t, n, r) {
|
|
2128
|
+
return Lr(e, t, {
|
|
2101
2129
|
start: n.position.start,
|
|
2102
2130
|
stop: r.position.stop
|
|
2103
2131
|
});
|
|
2104
2132
|
}
|
|
2105
|
-
function
|
|
2133
|
+
function Gr(e) {
|
|
2106
2134
|
return /^\s*(?:[IVXLCDM]+)\s*(?:\.\s*)?[-–—]\s*(?!alin[eé]a\b)/iu.test(e.text);
|
|
2107
2135
|
}
|
|
2108
|
-
function
|
|
2136
|
+
function Kr(e, t) {
|
|
2109
2137
|
let n = { ...t.position };
|
|
2110
2138
|
function r(t) {
|
|
2111
2139
|
let r = t.exec(e.slice(n.start, n.stop));
|
|
@@ -2114,29 +2142,29 @@ function Wr(e, t) {
|
|
|
2114
2142
|
stop: n.stop
|
|
2115
2143
|
});
|
|
2116
2144
|
}
|
|
2117
|
-
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),
|
|
2145
|
+
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), jr(e, n);
|
|
2118
2146
|
}
|
|
2119
|
-
function
|
|
2120
|
-
return
|
|
2147
|
+
function qr(e) {
|
|
2148
|
+
return de(e);
|
|
2121
2149
|
}
|
|
2122
|
-
function
|
|
2123
|
-
return
|
|
2150
|
+
function Jr(e, t) {
|
|
2151
|
+
return Or(new D(e.slice(0, t.stop), t.start)) ?? null;
|
|
2124
2152
|
}
|
|
2125
2153
|
function Q(e, t, n) {
|
|
2126
|
-
if (n) return
|
|
2154
|
+
if (n) return Lr(e, t, n.position, Ar(g(e, n)));
|
|
2127
2155
|
}
|
|
2128
|
-
function
|
|
2156
|
+
function Yr(e, t) {
|
|
2129
2157
|
if (!e) return;
|
|
2130
2158
|
let n = structuredClone(e);
|
|
2131
|
-
for (let e of
|
|
2159
|
+
for (let e of l(n, { citations: !0 })) e.position !== void 0 && (e.originalTransformation = Mr(t, e.position));
|
|
2132
2160
|
return n;
|
|
2133
2161
|
}
|
|
2134
|
-
function
|
|
2135
|
-
let i =
|
|
2162
|
+
function Xr(e, t, n, r) {
|
|
2163
|
+
let i = Kr(e, n);
|
|
2136
2164
|
if (!i) return null;
|
|
2137
|
-
let a =
|
|
2165
|
+
let a = Jr(e, i);
|
|
2138
2166
|
if (!a) return null;
|
|
2139
|
-
let o =
|
|
2167
|
+
let o = Lr(e, t, i), s = Yr(a.targetReference, t), c = zr(r, s), l = qr(o.text);
|
|
2140
2168
|
if (a.kind === "delete_article") return {
|
|
2141
2169
|
kind: "delete_article",
|
|
2142
2170
|
...X(o),
|
|
@@ -2154,7 +2182,7 @@ function Jr(e, t, n, r) {
|
|
|
2154
2182
|
},
|
|
2155
2183
|
targetOccurrence: l,
|
|
2156
2184
|
targetReference: s,
|
|
2157
|
-
targetScope:
|
|
2185
|
+
targetScope: Hr(a.targetScope, c)
|
|
2158
2186
|
};
|
|
2159
2187
|
}
|
|
2160
2188
|
if (a.kind === "rewrite_portion") {
|
|
@@ -2171,7 +2199,7 @@ function Jr(e, t, n, r) {
|
|
|
2171
2199
|
},
|
|
2172
2200
|
targetOccurrence: l,
|
|
2173
2201
|
targetReference: s,
|
|
2174
|
-
targetScope:
|
|
2202
|
+
targetScope: Hr(a.targetScope, c),
|
|
2175
2203
|
replacementCitation: n,
|
|
2176
2204
|
replacementText: n.text
|
|
2177
2205
|
};
|
|
@@ -2226,19 +2254,19 @@ function Jr(e, t, n, r) {
|
|
|
2226
2254
|
targetReference: s,
|
|
2227
2255
|
insertCitation: n,
|
|
2228
2256
|
insertText: n.text,
|
|
2229
|
-
targetScope:
|
|
2257
|
+
targetScope: Hr(a.targetScope, c)
|
|
2230
2258
|
};
|
|
2231
2259
|
}
|
|
2232
2260
|
return null;
|
|
2233
2261
|
}
|
|
2234
|
-
function
|
|
2262
|
+
function Zr(e, t) {
|
|
2235
2263
|
let n = [], r = 0, i = 0;
|
|
2236
2264
|
function a(r) {
|
|
2237
|
-
let a =
|
|
2265
|
+
let a = jr(e, {
|
|
2238
2266
|
start: i,
|
|
2239
2267
|
stop: r
|
|
2240
2268
|
});
|
|
2241
|
-
a !== null && n.push(
|
|
2269
|
+
a !== null && n.push(Lr(e, t, a));
|
|
2242
2270
|
}
|
|
2243
2271
|
function o(t) {
|
|
2244
2272
|
let n = Math.max(e.lastIndexOf("\n", t - 1), e.lastIndexOf("\r", t - 1));
|
|
@@ -2256,7 +2284,7 @@ function Yr(e, t) {
|
|
|
2256
2284
|
continue;
|
|
2257
2285
|
}
|
|
2258
2286
|
if (r > 0) continue;
|
|
2259
|
-
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) &&
|
|
2287
|
+
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) && Ur({
|
|
2260
2288
|
originalTransformation: void 0,
|
|
2261
2289
|
position: {
|
|
2262
2290
|
start: i,
|
|
@@ -2268,8 +2296,8 @@ function Yr(e, t) {
|
|
|
2268
2296
|
}
|
|
2269
2297
|
return a(e.length), n;
|
|
2270
2298
|
}
|
|
2271
|
-
function
|
|
2272
|
-
let t =
|
|
2299
|
+
function Qr(e) {
|
|
2300
|
+
let t = Rr(e), n = t?.dispositif ?? null, r = Ir(n), i = [], a = [], o = Pr(e);
|
|
2273
2301
|
if (e.sourceFormat === "senat-ameli" && e.sourceKind === "S") return i.push({
|
|
2274
2302
|
code: "unsupported_sub_amendment",
|
|
2275
2303
|
message: "Les sous-amendements ne sont pas encore projetés."
|
|
@@ -2287,9 +2315,9 @@ function Xr(e) {
|
|
|
2287
2315
|
});
|
|
2288
2316
|
else {
|
|
2289
2317
|
let { simplifiedText: e, transformation: r } = t, s = o, c = null;
|
|
2290
|
-
for (let t of
|
|
2291
|
-
|
|
2292
|
-
let n = c ?
|
|
2318
|
+
for (let t of Zr(e, r)) {
|
|
2319
|
+
Gr(t) && (s = o, c = null);
|
|
2320
|
+
let n = c ? Wr(e, r, c, t) : t, i = Xr(e, r, n, s);
|
|
2293
2321
|
if (i) {
|
|
2294
2322
|
a.push(i), c = null, (i.target.alinea !== null || i.target.alineas) && (s = i.target);
|
|
2295
2323
|
continue;
|
|
@@ -2298,12 +2326,12 @@ function Xr(e) {
|
|
|
2298
2326
|
c = n;
|
|
2299
2327
|
continue;
|
|
2300
2328
|
}
|
|
2301
|
-
let l =
|
|
2329
|
+
let l = Vr(o, t);
|
|
2302
2330
|
if (l !== null) {
|
|
2303
2331
|
s = l;
|
|
2304
2332
|
continue;
|
|
2305
2333
|
}
|
|
2306
|
-
|
|
2334
|
+
Ur(t) && (c = t);
|
|
2307
2335
|
}
|
|
2308
2336
|
a.length === 0 && (o.targetPosition === "after_article" || o.targetPosition === "before_article") && a.push({
|
|
2309
2337
|
kind: o.targetPosition === "before_article" ? "insert_article_before" : "insert_article_after",
|
|
@@ -2314,7 +2342,7 @@ function Xr(e) {
|
|
|
2314
2342
|
}), a.length === 0 && i.push({
|
|
2315
2343
|
code: "unrecognized_dispositif",
|
|
2316
2344
|
message: "Le dispositif est présent mais aucune directive d'amendement n'a été reconnue.",
|
|
2317
|
-
...
|
|
2345
|
+
...Fr(n)
|
|
2318
2346
|
});
|
|
2319
2347
|
}
|
|
2320
2348
|
return {
|
|
@@ -2331,8 +2359,8 @@ function Xr(e) {
|
|
|
2331
2359
|
function $(e) {
|
|
2332
2360
|
return e.replace(/\u00a0/gu, " ").replace(/\s+/gu, " ").trim();
|
|
2333
2361
|
}
|
|
2334
|
-
function
|
|
2335
|
-
let t =
|
|
2362
|
+
function $r(e) {
|
|
2363
|
+
let t = h(e);
|
|
2336
2364
|
if (!t) return {
|
|
2337
2365
|
articleNumber: null,
|
|
2338
2366
|
label: e,
|
|
@@ -2345,8 +2373,8 @@ function Zr(e) {
|
|
|
2345
2373
|
title: r
|
|
2346
2374
|
};
|
|
2347
2375
|
}
|
|
2348
|
-
function
|
|
2349
|
-
let t =
|
|
2376
|
+
function ei(e) {
|
|
2377
|
+
let t = C(e), n = [], r = $(t("section.akn-preamble").text());
|
|
2350
2378
|
return r && n.push({
|
|
2351
2379
|
anchor: "senat-expose-des-motifs",
|
|
2352
2380
|
articleNumber: null,
|
|
@@ -2356,7 +2384,7 @@ function Qr(e) {
|
|
|
2356
2384
|
label: "Exposé des motifs",
|
|
2357
2385
|
title: null
|
|
2358
2386
|
}), t("article.akn-article").each((e, r) => {
|
|
2359
|
-
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = $(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c =
|
|
2387
|
+
let i = t(r), a = i.attr("id") || `akn-article-${e + 1}`, o = $(i.children("p.TCNumArticle").first().text()), s = `Article ${e + 1}`, c = $r(o || s), l = i.clone();
|
|
2360
2388
|
l.children("p.TCNumArticle").remove();
|
|
2361
2389
|
let u = $(l.text());
|
|
2362
2390
|
u && n.push({
|
|
@@ -2370,40 +2398,40 @@ function Qr(e) {
|
|
|
2370
2398
|
});
|
|
2371
2399
|
}), n;
|
|
2372
2400
|
}
|
|
2373
|
-
function
|
|
2374
|
-
return
|
|
2401
|
+
function ti(e, t) {
|
|
2402
|
+
return Ee("sha256").update(JSON.stringify({
|
|
2375
2403
|
item: e,
|
|
2376
2404
|
metadata: t
|
|
2377
2405
|
})).digest("hex");
|
|
2378
2406
|
}
|
|
2379
2407
|
//#endregion
|
|
2380
2408
|
//#region src/lib/server/senat_document_sources.ts
|
|
2381
|
-
var
|
|
2382
|
-
function
|
|
2409
|
+
var ni = new Set(["senat.fr", "www.senat.fr"]), ri = "https://www.senat.fr";
|
|
2410
|
+
function ii(e) {
|
|
2383
2411
|
return e?.trim() || void 0;
|
|
2384
2412
|
}
|
|
2385
|
-
function
|
|
2413
|
+
function ai(e) {
|
|
2386
2414
|
try {
|
|
2387
|
-
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`,
|
|
2388
|
-
return
|
|
2415
|
+
let t = e.replace(/^\/+/, ""), n = /^https?:\/\//iu.test(e) ? new URL(e) : new URL(/^(?:akomantoso|leg)\//iu.test(t) ? `/${t}` : `/leg/${t}`, ri);
|
|
2416
|
+
return ni.has(n.hostname.toLowerCase()) ? n : void 0;
|
|
2389
2417
|
} catch {
|
|
2390
2418
|
return;
|
|
2391
2419
|
}
|
|
2392
2420
|
}
|
|
2393
|
-
function
|
|
2394
|
-
let t =
|
|
2421
|
+
function oi(e) {
|
|
2422
|
+
let t = ii(e);
|
|
2395
2423
|
if (t === void 0) return {
|
|
2396
2424
|
publicUrl: null,
|
|
2397
2425
|
status: "no_url"
|
|
2398
2426
|
};
|
|
2399
|
-
let n =
|
|
2427
|
+
let n = ai(t);
|
|
2400
2428
|
if (n === void 0) return {
|
|
2401
2429
|
publicUrl: t,
|
|
2402
2430
|
status: "unsupported_source"
|
|
2403
2431
|
};
|
|
2404
2432
|
let r = n.pathname;
|
|
2405
2433
|
if (/^\/akomantoso\/[^/]+\.akn\.xml$/iu.test(r)) return {
|
|
2406
|
-
akomaNtosoUrl: `${
|
|
2434
|
+
akomaNtosoUrl: `${ri}${r}`,
|
|
2407
2435
|
publicUrl: n.toString(),
|
|
2408
2436
|
status: "available"
|
|
2409
2437
|
};
|
|
@@ -2412,17 +2440,17 @@ function ii(e) {
|
|
|
2412
2440
|
publicUrl: n.toString(),
|
|
2413
2441
|
status: "unsupported_source"
|
|
2414
2442
|
} : {
|
|
2415
|
-
akomaNtosoUrl: `${
|
|
2443
|
+
akomaNtosoUrl: `${ri}/akomantoso/${i.replace(/\.html$/iu, ".akn.xml")}`,
|
|
2416
2444
|
publicUrl: n.toString(),
|
|
2417
2445
|
status: "available"
|
|
2418
2446
|
};
|
|
2419
2447
|
}
|
|
2420
|
-
function
|
|
2448
|
+
function si(e) {
|
|
2421
2449
|
return /^\s*(?:<\?xml\b[^>]*>\s*)?<akomaNtoso[\s/>]/iu.test(e);
|
|
2422
2450
|
}
|
|
2423
2451
|
//#endregion
|
|
2424
2452
|
//#region src/lib/alineas/alineas_numbers.ts
|
|
2425
|
-
var
|
|
2453
|
+
var ci = {
|
|
2426
2454
|
"0150a855548f15a2af52ea057be53f5d": 1,
|
|
2427
2455
|
"039826cf379b94afefe90b25c6045ca0": 1,
|
|
2428
2456
|
"03a7e564b84662f4d957c51018e26244": 1,
|
|
@@ -21396,7 +21424,7 @@ var oi = {
|
|
|
21396
21424
|
d16d29c923bd60c7b095b66c6058fe60: 1664,
|
|
21397
21425
|
"1c14c2adf5cfda3220b2057160e10e91": 1665,
|
|
21398
21426
|
e44c55ca1ac46ff46420686a466c9fc6: 1665
|
|
21399
|
-
},
|
|
21427
|
+
}, li = "\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", ui = "\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", di = "\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", fi = "\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", pi = "\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", mi = {
|
|
21400
21428
|
assnatetatagr: { bold: !0 },
|
|
21401
21429
|
assnatetatagrgr: { bold: !0 },
|
|
21402
21430
|
assnatetatatr: { bold: !0 },
|
|
@@ -21497,29 +21525,29 @@ var oi = {
|
|
|
21497
21525
|
assnatxl67: { align: "center" },
|
|
21498
21526
|
assnatenteteequilibre: { align: "center" }
|
|
21499
21527
|
};
|
|
21500
|
-
function
|
|
21501
|
-
let t = Object.keys(
|
|
21502
|
-
for (let n of t) if (e.includes(n)) return
|
|
21528
|
+
function hi(e) {
|
|
21529
|
+
let t = Object.keys(mi).sort((e, t) => t.length - e.length);
|
|
21530
|
+
for (let n of t) if (e.includes(n)) return mi[n];
|
|
21503
21531
|
return null;
|
|
21504
21532
|
}
|
|
21505
|
-
function
|
|
21506
|
-
return
|
|
21533
|
+
function gi(e) {
|
|
21534
|
+
return Te.createHash("md5").update(e).digest("hex");
|
|
21507
21535
|
}
|
|
21508
|
-
function
|
|
21536
|
+
function _i(e) {
|
|
21509
21537
|
return e ? /font-weight\s*:\s*(bold|[6-9]00|1000)/i.test(e) || /font-family\s*:\s*[^;]*\bBold\b/i.test(e) : !1;
|
|
21510
21538
|
}
|
|
21511
|
-
function
|
|
21539
|
+
function vi(e) {
|
|
21512
21540
|
return e ? /font-style\s*:\s*italic/i.test(e) || /font-family\s*:\s*[^;]*\bItalic\b/i.test(e) : !1;
|
|
21513
21541
|
}
|
|
21514
|
-
function
|
|
21542
|
+
function yi(e) {
|
|
21515
21543
|
if (!e || !/vertical-align\s*:\s*super/i.test(e)) return !1;
|
|
21516
21544
|
let t = e.match(/font-size\s*:\s*([\d.]+)pt/i);
|
|
21517
21545
|
return !(t && parseFloat(t[1]) < 8);
|
|
21518
21546
|
}
|
|
21519
|
-
function
|
|
21547
|
+
function bi(e) {
|
|
21520
21548
|
return e ? /vertical-align\s*:\s*sub/i.test(e) : !1;
|
|
21521
21549
|
}
|
|
21522
|
-
function
|
|
21550
|
+
function xi(e) {
|
|
21523
21551
|
if (!e) return;
|
|
21524
21552
|
let t = [
|
|
21525
21553
|
"width",
|
|
@@ -21554,15 +21582,15 @@ function yi(e) {
|
|
|
21554
21582
|
}
|
|
21555
21583
|
return n.length > 0 ? n.join("; ") : void 0;
|
|
21556
21584
|
}
|
|
21557
|
-
function
|
|
21585
|
+
function Si(e, t) {
|
|
21558
21586
|
return !!(e && /text-align\s*:\s*center/i.test(e) || t && /center/i.test(t));
|
|
21559
21587
|
}
|
|
21560
|
-
function
|
|
21588
|
+
function Ci(e) {
|
|
21561
21589
|
if (!e) return null;
|
|
21562
21590
|
let t = e.match(/text-align\s*:\s*(left|center|right|justify)/i);
|
|
21563
21591
|
return t ? t[1].toLowerCase() : null;
|
|
21564
21592
|
}
|
|
21565
|
-
function
|
|
21593
|
+
function wi(e) {
|
|
21566
21594
|
if (!e) return null;
|
|
21567
21595
|
for (let [t, n] of [
|
|
21568
21596
|
[/assnat1Tome|assnatAN1PARTIE/i, 1],
|
|
@@ -21574,8 +21602,8 @@ function Si(e) {
|
|
|
21574
21602
|
]) if (t.test(e)) return n;
|
|
21575
21603
|
return null;
|
|
21576
21604
|
}
|
|
21577
|
-
function
|
|
21578
|
-
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a =
|
|
21605
|
+
function Ti(e, t = {}) {
|
|
21606
|
+
let { keepAlignment: n = !0, removeEmptyParagraphs: r = !0, strictAlineas: i = !1 } = t, a = C(e, { xml: { decodeEntities: !1 } });
|
|
21579
21607
|
a("style, script, meta, link").remove(), a(".assnatHeader, .assnatFooter, .assnatHeaderLeft, .assnatHeaderandFooter").remove(), a(".assnatFARSautApres, .assnatFARSautAvant, .assnatFARSautPageNiv0, .assnatFARSautPageNiv1, .assnatFARSautPageNiv1PG").remove(), a(".assnatFARTT08Bleu").each((e, t) => {
|
|
21580
21608
|
let n = a(t).closest("table");
|
|
21581
21609
|
n.length > 0 && n.remove();
|
|
@@ -21600,7 +21628,7 @@ function Ci(e, t = {}) {
|
|
|
21600
21628
|
if (i.length !== 0 && !(n.parents("del").length > 0 || n.find("del img").length > 0) && !(i.parent("del").length > 0)) {
|
|
21601
21629
|
let e = i.attr();
|
|
21602
21630
|
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")) {
|
|
21603
|
-
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ?
|
|
21631
|
+
let t = (e.src || "").match(/^data:image\/png;base64,(.+)$/), r = t ? gi(t[1]) : void 0, i = r ? ` data-image-hash="${r}"` : "";
|
|
21604
21632
|
n.replaceWith(`<span class="alinea"${i}></span>`);
|
|
21605
21633
|
return;
|
|
21606
21634
|
}
|
|
@@ -21619,7 +21647,7 @@ function Ci(e, t = {}) {
|
|
|
21619
21647
|
(!r || r === "\xA0") && n.remove();
|
|
21620
21648
|
}), a("span[style*=\"display:block\"][style*=\"position:absolute\"]:not(.alinea)").remove(), a("del").remove();
|
|
21621
21649
|
function o(e) {
|
|
21622
|
-
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i =
|
|
21650
|
+
let t = a(e), n = t.attr("style"), r = e.tagName?.toLowerCase() || "", i = _i(n) || r === "b" || r === "strong", o = vi(n) || r === "i" || r === "em", s = yi(n) || r === "sup", c = bi(n) || r === "sub", l = t.attr("class") || "";
|
|
21623
21651
|
return /bold/i.test(l) && (i = !0), /strongemphasis/i.test(l) ? i = !0 : /italic|emphasis/i.test(l) && (o = !0), {
|
|
21624
21652
|
bold: i,
|
|
21625
21653
|
italic: o,
|
|
@@ -21653,7 +21681,7 @@ function Ci(e, t = {}) {
|
|
|
21653
21681
|
c = e;
|
|
21654
21682
|
}
|
|
21655
21683
|
for (a("p").each((e, t) => {
|
|
21656
|
-
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s =
|
|
21684
|
+
let r = a(t), i = r.attr("class") || "", o = r.attr("style"), s = wi(i);
|
|
21657
21685
|
if (i.includes("assnatFARCouvTitreD")) {
|
|
21658
21686
|
let e = r.html() || "";
|
|
21659
21687
|
r.replaceWith(`<p class="cover-subtitle">${e}</p>`);
|
|
@@ -21686,11 +21714,11 @@ function Ci(e, t = {}) {
|
|
|
21686
21714
|
let c = r.text().trim().startsWith("«");
|
|
21687
21715
|
if (s && !c) {
|
|
21688
21716
|
let e = a(`<h${s}>${r.html() || ""}</h${s}>`);
|
|
21689
|
-
n &&
|
|
21717
|
+
n && Si(o, i) && e.attr("align", "center"), r.replaceWith(e);
|
|
21690
21718
|
} else {
|
|
21691
|
-
let e =
|
|
21719
|
+
let e = hi(i), t;
|
|
21692
21720
|
if (n) {
|
|
21693
|
-
let n =
|
|
21721
|
+
let n = Ci(o);
|
|
21694
21722
|
n && n !== "justify" && n !== "left" ? t = n : e?.align && (t = e.align);
|
|
21695
21723
|
}
|
|
21696
21724
|
if (r.removeAttr("style").removeAttr("class"), t && r.attr("align", t), e?.bold) {
|
|
@@ -21700,7 +21728,7 @@ function Ci(e, t = {}) {
|
|
|
21700
21728
|
}
|
|
21701
21729
|
}), a("h1, h2, h3, h4, h5, h6").each((e, t) => {
|
|
21702
21730
|
let r = a(t), i = r.attr("style"), o = r.attr("class");
|
|
21703
|
-
n &&
|
|
21731
|
+
n && Si(i, o) ? (r.removeAttr("style").removeAttr("class"), r.attr("align", "center")) : r.removeAttr("style").removeAttr("class");
|
|
21704
21732
|
}), a("a").each((e, t) => {
|
|
21705
21733
|
let n = a(t), r = n.attr("href"), i = n.attr("id"), o = { ...t.attribs || {} };
|
|
21706
21734
|
for (let e of Object.keys(o)) e !== "href" && e !== "id" && n.removeAttr(e);
|
|
@@ -21739,7 +21767,7 @@ function Ci(e, t = {}) {
|
|
|
21739
21767
|
}), a("br").each((e, t) => {
|
|
21740
21768
|
a(t).removeAttr("style").removeAttr("class");
|
|
21741
21769
|
}), a("table, tr, td, th, thead, tbody, tfoot").each((e, t) => {
|
|
21742
|
-
let n = a(t), r =
|
|
21770
|
+
let n = a(t), r = xi(n.attr("style"));
|
|
21743
21771
|
n.removeAttr("style").removeAttr("class"), r && n.attr("style", r);
|
|
21744
21772
|
}), a("td, th").each((e, t) => {
|
|
21745
21773
|
let n = a(t), r = n.children();
|
|
@@ -21757,17 +21785,17 @@ function Ci(e, t = {}) {
|
|
|
21757
21785
|
!isNaN(e) && e > 1 && n.attr("style", `counter-reset: list-counter ${e - 1}`), n.attr("start", r);
|
|
21758
21786
|
}
|
|
21759
21787
|
}), a("li").each((e, t) => {
|
|
21760
|
-
let n = a(t), r =
|
|
21788
|
+
let n = a(t), r = Ci(n.attr("style"));
|
|
21761
21789
|
n.removeAttr("style").removeAttr("class"), r === "center" && n.attr("style", "text-align: center");
|
|
21762
21790
|
let i = n.html() || "", o = i.replace(/^(\s| | |\u00a0)+/, "");
|
|
21763
21791
|
o !== i && n.html(o);
|
|
21764
|
-
}),
|
|
21792
|
+
}), Ei(a), Di(a, i);
|
|
21765
21793
|
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 = "";
|
|
21766
|
-
m && (h +=
|
|
21794
|
+
m && (h += pi), f && (h += ui), p && (h += di), u && (h += li), d && (h += fi);
|
|
21767
21795
|
let g = h ? `<style>${h}</style>\n${l}` : l;
|
|
21768
|
-
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 =
|
|
21796
|
+
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 = Oi(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;
|
|
21769
21797
|
}
|
|
21770
|
-
function
|
|
21798
|
+
function Ei(e) {
|
|
21771
21799
|
e("span[id]").each((t, n) => {
|
|
21772
21800
|
let r = e(n), i = r.attr("id"), a = n.attribs || {}, o = Object.keys(a);
|
|
21773
21801
|
if (o.length !== 1 || o[0] !== "id") return;
|
|
@@ -21790,13 +21818,13 @@ function wi(e) {
|
|
|
21790
21818
|
l.trim() === u.trim() && (s.attr("id", i), r.replaceWith(r.html() || ""));
|
|
21791
21819
|
});
|
|
21792
21820
|
}
|
|
21793
|
-
function
|
|
21821
|
+
function Di(e, t = !1) {
|
|
21794
21822
|
let n = e("body");
|
|
21795
21823
|
if (n.length === 0) return;
|
|
21796
21824
|
let r = n.find("span.alinea[data-image-hash]"), i = -1;
|
|
21797
21825
|
r.each((n, r) => {
|
|
21798
21826
|
let a = e(r), o = a.attr("data-image-hash"), s;
|
|
21799
|
-
if (o &&
|
|
21827
|
+
if (o && ci[o] !== void 0 && (s = ci[o]), s === void 0) {
|
|
21800
21828
|
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".`);
|
|
21801
21829
|
a.remove();
|
|
21802
21830
|
return;
|
|
@@ -21808,11 +21836,11 @@ function Ti(e, t = !1) {
|
|
|
21808
21836
|
i = s, a.attr("data-alinea", String(s)), a.text(String(s)), a.removeAttr("data-image-hash");
|
|
21809
21837
|
});
|
|
21810
21838
|
}
|
|
21811
|
-
function
|
|
21839
|
+
function Oi(e) {
|
|
21812
21840
|
let t = e;
|
|
21813
21841
|
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;
|
|
21814
21842
|
}
|
|
21815
|
-
function
|
|
21843
|
+
function ki(e, t = {}) {
|
|
21816
21844
|
return `<!DOCTYPE html>
|
|
21817
21845
|
<html lang="fr">
|
|
21818
21846
|
<head>
|
|
@@ -21820,33 +21848,33 @@ function Di(e, t = {}) {
|
|
|
21820
21848
|
<title>Document simplifié</title>
|
|
21821
21849
|
</head>
|
|
21822
21850
|
<body>
|
|
21823
|
-
${
|
|
21851
|
+
${Ti(e, t)}
|
|
21824
21852
|
</body>
|
|
21825
21853
|
</html>`;
|
|
21826
21854
|
}
|
|
21827
21855
|
//#endregion
|
|
21828
21856
|
//#region src/lib/server/text_parsers/transformers.ts
|
|
21829
|
-
function
|
|
21857
|
+
function Ai(e, t) {
|
|
21830
21858
|
let n = "transformation_", r = {};
|
|
21831
|
-
for (let e of
|
|
21859
|
+
for (let e of A.readdirSync(t).toSorted()) if (e.startsWith(n) && e.endsWith(".json")) {
|
|
21832
21860
|
let i = e.slice(15, -5), a = i.split(".").map((e) => parseInt(e) - 1), o = r;
|
|
21833
21861
|
for (let e of a.slice(1)) {
|
|
21834
21862
|
let t = o.transformations ??= [];
|
|
21835
21863
|
for (; e >= t.length;) t.push({});
|
|
21836
21864
|
o = t[e];
|
|
21837
21865
|
}
|
|
21838
|
-
o.output =
|
|
21839
|
-
let { sourceMap: s, title: c } =
|
|
21866
|
+
o.output = A.readFileSync(De.join(t, `${n}${i}.html`), { encoding: "utf-8" });
|
|
21867
|
+
let { sourceMap: s, title: c } = A.readJsonSync(De.join(t, e), { encoding: "utf-8" });
|
|
21840
21868
|
o.sourceMap = s ?? [], o.title = c;
|
|
21841
21869
|
}
|
|
21842
|
-
return
|
|
21870
|
+
return ji(r, e), r;
|
|
21843
21871
|
}
|
|
21844
|
-
function
|
|
21845
|
-
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations)
|
|
21872
|
+
function ji(e, t) {
|
|
21873
|
+
if (e.input = t, e.transformations !== void 0) for (let n of e.transformations) ji(n, t), t = n.output;
|
|
21846
21874
|
return t;
|
|
21847
21875
|
}
|
|
21848
|
-
function
|
|
21849
|
-
if (
|
|
21876
|
+
function Mi(e, t, n = "1") {
|
|
21877
|
+
if (A.ensureDirSync(t), e.transformations === void 0) A.writeJsonSync(De.join(t, `transformation_${n}.json`), {
|
|
21850
21878
|
sourceMap: e.sourceMap,
|
|
21851
21879
|
title: e.title
|
|
21852
21880
|
}, {
|
|
@@ -21854,24 +21882,24 @@ function Ai(e, t, n = "1") {
|
|
|
21854
21882
|
spaces: 2
|
|
21855
21883
|
});
|
|
21856
21884
|
else {
|
|
21857
|
-
|
|
21885
|
+
A.writeJsonSync(De.join(t, `transformation_${n}.json`), { title: e.title }, {
|
|
21858
21886
|
encoding: "utf-8",
|
|
21859
21887
|
spaces: 2
|
|
21860
21888
|
});
|
|
21861
|
-
for (let [r, i] of e.transformations.entries())
|
|
21889
|
+
for (let [r, i] of e.transformations.entries()) Mi(i, t, `${n}.${r + 1}`);
|
|
21862
21890
|
}
|
|
21863
|
-
e.output !== void 0 &&
|
|
21891
|
+
e.output !== void 0 && A.writeFileSync(De.join(t, `transformation_${n}.html`), e.output, { encoding: "utf-8" });
|
|
21864
21892
|
}
|
|
21865
21893
|
//#endregion
|
|
21866
21894
|
//#region src/lib/server/linkers/html.ts
|
|
21867
|
-
async function
|
|
21868
|
-
let _ = t ?? (e === void 0 ? void 0 : new
|
|
21895
|
+
async function Ni({ 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 }) {
|
|
21896
|
+
let _ = t ?? (e === void 0 ? void 0 : new ae(e));
|
|
21869
21897
|
if (_ === void 0) throw Error("A Canutes database or legal resolver is required");
|
|
21870
|
-
let v = await
|
|
21871
|
-
a === void 0 ? (y =
|
|
21898
|
+
let v = await A.readFile(i, { encoding: "utf-8" }), y;
|
|
21899
|
+
a === void 0 ? (y = ge({ removeAWithHref: !0 })(v), o !== void 0 && Mi(y, o)) : y = Ai(v, a);
|
|
21872
21900
|
let b = [];
|
|
21873
21901
|
s !== void 0 && b.push("links"), c !== void 0 && b.push("links_or_references"), u !== void 0 && b.push("references");
|
|
21874
|
-
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await
|
|
21902
|
+
let { outputByType: x, referredLegifranceTextCountByCid: ee } = await se({
|
|
21875
21903
|
legiResolver: _,
|
|
21876
21904
|
date: n,
|
|
21877
21905
|
defaultTextId: r,
|
|
@@ -21888,38 +21916,38 @@ async function ji({ canutesDb: e, legiResolver: t, date: n, defaultTextId: r, ht
|
|
|
21888
21916
|
s !== void 0 && (S.links = s), c !== void 0 && (S.links_or_references = c), u !== void 0 && (S.references = u);
|
|
21889
21917
|
for (let [e, t] of Object.entries(x)) {
|
|
21890
21918
|
let n = S[e];
|
|
21891
|
-
n !== void 0 && await
|
|
21919
|
+
n !== void 0 && await A.writeFile(n, t.html, { encoding: "utf-8" });
|
|
21892
21920
|
}
|
|
21893
|
-
x.links !== void 0 && l !== void 0 &&
|
|
21921
|
+
x.links !== void 0 && l !== void 0 && Mi(ge()(x.links.html), l), g !== void 0 && await A.writeJson(g, ee, {
|
|
21894
21922
|
encoding: "utf-8",
|
|
21895
21923
|
spaces: 2
|
|
21896
21924
|
});
|
|
21897
21925
|
}
|
|
21898
21926
|
//#endregion
|
|
21899
21927
|
//#region src/lib/server/tables_of_contents.ts
|
|
21900
|
-
async function
|
|
21901
|
-
let i =
|
|
21902
|
-
for await (let e of
|
|
21928
|
+
async function Pi(e, t, n, r) {
|
|
21929
|
+
let i = Ai(await A.readFile(e, { encoding: "utf-8" }), t), a = i.output, o = new D(a), s = await A.readJson(n, { encoding: "utf-8" });
|
|
21930
|
+
for await (let e of oe({
|
|
21903
21931
|
context: o,
|
|
21904
21932
|
tableOfContents: s,
|
|
21905
21933
|
transformation: i
|
|
21906
21934
|
}));
|
|
21907
|
-
await
|
|
21935
|
+
await A.writeJson(r, s, {
|
|
21908
21936
|
encoding: "utf-8",
|
|
21909
21937
|
spaces: 2
|
|
21910
21938
|
});
|
|
21911
21939
|
}
|
|
21912
|
-
async function
|
|
21913
|
-
let r =
|
|
21914
|
-
await
|
|
21940
|
+
async function Fi(e, t, n) {
|
|
21941
|
+
let r = Ai(await A.readFile(e, { encoding: "utf-8" }), t).output, i = v(r);
|
|
21942
|
+
await A.writeJson(n, i, {
|
|
21915
21943
|
encoding: "utf-8",
|
|
21916
21944
|
spaces: 2
|
|
21917
21945
|
});
|
|
21918
21946
|
}
|
|
21919
21947
|
//#endregion
|
|
21920
21948
|
//#region src/lib/server/legi/resolvers.ts
|
|
21921
|
-
function
|
|
21922
|
-
return new
|
|
21949
|
+
function Ii({ canutesDb: e }) {
|
|
21950
|
+
return new ae(e);
|
|
21923
21951
|
}
|
|
21924
21952
|
//#endregion
|
|
21925
|
-
export {
|
|
21953
|
+
export { we as LegiResolver, Ni as addLinksOrReferencesToHtmlFile, Pi as addPositionsToTableOfContentsFile, xe as buildAndInstallTextTitlesInfos, Ce as buildTextTitlesInfos, Ii as createLegiResolver, je as extractAssembleeAmendmentSearchItems, qn as extractAssembleeExposesDesMotifs, Qn as extractSenatAmendmentSearchItems, Me as hashAssembleeAmendmentSearchItem, Yn as hashAssembleeSearchItem, $n as hashSenatAmendmentSearchItem, ti as hashSenatSearchItem, si as isAkomaNtosoXml, Xn as isoDateFromAssembleeDocument, Un as linkAkomaNtosoBillRaw, en as linkAssembleeBillRaw, Hn as parseAkomaNtosoBillRaw, Qr as parseAmendment, $t as parseAssembleeBillRaw, Jn as parseAssembleeDocumentSearchContent, ei as parseSenatDocumentSearchContent, Ai as readTransformation, Rn as renderAkomaNtosoBillRaw, oi as resolveSenatAkomaNtosoSource, Fi as simplifiedHtmlBillFileToTableOfContentsFile, Ti as simplifyWordHtml, ki as simplifyWordHtmlToDocument, Mi as writeTransformation };
|