Class: FilterFactory::Field

Inherits:
Object
  • Object
show all
Defined in:
lib/filter_factory/field.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, condition, options = {}) ⇒ Field

Initializes new instance of Field.

Parameters:

  • name (Symbol, String)
  • condition (Symbol)
  • options (Hash) (defaults to: {})

Options Hash (options):

  • :alias (Symbol, String)

    field alias



12
13
14
15
16
17
18
# File 'lib/filter_factory/field.rb', line 12

def initialize(name, condition, options = {})
  fail ArgumentError unless FilterFactory::Filter::CONDITIONS.include?(condition)

  valid_options = [:alias]
  @name, @condition, @options = name, condition, options.reject { |k,| !valid_options.include?(k) }
  @alias = @options[:alias] || @name
end

Instance Attribute Details

#aliasObject (readonly)

Returns the value of attribute alias.



3
4
5
# File 'lib/filter_factory/field.rb', line 3

def alias
  @alias
end

#conditionObject (readonly)

Returns the value of attribute condition.



3
4
5
# File 'lib/filter_factory/field.rb', line 3

def condition
  @condition
end

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/filter_factory/field.rb', line 3

def name
  @name
end

#optionsObject (readonly)

Returns the value of attribute options.



3
4
5
# File 'lib/filter_factory/field.rb', line 3

def options
  @options
end

#valueObject

Returns the value of attribute value.



4
5
6
# File 'lib/filter_factory/field.rb', line 4

def value
  @value
end

Instance Method Details

#==(obj) ⇒ Boolean

Checks whether two objects are equal. Returns true if obj is of the same class and has name, condition and alias attributes equal to current object.

Parameters:

  • obj (Object)

    object to compare with

Returns:

  • (Boolean)


26
27
28
29
30
31
# File 'lib/filter_factory/field.rb', line 26

def ==(obj)
  return false unless obj.is_a?(self.class)
  [:name, :condition, :alias].inject(true) do |acc, attr|
    acc && public_send(attr) == obj.public_send(attr)
  end
end