polyrex-calendar 0.1.5 → 0.1.6

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.
@@ -0,0 +1,69 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
3
+ <xsl:output method="xml" indent="yes" />
4
+
5
+ <xsl:template match="month">
6
+
7
+ <html lang="en">
8
+
9
+ <head>
10
+ <title><xsl:value-of select="summary/name"/><xsl:text> </xsl:text><xsl:value-of select="summary/year"/> planner | generated by Polyrex-Calendar</title>
11
+ <link rel="stylesheet" href="xmonth_layout.css"/>
12
+ </head>
13
+
14
+ <body>
15
+ <div id="wrap">
16
+ <h1><xsl:value-of select="summary/name"/><xsl:text> </xsl:text><xsl:value-of select="summary/year"/></h1>
17
+ <table border="1">
18
+ <tr><th>Sunday</th><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th><th>Saturday</th></tr>
19
+ <xsl:apply-templates select="records"/>
20
+ </table>
21
+ </div>
22
+ </body>
23
+ </html>
24
+
25
+ </xsl:template>
26
+
27
+ <xsl:template match="month/summary">
28
+ <caption><xsl:value-of select="name"/></caption>
29
+ </xsl:template>
30
+
31
+
32
+ <xsl:template match="records/week">
33
+ <tr>
34
+ <xsl:apply-templates select="summary"/>
35
+ <xsl:apply-templates select="records"/>
36
+ </tr>
37
+ </xsl:template>
38
+
39
+ <xsl:template match="week/summary">
40
+
41
+ </xsl:template>
42
+
43
+ <xsl:template match="records/day">
44
+ <xsl:apply-templates select="summary"/>
45
+ </xsl:template>
46
+
47
+ <xsl:template match="day/summary">
48
+ <td>
49
+ <div><xsl:value-of select="xday"/></div>
50
+ <xsl:choose>
51
+ <xsl:when test="contains(event,'oliday')">
52
+ <div><xsl:value-of select="event"/></div>
53
+ <div></div>
54
+ </xsl:when>
55
+ <xsl:when test="substring(event,1,1) = '*'">
56
+ <div><xsl:value-of select="substring-after(event,'*')"/></div>
57
+ <div></div>
58
+ </xsl:when>
59
+ <xsl:otherwise>
60
+ <div></div>
61
+ <div><xsl:value-of select="event"/></div>
62
+ </xsl:otherwise>
63
+ </xsl:choose>
64
+
65
+ </td>
66
+ </xsl:template>
67
+
68
+
69
+ </xsl:stylesheet>
@@ -0,0 +1,41 @@
1
+ body {background-color: transparent }
2
+
3
+ #wrap {
4
+ background-color: transparent;
5
+ margin: 0 auto;
6
+ width: 1200px;
7
+ }
8
+
9
+ #wrap h1 {
10
+ background-color: transparent;
11
+ margin: 0.5em 0.3em;
12
+ padding: 0.2em 0.2em;
13
+ }
14
+
15
+ #wrap table {background-color: transparent; }
16
+ #wrap table td {background-color: transparent; }
17
+ #wrap table td div {
18
+ background-color: transparent;
19
+ font: 0.6em Serif;
20
+ margin: 0.33em 0.5em 0.3em 3.7em;
21
+ overflow: hidden;
22
+ padding: 0.2em 0.3em;
23
+ text-align: right;
24
+ }
25
+ #wrap table td div:first-child {
26
+ background-color: transparent;
27
+ float: left;
28
+ width: 1em; height: 1em;
29
+ margin: 0; padding: 0.3em 0.3em;
30
+ font: 1.0em Serif;
31
+ text-align: right;
32
+ }
33
+ #wrap table td div:last-child {
34
+ background-color: transparent;
35
+ margin: 0 0.4em 0 0.5em; padding: 0.2em 0.13em;
36
+ font: 0.8em Sans;
37
+ width: 9.0em; min-height: 4.0em;
38
+ overflow: hidden;
39
+ text-align: left
40
+ }
41
+
@@ -8,9 +8,16 @@ require 'nokogiri'
8
8
 
9
9
  class PolyrexCalendar
10
10
 
11
+ attr_accessor :xsl, :css, :polyrex, :month_xsl, :month_css
12
+
11
13
  def initialize(year=nil)
12
14
  @year = year ? year : Time.now.year
13
15
  generate_calendar
16
+ lib = File.dirname(__FILE__)
17
+ @xsl = File.open(lib + '/calendar.xsl','r').read
18
+ @css = File.open(lib + '/layout.css','r').read
19
+ @month_xsl = File.open(lib + '/month_calendar.xsl','r').read
20
+ @month_css = File.open(lib + '/month_layout.css','r').read
14
21
  end
15
22
 
16
23
  def to_a()
@@ -18,20 +25,33 @@ class PolyrexCalendar
18
25
  end
19
26
 
20
27
  def to_xml()
21
- @xml
28
+ @polyrex.to_xml pretty: true
22
29
  end
23
30
 
