本文介绍了在 yaml 中使用占位符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法像这样在 yaml 中使用占位符:

foo: &FOO<<道具名称>>:类型:数字默认:<>酒吧:- *FOO道具名称:some_prop"默认值:一些默认值"
解决方案

Context

  • YAML 1.2 版
  • 用户希望
    • 在 YAML 中包含变量占位符
    • yaml.load
    • 时用计算值替换占位符
    • 能够为 YAML 映射键和值使用占位符

问题

  • YAML 本身不支持变量占位符.
  • 锚点和别名几乎提供了所需的功能,但它们不能作为可以插入到整个 YAML 文本中任意区域的变量占位符.它们必须作为单独的 YAML 节点放置.
  • 有一些附加库支持任意变量占位符,但它们不是本机 YAML 规范的一部分.

示例

考虑以下示例 YAML.它是格式良好的 YAML 语法,但它使用(非标准)花括号占位符和嵌入式表达式.

嵌入的表达式不会在 YAML 中产生所需的结果,因为它们不是本机 YAML 规范的一部分.然而,在本示例中使用它们只是为了帮助说明标准 YAML 中哪些可用,哪些不可用.

part01_customer_info:cust_fname:荷马"cust_lname: "Himpson";cust_motto:我喜欢甜甜圈!"cust_email: [email protected]_government_info:govt_sales_taxrate:1.15part01_purchase_info:prch_unit_label:培根包裹的花式釉面甜甜圈";prch_unit_price: 3.00prch_unit_quant:7prch_product_cost:{{prch_unit_price * prch_unit_quant}}";prch_total_cost:{{prch_product_cost * govt_sales_taxrate}}";part02_shipping_info:cust_fname: "{{cust_fname}}"cust_lname: "{{cust_lname}}";ship_city:休斯顿ship_state: 六边形part03_email_info:cust_email: "{{cust_email}}";mail_subject:感谢您订购 DoughNutz!mail_notes: |我们希望 mail_greeting 具有所有预期值带有填充的占位符(而不是花括号).邮件问候: |问候 {{cust_fname}} {{cust_lname}}!我们喜欢您的座右铭{{cust_motto}}";我们同意你的看法!您的总购买价格为 {{prch_total_cost}}

说明

08-04 06:25