Class: FiasParser::Document

Inherits:
Object
  • Object
show all
Defined in:
lib/fias_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(options, block) ⇒ Document

Returns a new instance of Document.



8
9
10
11
12
13
14
15
# File 'lib/fias_parser.rb', line 8

def initialize( options, block )
  @block = block
  @batch = []
  @batch_size = options[:batch_size] || 10
  
  @root_name = nil
  @item_name = nil
end

Instance Method Details

#attr(name, value) ⇒ Object



30
31
32
# File 'lib/fias_parser.rb', line 30

def attr( name, value )
  @item[ name ] = value unless @item.nil?
end

#end_element(name) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/fias_parser.rb', line 34

def end_element( name )
  self.yield_batch if name == @root_name && @batch.any?

  return if @item.nil? || name != @item_name
  
  @batch << @item

  self.yield_batch if @batch.size >= @batch_size
end

#start_element(name) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/fias_parser.rb', line 17

def start_element( name )
  @item = nil

  if @root_name.nil?
    @root_name = name
    
    return
  end
  
  @item_name = name
  @item = {}
end

#yield_batchObject



44
45
46
47
# File 'lib/fias_parser.rb', line 44

def yield_batch
  @block.call( @batch )      
  @batch = []      
end