addresslogic 1.0.0 → 1.1.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.rdoc +7 -0
- data/{Manifest → Manifest.txt} +7 -5
- data/README.rdoc +9 -3
- data/Rakefile +14 -7
- data/init.rb +1 -2
- data/lib/addresslogic.rb +72 -28
- data/lib/addresslogic/version.rb +1 -1
- data/rails/init.rb +2 -0
- data/test/test_addresslogic.rb +14 -18
- data/test/test_helper.rb +2 -1
- metadata +22 -34
- data/addresslogic.gemspec +0 -38
data/CHANGELOG.rdoc
ADDED
data/{Manifest → Manifest.txt}
RENAMED
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
lib/addresslogic/version.rb
|
3
|
-
lib/addresslogic.rb
|
4
|
-
Manifest
|
1
|
+
CHANGELOG.rdoc
|
5
2
|
MIT-LICENSE
|
6
|
-
|
3
|
+
Manifest.txt
|
7
4
|
README.rdoc
|
5
|
+
Rakefile
|
6
|
+
init.rb
|
7
|
+
lib/addresslogic.rb
|
8
|
+
lib/addresslogic/version.rb
|
9
|
+
rails/init.rb
|
8
10
|
test/test_addresslogic.rb
|
9
11
|
test/test_helper.rb
|
data/README.rdoc
CHANGED
@@ -34,12 +34,18 @@ As a gem:
|
|
34
34
|
|
35
35
|
Or as a plugin
|
36
36
|
|
37
|
-
$ sudo script/plugin install
|
37
|
+
$ sudo script/plugin install git://github.com/binarylogic/addresslogic.git
|
38
38
|
|
39
|
-
Then
|
39
|
+
Then just include the AddressLogic module into any class of your choice. All that it assumes is that you have the street1, street2, city, state, zip, country (optional) methods.
|
40
40
|
|
41
41
|
class Address
|
42
|
-
|
42
|
+
apply_addresslogic
|
43
|
+
end
|
44
|
+
|
45
|
+
You can specify the fields too:
|
46
|
+
|
47
|
+
class Address
|
48
|
+
apply_addresslogic :fields => [:street1, :street2, :city, [:state, :zip], :country]
|
43
49
|
end
|
44
50
|
|
45
51
|
== Helpful links
|
data/Rakefile
CHANGED
@@ -1,13 +1,20 @@
|
|
1
|
-
|
1
|
+
ENV['RDOCOPT'] = "-S -f html -T hanna"
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require "hoe"
|
2
5
|
require File.dirname(__FILE__) << "/lib/addresslogic/version"
|
3
|
-
require 'echoe'
|
4
6
|
|
5
|
-
|
6
|
-
p.
|
7
|
+
Hoe.new("Addresslogic", Addresslogic::Version::STRING) do |p|
|
8
|
+
p.name = "addresslogic"
|
9
|
+
p.rubyforge_name = "addresslogic"
|
7
10
|
p.author = "Ben Johnson of Binary Logic"
|
8
11
|
p.email = 'bjohnson@binarylogic.com'
|
9
|
-
p.
|
10
|
-
p.
|
12
|
+
p.summary = "Easily display addresses."
|
13
|
+
p.description = "Easily display addresses."
|
11
14
|
p.url = "http://github.com/binarylogic/addresslogic"
|
12
|
-
p.
|
15
|
+
p.history_file = "CHANGELOG.rdoc"
|
16
|
+
p.readme_file = "README.rdoc"
|
17
|
+
p.extra_rdoc_files = ["CHANGELOG.rdoc", "README.rdoc"]
|
18
|
+
p.remote_rdoc_dir = ''
|
19
|
+
p.test_globs = ["test/*/test_*.rb", "test/*_test.rb", "test/*/*_test.rb"]
|
13
20
|
end
|
data/init.rb
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
require "
|
2
|
-
require "addresslogic"
|
1
|
+
require File.dirname(__FILE__) + "/rails/init.rb"
|
data/lib/addresslogic.rb
CHANGED
@@ -1,42 +1,86 @@
|
|
1
|
+
require 'activerecord'
|
2
|
+
|
1
3
|
# = Address Logic
|
2
4
|
#
|
3
5
|
# This is a simple module that you can include into any classm as long as it has a street1, street2, city, state, zip, and country (optional)
|
4
6
|
# methods. Just include it into your class like so:
|
5
7
|
#
|
6
8
|
# class Address
|
7
|
-
#
|
9
|
+
# apply_addresslogic :fields => [:street1, :street2, :city, [:state, :zip], :country]
|
8
10
|
# end
|
9
11
|
#
|
12
|
+
# The above will return:
|
13
|
+
# ["Street1", "Street2", "City", "State Zip", "Country"]
|
14
|
+
#
|
10
15
|
# This adds a sigle method: address_parts. More on this method below...
|
11
16
|
module Addresslogic
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
|
18
|
+
def self.included(base)
|
19
|
+
base.extend ClassMethods
|
20
|
+
end
|
21
|
+
|
22
|
+
module ClassMethods
|
23
|
+
attr_accessor :address_parts_fields
|
24
|
+
|
25
|
+
def apply_addresslogic(args = {})
|
26
|
+
self.address_parts_fields = args[:fields] || [:street1, :street2, :city, [:state, :zip], :country]
|
27
|
+
include Addresslogic::InstanceMethods
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
module InstanceMethods
|
32
|
+
# Returns the parts of an address in an array. Example:
|
33
|
+
#
|
34
|
+
# ["Street1", "Street2", "City", "State Zip", "Country"]
|
35
|
+
#
|
36
|
+
# This makes displaying addresses on your view pretty simple:
|
37
|
+
#
|
38
|
+
# address.address_parts.join("<br />")
|
39
|
+
#
|
40
|
+
# === Options
|
41
|
+
#
|
42
|
+
# * <tt>only:</tt> fields you want included in the result
|
43
|
+
# * <tt>except:</tt> any fields you want excluded from the result
|
44
|
+
def address_parts(options = {})
|
45
|
+
options[:only] = [options[:only]] if options[:only] && !options[:only].is_a?(Array)
|
46
|
+
options[:except] = [options[:except]] if options[:except] && !options[:except].is_a?(Array)
|
27
47
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
48
|
+
parts = []
|
49
|
+
address_parts_fields.each do |part|
|
50
|
+
if part.is_a?(Array)
|
51
|
+
# We only want to allow 2d arrays
|
52
|
+
subparts = []
|
53
|
+
part.flatten.each do |subpart|
|
54
|
+
next if !respond_to?(subpart)
|
55
|
+
value = send(subpart)
|
56
|
+
next if value.to_s.blank? || (options[:only] && !options[:only].include?(subpart)) || (options[:except] && options[:except].include?(subpart))
|
57
|
+
subparts << value
|
58
|
+
end
|
59
|
+
parts << subparts unless subparts.compact.empty?
|
60
|
+
else
|
61
|
+
next if !respond_to?(part)
|
62
|
+
value = send(part)
|
63
|
+
next if value.to_s.strip == "" || (options[:only] && !options[:only].include?(part)) || (options[:except] && options[:except].include?(part))
|
64
|
+
parts << value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
result = parts.collect do |part|
|
69
|
+
if part.is_a?(Array)
|
70
|
+
part.collect{|sub| sub.to_s.strip.blank? ? nil : sub}.join(" ")
|
71
|
+
else
|
72
|
+
part.to_s.strip.blank? ? nil : part
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
return result.compact
|
34
77
|
end
|
35
78
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
[parts[:street1], parts[:street2], city_parts, parts[:country]].compact
|
79
|
+
private
|
80
|
+
def address_parts_fields
|
81
|
+
self.class.address_parts_fields
|
82
|
+
end
|
41
83
|
end
|
42
|
-
end
|
84
|
+
end
|
85
|
+
|
86
|
+
ActiveRecord::Base.send(:include, Addresslogic)
|
data/lib/addresslogic/version.rb
CHANGED
data/rails/init.rb
ADDED
data/test/test_addresslogic.rb
CHANGED
@@ -2,44 +2,40 @@ require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
2
|
|
3
3
|
class TestAddresslogix < Test::Unit::TestCase
|
4
4
|
def test_address_parts
|
5
|
-
assert_equal ["
|
5
|
+
assert_equal ["12 Fancy House", "Bond Street", "London W1 8AJ", "United Kingdom"], address.address_parts
|
6
6
|
|
7
7
|
address.street2 = ""
|
8
|
-
assert_equal ["
|
9
|
-
|
10
|
-
address.state = ""
|
11
|
-
assert_equal ["Street1", "City, 22933", "United States of America"], address.address_parts
|
8
|
+
assert_equal ["12 Fancy House", "London W1 8AJ", "United Kingdom"], address.address_parts
|
12
9
|
|
13
10
|
address.country = ""
|
14
|
-
assert_equal ["
|
11
|
+
assert_equal ["12 Fancy House", "London W1 8AJ"], address.address_parts
|
15
12
|
|
16
13
|
address.city = ""
|
17
|
-
assert_equal ["
|
14
|
+
assert_equal ["12 Fancy House", "W1 8AJ"], address.address_parts
|
18
15
|
|
19
16
|
address.street1 = ""
|
20
|
-
assert_equal ["
|
17
|
+
assert_equal ["W1 8AJ"], address.address_parts
|
21
18
|
|
22
19
|
address.zip = ""
|
23
20
|
assert_equal [], address.address_parts
|
24
21
|
end
|
25
22
|
|
26
23
|
def test_options
|
27
|
-
assert_equal ["
|
28
|
-
assert_equal ["
|
29
|
-
assert_equal ["
|
30
|
-
assert_equal ["
|
24
|
+
assert_equal ["Bond Street"], address.address_parts(:only => :street2)
|
25
|
+
assert_equal ["12 Fancy House", "Bond Street"], address.address_parts(:only => [:street1, :street2])
|
26
|
+
assert_equal ["12 Fancy House", "London W1 8AJ", "United Kingdom"], address.address_parts(:except => :street2)
|
27
|
+
assert_equal ["London W1 8AJ", "United Kingdom"], address.address_parts(:except => [:street1, :street2])
|
31
28
|
end
|
32
29
|
|
33
30
|
private
|
34
31
|
def address
|
35
32
|
return @address if @address
|
36
33
|
@address = Address.new
|
37
|
-
@address.street1 = "
|
38
|
-
@address.street2 = "
|
39
|
-
@address.city = "
|
40
|
-
@address.
|
41
|
-
@address.
|
42
|
-
@address.country = "United States of America"
|
34
|
+
@address.street1 = "12 Fancy House"
|
35
|
+
@address.street2 = "Bond Street"
|
36
|
+
@address.city = "London"
|
37
|
+
@address.zip = "W1 8AJ"
|
38
|
+
@address.country = "United Kingdom"
|
43
39
|
@address
|
44
40
|
end
|
45
41
|
end
|
data/test/test_helper.rb
CHANGED
@@ -4,6 +4,7 @@ require "ruby-debug"
|
|
4
4
|
require File.dirname(__FILE__) + "/../lib/addresslogic"
|
5
5
|
|
6
6
|
class Address
|
7
|
-
attr_accessor :street1, :street2, :city, :
|
7
|
+
attr_accessor :street1, :street2, :city, :zip, :country
|
8
8
|
include Addresslogic
|
9
|
+
apply_addresslogic :fields => [:street1, :street2, [:city, :zip], :country]
|
9
10
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: addresslogic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Johnson of Binary Logic
|
@@ -9,58 +9,47 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-14 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: "0"
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: echoe
|
16
|
+
name: hoe
|
27
17
|
type: :development
|
28
18
|
version_requirement:
|
29
19
|
version_requirements: !ruby/object:Gem::Requirement
|
30
20
|
requirements:
|
31
21
|
- - ">="
|
32
22
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
23
|
+
version: 1.12.2
|
34
24
|
version:
|
35
|
-
description:
|
25
|
+
description: Easily display addresses.
|
36
26
|
email: bjohnson@binarylogic.com
|
37
27
|
executables: []
|
38
28
|
|
39
29
|
extensions: []
|
40
30
|
|
41
31
|
extra_rdoc_files:
|
42
|
-
-
|
43
|
-
-
|
32
|
+
- Manifest.txt
|
33
|
+
- CHANGELOG.rdoc
|
44
34
|
- README.rdoc
|
45
35
|
files:
|
46
|
-
-
|
47
|
-
- lib/addresslogic/version.rb
|
48
|
-
- lib/addresslogic.rb
|
49
|
-
- Manifest
|
36
|
+
- CHANGELOG.rdoc
|
50
37
|
- MIT-LICENSE
|
51
|
-
-
|
38
|
+
- Manifest.txt
|
52
39
|
- README.rdoc
|
40
|
+
- Rakefile
|
41
|
+
- init.rb
|
42
|
+
- lib/addresslogic.rb
|
43
|
+
- lib/addresslogic/version.rb
|
44
|
+
- rails/init.rb
|
53
45
|
- test/test_addresslogic.rb
|
54
46
|
- test/test_helper.rb
|
55
|
-
- addresslogic.gemspec
|
56
47
|
has_rdoc: true
|
57
48
|
homepage: http://github.com/binarylogic/addresslogic
|
49
|
+
licenses: []
|
50
|
+
|
58
51
|
post_install_message:
|
59
52
|
rdoc_options:
|
60
|
-
- --line-numbers
|
61
|
-
- --inline-source
|
62
|
-
- --title
|
63
|
-
- Addresslogic
|
64
53
|
- --main
|
65
54
|
- README.rdoc
|
66
55
|
require_paths:
|
@@ -75,15 +64,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
64
|
requirements:
|
76
65
|
- - ">="
|
77
66
|
- !ruby/object:Gem::Version
|
78
|
-
version: "
|
67
|
+
version: "0"
|
79
68
|
version:
|
80
69
|
requirements: []
|
81
70
|
|
82
71
|
rubyforge_project: addresslogic
|
83
|
-
rubygems_version: 1.3.
|
72
|
+
rubygems_version: 1.3.3
|
84
73
|
signing_key:
|
85
|
-
specification_version:
|
86
|
-
summary:
|
87
|
-
test_files:
|
88
|
-
|
89
|
-
- test/test_helper.rb
|
74
|
+
specification_version: 3
|
75
|
+
summary: Easily display addresses.
|
76
|
+
test_files: []
|
77
|
+
|
data/addresslogic.gemspec
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
Gem::Specification.new do |s|
|
4
|
-
s.name = %q{addresslogic}
|
5
|
-
s.version = "1.0.0"
|
6
|
-
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Ben Johnson of Binary Logic"]
|
9
|
-
s.date = %q{2009-01-16}
|
10
|
-
s.description = %q{Tools for displaying addresses}
|
11
|
-
s.email = %q{bjohnson@binarylogic.com}
|
12
|
-
s.extra_rdoc_files = ["lib/addresslogic/version.rb", "lib/addresslogic.rb", "README.rdoc"]
|
13
|
-
s.files = ["init.rb", "lib/addresslogic/version.rb", "lib/addresslogic.rb", "Manifest", "MIT-LICENSE", "Rakefile", "README.rdoc", "test/test_addresslogic.rb", "test/test_helper.rb", "addresslogic.gemspec"]
|
14
|
-
s.has_rdoc = true
|
15
|
-
s.homepage = %q{http://github.com/binarylogic/addresslogic}
|
16
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Addresslogic", "--main", "README.rdoc"]
|
17
|
-
s.require_paths = ["lib"]
|
18
|
-
s.rubyforge_project = %q{addresslogic}
|
19
|
-
s.rubygems_version = %q{1.3.1}
|
20
|
-
s.summary = %q{Tools for displaying addresses}
|
21
|
-
s.test_files = ["test/test_addresslogic.rb", "test/test_helper.rb"]
|
22
|
-
|
23
|
-
if s.respond_to? :specification_version then
|
24
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
-
s.specification_version = 2
|
26
|
-
|
27
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
-
s.add_runtime_dependency(%q<echoe>, [">= 0"])
|
29
|
-
s.add_development_dependency(%q<echoe>, [">= 0"])
|
30
|
-
else
|
31
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
32
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
33
|
-
end
|
34
|
-
else
|
35
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
36
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
37
|
-
end
|
38
|
-
end
|