Y a-t-il un moyen d'utiliser des espaces réservés dans yaml comme ceci:
foo: &FOO
<<propname>>:
type: number
default: <<default>>
bar:
- *FOO
propname: "some_prop"
default: "some default"
Considérez l'exemple suivant YAML. Il s'agit d'une syntaxe YAML bien formée, mais elle utilise des espaces réservés (non standard) entre accolades avec expressions incorporées.
Les expressions incorporées ne produisent pas le résultat souhaité en YAML, car elles ne font pas partie de la spécification YAML native. Néanmoins, ils ne sont utilisés dans cet exemple que pour illustrer ce qui est disponible avec YAML standard et ce qui ne l’est pas.
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!
Les substitutions marquées en [~ # ~] vert [~ # ~] sont facilement disponibles en YAML standard, en utilisant des ancres, des alias et touches de fusion .
Les substitutions marquées en [~ # ~] jaune [~ # ~] sont techniquement disponibles en YAML standard, mais pas sans type personnalisé) déclaration , ou un autre mécanisme de liaison.
Les substitutions marquées en [~ # ~] en rouge [~ # ~] ne sont pas disponibles en YAML standard. Pourtant, il existe des solutions de contournement et des alternatives; tels que format de chaîne ou des moteurs de modèles de chaîne (tels que str.format
de python).
Une fonctionnalité fréquemment demandée pour YAML est la possibilité d'insérer des espaces réservés de variables arbitraires prenant en charge des références croisées et des expressions arbitraires se rapportant à l'autre contenu du même (ou transcluded fichier (s) YAML.
YAML prend en charge les ancres et les alias, mais cette fonctionnalité ne prend pas en charge le placement arbitraire d’espaces réservés et d’expressions dans le texte YAML. Ils ne fonctionnent qu'avec les nœuds YAML.
YAML prend également en charge déclaration de type personnalisé s; toutefois, ils sont moins courants et la sécurité peut être compromise si vous acceptez le contenu YAML provenant de sources potentiellement non fiables.
Il existe des bibliothèques d'extension YAML, mais elles ne font pas partie de la spécification YAML native.
sprintf
ou str.format
À partir du langage d'hébergement