yaml使用


yamlの概要
最近コードを見ると、大きなプロジェクトではプロファイルを単独で使用したり、変数の宣言や構成をしたりしていると思いますが、yamlファイルとして保存されていることが多いと思います.yamlは非常に柔軟なフォーマットで、ほとんどjsonのスーパーセットです.コメント、改行区切り、複数行文字列、裸文字列、およびより柔軟なタイプのシステムをサポートするほか、YAMLはコードの重複を回避するために参照ファイルをサポートします.
yaml構文規則
基本ルール:
  • 大文字小文字が敏感
  • 階層関係を引き締めて表す.たとえばkey:(スペース)valueは、キー値のペアを表し、スペースは省略できません.
  • インデント時にTabキーは使用不可、スペースのみ使用可能
  • 縮まったスペース樹木は重要ではなく、同じ階層の要素が左側に揃えばよい
  • #コメントを表し、この文字から行末まで解析器に無視される
  • yamlのデータ構造
  • 対象:キー値ペアの集合、マッピング(mapping)、ハッシュ(hashes)、辞書(dictionary)
  • 配列:一組の順に並べられた値をシーケンス(sequence)、リスト(list)
  • スカラー(scalars):単一の再分割不可の値
  • オブジェクト
    オブジェクトの場合、フォーマットは次のとおりです:Map(属性と値)(キー値のペア)の形式
    key:(スペース)valueはキー値ペアを表し、スペースは省略できません.例えば次の
     person:
       name: vivi
       age: 18
    

    1行の書き方:person:{name:vivi,age:18}読み込んだ後、json形式に相当します.
    {
         "name":"vivi","age":18}
    
    
    

    はいれつ
    連語線の先頭の行のセットで、配列を構成します.配列の前に「-」記号が付けられ、記号と値の間にスペースで区切られます.
    color:
  • red
  • blue
  • green一行表記:color:[red,blue,green]相当JSON:
  • [“red”,“blue”,“green”]
    じゅんりょう
    単一の、再分割できない値.(文字列、bool値、整数、浮動小数点数、時間、日付、nullなど)
    n1: 8 n2: 8.8 n3: true n4: false n5: ‘vivi’
    特殊記号
    null使用~表示例:parent:~表示:
    {
          parent: null }
    

    YAMLでは、2つの感嘆符を使用して、データ型を強制的に変換できます.例えば:e:!!str 123 f: !!str trueは、次のように表される.
    
    {
          e: '123', f: 'true' }
    

    アンカー&と別名*で、参照できます.
    defaults: &defaults
      adapter:  postgres
      host:     localhost
    
    development:
      database: myapp_development
      <<: *defaults
    
    test:
      database: myapp_test
      <<: *defaults
    

    次のコードに等しい
    defaults:
      adapter:  postgres
      host:     localhost
    
    development:
      database: myapp_development
      adapter:  postgres
      host:     localhost
    
    test:
      database: myapp_test
      adapter:  postgres
      host:     localhost
    

    &アンカーポイント(defaults)<たとえば:
  • &showell Steve
  • Clark
  • Brian
  • Oren
  • *showell表示
  • [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]
    

    yamlプロファイル読み込み
    参照先:http://www.ruanyifeng.com/blog/2016/07/yaml.html