Sha256: 3f005a238b7f6f4645021a12a7725a1da66a6ddc06314a5b7b0518510458b838

Contents?: true

Size: 859 Bytes

Versions: 1

Compression:

Stored size: 859 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)
      @schema
    end

    def append!
      schema_klass.new(@schema).append!(@data)
      @schema
    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.is_a?(::Hash)
        Lurker::SchemaModifier::Hash
      elsif anything.is_a?(::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.2 lib/lurker/schema_modifier.rb