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