Macros na Wiki
Table of Contents
Outro tipo de macro são os WikiProcessors. Eles tipicamente são alternativas a formatações de alto nível e representações de grandes blocos de informação (como um código-fonte em destaque).
Veja também: WikiProcessors.
Usando Macros
As chamadas de macros são atreladas a []. Como nas funções do Python, macros também podem ter argumentos,usando-se uma lista separada por vírgulas dentro de parênteses.
Exemplos
[[Timestamp]]
Mostrará:
Mon Dec 1 17:55:36 2008
[[HelloWorld(Testing)]]
Mostrará:
Hello World, args = Testing
Macros Disponiníveis
Macros ainda são novidades e a lista de macros disponíveis (e distribuidos) não é muito extensa. Em futuras versões do Trac, nós esperamos construir uma biblioteca bem útil de macros e vamos agradecidamente incluir contribuições de macros (veja abaixo).
- !HelloWorld -- Um exemplo de macro, muito útil para se aprender a escrever macros.
- Timestamp -- Insere a data e a hora atual.
Macros através do mundo
A página do Projeto Trac tem um seção dedicada para macros contribuídos pelos usuários MacroBazaar. Se você está procurando por novos macros ou escreveu alguns novos , não hesite em adicioná-lo a página wiki do http://projects.edgewall.com/trac/wiki/MacroBazaar MacroBazaar?].
Desenvolvendo Novos Macros
Macros, como o Trac, são escritos usando-se Linguagem de Programação Python. Eles são compostos de simples módulos, identificados pelo nome do arquivo e que devem conter um único ponto de entrada nas funções.o Trac irá mostrar o dado inserido dentro do HTML quando o mesmo for chamado.
É muito fácil aprender a partir de um exemplo:
# MeuMacro.py -- O macro mais simple do mundo
def execute(hdf, args, env):
return "Oi mundo chamado com os argumentos: %s" % args
Tópicos Avançados: Macros embutidos em Templates
Para usuários avançados, macros também pode renderizar a saída em HDF, para serem renderizados para HTML usando-se templates clearsilver - como na maioria das saídas do Trac. Em resumo, isto permite mais genéricos e bem desenvolvidos macros avançados.
Macros ganham acesso direto a principal árvore do HDF e podem manipulá-las livremente.
Exemplo:
def execute(hdf, args, env):
# o hdf atual só é setado quando o macro é chamado
# de uma página wiki
if hdf:
hdf.setValue('wiki.macro.greeting', 'Olá Mundo')
# os argumentos serão nulos se o macro for chamado sem parênteses.
args = args or 'Sem argumentos'
return 'Olá mundo, args = ' + args
Você também pode usar o objeto ambiente (env) para acessar um dado de configuração.
Exemplo.
def execute(hdf, txt, env):
return env.get_config('trac', 'repository_dir')
Veja também: WikiProcessors, WikiFormatting, TracGuide