11 votes

Modifier la grammaire HTML en fonction des attributs dans TextMate

J'ai récemment commencé à expérimenter les modèles jQuery, qui s'appuient sur votre capacité à envelopper le HTML dans SCRIPT tags.

<script id="movieTemplate" type="text/x-jquery-tmpl">
    <li>
        <b>${Name}</b> (${ReleaseYear})
    </li>
</script>

Le problème est que TextMate suppose naturellement que tout ce qui est à l'intérieur de SCRIPT est JavaScript. Je suis sûr qu'il est possible de faire en sorte que TextMate traite le contenu différemment en fonction de la balise type mais j'ai du mal à comprendre la grammaire utilisée dans l'offre groupée. Je suis presque sûr que la ligne ci-dessous est la clé, mais je ne sais pas par où commencer.

begin = '(?:^\s+)?(<)((?i:script))\b(?![^>]*/>)';

Quelqu'un a-t-il déjà eu affaire à un scénario similaire ? Quelqu'un pourrait-il m'orienter dans la bonne direction ?

Rich

6voto

dimus Points 2396

begin = '(?:^\s+)?(<)((?i:script))\b(?!([^>]*text/x-jquery-tmpl[^>]*|[^>]*/>))';

cessera de traiter les balises script contenant "text/x-jquery-tmpl" comme du javascript

2voto

Tanuj Singh Points 331

C'est une expression régulière. Vous pourriez l'étendre pour vérifier le type text/javascript comme ça :

begin = '(?:^\s+)?(<)((?i:script))\b(.*?type="text/javascript")(?![^>]*/>.*)';

Je ne l'ai testé qu'avec if mais cela semble fonctionner. Lorsque le type est text/javascript TextMate l'étend à Javascript pour tous les autres types, il utilise PHP. (Tout comme en dehors des balises script).

Pour en savoir plus sur la façon dont TextMate utilise les expressions régulières, cliquez ici : Regex (Manuel de TextMate)

1voto

kenbritton Points 46

Les groupes de correspondance sont significatifs. Vous devez le changer en ceci :

begin = '(?:^\s+)?(<)((?i:script))\b(?:.*?type="text/javascript")(?![^>]*/>)';

Afin de conserver la configuration actuelle du groupe de correspondance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X