Class: Traject::Indexer::EachRecordStep
- Inherits:
-
Object
- Object
- Traject::Indexer::EachRecordStep
- Defined in:
- lib/traject/indexer/step.rb
Constant Summary collapse
- EMPTY_ACCUMULATOR =
[].freeze
Instance Attribute Summary collapse
-
#block ⇒ Object
Returns the value of attribute block.
-
#lambda ⇒ Object
Returns the value of attribute lambda.
-
#source_location ⇒ Object
Returns the value of attribute source_location.
Instance Method Summary collapse
-
#execute(context) ⇒ Object
For each_record, always return an empty array as the accumulator, since it doesn't have those kinds of side effects.
-
#initialize(lambda, block, source_location) ⇒ EachRecordStep
constructor
A new instance of EachRecordStep.
-
#inspect ⇒ Object
Over-ride inspect for outputting error messages etc.
- #to_field_step? ⇒ Boolean
-
#validate! ⇒ Object
raises if bad data.
Constructor Details
#initialize(lambda, block, source_location) ⇒ EachRecordStep
Returns a new instance of EachRecordStep.
17 18 19 20 21 22 23 |
# File 'lib/traject/indexer/step.rb', line 17 def initialize(lambda, block, source_location) self.lambda = lambda self.block = block self.source_location = source_location self.validate! end |
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
12 13 14 |
# File 'lib/traject/indexer/step.rb', line 12 def block @block end |
#lambda ⇒ Object
Returns the value of attribute lambda.
13 14 15 |
# File 'lib/traject/indexer/step.rb', line 13 def lambda @lambda end |
#source_location ⇒ Object
Returns the value of attribute source_location.
12 13 14 |
# File 'lib/traject/indexer/step.rb', line 12 def source_location @source_location end |
Instance Method Details
#execute(context) ⇒ Object
For each_record, always return an empty array as the accumulator, since it doesn't have those kinds of side effects
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/traject/indexer/step.rb', line 67 def execute(context) sr = context.source_record if @lambda if @lambda_arity == 1 @lambda.call(sr) else @lambda.call(sr, context) end end if @block @block.call(sr, context) end return EMPTY_ACCUMULATOR # empty -- no accumulator for each_record end |
#inspect ⇒ Object
Over-ride inspect for outputting error messages etc.
86 87 88 |
# File 'lib/traject/indexer/step.rb', line 86 def inspect "(each_record at #{source_location})" end |
#to_field_step? ⇒ Boolean
25 26 27 |
# File 'lib/traject/indexer/step.rb', line 25 def to_field_step? false end |
#validate! ⇒ Object
raises if bad data
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/traject/indexer/step.rb', line 45 def validate! unless self.lambda or self.block raise ArgumentError.new("Missing Argument: each_record must take a block/lambda as an argument (#{self.inspect})") end [self.lambda, self.block].each do |proc| # allow negative arity, meaning variable/optional, trust em on that. # but for positive arrity, we need 1 or 2 args if proc unless proc.is_a?(Proc) raise NamingError.new("argument to each_record must be a block/lambda, not a #{proc.class} #{self.inspect}") end if (proc.arity == 0 || proc.arity > 2) raise ArityError.new("block/proc given to each_record needs 1 or 2 arguments: #{self.inspect}") end end end end |