Un filtre `|ajuster_intertitres` #153

Closed
maieul wants to merge 1 commits from maieul/spip:decaler_niveau_titre into master
maieul commented 2 weeks ago

à appliquer sur un texte passé par propre (pour ne pas dépendre de des
raccourcis typo sous jacents).

Permet de transformer h2 -> h3, h3 -> h4, etc. S'assure que les titres
que l'on reçoit in fine soient entre h1 et h6.

exemple d'usage
https://www.mail-archive.com/spip@rezo.net/msg81097.html

à appliquer sur un texte passé par propre (pour ne pas dépendre de des raccourcis typo sous jacents). Permet de transformer h2 -> h3, h3 -> h4, etc. S'assure que les titres que l'on reçoit in fine soient entre h1 et h6. exemple d'usage https://www.mail-archive.com/spip@rezo.net/msg81097.html
maieul added 1 commit 2 weeks ago
3b1ab891f9 Un filtrer `|decaler_niveau_intertitre{<decalage (optionel, par défaut}>)}`
maieul force-pushed decaler_niveau_titre from 3b1ab891f9 to bf970b668f 2 weeks ago
maieul force-pushed decaler_niveau_titre from bf970b668f to 36b51aecf7 2 weeks ago
maieul changed title from Un filtrer `|decaler_niveau_intertitre{<decalage (optionel, par défaut}>)}` to Un filtrer `|decaler_niveau_intertitre` 2 weeks ago

Testé en 3.3.0-dev [9f4cc0e0], ça marche.

Etant à l'origine de la demande, je ne peux que plussoyer et argumenter : Avec ces maquettes "one page" qui sont de plus en plus employées, ça serait effectivement pas mal d'avoir ça sous le coude.

Testé en 3.3.0-dev [9f4cc0e0], ça marche. Etant à l'origine de la demande, je ne peux que plussoyer et argumenter : Avec ces maquettes "one page" qui sont de plus en plus employées, ça serait effectivement pas mal d'avoir ça sous le coude.
b_b commented 1 week ago
Owner

Deux points, je pense qu'il faut demander l'avis de la NOMENKLATURA (ping @rastapopoulos ^^) si c'est intégré. Mais avant même d'envisager ça, je me pose la question de la "redondance" avec les variables de conf debut_intertitre & fin_intertitre. Je comprends bien que ça n'est pas exactement la même chose, mais le besoin de changer le niveau "sur une page spécifique" me semble un peu spécifique. D'autres avis ?

Deux points, je pense qu'il faut demander l'avis de la NOMENKLATURA (ping @rastapopoulos ^^) si c'est intégré. Mais avant même d'envisager ça, je me pose la question de la "redondance" avec les variables de conf `debut_intertitre` & `fin_intertitre`. Je comprends bien que ça n'est pas exactement la même chose, mais le besoin de changer le niveau "sur une page spécifique" me semble un peu spécifique. D'autres avis ?
Poster

sur la redondance, effectivement c'est pas la même chose. Donc la question est de savoir si c'est trop spécifique ou pas. Pas d'avis. Effectivement pour une maquette one_page, les variables de conf suffisent. La seule question est dans les cas où l'on a une page d'accueil + des pages d'article. A voir. Si c'est pas dans le core, bah ca finira en plugin, et zou :-)

sur la nomenclatura, j'ai hésité juste avec forme pluriel. Et @rastapopoulos a mis un +1 :P

sur la redondance, effectivement c'est pas la même chose. Donc la question est de savoir si c'est trop spécifique ou pas. Pas d'avis. Effectivement pour une maquette one_page, les variables de conf suffisent. La seule question est dans les cas où l'on a une page d'accueil + des pages d'article. A voir. Si c'est pas dans le core, bah ca finira en plugin, et zou :-) sur la nomenclatura, j'ai hésité juste avec forme pluriel. Et @rastapopoulos a mis un +1 :P
Owner

