Module: Stackup::YAML

Defined in:
lib/stackup/yaml.rb

Overview

Modified YAML parsing, to support CloudFormation YAML shortcuts

Defined Under Namespace

Classes: CloudFormationToRuby

Class Method Summary collapse

Class Method Details

.dump(*args) ⇒ Object

Dump Ruby object o to a YAML string.



15
16
17
# File 'lib/stackup/yaml.rb', line 15

def dump(*args)
  ::YAML.dump(*args)
end

.load(yaml, filename = nil) ⇒ Object

Load YAML stream/string into a Ruby data structure.

Supports CloudFormation extensions:

`!Ref blah` as a shortcut for `{ "Ref" => blah }`
`!Foo blah` as a shortcut for `{ "Fn::Foo" => blah }`


26
27
28
29
30
31
32
# File 'lib/stackup/yaml.rb', line 26

def load(yaml, filename = nil)
  legacy_yaml = Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.0")
  tree = legacy_yaml ? ::YAML.parse(yaml, filename) : ::YAML.parse(yaml, :filename => filename)
  return tree unless tree

  CloudFormationToRuby.create.accept(tree)
end

.load_file(filename) ⇒ Object

Load YAML file into a Ruby data structure.

Supports CloudFormation extensions as per ‘load`.



38
39
40
41
42
# File 'lib/stackup/yaml.rb', line 38

def load_file(filename)
  File.open(filename, "r:bom|utf-8") do |f|
    load(f, filename)
  end
end