java - 是否可以在 Asciidoc 的源代码中使用声明的常量?
问题描述
我有一个 Ascii 文档多次报告一个句子,例如:
您可以通过以下方式联系服务
https://server:8081/...
我遇到的问题是8081
可能是可变的,并且取决于代码中某处定义的常量:
public static final String SERVICE_PORT = "8081";
我想做类似的事情:
您可以通过以下方式联系服务
https://server:${MyClass.SERVICE_PORT}/...
像这样,每次代码中变量的值发生变化时,它都会在文档中动态变化。
我读过DRY URLs,我一直在寻找类似的东西,但没有成功的代码。
有谁知道这是否可能,如果可以,怎么做?
解决方案
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}/...
如何识别源值并命名反映这些值的属性取决于您。使用与源代码中相同的名称通常最容易,但如果多个源文件以不同方式使用常量,您可能需要确定要在属性定义中使用的前缀(可能基于源文件名) .
推荐阅读
- excel - 如何将单元格中的数字四舍五入为Excel中的特定数字
- apache-kafka - 为什么 Kafka KSQL 中的 DESCRIBE EXTENDED 返回错误 ShowColumns not supported?
- html - 电子商务商店的未知实时后台操作
- java - 为什么我的布尔数组不适用于 CCC 的 Problem Ragaman?
- sql - 如何在两次之间添加每小时计数
- r - rvest:当输入没有名称时如何提交表单?
- html-helper - 如何将模型传递给剃须刀页面自定义助手
- c# - 如何在编辑模式中获取 datagridview 单元格值以显示在文本框中(如 excel)
- angular - Firebase Auth 存储用户的名字和姓氏
- ruby-on-rails - 使用 Ruby on Rails 更新和访问会话