@rr0/cms 0.3.56 → 0.3.58

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.
@@ -65,12 +65,16 @@ export class DataContentVisitor {
65
65
  const doc = context.file.document;
66
66
  const contents = doc.querySelector(".contents");
67
67
  if (contents) {
68
- const imgEl = contents.querySelector("img");
69
68
  const eventCaption = event.name;
70
- const eventSsrc = event.url;
71
- if (imgEl && ![imgEl.src, path.join("/", path.dirname(context.file.name), imgEl.src)].includes(eventSsrc)) {
69
+ const eventSrc = event.url;
70
+ const absoluteEventSrc = path.join("/", path.dirname(context.file.name), eventSrc);
71
+ const imageAlreadyRendered = Array.from(contents.querySelectorAll("img")).some(imgEl => {
72
+ const imageSrc = imgEl.getAttribute("src");
73
+ return imageSrc === eventSrc || imageSrc === absoluteEventSrc;
74
+ });
75
+ if (!imageAlreadyRendered) {
72
76
  const imgEl = doc.createElement("img");
73
- imgEl.src = eventSsrc;
77
+ imgEl.src = eventSrc;
74
78
  imgEl.alt = event.title;
75
79
  const figcaptionEl = doc.createElement("figcaption");
76
80
  figcaptionEl.innerHTML = eventCaption;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import { describe, expect, test } from "@javarome/testscript";
2
+ import { DataContentVisitor } from "./DataContentVisitor.js";
3
+ import { cmsTestUtil } from "./test/index.js";
4
+ class TestDataContentVisitor extends DataContentVisitor {
5
+ constructor() {
6
+ super(undefined, { renderEnd: async () => undefined }, undefined);
7
+ }
8
+ renderImage(context, event) {
9
+ return this.processImage(context, event);
10
+ }
11
+ }
12
+ describe("DataContentVisitor", () => {
13
+ const portraitEvent = {
14
+ eventType: "image",
15
+ name: "Portrait",
16
+ title: "Louis de Broglie",
17
+ url: "portrait.jpg"
18
+ };
19
+ test("insert portrait image when contents has no image", async () => {
20
+ var _a, _b;
21
+ const context = cmsTestUtil.newHtmlContext("people/v/VertongenJeanLuc/index.html", '<div class="contents"><p>Biographie</p></div>');
22
+ const visitor = new TestDataContentVisitor();
23
+ await visitor.renderImage(context, portraitEvent);
24
+ const figure = context.file.document.querySelector(".contents > figure");
25
+ expect((_a = figure === null || figure === void 0 ? void 0 : figure.querySelector("img")) === null || _a === void 0 ? void 0 : _a.getAttribute("src")).toBe("portrait.jpg");
26
+ expect((_b = figure === null || figure === void 0 ? void 0 : figure.querySelector("figcaption")) === null || _b === void 0 ? void 0 : _b.textContent).toBe("Portrait");
27
+ });
28
+ test("does not insert a portrait image already present", async () => {
29
+ const context = cmsTestUtil.newHtmlContext("people/v/VertongenJeanLuc/index.html", '<div class="contents"><img src="portrait.jpg"><p>Biographie</p></div>');
30
+ const visitor = new TestDataContentVisitor();
31
+ await visitor.renderImage(context, portraitEvent);
32
+ expect(context.file.document.querySelectorAll('.contents img[src="portrait.jpg"]').length).toBe(1);
33
+ });
34
+ });
@@ -46,97 +46,7 @@ export declare class RR0Messages_fr implements RR0Messages {
46
46
  conclusion: CaseConclusionMessages;
47
47
  };
48
48
  org: import("../org/OrgRR0Messages.js").OrgRR0Messages;
49
- people: {
50
- birth: string;
51
- death: string;
52
- occupation: {
53
- abductee: (gender: import("@rr0/common").Gender) => "enlevé" | "enlevée";
54
- actor: (gender: import("@rr0/common").Gender) => "acteur" | "actrice";
55
- anthropologist: (_gender: import("@rr0/common").Gender) => string;
56
- archeologist: (_gender: import("@rr0/common").Gender) => string;
57
- artist: (_gender: import("@rr0/common").Gender) => string;
58
- astronaut: (_gender: import("@rr0/common").Gender) => string;
59
- astronomer: (_gender: import("@rr0/common").Gender) => string;
60
- astrologist: (_gender: import("@rr0/common").Gender) => string;
61
- astrophysicist: (gender: import("@rr0/common").Gender) => "astrophysicien" | "astrophysicienne";
62
- banker: (gender: import("@rr0/common").Gender) => "banquier" | "banquière";
63
- barman: (gender: import("@rr0/common").Gender) => "barman" | "barmaid";
64
- biologist: (_gender: import("@rr0/common").Gender) => string;
65
- biochemist: (_gender: import("@rr0/common").Gender) => string;
66
- biophysicist: (gender: import("@rr0/common").Gender) => "biophysicien" | "biophysicienne";
67
- bishop: (_gender: import("@rr0/common").Gender) => string;
68
- botanist: (_gender: import("@rr0/common").Gender) => string;
69
- businessman: (gender: import("@rr0/common").Gender) => "homme d'affaires" | "femme d'affaires";
70
- cameraman: (gender: import("@rr0/common").Gender) => "cadreur" | "cadreuse";
71
- chemist: (_gender: import("@rr0/common").Gender) => string;
72
- contactee: (gender: import("@rr0/common").Gender) => "contacté" | "contactée";
73
- cryptozoologist: (_gender: import("@rr0/common").Gender) => string;
74
- dentist: (_gender: import("@rr0/common").Gender) => string;
75
- diplomat: (_gender: import("@rr0/common").Gender) => string;
76
- director: (_gender: import("@rr0/common").Gender) => string;
77
- diver: (_gender: import("@rr0/common").Gender) => string;
78
- engineer: (_gender: import("@rr0/common").Gender) => string;
79
- electronics: (gender: import("@rr0/common").Gender) => "électronicien" | "électronicienne";
80
- ethnologist: (_gender: import("@rr0/common").Gender) => string;
81
- exobiologist: (_gender: import("@rr0/common").Gender) => string;
82
- farmer: (gender: import("@rr0/common").Gender) => "agriculteur" | "agricultrice";
83
- firefighter: (gender: import("@rr0/common").Gender) => "pompier" | "pompière";
84
- flightAttendant: (gender: import("@rr0/common").Gender) => "stewart" | "hôtesse de l'air";
85
- geographer: (_gender: import("@rr0/common").Gender) => string;
86
- geologist: (_gender: import("@rr0/common").Gender) => string;
87
- geophysicist: (gender: import("@rr0/common").Gender) => "géophysicien" | "géophysicienne";
88
- historian: (gender: import("@rr0/common").Gender) => "historien" | "historienne";
89
- houseWife: (_gender: import("@rr0/common").Gender) => string;
90
- hypnotherapist: (_gender: import("@rr0/common").Gender) => string;
91
- illusionist: (_gender: import("@rr0/common").Gender) => string;
92
- journalist: (_gender: import("@rr0/common").Gender) => string;
93
- judge: (_gender: import("@rr0/common").Gender) => string;
94
- lawyer: (gender: import("@rr0/common").Gender) => "avocat" | "avocate";
95
- librarian: (_gender: import("@rr0/common").Gender) => string;
96
- leader: (gender: import("@rr0/common").Gender) => "dirigeant" | "dirigeante";
97
- logger: (gender: import("@rr0/common").Gender) => "bucheron" | "bucheronne";
98
- mathematician: (gender: import("@rr0/common").Gender) => "mathématicien" | "mathématicienne";
99
- meteorologist: (_gender: import("@rr0/common").Gender) => string;
100
- mechanic: (gender: import("@rr0/common").Gender) => "mécanicien" | "mécanicienne";
101
- military: (_gender: import("@rr0/common").Gender) => string;
102
- musician: (gender: import("@rr0/common").Gender) => "musicien" | "musicienne";
103
- neurologist: (_gender: import("@rr0/common").Gender) => string;
104
- neuroscientist: (_gender: import("@rr0/common").Gender) => string;
105
- neuropsychiatrist: (_gender: import("@rr0/common").Gender) => string;
106
- nurse: (gender: import("@rr0/common").Gender) => "infirmier" | "infirmière";
107
- oceanographer: (_gender: import("@rr0/common").Gender) => string;
108
- painter: (_gender: import("@rr0/common").Gender) => string;
109
- parapsychologist: (_gender: import("@rr0/common").Gender) => string;
110
- philosopher: (_gender: import("@rr0/common").Gender) => string;
111
- photographer: (_gender: import("@rr0/common").Gender) => string;
112
- physicist: (gender: import("@rr0/common").Gender) => "physicien" | "physicienne";
113
- physician: (_gender: import("@rr0/common").Gender) => string;
114
- pilot: (_gender: import("@rr0/common").Gender) => string;
115
- policeman: (gender: import("@rr0/common").Gender) => "policier" | "policière";
116
- politician: (gender: import("@rr0/common").Gender) => "politicien" | "politicienne";
117
- priest: (gender: import("@rr0/common").Gender) => "prêtre" | "prêtresse";
118
- producer: (gender: import("@rr0/common").Gender) => "producteur" | "productrice";
119
- prospector: (gender: import("@rr0/common").Gender) => "prospecteur" | "prospectrice";
120
- psychologist: (_gender: import("@rr0/common").Gender) => string;
121
- psychiatrist: (_gender: import("@rr0/common").Gender) => string;
122
- radioastronomer: (_gender: import("@rr0/common").Gender) => string;
123
- radioamateur: (gender: import("@rr0/common").Gender) => "radio amateur" | "radio amatrice";
124
- sailor: (_gender: import("@rr0/common").Gender) => string;
125
- salesman: (gender: import("@rr0/common").Gender) => "commercial" | "commerciale";
126
- sociologist: (_gender: import("@rr0/common").Gender) => string;
127
- softwareEngineer: (_gender: import("@rr0/common").Gender) => string;
128
- stuntman: (_gender: import("@rr0/common").Gender) => string;
129
- teacher: (gender: import("@rr0/common").Gender) => "enseignant" | "enseignante";
130
- truckDriver: (gender: import("@rr0/common").Gender) => "camionneur" | "camionneuse";
131
- taxiDriver: (_gender: import("@rr0/common").Gender) => string;
132
- telegrapher: (_gender: import("@rr0/common").Gender) => string;
133
- ufologist: (_gender: import("@rr0/common").Gender) => string;
134
- ufoWitness: (_gender: import("@rr0/common").Gender) => string;
135
- ufoWitness2: (_gender: import("@rr0/common").Gender) => string;
136
- worker: (gender: import("@rr0/common").Gender) => "ouvrier" | "ouvrière";
137
- writer: (gender: import("@rr0/common").Gender) => "écrivain" | "écrivaine";
138
- };
139
- };
49
+ people: import("../people/PeopleMessages.js").PeopleMessages;
140
50
  place: import("@rr0/place").PlaceMessages;
141
51
  country: import("../org/CountryMessagesList.js").CountryMessagesList;
142
52
  nav: {
@@ -1,92 +1,2 @@
1
- import { Gender } from "@rr0/common";
2
- export declare let peopleMessages_fr: {
3
- birth: string;
4
- death: string;
5
- occupation: {
6
- abductee: (gender: Gender) => "enlevé" | "enlevée";
7
- actor: (gender: Gender) => "acteur" | "actrice";
8
- anthropologist: (_gender: Gender) => string;
9
- archeologist: (_gender: Gender) => string;
10
- artist: (_gender: Gender) => string;
11
- astronaut: (_gender: Gender) => string;
12
- astronomer: (_gender: Gender) => string;
13
- astrologist: (_gender: Gender) => string;
14
- astrophysicist: (gender: Gender) => "astrophysicien" | "astrophysicienne";
15
- banker: (gender: Gender) => "banquier" | "banquière";
16
- barman: (gender: Gender) => "barman" | "barmaid";
17
- biologist: (_gender: Gender) => string;
18
- biochemist: (_gender: Gender) => string;
19
- biophysicist: (gender: Gender) => "biophysicien" | "biophysicienne";
20
- bishop: (_gender: Gender) => string;
21
- botanist: (_gender: Gender) => string;
22
- businessman: (gender: Gender) => "homme d'affaires" | "femme d'affaires";
23
- cameraman: (gender: Gender) => "cadreur" | "cadreuse";
24
- chemist: (_gender: Gender) => string;
25
- contactee: (gender: Gender) => "contacté" | "contactée";
26
- cryptozoologist: (_gender: Gender) => string;
27
- dentist: (_gender: Gender) => string;
28
- diplomat: (_gender: Gender) => string;
29
- director: (_gender: Gender) => string;
30
- diver: (_gender: Gender) => string;
31
- engineer: (_gender: Gender) => string;
32
- electronics: (gender: Gender) => "électronicien" | "électronicienne";
33
- ethnologist: (_gender: Gender) => string;
34
- exobiologist: (_gender: Gender) => string;
35
- farmer: (gender: Gender) => "agriculteur" | "agricultrice";
36
- firefighter: (gender: Gender) => "pompier" | "pompière";
37
- flightAttendant: (gender: Gender) => "stewart" | "hôtesse de l'air";
38
- geographer: (_gender: Gender) => string;
39
- geologist: (_gender: Gender) => string;
40
- geophysicist: (gender: Gender) => "géophysicien" | "géophysicienne";
41
- historian: (gender: Gender) => "historien" | "historienne";
42
- houseWife: (_gender: Gender) => string;
43
- hypnotherapist: (_gender: Gender) => string;
44
- illusionist: (_gender: Gender) => string;
45
- journalist: (_gender: Gender) => string;
46
- judge: (_gender: Gender) => string;
47
- lawyer: (gender: Gender) => "avocat" | "avocate";
48
- librarian: (_gender: Gender) => string;
49
- leader: (gender: Gender) => "dirigeant" | "dirigeante";
50
- logger: (gender: Gender) => "bucheron" | "bucheronne";
51
- mathematician: (gender: Gender) => "mathématicien" | "mathématicienne";
52
- meteorologist: (_gender: Gender) => string;
53
- mechanic: (gender: Gender) => "mécanicien" | "mécanicienne";
54
- military: (_gender: Gender) => string;
55
- musician: (gender: Gender) => "musicien" | "musicienne";
56
- neurologist: (_gender: Gender) => string;
57
- neuroscientist: (_gender: Gender) => string;
58
- neuropsychiatrist: (_gender: Gender) => string;
59
- nurse: (gender: Gender) => "infirmier" | "infirmière";
60
- oceanographer: (_gender: Gender) => string;
61
- painter: (_gender: Gender) => string;
62
- parapsychologist: (_gender: Gender) => string;
63
- philosopher: (_gender: Gender) => string;
64
- photographer: (_gender: Gender) => string;
65
- physicist: (gender: Gender) => "physicien" | "physicienne";
66
- physician: (_gender: Gender) => string;
67
- pilot: (_gender: Gender) => string;
68
- policeman: (gender: Gender) => "policier" | "policière";
69
- politician: (gender: Gender) => "politicien" | "politicienne";
70
- priest: (gender: Gender) => "prêtre" | "prêtresse";
71
- producer: (gender: Gender) => "producteur" | "productrice";
72
- prospector: (gender: Gender) => "prospecteur" | "prospectrice";
73
- psychologist: (_gender: Gender) => string;
74
- psychiatrist: (_gender: Gender) => string;
75
- radioastronomer: (_gender: Gender) => string;
76
- radioamateur: (gender: Gender) => "radio amateur" | "radio amatrice";
77
- sailor: (_gender: Gender) => string;
78
- salesman: (gender: Gender) => "commercial" | "commerciale";
79
- sociologist: (_gender: Gender) => string;
80
- softwareEngineer: (_gender: Gender) => string;
81
- stuntman: (_gender: Gender) => string;
82
- teacher: (gender: Gender) => "enseignant" | "enseignante";
83
- truckDriver: (gender: Gender) => "camionneur" | "camionneuse";
84
- taxiDriver: (_gender: Gender) => string;
85
- telegrapher: (_gender: Gender) => string;
86
- ufologist: (_gender: Gender) => string;
87
- ufoWitness: (_gender: Gender) => string;
88
- ufoWitness2: (_gender: Gender) => string;
89
- worker: (gender: Gender) => "ouvrier" | "ouvrière";
90
- writer: (gender: Gender) => "écrivain" | "écrivaine";
91
- };
92
- };
1
+ import { PeopleMessages } from "./PeopleMessages.js";
2
+ export declare let peopleMessages_fr: PeopleMessages;
@@ -73,6 +73,16 @@ describe("TimeReplacer", async () => {
73
73
  expect(context.time.getMinutes()).toBe(undefined);
74
74
  expect(context.time.getTimeZone()).toBe(undefined);
75
75
  });
76
+ test("renders a year interval after a more precise date in the same year", async () => {
77
+ const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
78
+ const previous = context.file.document.createElement("time");
79
+ previous.textContent = "1951-05";
80
+ await replacer.replacement(context, previous);
81
+ const interval = context.file.document.createElement("time");
82
+ interval.textContent = "1951/1955";
83
+ const replaced = await replacer.replacement(context, interval);
84
+ expect(replaced.outerHTML).toBe(`<span class="time-interval"><span class="time-resolved"><time datetime="1951">1951</time></span> à <span class="time-resolved"><time datetime="1955">1955</time></span></span>`);
85
+ });
76
86
  test("parses unsupported", async () => {
77
87
  const interval = "moi";
78
88
  const context = cmsTestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
@@ -43,6 +43,24 @@ export class TimeTextBuilder {
43
43
  if (timeZone) {
44
44
  // printOptions.timeZoneName = context.time.options.timeZoneName
45
45
  }
46
+ if (!Object.values(printOptions).some(value => value !== undefined)) {
47
+ if (year) {
48
+ printOptions.year = this.options.year;
49
+ }
50
+ if (month) {
51
+ printOptions.month = this.options.month;
52
+ }
53
+ if (dayOfMonth) {
54
+ printOptions.day = this.options.day;
55
+ printOptions.weekday = this.options.weekday;
56
+ }
57
+ if (hour) {
58
+ printOptions.hour = this.options.hour;
59
+ }
60
+ if (minutes) {
61
+ printOptions.minute = this.options.minute;
62
+ }
63
+ }
46
64
  let text;
47
65
  if (Number.isNaN(date.getTime())) {
48
66
  text = "";
package/package.json CHANGED
@@ -2,9 +2,8 @@
2
2
  "name": "@rr0/cms",
3
3
  "type": "module",
4
4
  "author": "Jérôme Beau <rr0@rr0.org> (https://rr0.org)",
5
- "version": "0.3.56",
5
+ "version": "0.3.58",
6
6
  "description": "RR0 Content Management System (CMS)",
7
-
8
7
  "exports": "./dist/index.js",
9
8
  "types": "./dist/index.d.ts",
10
9
  "engines": {