首页 > 解决方案 > 是否可以在 Asciidoc 的源代码中使用声明的常量?

问题描述

我有一个 Ascii 文档多次报告一个句子,例如:

您可以通过以下方式联系服务https://server:8081/...

我遇到的问题是8081可能是可变的,并且取决于代码中某处定义的常量:

public static final String SERVICE_PORT = "8081";

我想做类似的事情:

您可以通过以下方式联系服务https://server:${MyClass.SERVICE_PORT}/...

像这样,每次代码中变量的值发生变化时,它都会在文档中动态变化。

我读过DRY URLs,我一直在寻找类似的东西,但没有成功的代码。

有谁知道这是否可能,如果可以,怎么做?

标签: javaasciidoc

解决方案


Asciidoctor 不知道如何解析源代码,因此“开箱即用”这是不可能的。

您可以考虑的一种方法是:

在运行 Asciidoctor 之前,您可以编写自己的代码/脚本来搜索应反映在文档中的定义,并生成包含属性定义的 Asciidoc 文件。一旦你有了一个“属性”文件,你可以将它包含在任何其他需要使用这些属性的 Asciidoc 文件中。

例如,如果您生成的attributes.adoc文件包含:

:SERVICE_PORT: 8081

然后您更改documentation.adoc文件以包含属性(在任何其他内容之前):

= Documentation

include::attributes.adoc[]

然后你documentation.adoc可以使用:

You can reach the service at https://server:{SERVICE_PORT}/...

如何识别源值并命名反映这些值的属性取决于您。使用与源代码中相同的名称通常最容易,但如果多个源文件以不同方式使用常量,您可能需要确定要在属性定义中使用的前缀(可能基于源文件名) .


推荐阅读