Como é feito o site da Dicas-L - a ferramenta txt2tags
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 09 de Janeiro de 2004
Publicado originalmente na Revista do Linux:
http://www.revistadolinux.com.br/ed/045/assinantes/capa.php3
Todo usuário de um sistema operacional tem suas preferências. Dentre os
milhares de aplicativos livres disponíveis em qualquer sistema GNU/Linux,
a nossa preferência recai em alguns poucos. Editores de texto, aplicativos
multimídia, jogos e assim por diante.
Como webmaster de alguns sites web, surpreendentemente, a minha aplicação
essencial não é uma ferramenta sofisticada de edição de páginas, mas
sim uma ferramenta simples, flexível e fácil de usar, chamada txt2tags.
Como o nome diz, a ferramenta faz a conversão de marcações inseridas
no texto em diretivas utilizadas por diversas linguagens de marcação
(markup languages), como HTML, SGML e outras.
Mas como trabalha o txt2tags? Por exemplo, para inserirmos um cabeçalho
em um documento HTML, utilizamos as marcações <Hn>, onde n varia de 1
a 6. Com a ferramenta txt2tags, basta delimitarmos o texto que será o
cabeçalho pelo caractere =. Um caractere = indica <H1>, dois indicam <H2>
e assim por diante. Vejam o exemplo a seguir:
=Título de Primeiro Nível=
torna-se
<H1>Título de Primeiro Nível</H1>
Vejam a economia: reduzimos a nossa digitação de 9 caracteres (<H1>
e </H1>) para apenas dois, com o = no começo e fim da frase. Sem contar
que a possibilidade de errar é infinitamente menor.
O txt2tags oferece marcações para praticamente qualquer elemento da
linguagem HTML, como por exemplo, listas numeradas ou não, tabelas,
texto pré-formatado, com fonte de tamanho fixo e citações.
A marcação HTML gerada é simples, e exatamente neste ponto reside sua
grande vantagem. O webmaster tem toda a liberdade de definir os elementos
visuais como bem entender. Nos meus sites, toda a parte visual é formatada
através do uso de folhas de estilo (Cascading Style Sheets).
Elementos adicionais, como cabeçalhos e rodapés, são adicionados ao
texto básico posteriormente, através de outro shell script que faz a
junção de todos os elementos.
Desta forma, a essência do site, seu conteúdo é criado com a ferramenta
txt2tags. Os demais elementos são criados separadamente. A página final
é montada através do recurso SSI (Server Side Includes). Vejam um exemplo:
<!-#include virtual="/inc/head-root.inc" -->
<!-#include virtual="/inc/secoes.inc" -->
<!-#include virtual="/artigos/inc/navbar.inc" -->
<table cellpadding="3">
<tr>
<td valign="TOP" WIDTH="30%" bgcolor="#FFFFFF">
<!-#include virtual="/dicas-l/dicadodia.inc" -->
</td>
</tr>
</table>
<!-#include virtual="/artigos/inc/navbar.inc" -->
<!-#include virtual="/inc/rodape.inc" -->
</body>
</html>
Todas as diretrizes
<!-#include virtual=
sinalizam ao servidor Web para inserir o arquivo especificado. Desta
forma, o site inteiro pode ter o seu visual completamente modificado em
questão de minutos.
O site Dicas-L veicula uma mensagem diariamente. Tudo que preciso
escrever, na sintaxe do txt2tags, é algo como na Lista 1.
Cada arquivo recebe um nome como "20030815", ou seja, este arquivo deverá
ser publicado no site no dia 15 de agosto de 2003. Na data correta,
o arquivo codificado com as marcações do txt2tags será formatado como
html e publicado.
Quando escrevo a mensagem não preciso me preocupar com marcação HTML;
tenho que digitar menos caracteres e posso me concentrar no essencial,
no conteúdo. O resto, eu deixo para o computador, que irá usar o txt2tags
e algumas shell scripts para alcançar o resultado final.
O programa txt2tags vem com uma excelente documentação e faz muito mais
do que é possível mostrar neste artigo. A opção de help do programa nos
dá uma boa idéia de suas funcionalidades:
$ txt2tags -h
txt2tags version 1.5 <http://txt2tags.sf.net>
Usage: txt2tags -t <type> [OPTIONS] file.t2t
-t, -type set target document type. actually supported:
txt, sgml, html, pm6, mgp, moin, man, tex
-o, -outfile=FILE set FILE as the output filename ('-' for STDOUT)
-stdout same as '-o -' or '~Woutfile -' (deprecated option)
-H, -noheaders suppress header, title and footer information
-n, -enumtitle enumerate all title lines as 1, 1.1, 1.1.1, etc
-maskemail hide email from spam robots. x@y.z turns <x (a) y z>
-toc add TOC (Table of Contents) to target document
-toconly print document TOC and exit
-toclevel=N set maximum TOC level (deepness) to N
-gui invoke Graphical Tk Interface
-style=FILE use FILE as the document style (like Html CSS)
-h, -help print this help information and exit
-V, -version print program version and exit
Extra options for HTML target (needs sgml-tools):
-split split documents. values: 0, 1, 2 (default 0)
-lang document language (default english)
By default, converted output is saved to 'file.<type>'.
Use -outfile to force an output filename.
If input file is '-', reads from STDIN.
If outfile is '-', dumps output to STDOUT.
Mas não é só isto. A partir do mesmo arquivo o txt2tags gera também
saída no formato mgp (ver a tela de ajuda acima), do aplicativo Magic
Point. Este programa é utilizado para apresentações. É extremamente leve
E oferece muitos recursos, porém a sintaxe é um pouco mais complexa. O
txt2tags, com a mesma marcação usada para criar arquivos HTML, gera
também arquivos no formato mgp. Exemplos de minhas apresentações
criadas por meio do txt2tags e do software mgp podem ser encontradas
em http://www.dicas-l.com.br/cursos.
Eu uso o txt2tags também para criar documentos no formato TeX, um sistema
de editoração eletrônica de grande popularidade no meio acadêmico.
Enfim, a mágica do programa txt2tags é que, a partir de apenas um arquivo
de origem, que usa uma marcação extremamente simples e fácil de usar e
memorizar, se consegue gerar arquivos em diversos formatos.
Como extras, são incluídos arquivos de configuração para o editor vim, que
permitem destacar a marcação em conformidade com a sintaxe do programa.
O txt2tags é produto genuinamente nacional, escrito pelo Aurélio Marinho
Jargas. Além do txt2tags, o Aurélio é também autor do livro "Expressões
Regulares: Guia de Consulta Rápida", publicado pela editora Novatec,
do excelente SED HOWTO, totalmente em português, e de diversas outras
ferramentas e artigos. Não deixem de visitar aurelio.net, o site onde
tudo isto pode ser consultado. O txt2tags pode ser baixado diretamente
de txt2tags.sourceforge.net.
Para saber mais sobre o recurso de inclusão de arquivos em páginas
Web, com "Server Side Includes", um bom ponto de partida é o endereço
http://www.apache.org/docs/howto/ssi.html.
Lista 1
=Como usar o sed para substituição de texto=
Caso queiramos trocar todas as ocorrências do nome "www.acme.com" por
"www.acme.com.br", em todos os arquivos de um diretório, basta criar
algo parecido com a seqüência de comandos abaixo:
#!/bin/bash
for file in *
do
sed 's/www.acme.com.br/www.acme.com.br.br/'g $file \
> $file.$$ && mv $file.$$ $file
done
O txt2tags também pode exportar o mesmo arquivo para o formato do
magic point.