Sha256: 606ab13dba5369d6b1a4947b55776f702c498359aecefa110e0d066bde269973

Contents?: true

Size: 516 Bytes

Versions: 10

Compression:

Stored size: 516 Bytes

Contents

require 'set'

# This is a hack that I don't want to ever use anywhere else or repeat EVER, but we need enums to be
# an Array to pass schema validation. But we also want fast lookup!

class ArraySet < Array
  def include?(obj)
    if !defined? @values
      @values = Set.new
      each { |x| @values << convert_to_float_if_numeric(x) }
    end
    @values.include?(convert_to_float_if_numeric(obj))
  end

  private

  def convert_to_float_if_numeric(value)
    value.is_a?(Numeric) ? value.to_f : value
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
json-schema-5.1.1 lib/json-schema/util/array_set.rb
json-schema-5.1.0 lib/json-schema/util/array_set.rb
json-schema-5.0.1 lib/json-schema/util/array_set.rb
json-schema-5.0.0 lib/json-schema/util/array_set.rb
json-schema-4.3.1 lib/json-schema/util/array_set.rb
json-schema-4.3.0 lib/json-schema/util/array_set.rb
json-schema-4.2.0 lib/json-schema/util/array_set.rb
json-schema-4.1.1 lib/json-schema/util/array_set.rb
json-schema-4.1.0 lib/json-schema/util/array_set.rb
json-schema-4.0.0 lib/json-schema/util/array_set.rb