YAML Liste

YAML ist eine ziemlich verbreitete und sehr lesbare Schlüssel/ Wert Notation. In YAML Dateien können auch Listen abgebildet werden.

YAML Listen

Ein einfaches Beispiel einer YAML Liste ist:

# languages.yml
languages:
  - Ruby
  - JavaScript
  - Elixir

Der YAML-Parser generiert aus den Listen entsprechende Arrays:

YAML.load_file('languages.yml')['languages']
# => ["Ruby", "JavaScript", "Elixir"]

Wenn die Listenelemente kurz sind, bietet sich auch die verkürzte Notation an:

# languages.yml
languages: [Ruby, JavaScript, Elixir]
# => ["Ruby", "JavaScript", "Elixir"]

Listen von Schlüssel-Wertpaaren

Es können auch Listen von Schlüssel-Wertpaaren abgebildet werden:

languages:
  -
    name: Ruby
    version: 2.3.0
  -
    name: Python
    version: 2.7.3

Der Parser macht daraus ein Array von Hashes:

[{"name"=>"Ruby", "version"=>"2.3.0"}, {"name"=>"Python", "version"=>"2.7.3"}]

Verschachtelte Listen

Verschachtelte Listen sind ebenfalls möglich. Zum Beispiel als Quelle für eine Tabelle:

languages:
  - [Typisierung, Name, Version]
  - [Dynamisch  , Ruby  , 2.3.0    ]
  - [Statisch        , Java    , 1.8.0    ]

Das Resultat ist ein Array von Arrays:

[["Typisierung", "Name", "Version"], ["Dynamisch", "Ruby", "2.3.0"], ["Statisch", "Java", "1.8.0"]]

Use case in Ruby on Rails

Natürlich gibt es für YAML Quellen verschiedenste Einsatzmöglichkeiten. Als Beispiel soll die I18n (Internationalization) von Ruby on Rails Projekten dienen. Auch hier kann praktischerweise für Views eine Liste vorformatiert sein:

# config/locales/features/de.yml
en:
  features:
    - Dynamic typing
    - Duck typing
    - Closures

In der View läßt sich dann komfortabel über die übersetzten Strings iterieren:

%ul.features
  - I18n.t('features').each |feature|
    %li= feature

Das entsprechende HTML:

<ul class="features">
  <li>Dynamic typing</li>
  <li>Duck typing</li>
  <li>Closures</li>
</ul>