class Bismas::Reader
Constants
- DEFAULT_IO
Attributes
records[R]
Public Class Methods
parse(*args, &block)
click to toggle source
# File lib/bismas/reader.rb, line 37 def parse(*args, &block) reader = new(args.extract_options!).parse(*args, &block) block ? reader : reader.records end
parse_file(*args, &block)
click to toggle source
# File lib/bismas/reader.rb, line 42 def parse_file(*args, &block) file_method(:parse, 'rb', *args, &block) end
Public Instance Methods
parse(io = io(), &block)
click to toggle source
# File lib/bismas/reader.rb, line 55 def parse(io = io(), &block) unless block records, block = @records, amend_block { |id, record| records[id] = record } end Parser.parse(io, @options) { |record| block[key ? record[key].join : auto_id.call, record] } self end
reset()
click to toggle source
Calls superclass method
Bismas::Base#reset
# File lib/bismas/reader.rb, line 50 def reset super @records = {} end
Private Instance Methods
amend_block(&block)
click to toggle source
# File lib/bismas/reader.rb, line 70 def amend_block(&block) return block unless $VERBOSE && k = @key r, i = block.binding.eval('_ = records, io') l = i.respond_to?(:lineno) s = i.respond_to?(:path) ? i.path : Object.instance_method(:inspect).bind(i).call lambda { |id, *args| if (r ||= block.binding.eval('records')).key?(id) warn "Duplicate record in #{s}#{":#{i.lineno}" if l}: »#{k}:#{id}«" end block[id, *args] } end