асиидок макрос - PullRequest
       15

асиидок макрос

8 голосов
/ 28 января 2012

Я использую asciidoc для рендеринга текста.

Мне сложно понять макросы. Моя цель - сделать простую обработку макросов (как в LaTeX). Я хотел бы написать два макроса:

  1. FOO следует заменить на "bar"
  2. MYTEXT(xyz) следует заменить на: "This is my text xyz!"
    (возможно с другим способом передачи параметра 'xyz')

Файл примера abc.txt:

text text text
FOO text FOO
text text text
MYTEXT(jajaja)

Это должно привести к

text text text
bar text bar
text text text
This is my text jajaja!

Я бы ожидал, что определения FOO и MYTEXT должны войти в файл abc.conf; вероятно в секцию [макро].

Дополнительный вопрос:

Есть ли проблемы с сопоставлением с образцом, если FOO следует заменить на 'bar' и FOOX на 'barbar'?

1 Ответ

4 голосов
/ 01 ноября 2013

Для задачи подстановки FOO в bar и FOOX в barbar я бы использовал синтаксис замещения:

= AsciiDoc title
:FOO: bar
:FOOX: barbar

Regular text here using substitutions: {FOO} is bar and {FOOX} is barbar.

Как видите, вы объявляете подстановку как :VARIABLE: и используете ее как {VARIABLE}.

Что касается фактического создания новых макросов, макросы обычно имеют тип macroname:content[Text input].Они задокументированы здесь для проекта Python AsciiDoc и в конечном итоге здесь для проекта AsciiDoctor на основе ruby, но я никогда не использовал их, я предпочитаю подстановки и условные блоки.

...