Home Page do Portal
Brasil, um país de todos

Macros na Wiki

Macros no Trac são plugins que extendem a funcionalidade do Trac com 'funções' escritas em Python.Um macro insere dinamicamente um dado HTML em qualquer contexto suportado pelo WikiFormatting.

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?].

http://projects.edgewall.com/trac/wiki/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