@tricoteuses/senat 2.7.1 → 2.8.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/lib/loaders.d.ts CHANGED
@@ -69,6 +69,7 @@ export declare function iterLoadSenatDossiersLegislatifsDocuments(dataDir: strin
69
69
  export declare function iterLoadSenatDossiersLegislatifsRapports(dataDir: string, session: number | undefined, options?: {}): Generator<IterItem<DossierLegislatifDocumentResult>>;
70
70
  export declare function iterLoadSenatDossiersLegislatifsTextes(dataDir: string, session: number | undefined, options?: {}): Generator<IterItem<DossierLegislatifDocumentResult>>;
71
71
  export declare function loadSenatTexteContent(dataDir: string, textePathFromDataset: string): IterItem<FlatTexte | null>;
72
+ export declare function iterLoadSenatAgendas(dataDir: string, session: number | undefined, options?: {}): Generator<IterItem<AgendaEvent[]>>;
72
73
  export declare function iterLoadSenatEvenements(dataDir: string, session: number | undefined, options?: {}): Generator<IterItem<AgendaEvent>>;
73
74
  export declare function iterLoadSenatCirconscriptions(dataDir: string, options?: {}): Generator<IterItem<CirconscriptionResult>>;
74
75
  export declare function iterLoadSenatOrganismes(dataDir: string, options?: {}): Generator<IterItem<OrganismeResult>>;
package/lib/loaders.js CHANGED
@@ -144,6 +144,11 @@ export function loadSenatTexteContent(dataDir, textePathFromDataset) {
144
144
  const texteJson = fs.readFileSync(fullTextePath, { encoding: "utf8" });
145
145
  return { item: JSON.parse(texteJson) };
146
146
  }
147
+ export function* iterLoadSenatAgendas(dataDir, session, options = {}) {
148
+ for (const evenementsItem of iterLoadSenatItems(dataDir, AGENDA_FOLDER, session, DATA_TRANSFORMED_FOLDER, options)) {
149
+ yield evenementsItem;
150
+ }
151
+ }
147
152
  export function* iterLoadSenatEvenements(dataDir, session, options = {}) {
148
153
  for (const evenementsItem of iterLoadSenatItems(dataDir, AGENDA_FOLDER, session, DATA_TRANSFORMED_FOLDER, options)) {
149
154
  for (const evenement of evenementsItem.item) {
@@ -3,6 +3,9 @@ import { DateTime } from "luxon";
3
3
  import path from "path";
4
4
  import { ID_DATE_FORMAT, STANDARD_DATE_FORMAT } from "../scripts/datautil";
5
5
  const FR_TZ = "Europe/Paris";
6
+ function eventIsSeance(eventElement) {
7
+ return eventElement.classList.contains("evt-seance");
8
+ }
6
9
  function getEventType(eventClasses) {
7
10
  const typeClass = [...eventClasses]
8
11
  .find(className => className.startsWith("evt-"))
@@ -27,27 +30,25 @@ function getUrlDossierSenat(lienElements) {
27
30
  return urlElement ? urlElement.getAttribute("href") : null;
28
31
  }
29
32
  function getQuantieme(eventElement, seancesElements) {
30
- if (eventElement.classList.contains("evt-seance")) {
31
- const seanceIndex = seancesElements.indexOf(eventElement);
32
- if (seancesElements.length === 1 && seanceIndex === 0) {
33
- return "Unique";
34
- }
35
- else {
36
- switch (seanceIndex) {
37
- case 0:
38
- return "Première";
39
- case 1:
40
- return "Deuxième";
41
- case 2:
42
- return "Troisième";
43
- case 3:
44
- return "Quatrième";
45
- case 4:
46
- return "Cinquième";
47
- }
33
+ const seanceIndex = seancesElements.indexOf(eventElement);
34
+ if (seancesElements.length === 1 && seanceIndex === 0) {
35
+ return "Unique";
36
+ }
37
+ else {
38
+ switch (seanceIndex) {
39
+ case 0:
40
+ return "Première";
41
+ case 1:
42
+ return "Deuxième";
43
+ case 2:
44
+ return "Troisième";
45
+ case 3:
46
+ return "Quatrième";
47
+ case 4:
48
+ return "Cinquième";
48
49
  }
49
50
  }
50
- return null;
51
+ return "Non défini";
51
52
  }
52
53
  /**
53
54
  * Normalize time string to become a simple start time ("H'h'mm") or a duration ("'de 'H'h'mm' à 'H'h'mm").
@@ -85,8 +86,7 @@ function getStartAndEndTimes(timeStr) {
85
86
  function transformAgenda(document, fileName) {
86
87
  const agendaEvents = [];
87
88
  const eventElements = document.querySelectorAll(".evt");
88
- const seanceElements = Array.from(eventElements)
89
- .filter(eventElement => eventElement.classList.contains("evt-seance"));
89
+ const seanceElements = Array.from(eventElements).filter(eventElement => eventIsSeance(eventElement));
90
90
  for (const eventElement of eventElements) {
91
91
  const id = eventElement.previousElementSibling?.getAttribute("name") || null;
92
92
  if (!id) {
@@ -118,7 +118,7 @@ function transformAgenda(document, fileName) {
118
118
  lieu,
119
119
  captationVideo: videoElement !== null,
120
120
  urlDossierSenat: urlDossierSenat,
121
- quantieme: getQuantieme(eventElement, seanceElements),
121
+ quantieme: eventIsSeance(eventElement) ? getQuantieme(eventElement, seanceElements) : null,
122
122
  });
123
123
  }
124
124
  return agendaEvents;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tricoteuses/senat",
3
- "version": "2.7.1",
3
+ "version": "2.8.1",
4
4
  "description": "Handle French Sénat's open data",
5
5
  "keywords": [
6
6
  "France",