counters js

This commit is contained in:
Julie Blanc 2026-01-20 21:30:25 +01:00
parent 5b80e66e60
commit 4a95558237
5 changed files with 154 additions and 85 deletions

View file

@ -1,58 +1,70 @@
#section__content{ #section__content{
counter-reset: h1; h1, h2, h3 {
&::before{
h1{ content: attr(data-counter);
counter-increment: h1 1;
counter-reset: h2;
}
h1::before{
content: counter(h1, upper-alpha);
}
h2{
counter-increment: h2 1;
counter-reset: h3;
}
h2::before{
content: counter(h2, upper-roman);
}
h3{
counter-increment: h3 1;
counter-reset: h4;
}
h3::before{
content: counter(h3);
}
h4{
counter-increment: h4 1;
counter-reset: h5;
}
h4::before{
content: counter(h4, lower-alpha) ". ";
}
h5{
counter-increment: h5 1;
counter-reset: h6;
}
h5::before{
content: counter(h5, lower-alpha) counter(h5, lower-alpha) ". ";
}
h6{
counter-increment: h6 1;
}
h6::before{
content: "(" counter(h6) "). ";
} }
} }
h4, h5, h6{
&::before{
content: attr(data-counter) ". ";
}
}
// counter-reset: h1;
// h1{
// counter-increment: h1 1;
// counter-reset: h2;
// }
// h1::before{
// content: counter(h1, upper-alpha);
// }
// h2{
// counter-increment: h2 1;
// counter-reset: h3;
// }
// h2::before{
// content: counter(h2, upper-roman);
// }
// h3{
// counter-increment: h3 1;
// counter-reset: h4;
// }
// h3::before{
// content: counter(h3);
// }
// h4{
// counter-increment: h4 1;
// counter-reset: h5;
// }
// h4::before{
// content: counter(h4, lower-alpha) ". ";
// }
// h5{
// counter-increment: h5 1;
// counter-reset: h6;
// }
// h5::before{
// content: counter(h5, lower-alpha) counter(h5, lower-alpha) ". ";
// }
// h6{
// counter-increment: h6 1;
// }
// h6::before{
// content: "(" counter(h6) "). ";
// }
}

View file

@ -288,49 +288,11 @@ ol[type="1"]{
} }
*/ */
#section__content { #section__content h1::before, #section__content h2::before, #section__content h3::before {
counter-reset: h1; content: attr(data-counter);
} }
#section__content h1 { #section__content h4::before, #section__content h5::before, #section__content h6::before {
counter-increment: h1 1; content: attr(data-counter) ". ";
counter-reset: h2;
}
#section__content h1::before {
content: counter(h1, upper-alpha);
}
#section__content h2 {
counter-increment: h2 1;
counter-reset: h3;
}
#section__content h2::before {
content: counter(h2, upper-roman);
}
#section__content h3 {
counter-increment: h3 1;
counter-reset: h4;
}
#section__content h3::before {
content: counter(h3);
}
#section__content h4 {
counter-increment: h4 1;
counter-reset: h5;
}
#section__content h4::before {
content: counter(h4, lower-alpha) ". ";
}
#section__content h5 {
counter-increment: h5 1;
counter-reset: h6;
}
#section__content h5::before {
content: counter(h5, lower-alpha) counter(h5, lower-alpha) ". ";
}
#section__content h6 {
counter-increment: h6 1;
}
#section__content h6::before {
content: "(" counter(h6) "). ";
} }
#section__content h1, #section__content h2, #section__content h3, #section__content h4 { #section__content h1, #section__content h2, #section__content h3, #section__content h4 {

View file

@ -1 +1 @@
{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles-counters.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"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","file":"style.css"} {"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles-counters.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"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","file":"style.css"}

View file

@ -11,6 +11,7 @@
} }
}, },
"hook": [ "hook": [
"/js/counters.js",
"/js/sectionedFootnotes.js" "/js/sectionedFootnotes.js"
] ]
} }

94
js/counters.js Normal file
View file

@ -0,0 +1,94 @@
import { Handler } from '/csspageweaver/lib/paged.esm.js';
export default class counters extends Handler {
constructor(chunker, polisher, caller) {
super(chunker, polisher, caller);
}
// Convertir en upper-alpha (A, B, C...)
toUpperAlpha(num) {
return String.fromCharCode(64 + num);
}
// Convertir en lower-alpha (a, b, c...)
toLowerAlpha(num) {
return String.fromCharCode(96 + num);
}
// Convertir en upper-roman (I, II, III...)
toUpperRoman(num) {
const romanNumerals = [
['M', 1000], ['CM', 900], ['D', 500], ['CD', 400],
['C', 100], ['XC', 90], ['L', 50], ['XL', 40],
['X', 10], ['IX', 9], ['V', 5], ['IV', 4], ['I', 1]
];
let result = '';
for (const [letter, value] of romanNumerals) {
while (num >= value) {
result += letter;
num -= value;
}
}
return result;
}
beforeParsed(content) {
const sectionContent = content.querySelector('#section__content');
if (!sectionContent) return;
// Compteurs
let h1Count = 0;
let h2Count = 0;
let h3Count = 0;
let h4Count = 0;
let h5Count = 0;
let h6Count = 0;
// Parcourir tous les éléments dans l'ordre du document
const allElements = sectionContent.querySelectorAll('h1, h2, h3, h4, h5, h6');
allElements.forEach(el => {
const tagName = el.tagName.toLowerCase();
switch (tagName) {
case 'h1':
h1Count++;
h2Count = 0; // reset h2
el.setAttribute('data-counter', this.toUpperAlpha(h1Count));
break;
case 'h2':
h2Count++;
h3Count = 0; // reset h3
el.setAttribute('data-counter', this.toUpperRoman(h2Count));
break;
case 'h3':
h3Count++;
h4Count = 0; // reset h4
el.setAttribute('data-counter', h3Count.toString());
break;
case 'h4':
h4Count++;
h5Count = 0; // reset h5
el.setAttribute('data-counter', this.toLowerAlpha(h4Count));
break;
case 'h5':
h5Count++;
h6Count = 0; // reset h6
const letter = this.toLowerAlpha(h5Count);
el.setAttribute('data-counter', letter + letter);
break;
case 'h6':
h6Count++;
el.setAttribute('data-counter', '(' + h6Count + ')');
break;
}
});
}
}