class Bismas::Reader

Constants

DEFAULT_IO

Attributes

records[R]

Public Class Methods

parse(*args, &block) click to toggle source
   # File lib/bismas/reader.rb
37 def parse(*args, &block)
38   reader = new(args.extract_options!).parse(*args, &block)
39   block ? reader : reader.records
40 end
parse_file(*args, &block) click to toggle source
   # File lib/bismas/reader.rb
42 def parse_file(*args, &block)
43   file_method(:parse, 'rb', *args, &block)
44 end

Public Instance Methods

parse(io = io(), &block) click to toggle source
   # File lib/bismas/reader.rb
55 def parse(io = io(), &block)
56   unless block
57     records, block = @records, amend_block { |id, record|
58       records[id] = record
59     }
60   end
61 
62   Parser.parse(io, @options) { |record|
63     block[key ? record[key].join : auto_id.call, record] }
64 
65   self
66 end
reset() click to toggle source
Calls superclass method Bismas::Base#reset
   # File lib/bismas/reader.rb
50 def reset
51   super
52   @records = {}
53 end

Private Instance Methods

amend_block(&block) click to toggle source
   # File lib/bismas/reader.rb
70 def amend_block(&block)
71   return block unless $VERBOSE && k = @key
72 
73   r, i = block.binding.eval('_ = records, io')
74 
75   l = i.respond_to?(:lineno)
76   s = i.respond_to?(:path) ? i.path :
77     Object.instance_method(:inspect).bind(i).call
78 
79   lambda { |id, *args|
80     if (r ||= block.binding.eval('records')).key?(id)
81       warn "Duplicate record in #{s}#{":#{i.lineno}" if l}: »#{k}:#{id}«"
82     end
83 
84     block[id, *args]
85   }
86 end