Class: BeerDb::BreweryReader

Inherits:
Object
  • Object
show all
Includes:
Model, LogUtils::Logging
Defined in:
lib/beerdb/readers/brewery.rb

Constant Summary

Constants included from Model

Model::City, Model::Continent, Model::Country, Model::Prop, Model::State, Model::Tag, Model::Tagging

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text, more_attribs = {}) ⇒ BreweryReader

Returns a new instance of BreweryReader.



34
35
36
37
38
# File 'lib/beerdb/readers/brewery.rb', line 34

def initialize( text, more_attribs={} )
  ## todo/fix: how to add opts={} ???
  @text = text
  @more_attribs = more_attribs
end

Class Method Details

.from_file(path, more_attribs = {}) ⇒ Object



23
24
25
26
27
28
# File 'lib/beerdb/readers/brewery.rb', line 23

def self.from_file( path, more_attribs={} )
  ## note: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
  ## - see textutils/utils.rb
  text = File.read_utf8( path )
  self.from_string( text, more_attribs )
end

.from_string(text, more_attribs = {}) ⇒ Object



30
31
32
# File 'lib/beerdb/readers/brewery.rb', line 30

def self.from_string( text, more_attribs={} )
  BreweryReader.new( text, more_attribs )
end

.from_zip(zip_file, entry_path, more_attribs = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/beerdb/readers/brewery.rb', line 13

def self.from_zip( zip_file, entry_path, more_attribs={} )
  ## get text content from zip
  entry = zip_file.find_entry( entry_path )

  text = entry.get_input_stream().read()
  text = text.force_encoding( Encoding::UTF_8 )

  self.from_string( text, more_attribs )
end

Instance Method Details

#readObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/beerdb/readers/brewery.rb', line 43

def read()

=begin
  if name =~ /\(m\)/     # check for (m) mid-size/medium marker -todo- use $?? must be last?
     more_attribs[ :prod_m ] = true
  elsif name =~ /\(l\)/  # check for (l) large marker - todo - use $?? must be last?
     more_attribs[ :prod_l ] = true
  else
    ## no marker; do nothing
  end
=end

  reader = ValuesReader.from_string( @text, @more_attribs )

  reader.each_line do |new_attributes, values|
    
    #######
    # fix: move to (inside)
    #    Brewery.create_or_update_from_attribs ||||
    ## note: group header not used for now; do NOT forget to remove from hash!
    if new_attributes[:header].present?
      logger.warn "removing unused group header #{new_attributes[:header]}"
      new_attributes.delete(:header)   ## note: do NOT forget to remove from hash!
    end
    
    Brewery.create_or_update_from_attribs( new_attributes, values )
  end # each_line
end