class RSolr::Field
def self.class_for_field(field_type)
def self.class_for_field(field_type) potential_class_name = field_type + 'Field'.freeze search_scope = Module.nesting[1] search_scope.const_defined?(potential_class_name, false) ? search_scope.const_get(potential_class_name) : self end
def self.instance(attrs, value)
def self.instance(attrs, value) attrs = attrs.dup field_type = attrs.delete(:type) { value.class.name } klass = if field_type.is_a? String class_for_field(field_type) elsif field_type.is_a? Class field_type else self end klass.new(attrs, value) end
def as_json
def as_json if attrs[:update] { attrs[:update] => value } elsif attrs.any? { |k, _| k != :name } hash = attrs.dup hash.delete(:name) hash.merge(value: value) else value end end
def initialize(attrs, source_value)
"attrs" must be a hash
def initialize(attrs, source_value) @attrs = attrs @source_value = source_value end
def name
def name attrs[:name] end
def value
def value source_value end