lib/beerdb/reader.rb in beerdb-0.9.1 vs lib/beerdb/reader.rb in beerdb-0.9.2
- old
+ new
@@ -11,10 +11,13 @@
def match_beers_for_country_n_region( name, &blk )
match_xxx_for_country_n_region( name, 'beers', &blk )
end
+ ## todo: add match_brewpubs ???
+ ## - autoadd brewpub flag!! use more_attribs??
+
def match_breweries_for_country( name, &blk )
match_xxx_for_country( name, 'breweries', &blk )
end
def match_breweries_for_country_n_region( name, &blk )
@@ -140,14 +143,49 @@
more_attribs[ :txt ] = name # store source ref
load_beers_worker( name, more_attribs )
end
+
def load_beers_worker( name, more_attribs={} )
reader = ValuesReaderV2.new( name, include_path, more_attribs )
+ ### todo: cleanup - check if [] works for build_title...
+ # better cleaner way ???
+ if more_attribs[:region_id].present?
+ known_breweries_source = Brewery.where( region_id: more_attribs[:region_id] )
+ elsif more_attribs[:country_id].present?
+ known_breweries_source = Brewery.where( country_id: more_attribs[:country_id] )
+ else
+ logger.warn "no region or country specified; use empty brewery ary for header mapper"
+ known_breweries_source = []
+ end
+
+ known_breweries = TextUtils.build_title_table_for( known_breweries_source )
+
+
reader.each_line do |new_attributes, values|
+
+ ## note: check for header attrib; if present remove
+ ### todo: cleanup code later
+ ## fix: add to new_attributes hash instead of values ary
+ ## - fix: match_brewery() move region,city code out of values loop for reuse at the end
+ if new_attributes[:header].present?
+ brewery_line = new_attributes[:header].dup # note: make sure we make a copy; will use in-place string ops
+ new_attributes.delete(:header) ## note: do NOT forget to remove from hash!
+
+ logger.debug " trying to find brewery in line >#{brewery_line}<"
+ ## todo: check what map_titles_for! returns (nothing ???)
+ TextUtils.map_titles_for!( 'brewery', brewery_line, known_breweries )
+ brewery_key = TextUtils.find_key_for!( 'brewery', brewery_line )
+ logger.debug " brewery_key = >#{brewery_key}<"
+ unless brewery_key.nil?
+ ## bingo! add brewery_id upfront, that is, as first value in ary
+ values = values.unshift "by:#{brewery_key}"
+ end
+ end
+
Beer.create_or_update_from_attribs( new_attributes, values )
end # each_line
end
@@ -185,9 +223,19 @@
def load_breweries_worker( name, more_attribs={} )
reader = ValuesReaderV2.new( name, include_path, 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
end # class Reader