Back to TILs

Preprocessador M4

Date: 2019-12-23Last modified: 2022-10-07

m4 é uma linguagem de macro desenvolvida pelo Dennis M. Ritchie

Definindo uma macro

O delimitador padrão é o backtick (`) junto com o single quote (').

define(`yoo',`Hello World!')
I say this: yoo yoo yoo

Executando m4 nome_do_arquivo.m4 temos:

I say this: Hello World! Hello World! Hello World!

Definição com várias linhas

define(`header',
`
<html>
  <head>
    <meta charset="utf-8"/>
    <title>Meu título</title>
  </head>
')

Passando parâmetros

define(`my_value',`$1_file')
my_value(`test')

Use $1, $2, … para passar parâmetros:

test_file

Condicionais

ifelse(`first_text',`second_text',`true_action',`false_action')

No exemplo abaixo se my_filename for index.html então será gerado apenas a palavra Home, do contrário será gerado um link apontando para index.html.

ifelse(my_filename,`index.html',`Home',`<a href="/index.html" title="To index page">Home</a>')

Delete tudo até a próxima nova linha

dnl uma opção para colocar comentários
dnl ou para garantir que não tem espaços extras

Incluir um arquivo

include(filename)

Operações matemáticas

define(decr,`eval($1-1)')

Referências