polyrex-calendar 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.
Files changed (2) hide show
  1. data/lib/polyrex-calendar.rb +90 -0
  2. metadata +74 -0
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # file: polyrex-calendar.rb
4
+
5
+ require 'polyrex'
6
+ require 'date'
7
+ require 'nokogiri'
8
+
9
+ class PolyrexCalendar
10
+
11
+ def initialize(year=nil)
12
+ @year = year ? year : Time.now.year
13
+ generate_calendar
14
+ end
15
+
16
+ def to_a()
17
+ @a
18
+ end
19
+
20
+ def to_xml()
21
+ @xml
22
+ end
23
+
24
+ def to_webpage()
25
+
26
+ # transform the xml to html
27
+
28
+ doc = Nokogiri::XML(@xml)
29
+ xslt = Nokogiri::XSLT(open('calendar.xsl','r'))
30
+ html = xslt.transform(doc).to_xml
31
+ css = File.open('layout.css','r').read
32
+
33
+ {'calendar.html' => html, 'layout.css' => css}
34
+ end
35
+
36
+ private
37
+
38
+ def generate_calendar()
39
+
40
+ d = Date.parse(@year.to_s + '-Jan-01')
41
+ a = []
42
+ (a << d; d += 1) while d.year == Time.now.year
43
+
44
+ months = a.group_by(&:month).map do |key, month|
45
+ i = month.index(month.detect{|x| x.wday == 0})
46
+ unless i == 0 then
47
+ weeks = [month.slice!(0,i)] + month.each_slice(7).to_a
48
+ (weeks[0] = ([nil] * 6 + weeks[0]).slice(-7..-1))
49
+ else
50
+ weeks = month.each_slice(7).to_a
51
+ end
52
+
53
+ weeks
54
+ end
55
+
56
+ @a = months
57
+
58
+ calendar = Polyrex.new('calendar[year]/month[no,name]/week[no, rel_no]/day[wday, xday, name, event]')
59
+ year_start = months[0][0][-1]
60
+ calendar.summary.year = year_start.year.to_s
61
+ old_year_week = year_start.prev_day.cweek
62
+
63
+ week_i = 0
64
+
65
+ months.each_with_index do |month,i|
66
+
67
+ calendar.create.month no: (i+1).to_s, name: Date::MONTHNAMES[i+1] do |create|
68
+ month.each_with_index do |week,j|
69
+
70
+ week_s = (week_i == 0 ? old_year_week : week_i).to_s
71
+ create.week rel_no: (j+1).to_s, no: week_s do |create|
72
+ week.each_with_index do |x,k|
73
+
74
+ if x then
75
+ week_i += 1 if x.wday == 6
76
+ h = {wday: x.wday.to_s, xday: x.day.to_s, name: Date::DAYNAMES[k]}
77
+ else
78
+ h = {}
79
+ end
80
+ create.day(h)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ @xml = calendar.to_xml pretty: true
88
+
89
+ end
90
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: polyrex-calendar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors: []
7
+
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2011-01-22 00:00:00 +00:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: polyrex
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description:
36
+ email:
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - lib/polyrex-calendar.rb
45
+ has_rdoc: true
46
+ homepage:
47
+ licenses: []
48
+
49
+ post_install_message:
50
+ rdoc_options: []
51
+
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ version:
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0"
65
+ version:
66
+ requirements: []
67
+
68
+ rubyforge_project:
69
+ rubygems_version: 1.3.5
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: polyrex-calendar
73
+ test_files: []
74
+