colander 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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