Pour la fonctionnalité elle-même ce n'est clairement pas spécifique : plein de squelettes peuvent avoir besoin de ça. En effet

  • dans tout texte long #TEXTE, #DESCRIPTIF, etc, il peut y avoir des intertitres
  • dès qu'on insère un #TEXTE quel qu'il soit (d'un article, ou d'une config genre descriptif du site, etc) dans une page : on a besoin de s'assurer que les titres à l'intérieur vont être raccord avec le niveau de "là où on en est" à l'endroit où on insère

Si on insère ça à la racine d'une page, ça va être h2 en premier tout c'est bon. Si on insère ça dans une "strate" ou une colonne qui a déjà son propre titre h2 : c'est niqué, la hiérarchie est pétée. Donc il faut absolument pouvoir décaler suivant le contexte de l'insertion (et ça c'est à l'intégrateurice de le savoir).

Pour le nom… j'ai rien vu qui corresponde de déjà existant, donc ya pas vraiment à le rendre cohérent avec un ensemble pré-existant.

Peut-être qu'on peut simplifier, parce que trois mots c'est long… |decaler_intertitres juste ? (ça décale tous les intertitres)

Pour la fonctionnalité elle-même ce n'est clairement pas spécifique : plein de squelettes peuvent avoir besoin de ça. En effet - dans tout texte long #TEXTE, #DESCRIPTIF, etc, il peut y avoir des intertitres - dès qu'on insère un #TEXTE *quel qu'il soit* (d'un article, ou d'une config genre descriptif du site, etc) dans une page : on a besoin de s'assurer que les titres à l'intérieur vont être raccord avec le niveau de "là où on en est" à l'endroit où on insère Si on insère ça à la racine d'une page, ça va être h2 en premier tout c'est bon. Si on insère ça dans une "strate" ou une colonne qui a déjà son propre titre h2 : c'est niqué, la hiérarchie est pétée. Donc il faut absolument pouvoir décaler suivant le contexte de l'insertion (et ça c'est à l'intégrateurice de le savoir). Pour le nom… j'ai rien vu qui corresponde de déjà existant, donc ya pas vraiment à le rendre cohérent avec un ensemble pré-existant. Peut-être qu'on peut simplifier, parce que trois mots c'est long… |decaler_intertitres juste ? (ça décale tous *les* intertitres)
Poster

Peut-être qu'on peut simplifier, parce que trois mots c'est long… |decaler_intertitres juste ? (ça décale tous les intertitres)

pourquoi pas

> Peut-être qu'on peut simplifier, parce que trois mots c'est long… |decaler_intertitres juste ? (ça décale tous les intertitres) pourquoi pas
b_b commented 1 week ago
Owner

decaler_intertitres me semble très bien.

Il faudra aussi revoir le PHPdoc est les commentaires, cf :

Décaler le niveau d'intertitres => Décaler le niveau des intertitres dans un texte

+1 pour augmenter d'un niveau => 1 pour augmenter d'un niveau

Si on décale vers le haut (+1), alors on commence par les plus haut niveau et on descend vers les plus bas. Si on décale vers le bas (-1), alors c'est l'inverse. Ceci pour éviter de décaler quelque chose de déjà décalé.

Là je suis tellement perdu en lisant la phrase, que je ne sais pas quoi proposer comme amélioration :D

`decaler_intertitres` me semble très bien. Il faudra aussi revoir le PHPdoc est les commentaires, cf : Décaler le niveau d'intertitres => Décaler le niveau des intertitres dans un texte +1 pour augmenter d'un niveau => 1 pour augmenter d'un niveau > Si on décale vers le haut (+1), alors on commence par les plus haut niveau et on descend vers les plus bas. Si on décale vers le bas (-1), alors c'est l'inverse. Ceci pour éviter de décaler quelque chose de déjà décalé. Là je suis tellement perdu en lisant la phrase, que je ne sais pas quoi proposer comme amélioration :D
maieul force-pushed decaler_niveau_titre from 36b51aecf7 to fc8cf28fea 1 week ago
Poster

