email_list 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,11 +29,14 @@ class EmailList
29
29
 
30
30
  attr_reader :emails
31
31
 
32
- def initialize(string)
33
- string = '' if string.nil?
34
-
35
- @string = string
36
- @emails = @string.split(/,|;\s?/).map &:strip
32
+ def initialize(email_list)
33
+ if email_list.respond_to? :split
34
+ @emails = email_list.split(/,|;\s?/).map &:strip
35
+ elsif email_list.nil?
36
+ @emails = []
37
+ else
38
+ @emails = email_list
39
+ end
37
40
  end
38
41
 
39
42
  def each(&block)
@@ -45,17 +48,24 @@ class EmailList
45
48
  end
46
49
 
47
50
  def to_s
48
- @string.to_s
51
+ @emails.join(", ")
49
52
  end
50
53
 
51
54
  def ==(other)
52
- if other.is_a?(String)
55
+ case other
56
+ when String
53
57
  emails.sort == EmailList.split(other).sort
54
- else
58
+ when Array
59
+ emails == other
60
+ when EmailList
55
61
  emails.sort == other.emails.sort
56
62
  end
57
63
  end
58
64
 
65
+ def +(other)
66
+ EmailList.new emails + other
67
+ end
68
+
59
69
  def valid?
60
70
  emails.each do |email|
61
71
  unless email =~ EMAIL_ADDRESS_EXACT_PATTERN
@@ -1,3 +1,3 @@
1
1
  class EmailList
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -96,12 +96,31 @@ describe EmailList do
96
96
  email_list.should == string
97
97
  end
98
98
 
99
+ it 'compares against arrays' do
100
+ email_list = EmailList.new('foo@example.org, bar@example.org')
101
+
102
+ email_list.should == ['foo@example.org', 'bar@example.org']
103
+ end
104
+
105
+ it 'allows the additional of arrays' do
106
+ email_list = EmailList.new 'foo@example.org'
107
+
108
+ (email_list + ['bar@example.org']).should == EmailList.new('foo@example.org, bar@example.org')
109
+ end
110
+
99
111
  it 'returns an empty email list when given nil' do
100
112
  email_list = EmailList.new(nil)
101
113
 
102
114
  email_list.emails.should == []
103
115
  end
104
116
 
117
+ it 'allows initialization with an array' do
118
+ addresses = ['foo@example.org', 'bar@example.org']
119
+ email_list = EmailList.new addresses
120
+
121
+ email_list.should == addresses
122
+ end
123
+
105
124
  it 'knows the size of the list' do
106
125
  email_list = EmailList.new('foo@example.org, bar@example.org')
107
126
 
metadata CHANGED
@@ -1,46 +1,39 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: email_list
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Michael Guterl
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-08 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
34
30
  description: A gem for managing a list of email addresses stored in a string.
35
- email:
31
+ email:
36
32
  - michael@diminishing.org
37
33
  executables: []
38
-
39
34
  extensions: []
40
-
41
35
  extra_rdoc_files: []
42
-
43
- files:
36
+ files:
44
37
  - .gitignore
45
38
  - .rvmrc
46
39
  - Gemfile
@@ -51,36 +44,27 @@ files:
51
44
  - spec/email_list_spec.rb
52
45
  homepage: http://github.com/recruitmilitary/email_list
53
46
  licenses: []
54
-
55
47
  post_install_message:
56
48
  rdoc_options: []
57
-
58
- require_paths:
49
+ require_paths:
59
50
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
51
+ required_ruby_version: !ruby/object:Gem::Requirement
61
52
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
58
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
78
63
  requirements: []
79
-
80
64
  rubyforge_project: email_list
81
- rubygems_version: 1.8.17
65
+ rubygems_version: 1.8.24
82
66
  signing_key:
83
67
  specification_version: 3
84
68
  summary: A gem for managing a list of email addresses stored in a string.
85
- test_files:
69
+ test_files:
86
70
  - spec/email_list_spec.rb