自定义内联宏的预期替换值为Inline类型;得到了字符串

时间:2019-05-27 12:12:16

标签: asciidoctor

我正在尝试更新宏以使用AsciidoctorJ void ASTERISK (int number); int main () { std::cout << "Enter a number: " ; int number; std::cin >> number; ASTERISK(number); return 0; } void ASTERISK (int number){ for (int i=0; i!=number; i++){ std::cout << "* "; } } 。我有一个扩展2.0.0的宏,该宏根据配置创建链接或文本。

要创建链接,我可以这样做:

InlineMacroProcessor

我只想在文档中插入一些文本。

选项1 。仅返回一个字符串(与先前版本的AsciidoctorJ一样):

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;

它可以工作,但是我得到以下日志条目:

String linkText;
//TODO init the linkText variable.

return linkText;

这暗示我在新API上做错了事。


选项2:我试图创建类型为“文本”的INFO: expected substitution value for custom inline macro to be of type Inline; got String (我发明了这种方法)

PhraseNode

但是我得到:

String linkText;
//TODO init the linkText variable.

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

那么创建仅包含字符串的内联的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果要返回字符串,可以使用:

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