iso_country_codes 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg
data/History.txt ADDED
@@ -0,0 +1,25 @@
1
+ === 0.2.2 / 2009-08-07
2
+
3
+ * Added Ruby 1.9 UTF-8 encoding header
4
+ * Updated with the latest country names from Wikipedia
5
+
6
+ === 0.2.1 / 2008-11-25
7
+
8
+ * All Ruby warnings resolved
9
+
10
+ === 0.2.0 / 2008-11-24
11
+
12
+ * Currency codes added
13
+
14
+ === 0.1.2 / 2008-11-24
15
+
16
+ * Inexact strings can now be used to search for country names
17
+
18
+ === 0.1.1 / 2008-11-21
19
+
20
+ * Each country now represented by a single class instead of one for each code
21
+
22
+ === 0.1.0 / 2008-11-20
23
+
24
+ * Initial release
25
+
data/Manifest.txt ADDED
@@ -0,0 +1,15 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ iso_country_codes.gemspec
6
+ lib/iso_country_codes.rb
7
+ lib/iso_country_codes/code.rb
8
+ lib/iso_country_codes/iso_3166_1.rb
9
+ lib/iso_country_codes/iso_4217.rb
10
+ lib/iso_country_codes/iso_country_codes.rb
11
+ rakelib/cultivate.rake
12
+ rakelib/iso_3116_1.rake
13
+ rakelib/iso_3166_1.rb
14
+ rakelib/iso_3166_1.rb.erb
15
+ test/test_iso_country_codes.rb
data/README.rdoc ADDED
@@ -0,0 +1,67 @@
1
+ = iso_country_codes
2
+
3
+ == DESCRIPTION:
4
+
5
+ Provides ISO codes, names and currencies for countries.
6
+
7
+ == FEATURES:
8
+
9
+ * Search by name or code (alpha-2, alpha-3 or numeric)
10
+
11
+ == SYNOPSIS:
12
+
13
+ # Finding an ISO code returns the country name and other code formats
14
+ code = IsoCountryCodes.find('au')
15
+ code.name # => "Australia"
16
+ code.numeric # => "036"
17
+ code.alpha2 # => "AU"
18
+ code.alpha3 # => "AUS"
19
+
20
+ # Codes can be found via numeric, alpha-2 or alpha-3 format
21
+ IsoCountryCodes.find(36)
22
+ IsoCountryCodes.find('au')
23
+ IsoCountryCodes.find('aus')
24
+
25
+ # Codes can be found by country name
26
+ IsoCountryCodes.find('australia')
27
+
28
+ # Inexact matches can also be found
29
+ IsoCountryCodes.find('united', :fuzzy => true).name # => 'United Kingdom'
30
+
31
+ # Fetch a country's local currency
32
+ IsoCountryCodes.find('aus').currency # => "AUD"
33
+
34
+ == INSTALL:
35
+
36
+ * Via git:
37
+
38
+ git clone git://github.com/alexrabarts/iso_country_codes.git
39
+
40
+ * Via gem:
41
+
42
+ gem install alexrabarts-iso_country_codes -s http://gems.github.com
43
+
44
+ == LICENSE:
45
+
46
+ (The MIT License)
47
+
48
+ Copyright (c) 2008 Stateless Systems (http://statelesssystems.com)
49
+
50
+ Permission is hereby granted, free of charge, to any person obtaining
51
+ a copy of this software and associated documentation files (the
52
+ 'Software'), to deal in the Software without restriction, including
53
+ without limitation the rights to use, copy, modify, merge, publish,
54
+ distribute, sublicense, and/or sell copies of the Software, and to
55
+ permit persons to whom the Software is furnished to do so, subject to
56
+ the following conditions:
57
+
58
+ The above copyright notice and this permission notice shall be
59
+ included in all copies or substantial portions of the Software.
60
+
61
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
62
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
63
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
64
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
65
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
66
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
67
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,54 @@
1
+ require 'rake'
2
+ require './lib/iso_country_codes.rb'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |s|
7
+ s.name = 'iso_country_codes'
8
+ s.summary = %Q{
9
+ Provides ISO 3166-1 country codes/names and ISO 4217 currencies.
10
+ }
11
+ s.email = "alexrabarts@gmail.com"
12
+ s.homepage = "http://github.com/alexrabarts/iso_country_codes"
13
+ s.description = "ISO country code and currency library"
14
+ s.authors = ["alex"]
15
+ end
16
+ rescue LoadError
17
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
18
+ end
19
+
20
+ require 'rake/rdoctask'
21
+ Rake::RDocTask.new do |rdoc|
22
+ rdoc.rdoc_dir = 'rdoc'
23
+ rdoc.title = 'iso_country_codes'
24
+ rdoc.options << '--line-numbers' << '--inline-source'
25
+ rdoc.rdoc_files.include('README*')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
28
+
29
+ require 'rake/testtask'
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib' << 'test'
32
+ t.pattern = 'test/**/*_test.rb'
33
+ t.verbose = false
34
+ end
35
+
36
+ begin
37
+ require 'rcov/rcovtask'
38
+ Rcov::RcovTask.new do |t|
39
+ t.libs << 'test'
40
+ t.test_files = FileList['test/**/*_test.rb']
41
+ t.verbose = true
42
+ end
43
+ rescue LoadError
44
+ puts "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
45
+ end
46
+
47
+ begin
48
+ require 'cucumber/rake/task'
49
+ Cucumber::Rake::Task.new(:features)
50
+ rescue LoadError
51
+ puts "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
52
+ end
53
+
54
+ task :default => :test
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 2
3
+ :patch: 2
4
+ :major: 0
@@ -0,0 +1,52 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{iso_country_codes}
5
+ s.version = "0.2.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["alex"]
9
+ s.date = %q{2009-08-07}
10
+ s.description = %q{ISO country code and currency library}
11
+ s.email = %q{alexrabarts@gmail.com}
12
+ s.extra_rdoc_files = [
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".gitignore",
17
+ "History.txt",
18
+ "Manifest.txt",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION.yml",
22
+ "iso_country_codes.gemspec",
23
+ "lib/iso_country_codes.rb",
24
+ "lib/iso_country_codes/code.rb",
25
+ "lib/iso_country_codes/iso_3166_1.rb",
26
+ "lib/iso_country_codes/iso_4217.rb",
27
+ "lib/iso_country_codes/iso_country_codes.rb",
28
+ "rakelib/cultivate.rake",
29
+ "rakelib/iso_3166_1.rake",
30
+ "rakelib/iso_3166_1.rb",
31
+ "rakelib/iso_3166_1.rb.erb",
32
+ "test/iso_country_codes_test.rb"
33
+ ]
34
+ s.homepage = %q{http://github.com/alexrabarts/iso_country_codes}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.3.4}
38
+ s.summary = %q{Provides ISO 3166-1 country codes/names and ISO 4217 currencies.}
39
+ s.test_files = [
40
+ "test/iso_country_codes_test.rb"
41
+ ]
42
+
43
+ if s.respond_to? :specification_version then
44
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
48
+ else
49
+ end
50
+ else
51
+ end
52
+ end
@@ -0,0 +1,59 @@
1
+ require 'singleton'
2
+
3
+ class IsoCountryCodes
4
+ class Code
5
+ include Singleton
6
+
7
+ def name
8
+ self.class.name
9
+ end
10
+
11
+ def numeric
12
+ self.class.numeric
13
+ end
14
+
15
+ def alpha2
16
+ self.class.alpha2
17
+ end
18
+
19
+ def alpha3
20
+ self.class.alpha3
21
+ end
22
+
23
+ def main_currency
24
+ self.class.main_currency
25
+ end
26
+
27
+ def currency
28
+ self.class.currency
29
+ end
30
+
31
+ def currencies
32
+ self.class.currencies
33
+ end
34
+
35
+ class << self
36
+ attr_accessor :name, :numeric, :alpha2, :alpha3, :main_currency
37
+ attr_writer :currencies
38
+ alias_method :currency, :main_currency
39
+
40
+ @@codes = []
41
+ def inherited(code) #:nodoc:
42
+ super
43
+ @@codes << code.instance if self == IsoCountryCodes::Code
44
+ end
45
+
46
+ def all
47
+ @@codes.uniq
48
+ end
49
+
50
+ def currencies
51
+ if defined? @currencies
52
+ return @currencies
53
+ else
54
+ return [@main_currency]
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end