colander 0.2.1 → 0.2.2

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/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ .ruby-version
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
+ gem 'rake'
4
+
3
5
  # Specify your gem's dependencies in colander.gemspec
4
6
  gemspec
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Colander [![Build Status](https://secure.travis-ci.org/mynewsdesk/colander.png?branch=master)](http://travis-ci.org/mynewsdesk/colander)
1
+ Colander [![Build Status](https://secure.travis-ci.org/mynewsdesk/colander.png?branch=master)](http://travis-ci.org/mynewsdesk/colander) [![Gem Version](https://badge.fury.io/rb/colander.png)](http://badge.fury.io/rb/colander)
2
2
  ==============
3
3
  Colander is a gem to collect emails from various file formats.
4
4
 
@@ -20,7 +20,7 @@ module Colander
20
20
  protected
21
21
 
22
22
  def collect_emails
23
- parse_file.scan(/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/).flatten.uniq
23
+ parse_file.scan(/\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}\b/).flatten.uniq
24
24
  end
25
25
 
26
26
  def parse_file
@@ -1,3 +1,3 @@
1
1
  module Colander
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -2,9 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe Colander::Parser::Base do
4
4
  describe "#emails" do
5
- it "should responses to it" do
5
+ it "responds to email" do
6
6
  Colander::Parser::Base.any_instance.stub(:parse)
7
- Colander::Parser::Base.new("foo/bar").should respond_to :emails
7
+ expect(Colander::Parser::Base.new("foo/bar")).to respond_to :emails
8
8
  end
9
9
  end
10
10
 
@@ -13,8 +13,8 @@ describe Colander::Parser::Base do
13
13
  Dir.entries(sample_dir).each do |file_name|
14
14
  sample = File.join(sample_dir, file_name)
15
15
  next unless File.file?(sample)
16
- it "should be able to parse the sample #{file_name}" do
17
- Colander.parse(sample).emails.should be_an(Array)
16
+ it "is able to parse the sample #{file_name}" do
17
+ expect(Colander.parse(sample).emails).to be_an(Array)
18
18
  end
19
19
  end
20
20
  end
@@ -2,44 +2,48 @@ require 'spec_helper'
2
2
 
3
3
  describe Colander do
4
4
  describe ".parse" do
5
- it "should raise error if no file path is passed" do
6
- lambda{
5
+ it "raises error if no file path is passed" do
6
+ expect {
7
7
  Colander.parse
8
- }.should raise_exception(ArgumentError)
8
+ }.to raise_error
9
9
  end
10
10
 
11
- it "should raise error if file is unsupported" do
12
- lambda {
11
+ it "raises error if the file couldn't be found" do
12
+ expect {
13
+ Colander.parse("/path/to/hell.csv")
14
+ }.to raise_error
15
+ end
16
+
17
+ it "raises error if file is unsupported" do
18
+ expect {
13
19
  Colander.parse("foo.bar")
14
- }.should raise_error(Colander::InvalidFile)
20
+ }.to raise_error
15
21
  end
16
22
 
17
- it "should not raise error if a file path is passed" do
18
- lambda{
19
- Colander.parse("/file/path")
20
- }.should_not raise_exception(ArgumentError)
23
+ it "does not raise error if a file path is passed" do
24
+ expect {
25
+ Colander.parse("spec/fixtures/plain.csv")
26
+ }.to_not raise_error
21
27
  end
22
28
 
23
29
  it "accepts an option file name and returns correct parser" do
24
- Colander::Parser::Xls.any_instance.stub(:parse)
25
- Colander.parse("/file/path", "apa.xls").should be_a Colander::Parser::Xls
30
+ expect(Colander.parse("spec/fixtures/new-format.xlsx")).to be_a Colander::Parser::Xls
26
31
  end
27
32
 
28
- it "should recognize a xls file and return correct parser" do
29
- path = "/foo/apa.xls"
30
- Colander::Parser::Xls.any_instance.stub(:parse)
31
- Colander.parse(path).should be_a Colander::Parser::Xls
33
+ it "recognizes a xls file and return correct parser" do
34
+ path = "spec/fixtures/new-format.xlsx"
35
+ expect(Colander.parse(path)).to be_a Colander::Parser::Xls
32
36
  end
33
37
 
34
- it "should recognize a xlsx file and return correct parser" do
38
+ it "recognizes a xlsx file and return correct parser" do
35
39
  path = "/foo/apa.xlsx"
36
40
  Colander::Parser::Xlsx.any_instance.stub(:parse)
37
- Colander.parse(path).should be_a Colander::Parser::Xlsx
41
+ expect(Colander.parse(path)).to be_a Colander::Parser::Xlsx
38
42
  end
39
43
 
40
- it "should invoke parse method on the parser" do
41
- Colander::Parser::Xlsx.any_instance.should_receive(:parse)
42
- Colander.parse("/foo/bar.xlsx")
44
+ it "invokes parse method on the parser" do
45
+ expect_any_instance_of(Colander::Parser::Xlsx).to receive(:parse)
46
+ Colander.parse("/foo/apa.xlsx")
43
47
  end
44
48
  end
45
49
  end
@@ -1,3 +1,4 @@
1
1
  name, email, phone
2
2
  Jonas, jonas.forsberg@mynewsdesk.com, +460011234567
3
- Peter, "peter.forsberg@xhockeypro.com", +46 11 2 34567
3
+ Peter, "peter.forsberg@xhockeypro.com", +46 11 2 34567
4
+ Alfred, "alfred.pennyworth@gotham.travel", +99 99 9 99999
@@ -5,13 +5,19 @@ describe Colander::Parser::Plain do
5
5
  it "retreives emails from an csv file" do
6
6
  parser = Colander::Parser::Plain.new("spec/fixtures/plain.csv")
7
7
  parser.parse
8
- parser.emails.sort.should eql(["jonas.forsberg@mynewsdesk.com", "peter.forsberg@xhockeypro.com"].sort)
8
+ expect(parser.emails.sort).to eq ["jonas.forsberg@mynewsdesk.com", "alfred.pennyworth@gotham.travel", "peter.forsberg@xhockeypro.com"].sort
9
+ end
10
+
11
+ it 'supports top-level-domains of all sizes' do
12
+ parser = Colander::Parser::Plain.new("spec/fixtures/plain.csv")
13
+ parser.parse
14
+ expect(parser.emails.sort).to eq ["jonas.forsberg@mynewsdesk.com", "alfred.pennyworth@gotham.travel", "peter.forsberg@xhockeypro.com"].sort
9
15
  end
10
16
 
11
17
  it "retreives emails from an txt file" do
12
18
  parser = Colander::Parser::Plain.new("spec/fixtures/text.txt")
13
19
  parser.parse
14
- parser.emails.sort.should eql(["jonas.forsberg@mynewsdesk.com", "kristian.hellquist@mynewsdesk.com", "richard@mynewsdesk.com"].sort)
20
+ expect(parser.emails.sort).to eq ["jonas.forsberg@mynewsdesk.com", "kristian.hellquist@mynewsdesk.com", "richard@mynewsdesk.com"].sort
15
21
  end
16
22
 
17
23
  end
@@ -4,40 +4,40 @@ describe Colander::Parser::Xls do
4
4
  describe "#parse" do
5
5
  it "stores found emails" do
6
6
  parser = Colander::Parser::Xls.new("file/path")
7
- parser.should_receive(:parse_file).and_return("bruce@wayne.com")
7
+ expect(parser).to receive(:parse_file).and_return("bruce@wayne.com")
8
8
  parser.parse
9
- parser.emails.sort.should eql(["bruce@wayne.com"])
9
+ expect(parser.emails.sort).to eq ["bruce@wayne.com"]
10
10
  end
11
11
 
12
12
  it "raises exception if file is invalid" do
13
13
  parser = Colander::Parser::Xls.new("./#{__FILE__}")
14
- lambda {
14
+ expect {
15
15
  parser.parse
16
- }.should raise_error(Colander::InvalidFile)
16
+ }.to raise_error
17
17
  end
18
18
 
19
19
  it "wraps errors and returns InvalidFile" do
20
20
  parser = Colander::Parser::Xls.new("file/path")
21
- parser.should_receive(:parse_file).and_raise(RuntimeError.new("FUUU"))
21
+ expect(parser).to receive(:parse_file).and_raise(RuntimeError.new("FUUU"))
22
22
  expect {
23
23
  parser.parse
24
- }.to raise_error(Colander::InvalidFile)
24
+ }.to raise_error
25
25
  end
26
26
 
27
27
  it "retreives emails from an 95-excel spreadsheet" do
28
28
  parser = Colander::Parser::Xls.new("spec/fixtures/excel95.xls")
29
29
  parser.parse
30
- parser.emails.sort.should eql(["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort)
30
+ expect(parser.emails.sort).to eq ["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort
31
31
  end
32
32
  it "retreives emails from an xls spreadsheet" do
33
33
  parser = Colander::Parser::Xls.new("spec/fixtures/old-format.xls")
34
34
  parser.parse
35
- parser.emails.sort.should eql(["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort)
35
+ expect(parser.emails.sort).to eq ["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort
36
36
  end
37
37
  it "retreives emails from an 95-excel spreadsheet without file suffix" do
38
38
  parser = Colander::Parser::Xls.new("spec/fixtures/excel95-without-file-suffix")
39
39
  parser.parse
40
- parser.emails.sort.should eql(["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort)
40
+ expect(parser.emails.sort).to eq ["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort
41
41
  end
42
42
  end
43
43
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
  describe Colander::Parser::Xlsx do
3
3
  it "is subclass of Colander::Parser::Xls" do
4
- Colander::Parser::Xlsx.new("foo/bar").should be_a Colander::Parser::Xls
4
+ expect(Colander::Parser::Xlsx.new("foo/bar")).to be_a Colander::Parser::Xls
5
5
  end
6
6
 
7
7
  describe "#parse" do
8
8
  it "retreives emails from an xlsx spreadsheet" do
9
9
  parser = Colander::Parser::Xlsx.new("spec/fixtures/new-format.xlsx")
10
10
  parser.parse
11
- parser.emails.sort.should eql(["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort)
11
+ expect(parser.emails.sort).to eq ["markus.nordin@mynewsdesk.com", "markus@hej.se", "sven@bertil.se", "Adam.A@hotmail.com", "apa@elabs.se", "liam@neeson.net", "david@mynewsdesk.com"].sort
12
12
  end
13
13
  end
14
14
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: colander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
5
4
  prerelease:
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Kristian Hellquist
@@ -10,41 +10,56 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-05-24 00:00:00.000000000 Z
13
+ date: 2013-11-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
+ prerelease: false
16
17
  name: zip
17
- requirement: &70363883863640 !ruby/object:Gem::Requirement
18
+ type: :runtime
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ~>
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.2
18
24
  none: false
25
+ requirement: !ruby/object:Gem::Requirement
19
26
  requirements:
20
27
  - - ~>
21
28
  - !ruby/object:Gem::Version
22
29
  version: 2.0.2
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: *70363883863640
30
+ none: false
26
31
  - !ruby/object:Gem::Dependency
32
+ prerelease: false
27
33
  name: rspec
28
- requirement: &70363883863220 !ruby/object:Gem::Requirement
34
+ type: :development
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
29
40
  none: false
41
+ requirement: !ruby/object:Gem::Requirement
30
42
  requirements:
31
43
  - - ! '>='
32
44
  - !ruby/object:Gem::Version
33
45
  version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: *70363883863220
46
+ none: false
37
47
  - !ruby/object:Gem::Dependency
48
+ prerelease: false
38
49
  name: pry
39
- requirement: &70363883862760 !ruby/object:Gem::Requirement
50
+ type: :development
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
40
56
  none: false
57
+ requirement: !ruby/object:Gem::Requirement
41
58
  requirements:
42
59
  - - ! '>='
43
60
  - !ruby/object:Gem::Version
44
61
  version: '0'
45
- type: :development
46
- prerelease: false
47
- version_requirements: *70363883862760
62
+ none: false
48
63
  description: Exctract an array of emails from various file formats (xls, xlsx, csv,
49
64
  txt)
50
65
  email:
@@ -54,7 +69,7 @@ extensions: []
54
69
  extra_rdoc_files: []
55
70
  files:
56
71
  - .gitignore
57
- - .rbenv-version
72
+ - .ruby-version.example
58
73
  - .rvmrc
59
74
  - .travis.yml
60
75
  - Gemfile
@@ -89,20 +104,26 @@ rdoc_options: []
89
104
  require_paths:
90
105
  - lib
91
106
  required_ruby_version: !ruby/object:Gem::Requirement
92
- none: false
93
107
  requirements:
94
108
  - - ! '>='
95
109
  - !ruby/object:Gem::Version
110
+ segments:
111
+ - 0
112
+ hash: 3478533411363888682
96
113
  version: '0'
97
- required_rubygems_version: !ruby/object:Gem::Requirement
98
114
  none: false
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
116
  requirements:
100
117
  - - ! '>='
101
118
  - !ruby/object:Gem::Version
119
+ segments:
120
+ - 0
121
+ hash: 3478533411363888682
102
122
  version: '0'
123
+ none: false
103
124
  requirements: []
104
125
  rubyforge_project:
105
- rubygems_version: 1.8.11
126
+ rubygems_version: 1.8.23
106
127
  signing_key:
107
128
  specification_version: 3
108
129
  summary: Exctract an array of emails from various file formats