address_engine 1.0.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.
- data/CHANGELOG +3 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +38 -0
- data/LICENSE.txt +20 -0
- data/README.md +28 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/address_engine.gemspec +68 -0
- data/app/models/configurable.rb +67 -0
- data/lib/address_engine.rb +1 -0
- data/lib/address_engine/engine.rb +4 -0
- data/lib/generators/address_engine/install_generator.rb +23 -0
- data/lib/generators/address_engine/templates/configurable.yml +33 -0
- data/lib/generators/address_engine/templates/migration.rb +22 -0
- metadata +166 -0
data/CHANGELOG
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
builder (3.0.0)
|
5
|
+
cucumber (0.10.0)
|
6
|
+
builder (>= 2.1.2)
|
7
|
+
diff-lcs (~> 1.1.2)
|
8
|
+
gherkin (~> 2.3.2)
|
9
|
+
json (~> 1.4.6)
|
10
|
+
term-ansicolor (~> 1.0.5)
|
11
|
+
diff-lcs (1.1.2)
|
12
|
+
gherkin (2.3.3)
|
13
|
+
json (~> 1.4.6)
|
14
|
+
git (1.2.5)
|
15
|
+
jeweler (1.5.2)
|
16
|
+
bundler (~> 1.0.0)
|
17
|
+
git (>= 1.2.5)
|
18
|
+
rake
|
19
|
+
json (1.4.6)
|
20
|
+
rake (0.8.7)
|
21
|
+
rspec (2.4.0)
|
22
|
+
rspec-core (~> 2.4.0)
|
23
|
+
rspec-expectations (~> 2.4.0)
|
24
|
+
rspec-mocks (~> 2.4.0)
|
25
|
+
rspec-core (2.4.0)
|
26
|
+
rspec-expectations (2.4.0)
|
27
|
+
diff-lcs (~> 1.1.2)
|
28
|
+
rspec-mocks (2.4.0)
|
29
|
+
term-ansicolor (1.0.5)
|
30
|
+
|
31
|
+
PLATFORMS
|
32
|
+
ruby
|
33
|
+
|
34
|
+
DEPENDENCIES
|
35
|
+
cucumber
|
36
|
+
jeweler
|
37
|
+
rake
|
38
|
+
rspec
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 Paul Campbell
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Address Engine #
|
2
|
+
|
3
|
+
An `Address` model for your Rails 3 apps. Fields inspired from Amazon.com:
|
4
|
+
|
5
|
+
create_table "addresses", :force => true do |t|
|
6
|
+
t.string "email"
|
7
|
+
t.string "firstname"
|
8
|
+
t.string "lastname"
|
9
|
+
t.text "address"
|
10
|
+
t.string "city"
|
11
|
+
t.string "state_province_region"
|
12
|
+
t.string "zip_postal_code"
|
13
|
+
t.string "country"
|
14
|
+
t.string "phone"
|
15
|
+
t.datetime "created_at"
|
16
|
+
t.datetime "updated_at"
|
17
|
+
t.string "middlename"
|
18
|
+
end
|
19
|
+
|
20
|
+
Requires the `carmen` gem (https://rubygems.org/gems/carmen):
|
21
|
+
|
22
|
+
gem install carmen
|
23
|
+
|
24
|
+
## Copyright ##
|
25
|
+
|
26
|
+
Copyright (c) 2011 Paul Campbell. See LICENSE.txt for
|
27
|
+
further details.
|
28
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'rake'
|
11
|
+
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
+
gem.name = "address_engine"
|
16
|
+
gem.homepage = "http://github.com/paulca/address_engine"
|
17
|
+
gem.license = "MIT"
|
18
|
+
gem.summary = %Q{For apps that need an address table in a hurry!}
|
19
|
+
gem.description = %Q{Inspired by the address fields on amazon.com}
|
20
|
+
gem.email = "paul@rslw.com"
|
21
|
+
gem.authors = ["Paul Campbell"]
|
22
|
+
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
|
+
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
+
gem.add_runtime_dependency 'rails', '~>3.0'
|
25
|
+
gem.add_runtime_dependency 'activerecord', '~>3.0'
|
26
|
+
gem.files = FileList["[A-Za-z]*", "lib/**/*", "app/**/*"]
|
27
|
+
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
28
|
+
end
|
29
|
+
Jeweler::RubygemsDotOrgTasks.new
|
30
|
+
|
31
|
+
require 'rspec/core'
|
32
|
+
require 'rspec/core/rake_task'
|
33
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
34
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
35
|
+
end
|
36
|
+
|
37
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
38
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
39
|
+
spec.rcov = true
|
40
|
+
end
|
41
|
+
|
42
|
+
require 'cucumber/rake/task'
|
43
|
+
Cucumber::Rake::Task.new(:features)
|
44
|
+
|
45
|
+
task :default => :spec
|
46
|
+
|
47
|
+
require 'rake/rdoctask'
|
48
|
+
Rake::RDocTask.new do |rdoc|
|
49
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
50
|
+
|
51
|
+
rdoc.rdoc_dir = 'rdoc'
|
52
|
+
rdoc.title = "address_engine #{version}"
|
53
|
+
rdoc.rdoc_files.include('README*')
|
54
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
55
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{address_engine}
|
8
|
+
s.version = "1.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Paul Campbell"]
|
12
|
+
s.date = %q{2011-03-08}
|
13
|
+
s.description = %q{Inspired by the address fields on amazon.com}
|
14
|
+
s.email = %q{paul@rslw.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"CHANGELOG",
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"LICENSE.txt",
|
24
|
+
"README.md",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"address_engine.gemspec",
|
28
|
+
"app/models/configurable.rb",
|
29
|
+
"lib/address_engine.rb",
|
30
|
+
"lib/address_engine/engine.rb",
|
31
|
+
"lib/generators/address_engine/install_generator.rb",
|
32
|
+
"lib/generators/address_engine/templates/configurable.yml",
|
33
|
+
"lib/generators/address_engine/templates/migration.rb"
|
34
|
+
]
|
35
|
+
s.homepage = %q{http://github.com/paulca/address_engine}
|
36
|
+
s.licenses = ["MIT"]
|
37
|
+
s.require_paths = ["lib"]
|
38
|
+
s.rubygems_version = %q{1.5.0}
|
39
|
+
s.summary = %q{For apps that need an address table in a hurry!}
|
40
|
+
|
41
|
+
if s.respond_to? :specification_version then
|
42
|
+
s.specification_version = 3
|
43
|
+
|
44
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
48
|
+
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
49
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.0"])
|
50
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
53
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
54
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
55
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
56
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
57
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
58
|
+
end
|
59
|
+
else
|
60
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
61
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
62
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
63
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
64
|
+
s.add_dependency(%q<rails>, ["~> 3.0"])
|
65
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class Address < ActiveRecord::Base
|
2
|
+
|
3
|
+
validates_presence_of :firstname, :lastname
|
4
|
+
validates_presence_of :country
|
5
|
+
validates_format_of :phone, :with => /^[0-9\-\+ ]*$/
|
6
|
+
validates_format_of :email, :with => /^[^@]*@.*\.[^\.]*$/, :message => 'is invalid. Please enter an address in the format of your@email_address.com'
|
7
|
+
validates_presence_of :phone, :message => ' is required.'
|
8
|
+
|
9
|
+
def country_name
|
10
|
+
Carmen::country_name(country)
|
11
|
+
end
|
12
|
+
|
13
|
+
def order
|
14
|
+
order_as_shipping.present? ? order_as_shipping : order_as_billing
|
15
|
+
end
|
16
|
+
|
17
|
+
def shipping_rules
|
18
|
+
ShippingRule.for_country(country)
|
19
|
+
end
|
20
|
+
|
21
|
+
def filled_in?
|
22
|
+
address? && country?
|
23
|
+
end
|
24
|
+
|
25
|
+
def name
|
26
|
+
[].tap do |out|
|
27
|
+
out << firstname if firstname.present?
|
28
|
+
out << lastname if lastname.present?
|
29
|
+
end.join(' ')
|
30
|
+
end
|
31
|
+
|
32
|
+
def parts
|
33
|
+
[].tap do |out|
|
34
|
+
out << name
|
35
|
+
if address.present?
|
36
|
+
address.split("\n").each do |line|
|
37
|
+
out << line
|
38
|
+
end
|
39
|
+
end
|
40
|
+
out << city if city.present?
|
41
|
+
out << state_province_region if state_province_region.present?
|
42
|
+
out << zip_postal_code if zip_postal_code.present?
|
43
|
+
out << country_name if country.present?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def readable_parts
|
48
|
+
[].tap do |out|
|
49
|
+
out << name
|
50
|
+
|
51
|
+
if address.present?
|
52
|
+
address.split("\n").each do |line|
|
53
|
+
out << line
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
last_line = []
|
58
|
+
last_line << city if city.present?
|
59
|
+
last_line << state_province_region if state_province_region.present?
|
60
|
+
last_line << zip_postal_code if zip_postal_code.present?
|
61
|
+
|
62
|
+
out << last_line.join(', ')
|
63
|
+
out << country_name if country.present?
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'address_engine/engine'
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
module AddressEngine
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
include Rails::Generators::Migration
|
5
|
+
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
@source_root ||= File.join(File.dirname(__FILE__), 'templates')
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.next_migration_number(dirname)
|
12
|
+
if ActiveRecord::Base.timestamped_migrations
|
13
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
14
|
+
else
|
15
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def create_migration_file
|
20
|
+
migration_template 'migration.rb', 'db/migrate/create_addresses.rb'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This file controls what config variables you want to be able to allow your users
|
2
|
+
# to set, as well as those you'll be able to access from within the application.
|
3
|
+
#
|
4
|
+
# If you want to be able to access a string config[:site_title], for example:
|
5
|
+
#
|
6
|
+
# site_title:
|
7
|
+
# name: Site Title
|
8
|
+
# type: string
|
9
|
+
# default: My Site
|
10
|
+
#
|
11
|
+
# 'name' is the name that appears in the edit form
|
12
|
+
#
|
13
|
+
# 'type' can be 'string' for a text field, 'password' for a password field or 'text' for a text area
|
14
|
+
# 'type' defaults to 'string'
|
15
|
+
#
|
16
|
+
# 'default' is the default value to use if there's no entry in the database. Otherwise, nil will be returned
|
17
|
+
#
|
18
|
+
# Some Examples:
|
19
|
+
#
|
20
|
+
# site_title:
|
21
|
+
# name: Site Title
|
22
|
+
# default: My Site
|
23
|
+
# type: string
|
24
|
+
#
|
25
|
+
# site_description:
|
26
|
+
# name: Description for Google
|
27
|
+
# default: Lots of Awesomeness Here
|
28
|
+
# type: text
|
29
|
+
#
|
30
|
+
# secret:
|
31
|
+
# name: Secret Password for Accessing Secret Areas
|
32
|
+
# default: secret
|
33
|
+
# type: password
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class CreateAddresses < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "addresses", :force => true do |t|
|
4
|
+
t.string "email"
|
5
|
+
t.string "firstname"
|
6
|
+
t.string "lastname"
|
7
|
+
t.text "address"
|
8
|
+
t.string "city"
|
9
|
+
t.string "state_province_region"
|
10
|
+
t.string "zip_postal_code"
|
11
|
+
t.string "country"
|
12
|
+
t.string "phone"
|
13
|
+
t.datetime "created_at"
|
14
|
+
t.datetime "updated_at"
|
15
|
+
t.string "middlename"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.down
|
20
|
+
drop_table :addresses
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: address_engine
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Paul Campbell
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-03-08 00:00:00 +00:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
type: :development
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
name: rake
|
33
|
+
version_requirements: *id001
|
34
|
+
prerelease: false
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
type: :development
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
name: jeweler
|
47
|
+
version_requirements: *id002
|
48
|
+
prerelease: false
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
type: :development
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
name: rspec
|
61
|
+
version_requirements: *id003
|
62
|
+
prerelease: false
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
type: :development
|
65
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
name: cucumber
|
75
|
+
version_requirements: *id004
|
76
|
+
prerelease: false
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
type: :runtime
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ~>
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
hash: 7
|
85
|
+
segments:
|
86
|
+
- 3
|
87
|
+
- 0
|
88
|
+
version: "3.0"
|
89
|
+
name: rails
|
90
|
+
version_requirements: *id005
|
91
|
+
prerelease: false
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
type: :runtime
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 7
|
100
|
+
segments:
|
101
|
+
- 3
|
102
|
+
- 0
|
103
|
+
version: "3.0"
|
104
|
+
name: activerecord
|
105
|
+
version_requirements: *id006
|
106
|
+
prerelease: false
|
107
|
+
description: Inspired by the address fields on amazon.com
|
108
|
+
email: paul@rslw.com
|
109
|
+
executables: []
|
110
|
+
|
111
|
+
extensions: []
|
112
|
+
|
113
|
+
extra_rdoc_files:
|
114
|
+
- LICENSE.txt
|
115
|
+
- README.md
|
116
|
+
files:
|
117
|
+
- CHANGELOG
|
118
|
+
- Gemfile
|
119
|
+
- Gemfile.lock
|
120
|
+
- LICENSE.txt
|
121
|
+
- README.md
|
122
|
+
- Rakefile
|
123
|
+
- VERSION
|
124
|
+
- address_engine.gemspec
|
125
|
+
- app/models/configurable.rb
|
126
|
+
- lib/address_engine.rb
|
127
|
+
- lib/address_engine/engine.rb
|
128
|
+
- lib/generators/address_engine/install_generator.rb
|
129
|
+
- lib/generators/address_engine/templates/configurable.yml
|
130
|
+
- lib/generators/address_engine/templates/migration.rb
|
131
|
+
has_rdoc: true
|
132
|
+
homepage: http://github.com/paulca/address_engine
|
133
|
+
licenses:
|
134
|
+
- MIT
|
135
|
+
post_install_message:
|
136
|
+
rdoc_options: []
|
137
|
+
|
138
|
+
require_paths:
|
139
|
+
- lib
|
140
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
none: false
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
hash: 3
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
hash: 3
|
155
|
+
segments:
|
156
|
+
- 0
|
157
|
+
version: "0"
|
158
|
+
requirements: []
|
159
|
+
|
160
|
+
rubyforge_project:
|
161
|
+
rubygems_version: 1.5.0
|
162
|
+
signing_key:
|
163
|
+
specification_version: 3
|
164
|
+
summary: For apps that need an address table in a hurry!
|
165
|
+
test_files: []
|
166
|
+
|