Sha256: b1680cc3e58a55df1266a0091000dd1d30f5ad1a83bf7dab928f0d902ce54a24

Contents?: true

Size: 714 Bytes

Versions: 1

Compression:

Stored size: 714 Bytes

Contents

# frozen_string_literal: true

module Esse
  class DynamicTemplate
    # @param [Array, Hash] value The list of dynamic_templates for mapping
    def initialize(value)
      @hash = normalize(value)
    end

    def merge!(value)
      @hash = HashUtils.deep_merge(@hash, normalize(value))
    end

    def to_a
      @hash.map do |name, value|
        { name => value }
      end
    end

    def any?
      @hash.any?
    end

    def dup
      self.class.new(@hash.dup)
    end

    private

    def normalize(value)
      case value
      when Array
        value.map { |v| normalize(v) }.reduce(&:merge)
      when Hash
        HashUtils.deep_transform_keys(value, &:to_sym)
      end || {}
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
esse-0.2.2 lib/esse/dynamic_template.rb