YAML.Parser (YAML v0.2.0)

Copy Markdown View Source

Parses YAML strings into AST or simplified Elixir data structures.

Summary

Functions

Parses YAML string into AST (Abstract Syntax Tree) with full metadata. Returns a list of YAML.AST.Document structs since YAML files can contain multiple documents.

Simplifies AST into plain Elixir data structures (maps, lists).

Functions

parse(string, yamerl_opts)

Parses YAML string into AST (Abstract Syntax Tree) with full metadata. Returns a list of YAML.AST.Document structs since YAML files can contain multiple documents.

Examples

iex> YAML.Parser.parse!("key: value") [

%YAML.AST.Document{
  root: %YAML.AST.Mapping{
    pairs: [
      {%YAML.AST.Scalar{value: "key", meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:str", line: 1, column: 1}},
       %YAML.AST.Scalar{value: "value", meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:str", line: 1,column: 6}}}
    ],
    meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:map", line: 1, column: 1}
  }
}

]

parse!(string, yamerl_opts)

simplify(ast, atomize_keys \\ false)

Simplifies AST into plain Elixir data structures (maps, lists).

Examples

iex> ast = [

   %YAML.AST.Document{
     root: %YAML.AST.Mapping{
       pairs: [
         {%YAML.AST.Scalar{value: "key", meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:str", line: 1, column: 1}},
          %YAML.AST.Scalar{value: "value", meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:str", line: 1,column: 6}}}
       ],
       meta: %YAML.AST.Meta{tag: "tag:yaml.org,2002:map", line: 1, column: 1}
     }
   }
 ]

iex>YAML.Parser.simplify(ast, atomize_keys) [%{"key" => "value"}]