eolclub_scraper 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f8570da2f9a8905a07137296ca67a9397b5b0207
4
- data.tar.gz: b1820779ac2801b5f70a09a74519b7694dcf6351
3
+ metadata.gz: 7ab165cc0de0faa15e36f4a3db9c3518ec8a4261
4
+ data.tar.gz: 7aae26e65532687130721276796c601ea710e634
5
5
  SHA512:
6
- metadata.gz: a93df9a8ac2b9fd64a5907a0582a6fcd73dbb47da032eb04c52efca48bb09b923c164e0a1e4ed216e3905f2b35da49c983cea66bf5d59b3c92a880088cf72c5b
7
- data.tar.gz: f31eb2f652705d66819c35c74e7c3e20865526f11922cfbb3048f8c35b01b4182c34d7167e69235dbab04e63a96f140891ce4658ccc40adfd782092fa2b8ced9
6
+ metadata.gz: 8cf6fa06f839355b29cb0ac1226730674b36635122f80d0cd7ea15b932c130f05cd096736016873502e5194e54f4a1b914729fa7d6b5d766de50e66fcdb09ef7
7
+ data.tar.gz: 643123765736639a730dd429ea2f1d742199810aa55cd0fd888cb59eaeed5884ff20464e94efb8742c283c3e964db1b89257e712b285593d6c53e9a973df8458
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency 'nokogiri'
22
- spec.add_dependency 'chronic'
23
22
  spec.add_development_dependency "bundler", "~> 1.3"
24
23
  spec.add_development_dependency "rake"
25
24
  spec.add_development_dependency "rspec"
26
25
  spec.add_development_dependency "vcr"
27
26
  spec.add_development_dependency "webmock"
27
+ spec.add_development_dependency "timecop"
28
28
  end
@@ -1,6 +1,5 @@
1
1
  require 'eolclub_scraper/event'
2
2
  require 'nokogiri'
3
- require 'chronic'
4
3
 
5
4
  module EolclubScraper
6
5
 
@@ -11,12 +10,13 @@ module EolclubScraper
11
10
  def parse(content)
12
11
  doc = Nokogiri::HTML.parse(content)
13
12
  description = doc.css('p').first(3).map(&:to_html).join
14
- schedule_text = doc.css('p')[1].text.split("\n")[2].split(',').last.strip.split
15
- start_time, end_time = schedule_text.last.split(/\W/)
13
+
14
+ start_time = doc.css('abbr.dtstart').first.attributes['title'].value
15
+ end_time = doc.css('abbr.dtend').first.attributes['title'].value
16
16
 
17
17
  Event.new(
18
- Chronic.parse( [ schedule_text[0], schedule_text[1], start_time ].join(' ') ),
19
- Chronic.parse( [ schedule_text[0], schedule_text[1], end_time ].join(' ') ),
18
+ Time.parse(start_time),
19
+ Time.parse(end_time),
20
20
  description
21
21
  )
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module EolclubScraper
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,3 +1,4 @@
1
+ require 'timecop'
1
2
  require 'eolclub_scraper/event_parser'
2
3
 
3
4
  describe EolclubScraper::EventParser do
@@ -5,15 +6,19 @@ describe EolclubScraper::EventParser do
5
6
  describe '#parse' do
6
7
  let(:parsed) { subject.parse(content) }
7
8
 
9
+ let(:timezone_offset) { 5 * 60 * 60 }
10
+
8
11
  it 'parses an Event from the supplied content' do
9
- expect( parsed.start_time ).to eq( Time.local(2013, 12, 9, 18, 0, 0) )
10
- expect( parsed.end_time ).to eq( Time.local(2013, 12, 9, 23, 0, 0) )
12
+ Timecop.freeze(Time.local(2013, 12, 28)) do
13
+ expect( parsed.start_time ).to eq( Time.utc(2014, 1, 13, 18, 0, 0) + timezone_offset )
14
+ expect( parsed.end_time ).to eq( Time.utc(2014, 1, 13, 23, 0, 0) + timezone_offset )
15
+ end
11
16
  end
12
17
 
13
18
  it 'provides the HTML description from the scraped page' do
14
19
  desc = parsed.description
15
20
  expect(desc).to include("Monthly Providence, RI hacknight.")
16
- expect(desc).to include("Our next meetup is")
21
+ expect(desc).to match(/The next.*EOL Club.*meetup is/m)
17
22
  expect(desc).to include("@EOLclub")
18
23
  end
19
24
  end
@@ -37,17 +42,20 @@ describe EolclubScraper::EventParser do
37
42
  <h1>End of Line Club</h1>
38
43
  </header>
39
44
  <section id='main'>
40
- <p>
41
- Monthly Providence, RI hacknight. Code, design, and collaborate
42
- with other local developers to a backdrop of electronic music.
43
- Bring your laptop and a project to work on.
44
- </p>
45
- <p>
46
- Our next meetup is
47
- Monday, December 9th from 6pm&ndash;11pm
48
- at <a href='http://basicsgroup.com'>Basics Group</a>.
49
- Arrive whenever you can. Pizza and beer provided.
50
- </p>
45
+ <div class="vevent">
46
+ <p class="description">
47
+ Monthly Providence, RI hacknight. Code, design, and collaborate
48
+ with other local developers to a backdrop of electronic music.
49
+ Bring your laptop and a project to work on.
50
+ </p>
51
+ <p>
52
+ The next <span class="summary">EOL Club</span>
53
+ meetup is Monday, January 13th from
54
+ <abbr class="dtstart" title="2014-01-13T18:00:00-05:00">6pm</abbr>&ndash;<abbr class="dtend" title="2014-01-13T23:00:00-05:00">11pm</abbr>
55
+ at <a class="location" href="http://basicsgroup.com">Basics Group</a>.
56
+ Arrive whenever you can. Food and beer provided.
57
+ </p>
58
+ </div>
51
59
  <p>
52
60
  <a href="https://twitter.com/EOLclub">@EOLclub</a>
53
61
  to get more info and RSVP.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eolclub_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Gillooly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: chronic
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '>='
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '>='
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +94,20 @@ dependencies:
108
94
  - - '>='
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: timecop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
111
  description: Scrape currently scheduled event from EOLclub.org for PVDTechEvents.com
112
112
  email:
113
113
  - matt@mattgillooly.com