Reputation: 121
I use asciidoc for rendering text.
I have difficulties to understand macros. My goal is to have a simple macro processing (like in LaTeX). I would like to write two Macros:
FOO
should be replaced by "bar"
MYTEXT(xyz)
should be replaced by: "This is my text xyz!"
Example file abc.txt:
text text text
FOO text FOO
text text text
MYTEXT(jajaja)
This should result in
text text text
bar text bar
text text text
This is my text jajaja!
I would expect that the definition of FOO
and MYTEXT
has to go into the file abc.conf
; probabely into the secion [macro].
Additional question:
Are there problems with the pattern matching, if
FOO
should be replace with 'bar'
and FOOX
with 'barbar'
?
Upvotes: 11
Views: 3505
Reputation: 293
There is a separate project, that I am associated with
http://github.com/verhas/jamal
which is a macroprocessor and it is available as an Asciidoctor preprocessor. Note that this is not Asciidoc, which is the format, but the implementation of the converter, Asciidoctor.
I think that Jamal just does exactly what you are looking for. It has complex macro processing capabilities that superseed those of Asciidoc and there are also a lot of built-in macros, some replacing, some extending the Asciidoc formatting and macro capabilities.
Upvotes: 0
Reputation: 3613
For the task of substituting FOO into bar and FOOX into barbar I would use the substitution syntax:
= AsciiDoc title
:FOO: bar
:FOOX: barbar
Regular text here using substitutions: {FOO} is bar and {FOOX} is barbar.
As you can see, you declare the substitution as :VARIABLE:
and you use it as {VARIABLE}
.
As to actually creating new macros, macros are usually of the type macroname:content[Text input]
. They are documented here for the Python AsciiDoc project and eventually here for the ruby based AsciiDoctor project but I have never really used them, I prefer substitutions and conditional blocks.
Upvotes: 6