Class: Traject::AlephSequentialReader

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/traject/alephsequential_reader.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input_stream, settings) ⇒ AlephSequentialReader

Returns a new instance of AlephSequentialReader.



13
14
15
16
17
18
19
20
21
# File 'lib/traject/alephsequential_reader.rb', line 13

def initialize(input_stream, settings)
  @settings = settings
  @input_stream = input_stream
  if settings['command_line.filename'] =~ /\.gz$/ && !(@input_stream.is_a?  Zlib::GzipReader)
    @input_stream = Zlib::GzipReader.new(@input_stream, :external_encoding => "UTF-8")
  end

  @internal_reader = MARC::AlephSequential::Reader.new(@input_stream)
end

Instance Attribute Details

#settingsObject

Returns the value of attribute settings.



9
10
11
# File 'lib/traject/alephsequential_reader.rb', line 9

def settings
  @settings
end

Instance Method Details

#eachObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/traject/alephsequential_reader.rb', line 27

def each
  unless block_given?
    return enum_for(:each)
  end

  ir = @internal_reader.each # iterator
  while true
    begin
      r =  ir.next
      yield r
    rescue  MARC::AlephSequential::Error => e
      logger.error(e)
      next
    rescue StopIteration
      break
    end
  end
end

#loggerObject



23
24
25
# File 'lib/traject/alephsequential_reader.rb', line 23

def logger
  @logger ||= (settings[:logger] || Yell.new(STDERR, :level => "gt.fatal")) # null logger)
end