Sha256: c8da096f3a2a3a2c8ee70c474d64a900e74783b8e1f9b31808aa7d3492923815

Contents?: true

Size: 1.38 KB

Versions: 217

Compression:

Stored size: 1.38 KB

Contents

class Jets::Resource
  class Standardizer
    attr_reader :definition
    def initialize(*definition)
      @definition = definition.flatten
    end

    def template
      camelize(standarize(@definition))
    end

    def camelize(attributes)
      Jets::Camelizer.transform(attributes)
    end

    def standarize(definition)
      first, second, third, _ = definition
      if definition.size == 1 && first.is_a?(Hash) # long form
        first # pass through
      elsif definition.size == 2 && second.is_a?(Hash) # medium form
        logical_id, attributes = first, second
        attributes.delete(:properties) if attributes[:properties].nil? || attributes[:properties].empty?
        { logical_id => attributes }
      elsif definition.size == 2 && second.is_a?(String) # short form
        logical_id, type = first, second
        { logical_id => {
            type: type
        }}
      elsif definition.size == 3 && (second.is_a?(String) || second.is_a?(NilClass))# short form
        logical_id, type, properties = first, second, third
        template = { logical_id => {
                       type: type
                    }}
        attributes = template.values.first
        attributes[:properties] = properties unless properties.empty?
        template
      else # Dont understand this form
        raise "Invalid form provided. definition #{definition.inspect}"
      end
    end
  end
end

Version data entries

217 entries across 217 versions & 4 rubygems

Version Path
jets-4.0.12 lib/jets/resource/standardizer.rb
jets-4.0.11 lib/jets/resource/standardizer.rb
jets-4.0.10 lib/jets/resource/standardizer.rb
jets-4.0.9 lib/jets/resource/standardizer.rb
jets-4.0.8 lib/jets/resource/standardizer.rb
jets-4.0.7 lib/jets/resource/standardizer.rb
jets-4.0.6 lib/jets/resource/standardizer.rb
jets-4.0.5 lib/jets/resource/standardizer.rb
jets-4.0.4 lib/jets/resource/standardizer.rb
jets-4.0.3 lib/jets/resource/standardizer.rb
jets-4.0.2 lib/jets/resource/standardizer.rb
jets-4.0.1 lib/jets/resource/standardizer.rb
jets-4.0.0 lib/jets/resource/standardizer.rb
jets-3.2.2 lib/jets/resource/standardizer.rb
jets-3.2.1 lib/jets/resource/standardizer.rb
jets.benforeva-3.0.17.pre.mount.pre.fix lib/jets/resource/standardizer.rb
jets-3.2.0 lib/jets/resource/standardizer.rb
jets-3.1.5 lib/jets/resource/standardizer.rb
jets-3.1.4 lib/jets/resource/standardizer.rb
jets-3.1.3 lib/jets/resource/standardizer.rb