Colorisation des tags HTML avec espaces #4

Closed
opened 1 year ago by MathieuAlphamosa · 4 comments
Collaborator

La coloristation ne marche plus si un tag a un espace. Exemple classique avec une iframe :

<iframe width="853" height="480" src="https://www.youtube-nocookie.com/embed/wgdbZhnFD5g?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe>
La coloristation ne marche plus si un tag a un espace. Exemple classique avec une iframe : ``` <iframe width="853" height="480" src="https://www.youtube-nocookie.com/embed/wgdbZhnFD5g?rel=0&amp;showinfo=0" frameborder="0" allowfullscreen></iframe> ```
Collaborator

Je pense que le problème vient de la ligne 47 : e26a25b8e2/js/prism-spip-typo.js (L47)

Si on rend le pipe non obligatoire, on devient bien trop générique, si j'en crois un test rapide que j'ai fait...

Mais on doit encore être trop générique... Et là je dois avouer que je sèche un peu pour le moment...

Je pense que le problème vient de la ligne 47 : https://git.spip.net/spip-contrib-extensions/prism/src/commit/e26a25b8e25e11375e497a34e9bc9b2c188ee46f/js/prism-spip-typo.js#L47 Si on rend le pipe non obligatoire, on devient bien trop générique, si j'en crois un test rapide que j'ai fait... Mais on doit encore être trop générique... Et là je dois avouer que je sèche un peu pour le moment...
Collaborator

Bon, j'ai finalement avancé un peu sur le sujet, ça permet de répondre globalement à la demande, même si demeure un petit problème comme on peut le voir sur la capture jointe, sur un attribut class contenant tiret et espace...

Bon, j'ai finalement avancé un peu sur le sujet, ça permet de répondre globalement à la demande, même si demeure un petit problème comme on peut le voir sur la capture jointe, sur un attribut class contenant tiret et espace...
Poster
Collaborator

En reprenant la déclartion de 'tag' pour Prism.languages.markup ça semble fonctionner, même avec les espaces dans les attributs.

'spip-html': {
      pattern: /<\/?[a-z]+(\s?[\s?\S?]*?)?>/,
      greedy: true,
      alias: 'tag',
      inside: {
        'tag': {
          pattern: /^<\/?[^\s>\/]+/,
          inside: {
            'punctuation': /^<\/?/,
            'namespace': /^[^\s>\/:]+:/
          }
        },
        'special-attr': [],
        'variable': {
          pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,
          inside: {
            'punctuation': [
              {
                pattern: /^=/,
                alias: 'attr-equals'
              },
              /"|'/
            ]
          }
        },
        'punctuation': /\/?>/,
        'attr-name': {
          pattern: /[^\s>\/]+/,
          inside: {
            'namespace': /^[^\s>\/:]+:/
          }
        }
      }
En reprenant la déclartion de 'tag' pour Prism.languages.markup ça semble fonctionner, même avec les espaces dans les attributs. ``` 'spip-html': { pattern: /<\/?[a-z]+(\s?[\s?\S?]*?)?>/, greedy: true, alias: 'tag', inside: { 'tag': { pattern: /^<\/?[^\s>\/]+/, inside: { 'punctuation': /^<\/?/, 'namespace': /^[^\s>\/:]+:/ } }, 'special-attr': [], 'variable': { pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, inside: { 'punctuation': [ { pattern: /^=/, alias: 'attr-equals' }, /"|'/ ] } }, 'punctuation': /\/?>/, 'attr-name': { pattern: /[^\s>\/]+/, inside: { 'namespace': /^[^\s>\/:]+:/ } } } ```
Collaborator

Héhé, bien joué ^^ je m'arrachais pourtant les cheveux à essayer de faire quelque chose d'assez générique avec appel récursif mais j'avais toujours un problème de "priorité"... mais sans doute pas encore assez pour retourner choper ce morceau de code...

J'ai juste ajouté une règle dans la "section" variable avec la règle de coloration des URL (définie en dernier pour la grammaire SPIP), histoire d'être cohérent. Je commit et push dans la foulée.

Héhé, bien joué ^^ je m'arrachais pourtant les cheveux à essayer de faire quelque chose d'assez générique avec appel récursif mais j'avais toujours un problème de "priorité"... mais sans doute pas encore assez pour retourner choper ce morceau de code... J'ai juste ajouté une règle dans la "section" variable avec la règle de coloration des URL (définie en dernier pour la grammaire SPIP), histoire d'être cohérent. Je commit et push dans la foulée.
bricebou closed this issue 1 year ago
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.