ожидаемое значение подстановки для пользовательского встроенного макроса будет иметь тип Inline; получил строку - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь обновить свой макрос для использования AsciidoctorJ 2.0.0. У меня есть макрос, расширяющий InlineMacroProcessor, который создает ссылку или текст в зависимости от конфигурации.

Чтобы создать ссылку, я могу сделать:

String linkUrl, linkText;
//TODO init the variables

// Define options for an 'anchor' element:
Map<String, Object> options = new HashMap<String, Object>();
options.put("type", ":link");
options.put("target", linkUrl);

// Create the 'anchor' node:
PhraseNode inline = createPhraseNode(parent, "anchor", linkText, attributes, options);
return inline;

Я хотел бы просто вставить текст в документ.

Вариант 1. возвращает только строку (как и в предыдущей версии AsciidoctorJ):

String linkText;
//TODO init the linkText variable.

return linkText;

Это работает, но я получаю эту запись в журнале:

INFO: expected substitution value for custom inline macro to be of type Inline; got String

Это означает, что я делаю что-то не так с новым API.


Вариант 2: Я попытался создать PhraseNode типа "текст" (я изобрел это)

String linkText;
//TODO init the linkText variable.

PhraseNode inline = createPhraseNode(parent, "text", linkText, attributes, options);
return inline;

Но тогда я получаю:

org.asciidoctor.jruby.internal.AsciidoctorCoreException: org.jruby.exceptions.NoMethodError: (NoMethodError) undefined method `convert_inline_text' for #<Asciidoctor::Converter::Html5Converter:0x10b4e7f8>
Did you mean?  convert_inline_button
               convert_inline_quoted
               convert_inline_menu
               convert_inline_image
               convert_inline_break
               convert_inline_kbd

Так, как правильно создать Inline, содержащий только строку?

1 Ответ

0 голосов
/ 29 мая 2019

Если вы хотите вернуть строку, вы можете использовать:

PhraseNode inline = createPhraseNode(parent, "quoted", linkText, attributes, options);
return inline;
...