Class: Super::Filter::SchemaTypes::OperatorList

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/super/filter/schema_types.rb

Instance Method Summary collapse

Constructor Details

#initialize(*new_operators) ⇒ OperatorList

Returns a new instance of OperatorList.



11
12
13
14
15
16
17
# File 'lib/super/filter/schema_types.rb', line 11

def initialize(*new_operators)
  @operators = {}
  @operator_transcript = {}
  @fallback_transcript = nil

  push(*new_operators)
end

Instance Method Details

#eachObject



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/super/filter/schema_types.rb', line 33

def each
  return enum_for(:each) if !block_given?

  @operators.each do |identifier, operator|
    yield(
      OperatorWithFieldTranscript.new(
        operator,
        @operator_transcript[identifier] || @fallback_transcript
      )
    )
  end
end

#push(*new_operators) ⇒ Object Also known as: add



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/super/filter/schema_types.rb', line 19

def push(*new_operators)
  new_operators.flatten.map(&:dup).each do |new_operator|
    new_identifier = new_operator.identifier.to_s

    raise Error::AlreadyRegistered if @operators.key?(new_identifier)

    @operators[new_identifier] = new_operator
  end

  nil
end

#transcribe(operator_identifier = nil) {|transcript| ... } ⇒ Object

Yields:

  • (transcript)


46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/super/filter/schema_types.rb', line 46

def transcribe(operator_identifier = nil)
  transcript = Form::FieldTranscript.new
  yield transcript

  if operator_identifier.nil?
    @fallback_transcript = transcript
  else
    @operator_transcript[operator_identifier.to_s] = transcript
  end

  self
end