次のようなyamlでプレースホルダーを使用する方法はありますか?
foo: &FOO
<<propname>>:
type: number
default: <<default>>
bar:
- *FOO
propname: "some_prop"
default: "some default"
次のYAMLの例を検討してください。整形式のYAML構文ですが、式が埋め込まれた(非標準の)中括弧プレースホルダーを使用します。
埋め込み式は、ネイティブのYAML仕様の一部ではないため、YAMLで目的の結果を生成しません。それにもかかわらず、この例で使用されるのは、標準のYAMLで利用できるものと利用できないものを説明するためだけです。
part01_customer_info:
cust_fname: "Homer"
cust_lname: "Himpson"
cust_motto: "I love donuts!"
cust_email: [email protected]
part01_government_info:
govt_sales_taxrate: 1.15
part01_purchase_info:
prch_unit_label: "Bacon-Wrapped Fancy Glazed Donut"
prch_unit_price: 3.00
prch_unit_quant: 7
prch_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: Houston
ship_state: Hexas
part03_email_info:
cust_email: "{{cust_email}}"
mail_subject: Thanks for your DoughNutz order!
mail_notes: |
We want the mail_greeting to have all the expected values
with filled-in placeholders (and not curly-braces).
mail_greeting: |
Greetings {{cust_fname}} {{cust_lname}}!
We love your motto "{{cust_motto}}" and we agree with you!
Your total purchase price is {{prch_total_cost}}
Thank you for your order!
GREENでマークされた置換は、アンカー、エイリアス、および マージキー を使用して、標準のYAMLですぐに使用できます。
YELLOWでマークされた置換は、標準のYAMLで技術的に利用可能ですが、 カスタム型宣言 、またはその他のバインディングメカニズム。
REDでマークされた置換は、標準のYAMLでは使用できません。しかし、回避策と代替策があります。 文字列の書式設定 または文字列テンプレートエンジン(pythonのstr.format
など)など。
YAMLで頻繁にリクエストされる機能は、同じ(または transcluded )YAMLファイル内の他のコンテンツに関連する任意の相互参照と式をサポートする任意の変数プレースホルダーを挿入する機能です。
YAMLはアンカーとエイリアスをサポートしますが、この機能はYAMLテキストの任意の場所でのプレースホルダーと式の任意の配置をサポートしません。 YAMLノードでのみ機能します。
YAMLは カスタム型宣言 sもサポートしますが、これらはあまり一般的ではなく、信頼できない可能性のあるソースからYAMLコンテンツを受け入れるとセキュリティに影響します。
YAML拡張ライブラリがありますが、これらはネイティブのYAML仕様の一部ではありません。
sprintf
またはstr.format
スタイルの機能を使用します