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