@b_b plus clair comme cela ?

@b_b plus clair comme cela ?
maieul changed title from Un filtrer `|decaler_niveau_intertitre` to Un filtrer `|decaler_intertitres` 1 week ago
maieul changed title from Un filtrer `|decaler_intertitres` to Un filtre `|decaler_intertitres` 1 week ago
maieul force-pushed decaler_niveau_titre from fc8cf28fea to 9059929334 1 week ago
b_b commented 1 week ago
Owner

@maieul peut-être, je dois pas être réveillé ^^ mais la liste d'exemples me semble en trop, expliquer qu'on passe de h5 à h6 en montant d'un niveau ne me parait pas très utile :p

J'ai l'impression que c'est la partie "Ceci pour éviter de décaler quelque chose de déjà décalé." qui est important, mais je ne la comprends pas.

PS, il y une typo dans ta dernière version "Ceci pour éviter de décaler quelque chose qu'on a deja decaler" <= é

@maieul peut-être, je dois pas être réveillé ^^ mais la liste d'exemples me semble en trop, expliquer qu'on passe de h5 à h6 en montant d'un niveau ne me parait pas très utile :p J'ai l'impression que c'est la partie "Ceci pour éviter de décaler quelque chose de déjà décalé." qui est important, mais je ne la comprends pas. PS, il y une typo dans ta dernière version "Ceci pour éviter de décaler quelque chose qu'on a deja decaler" <= é
Owner

Très bonne idée.
Une interrogation sur l'utilisation pour ma part.
Prenons le cas suivant :


<h4>Un titre</h4>

#TEXTE

Donc je veux m'assurer que dans #TEXTE, les intertitres commencent à h5.

Si je comprends bien, actuellement c'est à moi de calculer de combien de niveaux il faut décaler avant d'appeler la fonction.
C'est un peu compliqué car pour ce faire je dois prendre en compte le niveau actuel, mais aussi le niveau par défaut de Spip, et je sais pas si on peut le retrouver facilement dans un squelette ? ça dépend de constantes de mémoire.

Dans ce cas il me semblerait plus simple de pouvoir appeler la fonction on lui donnant en paramètre le niveau actuel, et ça serait elle qui calculerait savamment le décalage nécessaire.

Idée : on donne en paramètre le hn au lieu d'un entier, et alors elle calcul le décalage elle-même ?


<h4>Un titre</h4>

