Sha256: f0d76bca09100c87cf01130e367d4c8f0320151cdbdcdab8bdea01e9e07f0f19
Contents?: true
Size: 902 Bytes
Versions: 4
Compression:
Stored size: 902 Bytes
Contents
require 'marc' require 'json' require 'zlib' # Read newline-delimited JSON file, where each line is a marc-in-json string. # UTF-8 encoding is required. class Traject::NDJReader include Enumerable def initialize(input_stream, settings) @settings = settings @input_stream = input_stream if settings['command_line.filename'] =~ /\.gz$/ @input_stream = Zlib::GzipReader.new(@input_stream, :external_encoding => "UTF-8") end end def logger @logger ||= (settings[:logger] || Yell.new(STDERR, :level => "gt.fatal")) # null logger) end def each unless block_given? return enum_for(:each) end @input_stream.each_with_index do |json, i| begin yield MARC::Record.new_from_hash(JSON.parse(json)) rescue Exception => e self.logger.error("Problem with JSON record on line #{i}: #{e.message}") end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
traject-1.0.0.beta.3 | lib/traject/ndj_reader.rb |
traject-1.0.0.beta.2 | lib/traject/ndj_reader.rb |
traject-1.0.0.beta.1 | lib/traject/ndj_reader.rb |
traject-0.17.0 | lib/traject/ndj_reader.rb |