wpwmm4 (1) - página da web com make e m4 - gerar páginas da web estática
Simples use o comando make. O Makefile é compatível com a marca FreeBSD e NetBSD. No Linux deve instalar o pacote bmake .
Com o WPWMM4, pode criar páginas da Web estática a partir de arquivos M4 . A geração é feita por marca . Você pode usar scripts ou comandos externos.
Você deve criar um arquivo config.mk em um diretório e definir as seguintes variáveis dentro deste arquivo. Você pode usar .include em sua configuração.mk, é claro.
Common_dir : onde o 00_defines.m4 está. Geralmente é o mesmo diretório que Makefile .
Incluir_dir : o diretório onde o usuário inclui M4 são. É relativo ao diretório de origem principal.
SRC_DIR : Essa variável aponta para o diretório de origem onde os arquivos de origem (geralmente *.m4 ) estão. Pode conter subdiretos.
Assets_dir : neste diretório estão os arquivos estáticos ( * .css , * .js , etc.).
Assets_Dest_Dir : o diretório de destino de arquivos estáticos. Se você deseja dentro de $ {dest_dir} deve incluí -lo nessa variável.
Assets_CP : o comando que copiará o $ {Assets_dir} . O padrão é @cp -r .
Dest_dir : o lugar compilado (criado) html. A árvore do subdiretório de $ {src_dir} é criada neste diretório por make .
Flag_dir : o diretório onde estão os sinalizadores. As bandeiras são arquivos simples que armazenam informações sobre a construção. Existe apenas um sinalizador: $ {flag_mkdir} que assina a hora em que a estrutura do diretório é criada em $ {dest_dir} e armazena a lista de diretórios criados. Você pode adicionar mais depender via $ {mkdir_req} - para que possa criar novamente a estrutura do diretório após a alterada deste arquivo.
Layout_dir : Aqui estão os layouts.
Virt_dir : Este diretório contém os modelos de páginas virtuais.
Alvos : a lista de arquivos estáticos por espaço (páginas virtuais não estão incluídas) o que deve criar. Não inclua o $ {dest_dir} porque está incluído pelo sistema de construção. Você pode usar diretórios, é claro. Seu requisito automatizado é o mesmo arquivo em $ {src_dir} substituindo a extensão HTML pela extensão M4 .
Targets_Manual : a lista de arquivos estáticos com sede espaço o que deve criar. Não inclua o $ {dest_dir} porque está incluído pelo sistema de construção. Esses metas não têm requisitos automaticamente gerados como $ {metas} acima.
GREQ : Requisito global. É necessário para todos os alvos. O padrão está vazio.
Foo.html_req : requisitos adicionais do Foo.html , incluídos na variável $ {Targets} (veja acima). O foo.m4 é adicionado automaticamente. Essas variáveis são opcionais.
M4 : O comando M4 . Na maioria dos casos, pode ser definido simplesmente como M4 (no caminho ). Esta variável é opcional, o valor padrão é m4
M4_params : parâmetros do comando m4 . O valor padrão é -p -i incluir -d_src_dir = $ {src_dir} . Observe que a opção -p é necessária porque usamos macros incorporados com prefixo M4_ .
As seguintes variáveis são criadas dinamicamente durante a construção e você pode usá -las em suas fontes e modelos M4 .
_Directory : o diretório de destino dentro de $ {dest_dir} (sem $ {dest_dir} prefixo). A raiz de $ {dest_dir} é "." (ponto).
_File : o nome do arquivo de destino que está em geração (sem qualquer extensão).
O sistema envia alguns ajudantes que você pode usar em seus arquivos. Eles são definidos em 00_defines.m4 . Aqui está a lista de ajudantes:
_Body (conteúdo, opções) : produz <corpo $ options> $ content </body> .
_Charset (charset) : produz <meta charset = "$ charset"> .
_Class (classe1, classe2, ...) : produz class = "$ classe1 $ classe2 ..." .
_Css (cssfile) : produz <link rel = "stylesheet" href = $ cssfile> .
_Div (classe, conteúdo, opções) : produz <div class = $ classe $ opções> $ content </div> .
_Head (Opções, Conteúdo) : Produz <Chefe $ Options> $ Content </ad Head> .
_Href (url, texto, opções, título) : produz <a href = $ url $ title options = $ title> text </a> .
_Meta (parâmetros) : produz <meta $ parâmetros> .
_Ol (parâmetros) : Produz Lista ordenada <ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> . Você pode especificar os itens na lista de parâmetros, separados por vírgula. Tenha cuidado para citar!
_Stag (tagname, parâmetros) : produz <$ tagname $ parameters> .
_Tag (nome da tagname, conteúdo, opções) : produz <$ tagname $ options> $ content </$ tagname> .
_Title (título, opções) : produz <título $ options> $ title </title> .
_Ul (parâmetros) : o mesmo que _ol .
As páginas virtuais não são arquivos de origem (M4). É útil quando você deseja criar páginas semelhantes com conteúdo semelhante (por exemplo, listagem de arquivos PDF, listando imagens, ...).
Você deve criar grupos de virtuais (você pode adicionar apenas um virtual a um grupo). Você pode fazer isso com as seguintes variáveis:
Virtuais : contém o nome das categorias. Por exemplo , virtuais = cat1 cat2 . As categorias são separadas por um personagem espacial.
VirtualTemplate_* : você pode definir (seguindo o exemplo acima) Vartiáveis VirtualTemplate_cat1 e VirtualTemplate_cat2 . Seus valores dizem qual modelo deve usar para gerar as páginas virtuais. Os modelos são armazenados no diretório virt_dir . Nos seus arquivos de modelo, você pode usar variáveis criadas dinamicamente, consulte [Variáveis dentro de fontes] [] Seção abaixo.
VirtualDir_* : essa variável aponta para o diretório de destino onde as páginas geradas devem aparecer. Você precisa definir todas as categorias, para definir o VirtualDir_cat1 e o Virtualdir_cat2 também.
Virtualout_* : os nomes de arquivos de saída. Por exemplo , virtual_cat1 = foo1.html foo2.html . Nesse caso, você terá $ {virtualdir_cat1} /foo1.html e $ {virtualdir_cat1} /foo2.html .
VirtualReq_* : requisitos adicionais para a categoria virtual. O $ {VirtualTemplate _*}. M4 é adicionado automaticamente.
VirtualReqRule_* : Uma regra de transformação simples para definir um requisito por arquivo. A regra de transformação é aplicada nos elementos de $ {virtualout_*} variáveis. Por exemplo, virtualreq_foo = c, .html, .dat, regra transformará todas as extensões .html em extensão .dat : o $ {Destdir} /foodir/bar.html dependerá do arquivo alimentar/bar.dat . Observe que o valor de ** $ {VirtualDir_*} não está incluído automaticamente; portanto, se você quiser, deve fazê -lo! Tenha cuidado com dependências recursivas! Veja os possíveis modificadores no manual de Make (1) !
Você pode definir ganchos que são executados no evento especificado. Você pode usar a macro $ {. Target} na definição, porque a marca expandirá essa variável quando necessário (e não na definição). Se você não quiser, visualizar o comando deve prefixar com @ signo.
Hook_Pre_HTML : Ele é executado antes de gerar um arquivo HTML a partir de um arquivo M4 . O valor padrão é $ {msg1} construindo $ {. Target} .
Hook_Post_HTML : ele é executado após gerar um arquivo HTML a partir de um arquivo M4 . O valor padrão está vazio. Este gancho é útil, por exemplo, se você deseja verificar a validade do arquivo html (por exemplo, com arrumação, consulte http://www.html-tidy.org/).
Hook_pre_vhtml : ele é executado antes de gerar um arquivo HTML a partir do modelo virtual (consulte [Virtuais] [] acima). O valor padrão é $ {msg1} criando virtual $ {. Target} .
Hook_Post_vhtml : ele é executado após a geração de um arquivo HTML a partir do modelo virtual. O valor padrão está vazio.
Você pode definir alguns alvos especiais em seu ** config.mk '.
Pré-tudo : esse alvo será executado antes de qualquer outro alvo (exceto limpo , é claro). Por exemplo, você pode executar um script que cria alguns arquivos, mesmo um arquivo que é usado no WPWMM4. Com esse destino, pode emular o recurso Tags (usando o recurso [virtuais] []). Outra idéia é gerar automaticamente a variável $ {Targets} (com o comando find ).
Limpo : quando você executa o Target Clean (que exclui tudo em $ {Dest_dir} diretório), ele também será executado.
Existem alguns alvos especiais para ajudar a depurar sua configuração.
Show-Config : mostre as principais variáveis.
Goletes : mostre os ganchos.
Targets de shows : mostre os alvos (incluindo alvos virtuais).
Show-Req : mostre os alvos com seus requisitos. O alvo inicia uma linha sem espaço em branco, os requisitos são prefixados por dois espaços. Entre o requisito mais recente e o próximo alvo está uma linha vazia inserida.
Show-virtuais : esse alvo mostrará os virtuais definidos e suas configurações.
Existem algumas variáveis que você pode usar e definir nos seus arquivos M4 .
Existem alguns comandos que podem ajudar. Eles são definidos em 00_defines.m4 . Aqui está a lista:
_Script (comando) : executa $ comando e cole sua saída ( stdout e stderr também). Ele usa a macro EsysCMD do M4 .
_Layout (layout, varname1, var1, varname2, var2, ...) : carregue o layout $ layout. Ele usa o M4 incluem macro. Você pode definir o layout da página da web no início do arquivo de origem. Este comando atribuirá as variáveis Varname1 , Varname2 , ... com valores var1 , var2 .
_Layout_pre (pre) : o $ pre é impresso antes do conteúdo incluído.
_Layout_post (post) : o $ post é impresso após o conteúdo incluído.
_Incl (arquivo) : inclui o arquivo $ . O desviar é -1, portanto essa macro não produz nenhuma saída. É ideal carregar um arquivo com definições de macro.
_2_body (texto) : o texto $ será na etiqueta corporal. Esta macro coleta todas as entradas e não imprime nada. Com _pr_body pode imprimir (e limpar) o conteúdo.
_2_head (texto) : o mesmo que _2_body , mas coleta na etiqueta da cabeça .
_Pr_body : imprima e redefina o conteúdo coletado por _2_body . É uma macro simples undivert .
_Pr_head : semelhante ao _pr_body .
_Pr_all : ele imprime <! Doctype html> <html lang = "lang"> , chama _pr_head e _pr_body e depois de fechar a tag html .
config.mk
Um exemplo gerado é minha página inicial pessoal (em húngaro): http://uzsolt.hu/ e seu arquivo de origem estão em https://svn.uzsolt.hu/uzsolt.hu/wpwmm4-uzsolt.hu/ e um espelho github : https://github.com/uzsolt/wpwmm4-uzsolt.hu.
É um exemplo simples complicado, mas demonstra o poder do WPWMM4 :)
M4 (1), faça (1)
Zsolt udvari ([email protected], www.uzsolt.hu)