eolclub_scraper 0.0.4 → 0.1.0

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.
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