addresslogic 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ == 1.0.1
2
+
3
+ * Changed inclusion method to use apply_addresslogic instead of include Addresslogic. This allows you to pass options and specify alternate fields.
4
+
5
+ == 1.0.0
6
+
7
+ * Initial release
@@ -1,9 +1,11 @@
1
- init.rb
2
- lib/addresslogic/version.rb
3
- lib/addresslogic.rb
4
- Manifest
1
+ CHANGELOG.rdoc
5
2
  MIT-LICENSE
6
- Rakefile
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 url
37
+ $ sudo script/plugin install git://github.com/binarylogic/addresslogic.git
38
38
 
39
- Then ust 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.
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
- include Addresslogic
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
- require 'rubygems'
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
- Echoe.new 'addresslogic' do |p|
6
- p.version = Addresslogic::Version::STRING
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.project = 'addresslogic'
10
- p.summary = "Tools for displaying addresses"
12
+ p.summary = "Easily display addresses."
13
+ p.description = "Easily display addresses."
11
14
  p.url = "http://github.com/binarylogic/addresslogic"
12
- p.dependencies = %w(echoe)
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 "addresslogic/version"
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
- # include AddressLogic
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
- # Returns the parts of an address in an array. Example:
13
- #
14
- # ["Street1", "Street2", "City, State, Zip", "Country"]
15
- #
16
- # This makes displaying addresses on your view pretty simple:
17
- #
18
- # address.address_parts.join("<br />")
19
- #
20
- # === Options
21
- #
22
- # * <tt>only:</tt> fields you want included in the result
23
- # * <tt>except:</tt> any fields you want excluded from the result
24
- def address_parts(options = {})
25
- options[:only] = [options[:only]] if options[:only] && !options[:only].is_a?(Array)
26
- options[:except] = [options[:except]] if options[:except] && !options[:except].is_a?(Array)
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
- parts = {}
29
- [:street1, :street2, :city, :state, :zip, :country].each do |part|
30
- next if !respond_to?(part)
31
- value = send(part)
32
- next if value.to_s.strip == "" || (options[:only] && !options[:only].include?(part)) || (options[:except] && options[:except].include?(part))
33
- parts[part] = value
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
- state_parts = [parts[:state], parts[:zip]].compact.join(" ")
37
- state_parts = nil if state_parts.strip == ""
38
- city_parts = [parts[:city], state_parts].compact.join(", ")
39
- city_parts = nil if city_parts.strip == ""
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)
@@ -43,7 +43,7 @@ module Addresslogic
43
43
  end
44
44
 
45
45
  MAJOR = 1
46
- MINOR = 0
46
+ MINOR = 1
47
47
  TINY = 0
48
48
 
49
49
  # The current version as a Version instance
data/rails/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ require "addresslogic/version"
2
+ require "addresslogic"
@@ -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 ["Street1", "Street2", "City, State 22933", "United States of America"], address.address_parts
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 ["Street1", "City, State 22933", "United States of America"], address.address_parts
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 ["Street1", "City, 22933"], address.address_parts
11
+ assert_equal ["12 Fancy House", "London W1 8AJ"], address.address_parts
15
12
 
16
13
  address.city = ""
17
- assert_equal ["Street1", "22933"], address.address_parts
14
+ assert_equal ["12 Fancy House", "W1 8AJ"], address.address_parts
18
15
 
19
16
  address.street1 = ""
20
- assert_equal ["22933"], address.address_parts
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 ["Street2"], address.address_parts(:only => :street2)
28
- assert_equal ["Street1", "Street2"], address.address_parts(:only => [:street1, :street2])
29
- assert_equal ["Street1", "City, State 22933", "United States of America"], address.address_parts(:except => :street2)
30
- assert_equal ["City, State 22933", "United States of America"], address.address_parts(:except => [:street1, :street2])
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 = "Street1"
38
- @address.street2 = "Street2"
39
- @address.city = "City"
40
- @address.state = "State"
41
- @address.zip = "22933"
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, :state, :zip, :country
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.0.0
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-01-16 00:00:00 -05:00
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: echoe
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: "0"
23
+ version: 1.12.2
34
24
  version:
35
- description: Tools for displaying addresses
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
- - lib/addresslogic/version.rb
43
- - lib/addresslogic.rb
32
+ - Manifest.txt
33
+ - CHANGELOG.rdoc
44
34
  - README.rdoc
45
35
  files:
46
- - init.rb
47
- - lib/addresslogic/version.rb
48
- - lib/addresslogic.rb
49
- - Manifest
36
+ - CHANGELOG.rdoc
50
37
  - MIT-LICENSE
51
- - Rakefile
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: "1.2"
67
+ version: "0"
79
68
  version:
80
69
  requirements: []
81
70
 
82
71
  rubyforge_project: addresslogic
83
- rubygems_version: 1.3.1
72
+ rubygems_version: 1.3.3
84
73
  signing_key:
85
- specification_version: 2
86
- summary: Tools for displaying addresses
87
- test_files:
88
- - test/test_addresslogic.rb
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