quarterweek 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/bin/quarterweek +4 -0
  3. data/lib/quarterweek.rb +57 -0
  4. metadata +74 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 35c58ecc26c65a9456cc9baa0a7e50a4be1ff15a
4
+ data.tar.gz: a872e1db32a4203b222234d2d771436b167ddf7e
5
+ SHA512:
6
+ metadata.gz: ab5952d2444aebbe038c787c76545e85d3330525f8525c00d2ceac90c849cfde491439e4dc2a54d5845e1badbf3404aaa4b7f0c34185d19cba0819a115d24bf6
7
+ data.tar.gz: f1219ce4a6a2de918c0620773737a58a5b52b382ab755fdf57da63c73b577a4bbe13f8378367fbdce8df1c33c574f0f39b2c292196858332220c25d0427a636d
data/bin/quarterweek ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'quarterweek'
4
+ Quarterweek.write_file ARGV[0]
@@ -0,0 +1,57 @@
1
+ require 'date'
2
+ require 'icalendar'
3
+ require 'open-uri'
4
+ require 'nokogiri'
5
+
6
+ class Quarterweek
7
+
8
+ # open Doc
9
+ # select Node
10
+ # Manipulate Node
11
+ # extract Data
12
+
13
+ # new Calendar
14
+ # set Calendar
15
+ # add Events
16
+ # publish Calendar
17
+ # write File
18
+
19
+ def self.write_file(code)
20
+ @data = [];
21
+ @doc = Nokogiri::HTML(open("http://roosters.saxion.nl/teacher/teacher:#{code}"))
22
+
23
+ @nodeSet = @doc.css("div.span6:nth-child(2) > table:nth-child(1) tr")
24
+ 2.times do @nodeSet.delete(@nodeSet[0]) end
25
+
26
+ @nodeSet.each do |node|
27
+ @data << {
28
+ q: node.css("td:nth-child(1) a").text,
29
+ w: node.css("td:nth-child(2)").text.to_i,
30
+ y: node.css("td:nth-child(3)").text.to_i,
31
+ l: node.css("td:nth-child(1) a").map { |link| link['href'] }.first
32
+ }
33
+ end
34
+
35
+ @cal = Icalendar::Calendar.new
36
+ @cal.timezone do |t|
37
+ t.tzid = "Europe/Amsterdam"
38
+ end
39
+
40
+ @data.each do |hash|
41
+ @cal.event do |e|
42
+ start_date = Date.commercial(hash[:y], hash[:w], 1).strftime("%Y%m%d")
43
+ end_date = Date.commercial(hash[:y], hash[:w], 6).strftime("%Y%m%d")
44
+ e = Icalendar::Event.new
45
+ e.dtstart = Icalendar::Values::Date.new(start_date)
46
+ e.dtend = Icalendar::Values::Date.new(end_date)
47
+ e.summary = "Kwartielweek: #{hash[:q]}"
48
+ e.url = hash[:l]
49
+ @cal.add_event(e)
50
+ end
51
+ end
52
+
53
+ @cal.publish
54
+
55
+ File.open("#{code}-quarterweeks.ics", 'w') { |file| file.write(@cal.to_ical)}
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: quarterweek
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Robin Janse
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.7.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.7.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: icalendar
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.4.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.4.1
41
+ description: Builds ical events with quarterweeks
42
+ email: r.e.janse@saxion.nl
43
+ executables:
44
+ - quarterweek
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - bin/quarterweek
49
+ - lib/quarterweek.rb
50
+ homepage: http://rubygems.org/gems/quarterweek
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.6.8
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: Builds ical events with quarterweeks
74
+ test_files: []