No meu workflow de criação de artigos vejo-me confrontado com o facto de precisar de converter tags em shortcodes Hugo, e de retirar os escapes a todos os caracteres que o Pandoc acha que tem de proteger.
Fazer isso operação a operação é o tipo de trabalho que me faz correr para algum tipo de automatização - e por isso é que eu digo que sou o maior preguiçoso do mundo.
Tentei arranjar algum tipo de plugin para Notepad++ ou VSCode que me ajudassem, mas no final, todos tinham algum problema; nomeadamente, como os meus alvos e as minhas substituições têm muitos caracteres especiais, queria evitar ferramentas que usassem expressões regulares.
sed
seriam perfeitas para o que eu quero. Menos a parte das expressões regulares…
Acabei por perceber que não conseguia encontrar nada que não usasse expressões regulares. trombone.wav
Solução com Notepad++
Eventualmente, depois de partir muita pedra, percebi que podia fazer isso com a busca normal do Notepad++, porque este aceita expressões regulares PCRE. E em PCRE, é possível construir uma única expressão feita de muitas cadeias de captura e substituição, com este formato:
Busca | Substituição |
---|---|
(ta)|(te)|(ti) |
(?1pa)(?2pe)(?3pi) |
O problema da profusão de caracteres de escape acabou por ser resolvido com string literals, que estava habituado em .NET como @"foo"
, mas que em regex normal não funcionam; no entanto, o PCRE tem string literals através da construção \Qfoo\E
Para os outros, capturar \_
implica escapar o \
(\\
) e o _
(\_
): o resultado é \\\_
Depois, ainda tive de resolver o problema de ter de escapar caracters na substituição; mas felizmente em PCRE só é necessário escapar $
, \
, (
, )
, ?
, e :
Por exemplo:
<
e>
saem da conversão Pandoc como<
e>
:- retirar os escapes a
\
,_
,`,*
,[
,]
,(
.)
,|
Busca:
(>)|(<)|(\\\\)|(\\\_)|(\\\`)|(\\\*)|(\\\[)|(\\\])|(\\\()|(\\\))|(\\\|)
Substituição
(?1>)(?2<)(?3\\)(?4_)(?5`)(?6*)(?7[)(?8])(?9\()(?10\))(?11|)
É preciso muita, MUITA atenção porque nem tudo se escapa nas substituições…
Com esta funcionalidade, posso usar abreviaturas para os shortcodes e acelerei imenso a preparação destes artigos.
Se o que demora mais é aprender e documentar, essa também é a parte divertida; converter a minha documentação num artigo para publicar é que devia ser o mais automático e imediato possível, para poder continuar a aprender e documentar…