Sha256: af0c186f42789dd3acff071a6e4f68c719e4bbb535c16c2258175ad437a08cf2

Contents?: true

Size: 837 Bytes

Versions: 1

Compression:

Stored size: 837 Bytes

Contents

module Lurker
  class SchemaModifier
    class << self
      def merge!(schema, data)
        new(schema, data).merge!
      end

      def append!(schema, data)
        new(schema, data).append!
      end
    end

    def initialize(schema, data)
      @schema = schema
      @data = data
    end

    def merge!
      modifier_klass.new(@schema).merge!(@data)
    end

    def append!
      schema_klass.new(@schema).append!(@data)
    end

    private

    def schema_klass
      klass_from_type(@schema)
    end

    def modifier_klass
      klass_from_type(@data)
    end

    def klass_from_type(anything)
      if anything.kind_of?(::Hash)
        Lurker::SchemaModifier::Hash
      elsif anything.kind_of?(::Array)
        Lurker::SchemaModifier::Array
      else
        Lurker::SchemaModifier::Atom
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lurker-0.6.1 lib/lurker/schema_modifier.rb