preprocessor - YAML 预处理器/宏处理器

标签 preprocessor yaml

有没有一种简单的方法可以将预处理器/宏处理器与 YAML 文件一起使用? (即我正在考虑 C 预处理器的一些东西)?

我们有很多描述各种数据结构的纯文本文件。它们目前采用我们自己的内部格式,并使用内部解析器读取。我想切换到 YAML 文件以利用各种预先存在的库进行读写。

然而,我们的文件是分层的,因为我们将主文件“包含”到子文件中,并使用变量替换生成新的数据结构。

作为一个玩具示例,我想要这样的东西:

country_master.yaml

name: $COUNTRY$
file: C:\data\$COUNTRY$

UK_country.yaml
#define $COUNTRY$ UK
#include <country_master.yaml>

USA_country.yaml
#define $COUNTRY$ USA
#include <country_master.yaml>

然后在预处理之后我们会得到类似的东西:
name: USA
file: C:\data\USA

C 预处理器不适用于 YAML 注释中使用的 # 字符。此外,理想情况下,我们希望拥有由预处理器扩展的循环,因此在上面的示例中,我们将创建 UK 和 USA 以及一个循环(我不相信您可以使用 cpp 进行循环)。

有任何想法吗?

最佳答案

# Yamp - YAML Macro-Processor
# https://github.com/birchb1024/yamp

# in master.yaml
defmacro:
  name: country
  args: [$COUNTRY$]
  value:
    name: $COUNTRY$
    file: C:\data\{{$COUNTRY$}}
---
# in some file
- include: [master.yaml]

# Call with wherever needed:
{ country: USA }

关于preprocessor - YAML 预处理器/宏处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328549/

相关文章:

c++ - 定义一个宏以将前缀 0x 添加到十六进制字符串文字

css - 预处理器和转译器有什么区别?

c# - MySQL预处理器优化

ruby - 为什么 psych yaml 解释器在 80 个字符左右添加换行符?

css - 如何更改 Jekyll 网站的默认字体

c++ - 如何将枚举类型变量转换为字符串?

C预处理器: call function with same argument as parent

php - jms翻译包: The format "yml~" does not exist.

yaml - curl命令在位桶CI/CD管道YAML中导致缩进错误

python - 在 python 中迭代 YAML 列表