Sha256: 0ab2ba1477c4e669312fcb6f6e1a2630a56e7f60e16dada013ed150aa6ea1d0c

Contents?: true

Size: 879 Bytes

Versions: 81

Compression:

Stored size: 879 Bytes

Contents

class Jets::Stack
  class Builder
    extend Memoist

    def initialize(stack)
      @stack = stack
      @template = {} # will build this structure up
    end

    def template
      build_section(:parameters)
      build_section(:resources)
      build_section(:outputs)
      Jets::Camelizer.transform(@template)
    end
    memoize :template

    def build_section(section)
      elements = build_elements(section)
      @template[section] = elements if elements
    end

    def build_elements(section)
      # s is a "section element".  Examples:
      #
      #   Jets::Stack::Parameter
      #   Jets::Stack::Resource
      #   Jets::Stack::Output
      #
      section_elements = @stack.send(section)
      return unless section_elements

      section_elements.inject({}) do |template_section, s|
        template_section.merge(s.template)
      end
    end
  end
end

Version data entries

81 entries across 81 versions & 2 rubygems

Version Path
jets-1.7.2 lib/jets/stack/builder.rb
jets-1.7.1 lib/jets/stack/builder.rb
jets-1.7.0 lib/jets/stack/builder.rb
jets-fs-1.6.10 lib/jets/stack/builder.rb
jets-1.6.9 lib/jets/stack/builder.rb
jets-1.6.8 lib/jets/stack/builder.rb
jets-1.6.7 lib/jets/stack/builder.rb
jets-1.6.6 lib/jets/stack/builder.rb
jets-1.6.5 lib/jets/stack/builder.rb
jets-1.6.4 lib/jets/stack/builder.rb
jets-1.6.3 lib/jets/stack/builder.rb
jets-1.6.2 lib/jets/stack/builder.rb
jets-1.6.1 lib/jets/stack/builder.rb
jets-1.6.0 lib/jets/stack/builder.rb
jets-1.5.10 lib/jets/stack/builder.rb
jets-1.5.9 lib/jets/stack/builder.rb
jets-1.5.8 lib/jets/stack/builder.rb
jets-1.5.7 lib/jets/stack/builder.rb
jets-1.5.6 lib/jets/stack/builder.rb
jets-1.5.5 lib/jets/stack/builder.rb