alexrabarts-tld 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,24 @@
1
+ require 'rubygems'
2
+ require 'iso_country_codes'
3
+
4
+ class TLD
5
+ class Currency
6
+ CURRENCY_MAP = {
7
+ :eu => %w{EUR},
8
+ :gov => %w{USD},
9
+ :mil => %w{USD}
10
+ }
11
+
12
+ class << self
13
+ def find(klass)
14
+ tld = klass.tld
15
+ mapped_currency = CURRENCY_MAP[tld.to_sym]
16
+ if mapped_currency.nil?
17
+ return tld.match(/^\w\w$/) ? IsoCountryCodes.find(TLD::MAP[tld.to_sym] || tld).currencies : []
18
+ else
19
+ return mapped_currency
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ class TLD
2
+ class GenericTld < TLD
3
+ def type
4
+ :generic
5
+ end
6
+ class BIZ < GenericTld #:nodoc:
7
+ self.tld = %q{biz}
8
+ end
9
+ class COM < GenericTld #:nodoc:
10
+ self.tld = %q{com}
11
+ end
12
+ class INFO < GenericTld #:nodoc:
13
+ self.tld = %q{info}
14
+ end
15
+ class NAME < GenericTld #:nodoc:
16
+ self.tld = %q{name}
17
+ end
18
+ class NET < GenericTld #:nodoc:
19
+ self.tld = %q{net}
20
+ end
21
+ class ORG < GenericTld #:nodoc:
22
+ self.tld = %q{org}
23
+ end
24
+ class PRO < GenericTld #:nodoc:
25
+ self.tld = %q{pro}
26
+ end
27
+ end # end GenericTld
28
+ end # end TLD
@@ -0,0 +1,10 @@
1
+ class TLD
2
+ class InfrastructureTld < TLD
3
+ def type
4
+ :infrastructure
5
+ end
6
+ class ARPA < InfrastructureTld #:nodoc:
7
+ self.tld = %q{arpa}
8
+ end
9
+ end # end InfrastructureTld
10
+ end # end TLD
data/lib/tld/name.rb ADDED
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'iso_country_codes'
3
+
4
+ class TLD
5
+ class Name
6
+ NAME_MAP = {
7
+ :aero => 'Aeroplane',
8
+ :arpa => 'Address and Routing Parameter Area (ARPA)',
9
+ :asia => 'Asia',
10
+ :bitnet => 'BITNET',
11
+ :biz => 'Business',
12
+ :cat => 'Catalan',
13
+ :com => 'Commercial',
14
+ :coop => 'Cooperative',
15
+ :csnet => 'Computer Science Network (CSNET)',
16
+ :edu => 'Education',
17
+ :eu => 'European Union',
18
+ :example => 'Example domain',
19
+ :exit => 'Preferred Tor exit node',
20
+ :gov => 'US Government',
21
+ :info => 'Information',
22
+ :int => 'Internet',
23
+ :invalid => 'Invalid domain',
24
+ :jobs => 'Jobs',
25
+ :local => 'Network discovery protocol',
26
+ :localhost => 'Localhost',
27
+ :mil => 'US Military',
28
+ :mobi => 'Mobile',
29
+ :museum => 'Museum',
30
+ :name => 'Name',
31
+ :nato => 'North Atlantic Treaty Organization (NATO)',
32
+ :net => 'Network',
33
+ :onion => 'Reachable via Tor',
34
+ :org => 'Organization',
35
+ :pro => 'Professional',
36
+ :root => 'Diagnostic marker',
37
+ :tel => 'Telnic',
38
+ :test => 'Test domain',
39
+ :travel => 'Travel',
40
+ :uucp => 'Reachable by Unix to Unix CoPy (UUCP)'
41
+ }
42
+
43
+ class << self
44
+ def find(klass)
45
+ tld = klass.tld
46
+ NAME_MAP[tld.to_sym] || IsoCountryCodes.find(TLD::MAP[tld.to_sym] || tld).name
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,28 @@
1
+ class TLD
2
+ class PseudoTld < TLD
3
+ def type
4
+ :pseudo
5
+ end
6
+ class BITNET < PseudoTld #:nodoc:
7
+ self.tld = %q{bitnet}
8
+ end
9
+ class CSNET < PseudoTld #:nodoc:
10
+ self.tld = %q{csnet}
11
+ end
12
+ class LOCAL < PseudoTld #:nodoc:
13
+ self.tld = %q{local}
14
+ end
15
+ class ROOT < PseudoTld #:nodoc:
16
+ self.tld = %q{root}
17
+ end
18
+ class UUCP < PseudoTld #:nodoc:
19
+ self.tld = %q{uucp}
20
+ end
21
+ class ONION < PseudoTld #:nodoc:
22
+ self.tld = %q{onion}
23
+ end
24
+ class EXIT < PseudoTld #:nodoc:
25
+ self.tld = %q{exit}
26
+ end
27
+ end # end PseudoTld
28
+ end # end TLD
@@ -0,0 +1,19 @@
1
+ class TLD
2
+ class ReservedTld < TLD
3
+ def type
4
+ :reserved
5
+ end
6
+ class EXAMPLE < ReservedTld #:nodoc:
7
+ self.tld = %q{example}
8
+ end
9
+ class INVALID < ReservedTld #:nodoc:
10
+ self.tld = %q{invalid}
11
+ end
12
+ class LOCALHOST < ReservedTld #:nodoc:
13
+ self.tld = %q{localhost}
14
+ end
15
+ class TEST < ReservedTld #:nodoc:
16
+ self.tld = %q{test}
17
+ end
18
+ end # end ReservedTld
19
+ end # end TLD
@@ -0,0 +1,10 @@
1
+ class TLD
2
+ class RetiredTld < TLD
3
+ def type
4
+ :retired
5
+ end
6
+ class NATO < RetiredTld #:nodoc:
7
+ self.tld = %q{nato}
8
+ end
9
+ end # end RetiredTld
10
+ end # end TLD
@@ -0,0 +1,46 @@
1
+ class TLD
2
+ class SponsoredTld < TLD
3
+ def type
4
+ :sponsored
5
+ end
6
+ class AERO < SponsoredTld #:nodoc:
7
+ self.tld = %q{aero}
8
+ end
9
+ class ASIA < SponsoredTld #:nodoc:
10
+ self.tld = %q{asia}
11
+ end
12
+ class CAT < SponsoredTld #:nodoc:
13
+ self.tld = %q{cat}
14
+ end
15
+ class COOP < SponsoredTld #:nodoc:
16
+ self.tld = %q{coop}
17
+ end
18
+ class EDU < SponsoredTld #:nodoc:
19
+ self.tld = %q{edu}
20
+ end
21
+ class GOV < SponsoredTld #:nodoc:
22
+ self.tld = %q{gov}
23
+ end
24
+ class INT < SponsoredTld #:nodoc:
25
+ self.tld = %q{int}
26
+ end
27
+ class JOBS < SponsoredTld #:nodoc:
28
+ self.tld = %q{jobs}
29
+ end
30
+ class MIL < SponsoredTld #:nodoc:
31
+ self.tld = %q{mil}
32
+ end
33
+ class MOBI < SponsoredTld #:nodoc:
34
+ self.tld = %q{mobi}
35
+ end
36
+ class MUSEUM < SponsoredTld #:nodoc:
37
+ self.tld = %q{museum}
38
+ end
39
+ class TEL < SponsoredTld #:nodoc:
40
+ self.tld = %q{tel}
41
+ end
42
+ class TRAVEL < SponsoredTld #:nodoc:
43
+ self.tld = %q{travel}
44
+ end
45
+ end # end SponsoredTld
46
+ end # end TLD
data/lib/tld/tld.rb ADDED
@@ -0,0 +1,86 @@
1
+ require 'singleton'
2
+
3
+ class TLD
4
+ VERSION = '0.2.0'
5
+
6
+ MAP = {
7
+ :ac => 'sh',
8
+ :uk => 'gb',
9
+ :su => 'ru',
10
+ :tp => 'tl',
11
+ :yu => 'rs'
12
+ }
13
+
14
+ include Singleton
15
+
16
+ class UnknownTldError < StandardError; end
17
+
18
+ def tld
19
+ self.class.tld
20
+ end
21
+
22
+ def name
23
+ self.class.name
24
+ end
25
+
26
+ def main_currency
27
+ self.class.main_currency
28
+ end
29
+
30
+ def currency
31
+ self.class.main_currency
32
+ end
33
+
34
+ def currencies
35
+ self.class.currencies
36
+ end
37
+
38
+ def alpha3
39
+ self.class.alpha3
40
+ end
41
+
42
+ class << self
43
+ attr_accessor :tld
44
+
45
+ @@tlds = []
46
+
47
+ def inherited(tld) #:nodoc:
48
+ super
49
+ @@tlds << tld.instance unless self == TLD
50
+ end
51
+
52
+ def all
53
+ @@tlds.uniq
54
+ end
55
+
56
+ def name
57
+ Name.find(self)
58
+ end
59
+
60
+ def currencies
61
+ Currency.find(self)
62
+ end
63
+
64
+ def alpha3
65
+ Alpha3.find(self)
66
+ end
67
+
68
+ def main_currency
69
+ currencies.first
70
+ end
71
+
72
+ alias_method :currency, :main_currency
73
+
74
+ def find(str)
75
+ str.downcase!
76
+ str.sub!(/^\w+:\/\//, '') # Strip protocol
77
+ str = str.split('/').first if str.match(/\//) # Throw away anything after a slash
78
+ str = str.split('.').last if str.match(/\./) # Take the last one of foo.bar.baz
79
+ instance = all.select { |t| t.tld == str }.first
80
+
81
+ raise UnknownTldError, "TLD '#{str}' unkown." if instance.nil?
82
+
83
+ instance
84
+ end
85
+ end
86
+ end
data/lib/tld.rb ADDED
@@ -0,0 +1,14 @@
1
+ dir = File.dirname(__FILE__)
2
+ $LOAD_PATH << dir unless $LOAD_PATH.include?(dir)
3
+
4
+ require 'tld/tld'
5
+ require 'tld/cc_tld'
6
+ require 'tld/generic_tld'
7
+ require 'tld/infrastructure_tld'
8
+ require 'tld/pseudo_tld'
9
+ require 'tld/reserved_tld'
10
+ require 'tld/retired_tld'
11
+ require 'tld/sponsored_tld'
12
+ require 'tld/currency'
13
+ require 'tld/name'
14
+ require 'tld/alpha3'
@@ -0,0 +1,7 @@
1
+ # Only works on unixy type systems.
2
+ # http://blog.behindlogic.com/2008/10/auto-generate-your-manifest-and-gemspec.html
3
+ desc 'Rebuild manifest and gemspec.'
4
+ task :cultivate do
5
+ system %q{touch Manifest.txt; rake check_manifest | grep -v "(in " | patch}
6
+ system %q{rake debug_gem | grep -v "(in " > `basename \`pwd\``.gemspec}
7
+ end
data/rakelib/tld.rake ADDED
@@ -0,0 +1,30 @@
1
+ namespace :update do
2
+ desc "Create CcTld classes from Wikipedia's list of ccTLDs."
3
+ task :tlds do
4
+ dirname = File.dirname(__FILE__)
5
+ gen = File.join(dirname, %w{tld.rb})
6
+ cc_lib = File.expand_path(File.join(dirname, %w{.. lib tld cc_tld.rb}))
7
+ generic_lib = File.expand_path(File.join(dirname, %w{.. lib tld generic_tld.rb}))
8
+ infrastructure_lib = File.expand_path(File.join(dirname, %w{.. lib tld infrastructure_tld.rb}))
9
+ pseudo_lib = File.expand_path(File.join(dirname, %w{.. lib tld pseudo_tld.rb}))
10
+ reserved_lib = File.expand_path(File.join(dirname, %w{.. lib tld reserved_tld.rb}))
11
+ retired_lib = File.expand_path(File.join(dirname, %w{.. lib tld retired_tld.rb}))
12
+ sponsored_lib = File.expand_path(File.join(dirname, %w{.. lib tld sponsored_tld.rb}))
13
+
14
+ require gen
15
+
16
+ {
17
+ cc_lib => TLD::Task::UpdateCcTlds,
18
+ generic_lib => TLD::Task::UpdateGenericTlds,
19
+ infrastructure_lib => TLD::Task::UpdateInfrastructureTlds,
20
+ pseudo_lib => TLD::Task::UpdatePseudoTlds,
21
+ reserved_lib => TLD::Task::UpdateReservedTlds,
22
+ retired_lib => TLD::Task::UpdateRetiredTlds,
23
+ sponsored_lib => TLD::Task::UpdateSponsoredTlds
24
+ }.each_pair do |lib, klass|
25
+ File.open(lib, File::CREAT | File::TRUNC | File::WRONLY) do |f|
26
+ f.write klass.get
27
+ end
28
+ end
29
+ end
30
+ end # :currency
data/rakelib/tld.rb ADDED
@@ -0,0 +1,102 @@
1
+ require 'hpricot'
2
+ require 'open-uri'
3
+ require 'erubis'
4
+
5
+ class TLD
6
+ module Task
7
+ def self.to_ruby(tlds, klass, type)
8
+ tmpl = File.read(File.join(File.dirname(__FILE__), 'tld.rb.erb'))
9
+ eruby = Erubis::Eruby.new(tmpl)
10
+ eruby.result(:tlds => tlds, :klass => klass, :type => type)
11
+ end
12
+
13
+ module UpdateCcTlds
14
+ def self.get
15
+ tlds = []
16
+ node = nil
17
+ doc = Hpricot(open('http://en.wikipedia.org/wiki/Country_code_top-level_domain').read)
18
+ nodes = doc.search('strong.selflink')
19
+ found = false
20
+
21
+ nodes.each do |n|
22
+ node = n
23
+ if node.inner_html == 'Country code top-level domains'
24
+ found = true
25
+ break
26
+ end
27
+ end
28
+
29
+ return nil unless found
30
+ node.parent.parent.parent.next_sibling.next_sibling.search('a').each do |a|
31
+ tld = a.inner_text.upcase
32
+ tld.slice!(0) # Remove the leading '.'
33
+ break unless tld.match(/^\w\w$/)
34
+ tlds.push(tld)
35
+ end
36
+
37
+ Task.to_ruby(tlds, 'CcTld', :cc)
38
+ end
39
+ end # end UpdateCcTlds
40
+
41
+ module UpdateNonCcTlds
42
+ def self.get(inner_text_match)
43
+ tlds = []
44
+ node = nil
45
+ doc = Hpricot(open('http://en.wikipedia.org/wiki/Top-level_domain').read)
46
+ seen = {}
47
+ doc.search('table.nowraplinks.navbox-subgroup tr').each do |tr|
48
+ tr.search('td').each do |td|
49
+ if td.inner_text == inner_text_match
50
+ td = td.next_sibling
51
+ td.search('a').each do |a|
52
+ tld = a.inner_text.upcase
53
+ next if seen[tld]
54
+ seen[tld] = true
55
+ tld.slice!(0) # Remove the leading '.'
56
+ tlds.push(tld)
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ tlds
63
+ end
64
+ end
65
+
66
+ module UpdateGenericTlds
67
+ def self.get
68
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Generic'), 'GenericTld', :generic)
69
+ end
70
+ end # end UpdateGenericTlds
71
+
72
+ module UpdateInfrastructureTlds
73
+ def self.get
74
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Infrastructure'), 'InfrastructureTld', :infrastructure)
75
+ end
76
+ end # end UpdateInfrastructureTlds
77
+
78
+ module UpdatePseudoTlds
79
+ def self.get
80
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Pseudo'), 'PseudoTld', :pseudo)
81
+ end
82
+ end # end UpdatePseudoTlds
83
+
84
+ module UpdateReservedTlds
85
+ def self.get
86
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Reserved'), 'ReservedTld', :reserved)
87
+ end
88
+ end # end UpdateReservedTlds
89
+
90
+ module UpdateRetiredTlds
91
+ def self.get
92
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Deleted/retired'), 'RetiredTld', :retired)
93
+ end
94
+ end # end UpdateRetiredTlds
95
+
96
+ module UpdateSponsoredTlds
97
+ def self.get
98
+ Task.to_ruby(Task::UpdateNonCcTlds.get('Sponsored'), 'SponsoredTld', :sponsored)
99
+ end
100
+ end # end UpdateSponsoredTlds
101
+ end # Task
102
+ end # TLD
@@ -0,0 +1,12 @@
1
+ class TLD
2
+ class <%= klass %> < TLD
3
+ def type
4
+ :<%= type %>
5
+ end
6
+ <% tlds.each do |tld| -%>
7
+ class <%= tld %> < <%= klass %> #:nodoc:
8
+ self.tld = %q{<%= tld.downcase %>}
9
+ end
10
+ <% end -%>
11
+ end # end <%= klass %>
12
+ end # end TLD
data/test/test_tld.rb ADDED
@@ -0,0 +1,54 @@
1
+ require 'test/unit'
2
+ require 'tld'
3
+
4
+ class TestTld < Test::Unit::TestCase
5
+ def test_find_tld_by_exact_match
6
+ assert_equal 'au', TLD.find('au').tld
7
+ end
8
+
9
+ def test_find_tld_by_exact_match_with_dot
10
+ assert_equal 'au', TLD.find('.au').tld
11
+ end
12
+
13
+ def test_find_tld_with_case
14
+ assert_equal 'au', TLD.find('AU').tld
15
+ end
16
+
17
+ def test_find_tld_by_hostname
18
+ assert_equal 'au', TLD.find('foo.bar.au').tld
19
+ end
20
+
21
+ def test_find_tld_by_url
22
+ assert_equal 'au', TLD.find('http://foo.bar.au/baz').tld
23
+ end
24
+
25
+ def test_get_tld_currency
26
+ assert_equal 'AUD', TLD.find('au').currency
27
+ end
28
+
29
+ def test_get_mapped_tld_currency
30
+ assert_equal 'EUR', TLD.find('eu').currency
31
+ assert_equal 'GBP', TLD.find('uk').currency
32
+ end
33
+
34
+ def test_get_tld_name
35
+ assert_equal 'Australia', TLD.find('au').name
36
+ assert_equal 'Business', TLD.find('biz').name
37
+ end
38
+
39
+ def test_get_iso_alpha3_code
40
+ assert_equal 'AUS', TLD.find('au').alpha3
41
+ assert_equal 'GBR', TLD.find('uk').alpha3
42
+ end
43
+
44
+ def test_com_should_map_to_empty_currency_not_comoros
45
+ assert_equal [], TLD.find('com').currencies
46
+ assert_nil TLD.find('com').currency
47
+ end
48
+
49
+ def test_unknown_tld
50
+ assert_raises TLD::UnknownTldError do
51
+ TLD.find('foo')
52
+ end
53
+ end
54
+ end
data/tld.gemspec ADDED
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tld}
5
+ s.version = "0.2.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Alex Rabarts"]
9
+ s.date = %q{2008-11-28}
10
+ s.description = %q{Provides meta information for Internet Top Level Domains (TLDs) such as a descriptive name, associated currency code and the TLD category.}
11
+ s.email = ["alexrabarts@gmail.com"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
13
+ s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/tld.rb", "lib/tld/alpha3.rb", "lib/tld/cc_tld.rb", "lib/tld/currency.rb", "lib/tld/generic_tld.rb", "lib/tld/infrastructure_tld.rb", "lib/tld/name.rb", "lib/tld/pseudo_tld.rb", "lib/tld/reserved_tld.rb", "lib/tld/retired_tld.rb", "lib/tld/sponsored_tld.rb", "lib/tld/tld.rb", "rakelib/cultivate.rake", "rakelib/tld.rake", "rakelib/tld.rb", "rakelib/tld.rb.erb", "test/test_tld.rb", "tld.gemspec"]
14
+ s.has_rdoc = true
15
+ s.rdoc_options = ["--main", "README.txt"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{tld}
18
+ s.rubygems_version = %q{1.3.1}
19
+ s.summary = %q{Provides meta information for Internet Top Level Domains (TLDs) such as a descriptive name, associated currency code and the TLD category.}
20
+ s.test_files = ["test/test_tld.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_runtime_dependency(%q<alexrabarts-iso_country_codes>, [">= 0"])
28
+ s.add_development_dependency(%q<hoe>, [">= 1.8.2"])
29
+ else
30
+ s.add_dependency(%q<alexrabarts-iso_country_codes>, [">= 0"])
31
+ s.add_dependency(%q<hoe>, [">= 1.8.2"])
32
+ end
33
+ else
34
+ s.add_dependency(%q<alexrabarts-iso_country_codes>, [">= 0"])
35
+ s.add_dependency(%q<hoe>, [">= 1.8.2"])
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alexrabarts-tld
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex Rabarts
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-11-28 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: alexrabarts-iso_country_codes
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: hoe
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.8.2
32
+ version:
33
+ description: Provides meta information for Internet Top Level Domains (TLDs) such as a descriptive name, associated currency code and the TLD category.
34
+ email:
35
+ - alexrabarts@gmail.com
36
+ executables: []
37
+
38
+ extensions: []
39
+
40
+ extra_rdoc_files:
41
+ - History.txt
42
+ - Manifest.txt
43
+ - README.txt
44
+ files:
45
+ - History.txt
46
+ - Manifest.txt
47
+ - README.txt
48
+ - Rakefile
49
+ - lib/tld.rb
50
+ - lib/tld/alpha3.rb
51
+ - lib/tld/cc_tld.rb
52
+ - lib/tld/currency.rb
53
+ - lib/tld/generic_tld.rb
54
+ - lib/tld/infrastructure_tld.rb
55
+ - lib/tld/name.rb
56
+ - lib/tld/pseudo_tld.rb
57
+ - lib/tld/reserved_tld.rb
58
+ - lib/tld/retired_tld.rb
59
+ - lib/tld/sponsored_tld.rb
60
+ - lib/tld/tld.rb
61
+ - rakelib/cultivate.rake
62
+ - rakelib/tld.rake
63
+ - rakelib/tld.rb
64
+ - rakelib/tld.rb.erb
65
+ - test/test_tld.rb
66
+ - tld.gemspec
67
+ has_rdoc: true
68
+ homepage:
69
+ post_install_message:
70
+ rdoc_options:
71
+ - --main
72
+ - README.txt
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ version:
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "0"
86
+ version:
87
+ requirements: []
88
+
89
+ rubyforge_project: tld
90
+ rubygems_version: 1.2.0
91
+ signing_key:
92
+ specification_version: 2
93
+ summary: Provides meta information for Internet Top Level Domains (TLDs) such as a descriptive name, associated currency code and the TLD category.
94
+ test_files:
95
+ - test/test_tld.rb