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