24
- def to_webpage()
25
-
26
- # transform the xml to html
27
- lib = File.dirname(__FILE__)
31
+ def to_webpage()
32
+ html = generate_webpage(@polyrex.to_xml, @xsl)
33
+ {'calendar.html' => html, 'layout.css' => @css}
34
+ end
28
35
 
29
- doc = Nokogiri::XML(@xml)
30
- xslt = Nokogiri::XSLT(File.open(lib + '/calendar.xsl','r').read)
31
- html = xslt.transform(doc).to_xml
32
- css = File.open(lib + '/layout.css','r').read
33
-
34
- {'calendar.html' => html, 'layout.css' => css}
36
+ def import_events(dynarex)
37
+ dynarex.flat_records.each do |event|
38
+ m,w,i = @day[Date.parse(event[:date])]
39
+ @polyrex.records[m].week[w].day[i].event = event[:title]
40
+ end
41
+ self
42
+ end
43
+
44
+ def month(m)
45
+ monthx = @polyrex.records[m-1]
46
+ def monthx.to_webpage()
47
+ lib = File.dirname(__FILE__)
48
+ month_xsl = File.open(lib + '/month_calendar.xsl','r').read
49
+ month_css = File.open(lib + '/month_layout.css','r').read
50
+ doc = Nokogiri::XML(self.to_xml); xslt = Nokogiri::XSLT(month_xsl)
51
+ html = xslt.transform(doc).to_xml
52
+ {self.name.downcase[0..2] + '_calendar.html' => html, 'month_layout.css' => month_css}
53
+ end
54
+ monthx
35
55
  end
36
56
 
37
57
  private
@@ -54,18 +74,25 @@ class PolyrexCalendar
54
74
  weeks
55
75
  end
56
76
 
77
+ @day = {}
78
+ months.each_with_index do |month,m|
79
+ month.each_with_index do |weeks,w|
80
+ weeks.each_with_index{|d,i| @day[d] = [m,w,i]}
81
+ end
82
+ end
83
+
57
84
  @a = months
58
85
 
59
- calendar = Polyrex.new('calendar[year]/month[no,name]/week[no, rel_no]/day[wday, xday, name, event]')
86
+ @polyrex = Polyrex.new('calendar[year]/month[no,name,year]/week[no, rel_no]/day[wday, xday, name, event]')
60
87
  year_start = months[0][0][-1]
61
- calendar.summary.year = year_start.year.to_s
62
- old_year_week = year_start.prev_day.cweek
88
+ @polyrex.summary.year = @year
89
+ old_year_week = (year_start - 7).cweek
63
90
 
64
91
  week_i = 0
65
92
 
66
93
  months.each_with_index do |month,i|
67
94
 
68
- calendar.create.month no: (i+1).to_s, name: Date::MONTHNAMES[i+1] do |create|
95
+ @polyrex.create.month no: (i+1).to_s, name: Date::MONTHNAMES[i+1], year: @year do |create|
69
96
  month.each_with_index do |week,j|
70
97
 
71
98
  week_s = (week_i == 0 ? old_year_week : week_i).to_s
@@ -85,7 +112,15 @@ class PolyrexCalendar
85
112
  end
86
113
  end
87
114
 
88
- @xml = calendar.to_xml pretty: true
115
+ end
116
+
117
+ def generate_webpage(xml, xsl)
118
+
119
+ # transform the xml to html
120
+ doc = Nokogiri::XML(xml)
121
+ xslt = Nokogiri::XSLT(xsl)
122
+ html = xslt.transform(doc).to_xml
123
+ html
89
124
 
90
125
  end
91
126
  end
@@ -8,6 +8,8 @@ require 'nokogiri'
8
8
 
9
9
  class PolyrexCalendar
10
10
 
11
+ attr_accessor :xsl
12
+
11
13
  def initialize(year=nil)
12
14
  @year = year ? year : Time.now.year
13
15
  generate_calendar
@@ -24,7 +26,7 @@ class PolyrexCalendar
24
26
  def to_webpage()
25
27
 
26
28
  # transform the xml to html
27
- lib = File.join(File.dirname(__FILE__), '..', 'lib')
29
+ lib = File.dirname(__FILE__)
28
30
 
29
31
  doc = Nokogiri::XML(@xml)
30
32
  xslt = Nokogiri::XSLT(File.open(lib + '/calendar.xsl','r').read)
@@ -32,7 +34,7 @@ class PolyrexCalendar
32
34
  css = File.open(lib + '/layout.css','r').read
33
35
 
34
36
  {'calendar.html' => html, 'layout.css' => css}
35
- end
37
+ end
36
38
 
37
39
  private
38
40
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyrex-calendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors: []
7
7
 
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2011-01-22 00:00:00 +00:00
12
+ date: 2011-01-23 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -41,8 +41,10 @@ extensions: []
41
41
  extra_rdoc_files: []
42
42
 
43
43
  files:
44
+ - lib/month_calendar.xsl
44
45
  - lib/polyrex-calendar.rb~
45
46
  - lib/calendar.xsl
47
+ - lib/month_layout.css
46
48
  - lib/layout.css
47
49
  - lib/calendar.xsl~
48
50
  - lib/polyrex-calendar.rb