Recherche…


Création d'une table "Tableau de dictionnaires" avec des ancres YAML comme identificateurs de ligne

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34

Problème

  • le développeur souhaite exprimer une structure de tableau en YAML, où chaque ligne est référencée par un identifiant de ligne compact

Solution

  • utiliser des ancres YAML en attribuant un identifiant d'ancrage à chaque ligne de la table
  • dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
  • dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque

Raisonnement

  • Les ancres et les alias YAML permettent une normalisation accrue des données
  • Les ancres et les alias YAML imposent DRY (Ne vous répétez pas)
  • dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données

Pièges

  • Les ancres YAML doivent être déclarées avant de pouvoir être référencées par des alias
  • Les ancres YAML doivent être uniques dans tout le document
  • si vous ne spécifiez pas d'ancres uniques, cela provoquera une erreur sur yaml.load()
  • tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias

Voir également

Stackoverflow YAML

Utilisation d'alias YAML pour faire des références croisées à des lignes d'une table YAML

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        person:   *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        person:   *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        person:   *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problème

  • le développeur souhaite recouper les lignes avec des ancres d'une table et les lier avec des lignes en tant qu'alias dans une autre table

Solution

  • utiliser des alias YAML, qui référencent les ancres prédéfinies d'une autre table
  • dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
  • dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque

Raisonnement

  • Les ancres et les alias YAML permettent une normalisation accrue des données
  • Les ancres et les alias YAML imposent DRY (Ne vous répétez pas)
  • dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données
  • dans cet exemple, la saisie de données et la taille des fichiers peuvent être réduites

Pièges

  • dans cet exemple spécifique, yaml.load() produira des dictionnaires imbriqués
    • c'est ce qu'on appelle le "problème des dictionnaires imbriqués"
    • sous la paire nom-personne-valeur, la valeur pour personne sera un sous-dictionnaire
    • cela peut être indésirable, car cela brise l'uniformité de la structure de la table
  • si vous ne parvenez pas à spécifier correctement les alias, les données seront manquantes
    • (les fautes de frappe créeront des références croisées brisées)
  • YAML ne prend pas en charge la transclusion de fichiers par référence, donc tous les alias et les ancres doivent exister dans le même fichier yaml
  • tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias

Voir également

Stackoverflow YAML

Utilisation des clés de fusion YAML pour référencer les lignes d'une autre table YAML

    ---
    person_table:
      - &person001
        fname:  homer
        lname:  simpson
        role:   dad
        age:    33

      - &person002
        fname:  marge
        lname:  simpson
        role:   mom
        age:    34

      - &person003
        fname:  peter
        lname:  griffin
        role:   dad
        age:    34
        
    motto_table:
      - &motto001
        <<: *person001
        motto: >
          D'oh!! YAML is too complicated!

      - &motto002
        <<: *person002
        motto: >
          Bart! Listen to your father!

      - &motto003
        <<: *person003
        motto: >
          Hey! YAML is freakin' sweet!

Problème

  • le développeur souhaite recouper les lignes avec des ancres d'une table et les lier avec des lignes en tant qu'alias dans une autre table
  • le développeur veut éviter de créer le "problème des dictionnaires imbriqués"

Solution

  • utiliser des alias YAML, avec des clés de fusion YAML
  • dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
  • dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque

Raisonnement

  • Les ancres et les alias YAML permettent une normalisation accrue des données
  • Les ancres et les alias YAML imposent DRY (Ne vous répétez pas)
  • dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données
  • dans cet exemple, la saisie de données et la taille des fichiers peuvent être réduites

Pièges

  • dans cet exemple spécifique, yaml.load() produira des dictionnaires imbriqués
    • sous la paire nom-personne-valeur, la valeur pour personne sera un sous-dictionnaire
    • cela peut être indésirable, car cela brise l'uniformité de la structure de la table
  • si vous ne parvenez pas à spécifier correctement les alias, les données seront manquantes
    • (les fautes de frappe créeront des références croisées brisées)
  • YAML ne prend pas en charge la transclusion de fichiers par référence, donc tous les alias et les ancres doivent exister dans le même fichier yaml
  • tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias

Voir également



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow