Sha256: c46eef55a9667200176679eae91bcfb3137c7975f1de4b66fbef17e0c34da2a9

Contents?: true

Size: 822 Bytes

Versions: 4

Compression:

Stored size: 822 Bytes

Contents

require "yaml"

class Jets::Cfn::Stack
  class Yamler
    def self.load(text)
      new(text).load
    end

    def initialize(text)
      @text = text
    end

    def load
      add_domain_types!
      YAML.load(@text)
    end

    private

    def add_domain_types!
      intrinsic_functions.each do |name|
        YAML.add_domain_type("", name) do |type, val|
          key = type.split("::").last
          key = "Fn::" + key unless name == "Ref"
          {key => val}
        end
      end
    end

    def intrinsic_functions
      %w[
        And
        Base64
        Cidr
        Equals
        FindInMap
        GetAtt
        GetAZs
        If
        If
        ImportValue
        Join
        Not
        Or
        Ref
        Select
        Split
        Sub
        Transform
      ]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
jets-6.0.5 lib/jets/cfn/stack/yamler.rb
jets-6.0.4 lib/jets/cfn/stack/yamler.rb
jets-6.0.3 lib/jets/cfn/stack/yamler.rb
jets-6.0.2 lib/jets/cfn/stack/yamler.rb