Class: Traject::MockReader

Inherits:
Object
  • Object
show all
Defined in:
lib/traject/mock_reader.rb

Overview

require ‘traject/mock_writer’ require ‘traject/mock_reader’

settings do

store "reader_class_name", "Traject::MockReader"
store "writer_class_name", "Traject::MockWriter"
store "mock_reader.limit", 4_000 # default is 10_000

end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_stream, settings = {}) ⇒ MockReader

Returns a new instance of MockReader.

Parameters:

  • input_stream (Ignored)

    (ignored)

  • settings (Hash) (defaults to: {})

    (looks only for an integer in ‘mock_reader.limit’)



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/traject/mock_reader.rb', line 28

def initialize(input_stream, settings = {})
  @records = []
  @limit = settings["mock_reader.limit"]  || 10_000
  
  this_file_iter = File.open(__FILE__).each_line
  
  while true
    line = this_file_iter.next
    break if line =~ /^\_\_END\_\_/
  end
  
  begin
    while true
      json = this_file_iter.next
      next unless json =~ /\S/
      @records << MARC::Record.new_from_hash(JSON.parse(json))
    end
  rescue StopIteration
  end
  
end

Instance Attribute Details

#limitObject

Returns the value of attribute limit.



24
25
26
# File 'lib/traject/mock_reader.rb', line 24

def limit
  @limit
end

Instance Method Details

#eachObject



51
52
53
54
55
56
57
58
59
60
# File 'lib/traject/mock_reader.rb', line 51

def each
  unless block_given?
    enum_for(:each)
  else
    size = @records.size
    @limit.times do |i|
      yield @records[i % size]
    end
  end
end