Pular para o conteúdo principal

HTML

Hook para transformar código em HTML

schema-version: v4
kind: plugin
metadata:
name: code-transformation-plugin
display-name: code-transformation-plugin
description: Code transformation example.
version: 1.0.0
spec:
hooks:
- type: code-transformation
engine-version: 0.2.0-beta
trigger: after-render
language: html
trans-pattern-path: trans-patterns/pattern.html
source-path: src/code.html

Construções suportadas no HTML

tag

As tags têm suporte aos operadores de inserção, remoção e reticências. Isso significa que, em qualquer local em que seja válida a existência de uma tag, é possível utilizar qualquer um dos operadores suportados.

O exemplo a seguir insere uma tag div como primeiro elemento dentro da tag body. O padrão tem escopo de arquivo.

<<<< pattern-name: my_pattern; pattern-scope: file-scope; >>>>

<...>
<body>
+<<div id="header">
<h1>Welcome to My Website</h1>
</div>>+
<...>
</body>
<...>

O exemplo a seguir remove todas as tags div, desde que não possuam nenhum atributo, independentemente do conteúdo interno delas. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

-<<div>
<...>
</div>>-

tagName

Os nomes de tag têm suporte aos operadores de ID match, inserção e remoção. Isso significa que, no lugar do nome de uma tag, é possível utilizar qualquer um dos operadores suportados.

Atenção!

Note que os operadores de inserção e remoção devem sempre ocorrer em par quando estiverem no contexto de uma tag name, ou seja, sempre que houver uma remoção deve haver uma inserção de tag name. Do contrário, uma tag poderia ficar sem nome ou com mais de um nome.

Atenção!

Quando utilizar os operadores de inserção e remoção no contexto de uma tag name, lembre-se de também utilizá-los no fechamento da tag, do contrário a abertura e o fechamento ficarão com nomes diferentes.

O exemplo a seguir remove todas as tags cujos nomes se iniciam com app, desde que não possuam nenhum atributo, independentemente do conteúdo interno delas. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

-<*<<app.+>*>
<...>
<*<app.+>*>>-

O exemplo a seguir troca o nome de todas as tags de my-tag para my-new-tag, desde que não possuam nenhum atributo, independentemente do conteúdo interno delas. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

<-<my-tag>- +<my-new-tag>+>
<...>
</-<my-tag>- +<my-new-tag>+>

tagContent

O conteúdo das tags tem suporte aos operadores de inserção, remoção e reticências. Isso significa que é possível utilizar qualquer um dos operadores suportados aninhados no conteúdo de uma tag.

O exemplo a seguir insere uma tag br aninhada a todas as tags div, desde que não possuam nenhum atributo, independentemente do conteúdo interno delas. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

<div>
<...>
+<<br/>>+
</div>

attribute

Os atributos de tags têm suporte aos operadores de inserção, remoção e reticências. Isso significa que, em qualquer local em que seja válida a existência de um atributo de tag, é possível utilizar qualquer um dos operadores suportados.

O exemplo a seguir insere o atributo class="text-align: center;" em todas as tags div, independentemente do conteúdo interno da tag ou dos demais atributos que a tag possa ter. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

<div +<class="text-align: center;">+ <...>>
<...>
</div>

attributeValue

Os valores dos atributos têm suporte aos operadores de String match, inserção e remoção. Isso significa que, em qualquer local em que seja válida a existência de um valor de atributo, é possível utilizar qualquer um dos operadores suportados.

Atenção!

Note que os operadores de inserção e remoção devem sempre ocorrer em par quando estiverem no contexto de um attribute value, ou seja, sempre que houver uma remoção deve haver uma inserção de attribute value. Do contrário, um atributo poderia ficar sem valor ou com mais de um valor.

O exemplo a seguir remove o atributo id em todas as tags div, independentemente do valor original do atributo (operador de string match com regex .*), do conteúdo interno da tag ou dos demais atributos que a tag possa ter. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

<div <...> -<id=*<".*">*>- <...>>
<...>
</div>

O exemplo a seguir substitui o valor do atributo href do primeiro li por "#main", independentemente do valor do atributo (operador de string match com regex .*), do conteúdo interno da tag ou dos demais atributos que a tag possa ter. O padrão tem escopo de arquivo.

<<<< pattern-name: my_pattern; pattern-scope: file-scope; >>>>

<html>
<...>
<head>
<...>
<nav>
<...>
<ul>
<li><a href=-<*<".*">*>- +<"#main">+> <...> </a></li>
<li><a href="#about">About</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<...>
</nav>
<...>
</head>
<...>
</html>

attributeName

Os nomes dos atributos têm suporte aos operadores de ID match, inserção e remoção. Isso significa que, em qualquer local em que seja válida a existência do nome de um atributo, é possível utilizar qualquer um dos operadores suportados.

Atenção!

Note que os operadores de inserção e remoção devem sempre ocorrer em par quando estiverem no contexto de um attribute name, ou seja, sempre que houver uma remoção deve haver uma inserção de attribute name. Do contrário, um atributo poderia ficar sem nome ou com mais de um nome.

O exemplo a seguir substitui o nome do atributo id por class em todas as tags section, independentemente do valor do atributo (operador de string match com regex .*), do conteúdo interno da tag ou dos demais atributos que a tag possa ter. O padrão tem escopo de snippet.

<<<< pattern-name: my_pattern; pattern-scope: snippet-scope; >>>>

<section <...> -<id>- +<class>+ = *<".*">* <...>>
<...>
</section>