[(#TEXTE|decaler_intertitres{h4})]
Très bonne idée. Une interrogation sur l'utilisation pour ma part. Prenons le cas suivant : ```html <h4>Un titre</h4> #TEXTE ``` Donc je veux m'assurer que dans `#TEXTE`, les intertitres commencent à `h5`. Si je comprends bien, actuellement c'est à moi de calculer de combien de niveaux il faut décaler avant d'appeler la fonction. C'est un peu compliqué car pour ce faire je dois prendre en compte le niveau actuel, mais aussi le niveau par défaut de Spip, et je sais pas si on peut le retrouver facilement dans un squelette ? ça dépend de constantes de mémoire. Dans ce cas il me semblerait plus simple de pouvoir appeler la fonction on lui donnant en paramètre le niveau actuel, et ça serait elle qui calculerait savamment le décalage nécessaire. Idée : on donne en paramètre le `hn` au lieu d'un entier, et alors elle calcul le décalage elle-même ? ```html <h4>Un titre</h4> [(#TEXTE|decaler_intertitres{h4})] ```
Poster

@tcharlss

Dans ce cas il me semblerait plus simple de pouvoir appeler la fonction on lui donnant en paramètre le niveau actuel, et ça serait elle qui calculerait savamment le décalage nécessaire.

heu, si justement on ne connait pas le niveau actuel ... je vois pas comment on peut le donner. A moins que tu veuille dire "le niveau minimal exigé" ?

Si je comprends bien, actuellement c'est à moi de calculer de combien de niveaux il faut décaler avant d'appeler la fonction.

oui, tu dis de combien tu veux décaler, effectivement

@b_b bon j'ai fait un pad, tu m'en diras-t-en
https://hebdo.framapad.org/p/brvryaj6ha-9mru?lang=fr

@tcharlss > Dans ce cas il me semblerait plus simple de pouvoir appeler la fonction on lui donnant en paramètre le niveau actuel, et ça serait elle qui calculerait savamment le décalage nécessaire. heu, si justement on ne connait pas le niveau actuel ... je vois pas comment on peut le donner. A moins que tu veuille dire "le niveau minimal exigé" ? > Si je comprends bien, actuellement c'est à moi de calculer de combien de niveaux il faut décaler avant d'appeler la fonction. oui, tu dis de combien tu veux décaler, effectivement @b_b bon j'ai fait un pad, tu m'en diras-t-en https://hebdo.framapad.org/p/brvryaj6ha-9mru?lang=fr
Owner

Je suis assez d'accord avec @tcharlss notamment parce qu'on pourrait vouloir faire également :

<aside>[(#TEXTE|decaler_intertitres{h1})]</aside>

Ce qui du coup questionne aussi le nomage de decaler_intertitre qui pourrait se nommer |debuter_intertitres{h1} ou |definir_intertitres{h1}

Partir d'un niveau qui peut déjà être modifié par des plugins dans un sens ou dans l'autre ça risque de pas être simple ?

Je suis assez d'accord avec @tcharlss notamment parce qu'on pourrait vouloir faire également : `<aside>[(#TEXTE|decaler_intertitres{h1})]</aside>` Ce qui du coup questionne aussi le nomage de `decaler_intertitre` qui pourrait se nommer `|debuter_intertitres{h1}` ou `|definir_intertitres{h1}` Partir d'un niveau qui peut déjà être modifié par des plugins dans un sens ou dans l'autre ça risque de pas être simple ?
Poster

|debuter_intertitres{h1} ou |definir_intertitres{h1}

|debuter me parait plus adéquat. Et comme toi, je mettrai en argument (avec h) le niveau où l'on veut que ca commence

Truc

[(#TEXTE|debuter_intertitre{h3})]

et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel.

> |debuter_intertitres{h1} ou |definir_intertitres{h1} `|debuter` me parait plus adéquat. Et comme toi, je mettrai en argument (avec h) le niveau où l'on veut que ca commence <code> <h2>Truc</h2> [(#TEXTE|debuter_intertitre{h3})] </code> et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel.
Owner

[(#TEXTE|debuter_intertitre{h3})]
et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel.

Oui ça me paraît top.

> [(#TEXTE|debuter_intertitre{h3})] > et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel. Oui ça me paraît top.
Poster

ou bien ajuster_intertitres ?

ou bien `ajuster_intertitres` ?
Owner

et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel.

"le niveau le plus haut actuel" ? c'est à dire ? 🤔

> et ca calcule automatiquement le decalage en cherchant le niveau le plus haut actuel. "le niveau le plus haut actuel" ? c'est à dire ? 🤔
Poster

@nicod_

"le niveau le plus haut actuel" ? c'est à dire ?

le niveau le plus haut dans le $texte ;-)

@nicod_ > "le niveau le plus haut actuel" ? c'est à dire ? le niveau le plus haut dans le $texte ;-)
maieul force-pushed decaler_niveau_titre from 9059929334 to 9668d62de3 1 week ago
maieul changed title from Un filtre `|decaler_intertitres` to Un filtre `|ajuster_intertitres` 1 week ago
Poster

Point sur les modifs

J'ai renommé en ajuster_intertitres + ajouté la syntaxe hx pour l'arg optionel. Cela fait commencer à hx les niveaux de titres.

Exemple de code en entré


<h2>h2</h2>
<h3>h3</h3>

Exemple d'appel


[(#TEXTE|ajuster_intertitres)]

et 

[(#TEXTE|ajuster_intertitres{h5})]

Exemple de sortie

<h3>h2</h3>
<h4>h3</h4> 

et 

<h5>h2</h5>
<h6>h3</h6>

A faire

Comme le fait remarquer @marcimat, il faut améliorer encore

  • ne pas ajuster ce qu'il y a entre code, pre, cadre, etc dans $texte
  • éventuellement (en option) ne pas ajuster ce qu'il entre aside, nav etc.

Juste

  1. Je ne comprend pas grand chose aux fonctions d'echappement du code. On a pas une fonction bete "echappe moi tout ce qui est entre tel et telle balise" ?
  2. Je connais pas la lisze des balises à echapper

Ps

Une autre solution aurait été d'avoir quelques chopse à appeler au moment où l'on veut faire le decalage, et qui ajuste en amont les globales de niveau de titre.

Je n'ai pas pris ce parti pour les raisons suivantes

  • ce seraiot le seul cas où dans un squelette on peut ajuster des globales
  • cela crééerait une syntaxe inhabituelle, par rapport à un filtre
  • ca demande un niveau de connaissance de l'ordre d'interprétation que je n'ai pas
## Point sur les modifs J'ai renommé en `ajuster_intertitres` + ajouté la syntaxe `hx` pour l'arg optionel. Cela fait commencer à `hx` les niveaux de titres. Exemple de code en entré ``` <h2>h2</h2> <h3>h3</h3> ``` Exemple d'appel ``` [(#TEXTE|ajuster_intertitres)] et [(#TEXTE|ajuster_intertitres{h5})] ``` Exemple de sortie ``` <h3>h2</h3> <h4>h3</h4> et <h5>h2</h5> <h6>h3</h6> ``` ## A faire Comme le fait remarquer @marcimat, il faut améliorer encore - ne pas ajuster ce qu'il y a entre code, pre, cadre, etc dans `$texte` - éventuellement (en option) ne pas ajuster ce qu'il entre `aside`, `nav` etc. Juste 1. Je ne comprend pas grand chose aux fonctions d'echappement du code. On a pas une fonction bete "echappe moi tout ce qui est entre tel et telle balise" ? 2. Je connais pas la lisze des balises à echapper ## Ps Une autre solution aurait été d'avoir quelques chopse à appeler au moment où l'on veut faire le decalage, et qui ajuste **en amont** les globales de niveau de titre. Je n'ai pas pris ce parti pour les raisons suivantes - ce seraiot le seul cas où dans un squelette on peut ajuster des globales - cela crééerait une syntaxe inhabituelle, par rapport à un filtre - ca demande un niveau de connaissance de l'ordre d'interprétation que je n'ai pas

SPIP, ce monde merveilleux où on te propose une solution dans l'heure et où, dans la foulée, on échange sur la meilleure façon de l'intégrer au core <3

Mais comment font les autres dans les autres communautés ? :)

SPIP, ce monde merveilleux où on te propose une solution dans l'heure et où, dans la foulée, on échange sur la meilleure façon de l'intégrer au core <3 Mais comment font les autres dans les autres communautés ? :)
Owner

Que ce soit un outil utile oui, mais on voit dans la longueur de la discussion que c'est quand même pas très mur sur l'usage, le nommage et l'implémentation.

Je propose donc de traiter ce sujet dans un plugin et quand ce sera mur et stable on en reparle ?

Que ce soit un outil utile oui, mais on voit dans la longueur de la discussion que c'est quand même pas très mur sur l'usage, le nommage et l'implémentation. Je propose donc de traiter ce sujet dans un plugin et quand ce sera mur et stable on en reparle ?
cerdic closed this pull request 1 week ago
Poster

ca me va...

ca me va...
Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
8 Participants
Notifications
Due Date

No due date set.

Dependencies

This pull request currently doesn't have any dependencies.

Loading…
There is no content yet.