class Factbook::Codes
Public Class Methods
new( codes )
click to toggle source
# File lib/factbook-codes/codes.rb, line 69 def initialize( codes ) @codes = codes end
read_csv( path )
click to toggle source
# File lib/factbook-codes/codes.rb, line 37 def self.read_csv( path ) ### # note: # if you use quotes - NO leading spaces allowed e.g. # use au,"Austria",... and NOT # au, "Austria", ... # # for headers - NO leading spaces allowed e.g. # use Code,Name,Category,Region,... and NOT # Code, Name, Category, Region, ... rows = CsvHash.read( path ) ## pp rows recs = [] rows.each do |row| ## pp row rec = Code.new rec.code = row['Code'].strip ## remove leading n trailing whitespaces rec.name = row['Name'].strip rec.category = row['Category'].strip rec.region = row['Region'].strip ## pp rec recs << rec end new( recs ) end
Public Instance Methods
[](key)
click to toggle source
# File lib/factbook-codes/codes.rb, line 82 def [](key) @codes[ key ]; end
africa()
click to toggle source
# File lib/factbook-codes/codes.rb, line 105 def africa() region 'Africa'; end
antartica()
click to toggle source
# File lib/factbook-codes/codes.rb, line 110 def antartica() region 'Antarctica'; end
australia_oceania()
click to toggle source
# File lib/factbook-codes/codes.rb, line 109 def australia_oceania() region 'Australia-Oceania'; end
category( query )
click to toggle source
note: regions oceans and world - same as category oceans and world
use oceans_ii or world_ii or something ?? use category('World') n region('World') use category('Oceans') n region('Oceans')
# File lib/factbook-codes/codes.rb, line 118 def category( query ) ## todo/future: allow passing in of regex too (not just string) ## note: e.g. Dependencies (France) needs to get escpaed to ## Dependencies \(France\) etc. filter_regex = /#{Regexp.escape(query)}/i codes = @codes.select do |code| code.category ? filter_regex.match( code.category ) : false ## note: allow nil for category; will fail on search end Codes.new( codes ) ## return new Codes obj for easy-chaining end
central_america_n_caribbean()
click to toggle source
# File lib/factbook-codes/codes.rb, line 107 def central_america_n_caribbean() region 'Central America and Caribbean'; end
central_asia()
click to toggle source
# File lib/factbook-codes/codes.rb, line 102 def central_asia() region 'Central Asia'; end
countries()
click to toggle source
“pre-defined” convenience shortcuts
# File lib/factbook-codes/codes.rb, line 91 def countries() category 'Countries'; end
dependencies()
click to toggle source
# File lib/factbook-codes/codes.rb, line 96 def dependencies() category 'Dependencies'; end
dependencies_us()
click to toggle source
# File lib/factbook-codes/codes.rb, line 97 def dependencies_us() category 'Dependencies (United States)'; end
each( &blk )
click to toggle source
# File lib/factbook-codes/codes.rb, line 75 def each( &blk ) @codes.each( &blk ); end
east_n_souteast_asia()
click to toggle source
# File lib/factbook-codes/codes.rb, line 103 def east_n_souteast_asia() region 'East & Southeast Asia'; end
europe()
click to toggle source
fix/todo: add all dependencies uk (or gb?), fr,cn,au,nz,no,dk,etc.
# File lib/factbook-codes/codes.rb, line 100 def europe() region 'Europe'; end
middle_east()
click to toggle source
# File lib/factbook-codes/codes.rb, line 104 def middle_east() region 'Middle East'; end
misc()
click to toggle source
# File lib/factbook-codes/codes.rb, line 94 def misc() category 'Miscellaneous'; end
north_america()
click to toggle source
# File lib/factbook-codes/codes.rb, line 106 def north_america() region 'North America'; end
oceans()
click to toggle source
# File lib/factbook-codes/codes.rb, line 93 def oceans() category 'Oceans'; end
others()
click to toggle source
# File lib/factbook-codes/codes.rb, line 95 def others() category 'Other'; end
region( query )
click to toggle source
# File lib/factbook-codes/codes.rb, line 129 def region( query ) ## todo/future: allow passing in of regex too (not just string) filter_regex = /#{Regexp.escape(query)}/i codes = @codes.select do |code| code.region ? filter_regex.match( code.region ) : false ## note: allow nil for region; will fail on search end Codes.new( codes ) ## return new Codes obj for easy-chaining end
select( &blk )
click to toggle source
# File lib/factbook-codes/codes.rb, line 76 def select( &blk ) codes = @codes.select( &blk ) Codes.new( codes ) ## return (again) new Codes obj for easy-chaining - why? why not? end
size()
click to toggle source
# File lib/factbook-codes/codes.rb, line 73 def size() @codes.size; end
south_america()
click to toggle source
# File lib/factbook-codes/codes.rb, line 108 def south_america() region 'South America'; end
south_asia()
click to toggle source
# File lib/factbook-codes/codes.rb, line 101 def south_asia() region 'South Asia'; end
to_a()
click to toggle source
# File lib/factbook-codes/codes.rb, line 84 def to_a @codes.collect {|code| code.code } ## return array of codes end
world()
click to toggle source
# File lib/factbook-codes/codes.rb, line 92 def world() category 'World'; end