demingfactor-ri_cal 0.9.0 → 0.10.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
  SHA256:
3
- metadata.gz: 700d1fa0aed2a6b7eb838f29c642a676855a668c9162763c1b932d1947e3a3e4
4
- data.tar.gz: 9ebf7e486fd6c5d2df77b0384fc83fd607d1e4be15b79b4b4bf08ef584eb1ac0
3
+ metadata.gz: 43847687ecb3425da092201d05a46a7d7b1c031fb699a0a1a96ac84e1688284d
4
+ data.tar.gz: 0bd4dfa4a174f4ba175fa93ad3344a6f8e031286542b3f320ff2a13de5187a26
5
5
  SHA512:
6
- metadata.gz: 3872f9428b9065f8cedb2247414b600f76ee66e48e5474aa195c1fd47192f5290fc83cb1bcf07ada178b33425a88b5c95b2c5982bffdc0815f603ff6bd2a1bc4
7
- data.tar.gz: 6d4269093b48cd52793fffa9f2a2ea5b4c11ef50d3def1eea8fb705cadc07c52083945dd587ef59665028ea85374b68f874db6f3be0a46ee476046bb9b0d483d
6
+ metadata.gz: '0288ecef24b46f25d54ec54637fe050cb69471ee70d4b91683980d3d975fd0ac53c83306df738f056e3cfe256ace006932c894513f349f22f2430e2d390eae35'
7
+ data.tar.gz: 854c1d34562edb8ff01649cd3f9901319ae1985450e9d999e1fdc4fdeaec1a079d3935afbfd6f8bc84add97b6a703f901e400db1633dc6189d6d1d9268594526
data/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.9.0] - 2023-04-25
9
+
10
+ * Invalid calendar no longer creates generic 'Exception'. Now creates 'InvalidIcalendarFileError'.
11
+ * Adds this Changelog.
12
+ * Adds MIT Licence to gemspec (per licence in README.txt)
13
+
14
+ ## [0.8.8] - 2011-02-13
15
+
16
+ * Last release on rubyredrick/ri_cal
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
- # require 'jeweler'
3
+ require 'jeweler'
4
4
 
5
5
  begin
6
- require 'ad_agency'
6
+ # require 'ad_agency'
7
7
  Jeweler::Tasks.new do |gem|
8
- gem.name = "ri_cal"
8
+ gem.name = "demingfactor-ri_cal"
9
9
  gem.summary = %Q{a new implementation of RFC2445 in Ruby}
10
10
  gem.description = %Q{A new Ruby implementation of RFC2445 iCalendar.
11
11
 
@@ -16,9 +16,9 @@ This is a clean-slate implementation of RFC2445.
16
16
 
17
17
  A Google group for discussion of this library has been set up http://groups.google.com/group/rical_gem
18
18
  }
19
- gem.email = "rick.denatale@gmail.com"
20
- gem.homepage = "http://github.com/rubyredrick/ri_cal"
21
- gem.authors = ["Rick DeNatale"]
19
+ gem.email = "dev@demingfactor.com"
20
+ gem.homepage = "http://github.com/demingfactor/ri_cal"
21
+ gem.authors = ["Rick DeNatale", "Demingfactor"]
22
22
  ['.gitignore', 'performance_data/*', 'sample_ical_files/*', 'website/*', 'config/website.yml'].each do |excl|
23
23
  gem.files.exclude excl
24
24
  end
@@ -27,7 +27,7 @@ A Google group for discussion of this library has been set up http://groups.goog
27
27
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
28
28
  end
29
29
  Jeweler::GemcutterTasks.new
30
- Jeweler::AdAgencyTasks.new
30
+ # Jeweler::AdAgencyTasks.new
31
31
  # rescue LoadError => ex
32
32
  # puts ex
33
33
  # puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
@@ -57,8 +57,7 @@ Dir['tasks/**/*.rake'].each { |t| load t }
57
57
 
58
58
  task :default => [:"spec:with_tzinfo_gem", :"spec:with_active_support"]
59
59
 
60
-
61
- require 'rake/rdoctask'
60
+ require 'rdoc/task'
62
61
  Rake::RDocTask.new do |rdoc|
63
62
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
64
63
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.0
1
+ 0.10.0
@@ -27,14 +27,14 @@ class RiCal::Component::TZInfoTimezone < RiCal::Component::Timezone
27
27
  end
28
28
 
29
29
  def period_local_end(period)
30
- (period.local_end || DateTime.parse("99990101T000000")).strftime("%Y%m%dT%H%M%S")
30
+ (period.local_ends_at&.to_datetime || DateTime.parse("99990101T000000")).strftime("%Y%m%dT%H%M%S")
31
31
  end
32
32
 
33
33
  # This assumes a 1 hour shift which is why we use the previous period local end when
34
34
  # possible
35
35
  def period_local_start(period)
36
36
  shift = daylight? ? Rational(-1, 24) : Rational(1, 24)
37
- ((period.local_start || DateTime.parse("16010101T000000")) + shift).strftime("%Y%m%dT%H%M%S")
37
+ ((period.local_starts_at&.to_datetime || DateTime.parse("16010101T000000")) + shift).strftime("%Y%m%dT%H%M%S")
38
38
  end
39
39
 
40
40
  def add_period(this_period)
@@ -140,11 +140,11 @@ class RiCal::Component::TZInfoTimezone < RiCal::Component::Timezone
140
140
  periods = Periods.new
141
141
  period = initial_period = tzinfo_timezone.period_for_utc(utc_start)
142
142
  #start with the period before the one containing utc_start
143
- prev_period = period.utc_start && tzinfo_timezone.period_for_utc(period.utc_start - 1)
143
+ prev_period = period.starts_at&.to_datetime && tzinfo_timezone.period_for_utc(period.starts_at&.to_datetime - 1)
144
144
  period = prev_period if prev_period
145
- while period && period.utc_start && period.utc_start < utc_end
145
+ while period && period.starts_at&.to_datetime && period.starts_at&.to_datetime < utc_end
146
146
  periods.add_period(period)
147
- period = period.utc_end && tzinfo_timezone.period_for_utc(period.utc_end + 1)
147
+ period = period.ends_at&.to_datetime && tzinfo_timezone.period_for_utc(period.ends_at&.to_datetime + 1)
148
148
  end
149
149
  periods.add_period(initial_period, :force) if periods.empty?
150
150
  periods.export_to(export_stream)
data/lib/ri_cal.rb CHANGED
@@ -37,7 +37,7 @@ module RiCal
37
37
  autoload :RequiredTimezones, "ri_cal/required_timezones.rb"
38
38
  require "ri_cal/core_extensions.rb"
39
39
  # :stopdoc:
40
- VERSION = '0.8.5'
40
+ VERSION = '0.10.0'
41
41
  LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
42
42
  PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
43
43
 
@@ -0,0 +1,38 @@
1
+ BEGIN:VCALENDAR
2
+ METHOD:PUBLISH
3
+ X-WR-TIMEZONE:America/New_York
4
+ PRODID:-//Apple Inc.//iCal 3.0//EN
5
+ CALSCALE:GREGORIAN
6
+ X-WR-CALNAME:test
7
+ VERSION:2.0
8
+ X-WR-RELCALID:1884C7F8-BC8E-457F-94AC-297871967D5E
9
+ X-APPLE-CALENDAR-COLOR:#2CA10B
10
+ BEGIN:VTIMEZONE
11
+ TZID:US/Eastern
12
+ BEGIN:DAYLIGHT
13
+ TZOFFSETFROM:-0500
14
+ TZOFFSETTO:-0400
15
+ DTSTART:20070311T020000
16
+ RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
17
+ TZNAME:EDT
18
+ END:DAYLIGHT
19
+ BEGIN:STANDARD
20
+ TZOFFSETFROM:-0400
21
+ TZOFFSETTO:-0500
22
+ DTSTART:20071104T020000
23
+ RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
24
+ TZNAME:EST
25
+ END:STANDARD
26
+ END:VTIMEZONE
27
+ BEGIN:VEVENT
28
+ SEQUENCE:5
29
+ TRANSP:OPAQUE
30
+ UID:00481E53-9258-4EA7-9F8D-947D3041A3F2
31
+ DTSTART;TZID=US/Eastern:20090224T090000
32
+ DTSTAMP:20090225T000908Z
33
+ SUMMARY:Test Event
34
+ CREATED:20090225T000839Z
35
+ DTEND;TZID=US/Eastern:20090224T100000
36
+ RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20090228T045959Z
37
+ END:VEVENT
38
+ END:VCALENDAR
Binary file
@@ -0,0 +1,285 @@
1
+
2
+ /****************************************************************
3
+ * *
4
+ * curvyCorners *
5
+ * ------------ *
6
+ * *
7
+ * This script generates rounded corners for your divs. *
8
+ * *
9
+ * Version 1.2.9 *
10
+ * Copyright (c) 2006 Cameron Cooke *
11
+ * By: Cameron Cooke and Tim Hutchison. *
12
+ * *
13
+ * *
14
+ * Website: http://www.curvycorners.net *
15
+ * Email: info@totalinfinity.com *
16
+ * Forum: http://www.curvycorners.net/forum/ *
17
+ * *
18
+ * *
19
+ * This library is free software; you can redistribute *
20
+ * it and/or modify it under the terms of the GNU *
21
+ * Lesser General Public License as published by the *
22
+ * Free Software Foundation; either version 2.1 of the *
23
+ * License, or (at your option) any later version. *
24
+ * *
25
+ * This library is distributed in the hope that it will *
26
+ * be useful, but WITHOUT ANY WARRANTY; without even the *
27
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A *
28
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public *
29
+ * License for more details. *
30
+ * *
31
+ * You should have received a copy of the GNU Lesser *
32
+ * General Public License along with this library; *
33
+ * Inc., 59 Temple Place, Suite 330, Boston, *
34
+ * MA 02111-1307 USA *
35
+ * *
36
+ ****************************************************************/
37
+
38
+ var isIE = navigator.userAgent.toLowerCase().indexOf("msie") > -1; var isMoz = document.implementation && document.implementation.createDocument; var isSafari = ((navigator.userAgent.toLowerCase().indexOf('safari')!=-1)&&(navigator.userAgent.toLowerCase().indexOf('mac')!=-1))?true:false; function curvyCorners()
39
+ { if(typeof(arguments[0]) != "object") throw newCurvyError("First parameter of curvyCorners() must be an object."); if(typeof(arguments[1]) != "object" && typeof(arguments[1]) != "string") throw newCurvyError("Second parameter of curvyCorners() must be an object or a class name."); if(typeof(arguments[1]) == "string")
40
+ { var startIndex = 0; var boxCol = getElementsByClass(arguments[1]);}
41
+ else
42
+ { var startIndex = 1; var boxCol = arguments;}
43
+ var curvyCornersCol = new Array(); if(arguments[0].validTags)
44
+ var validElements = arguments[0].validTags; else
45
+ var validElements = ["div"]; for(var i = startIndex, j = boxCol.length; i < j; i++)
46
+ { var currentTag = boxCol[i].tagName.toLowerCase(); if(inArray(validElements, currentTag) !== false)
47
+ { curvyCornersCol[curvyCornersCol.length] = new curvyObject(arguments[0], boxCol[i]);}
48
+ }
49
+ this.objects = curvyCornersCol; this.applyCornersToAll = function()
50
+ { for(var x = 0, k = this.objects.length; x < k; x++)
51
+ { this.objects[x].applyCorners();}
52
+ }
53
+ }
54
+ function curvyObject()
55
+ { this.box = arguments[1]; this.settings = arguments[0]; this.topContainer = null; this.bottomContainer = null; this.masterCorners = new Array(); this.contentDIV = null; var boxHeight = get_style(this.box, "height", "height"); var boxWidth = get_style(this.box, "width", "width"); var borderWidth = get_style(this.box, "borderTopWidth", "border-top-width"); var borderColour = get_style(this.box, "borderTopColor", "border-top-color"); var boxColour = get_style(this.box, "backgroundColor", "background-color"); var backgroundImage = get_style(this.box, "backgroundImage", "background-image"); var boxPosition = get_style(this.box, "position", "position"); var boxPadding = get_style(this.box, "paddingTop", "padding-top"); this.boxHeight = parseInt(((boxHeight != "" && boxHeight != "auto" && boxHeight.indexOf("%") == -1)? boxHeight.substring(0, boxHeight.indexOf("px")) : this.box.scrollHeight)); this.boxWidth = parseInt(((boxWidth != "" && boxWidth != "auto" && boxWidth.indexOf("%") == -1)? boxWidth.substring(0, boxWidth.indexOf("px")) : this.box.scrollWidth)); this.borderWidth = parseInt(((borderWidth != "" && borderWidth.indexOf("px") !== -1)? borderWidth.slice(0, borderWidth.indexOf("px")) : 0)); this.boxColour = format_colour(boxColour); this.boxPadding = parseInt(((boxPadding != "" && boxPadding.indexOf("px") !== -1)? boxPadding.slice(0, boxPadding.indexOf("px")) : 0)); this.borderColour = format_colour(borderColour); this.borderString = this.borderWidth + "px" + " solid " + this.borderColour; this.backgroundImage = ((backgroundImage != "none")? backgroundImage : ""); this.boxContent = this.box.innerHTML; if(boxPosition != "absolute") this.box.style.position = "relative"; this.box.style.padding = "0px"; if(isIE && boxWidth == "auto" && boxHeight == "auto") this.box.style.width = "100%"; if(this.settings.autoPad == true && this.boxPadding > 0)
56
+ this.box.innerHTML = ""; this.applyCorners = function()
57
+ { for(var t = 0; t < 2; t++)
58
+ { switch(t)
59
+ { case 0:
60
+ if(this.settings.tl || this.settings.tr)
61
+ { var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var topMaxRadius = Math.max(this.settings.tl ? this.settings.tl.radius : 0, this.settings.tr ? this.settings.tr.radius : 0); newMainContainer.style.height = topMaxRadius + "px"; newMainContainer.style.top = 0 - topMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.topContainer = this.box.appendChild(newMainContainer);}
62
+ break; case 1:
63
+ if(this.settings.bl || this.settings.br)
64
+ { var newMainContainer = document.createElement("DIV"); newMainContainer.style.width = "100%"; newMainContainer.style.fontSize = "1px"; newMainContainer.style.overflow = "hidden"; newMainContainer.style.position = "absolute"; newMainContainer.style.paddingLeft = this.borderWidth + "px"; newMainContainer.style.paddingRight = this.borderWidth + "px"; var botMaxRadius = Math.max(this.settings.bl ? this.settings.bl.radius : 0, this.settings.br ? this.settings.br.radius : 0); newMainContainer.style.height = botMaxRadius + "px"; newMainContainer.style.bottom = 0 - botMaxRadius + "px"; newMainContainer.style.left = 0 - this.borderWidth + "px"; this.bottomContainer = this.box.appendChild(newMainContainer);}
65
+ break;}
66
+ }
67
+ if(this.topContainer) this.box.style.borderTopWidth = "0px"; if(this.bottomContainer) this.box.style.borderBottomWidth = "0px"; var corners = ["tr", "tl", "br", "bl"]; for(var i in corners)
68
+ { if(i > -1 < 4)
69
+ { var cc = corners[i]; if(!this.settings[cc])
70
+ { if(((cc == "tr" || cc == "tl") && this.topContainer != null) || ((cc == "br" || cc == "bl") && this.bottomContainer != null))
71
+ { var newCorner = document.createElement("DIV"); newCorner.style.position = "relative"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; if(this.backgroundImage == "")
72
+ newCorner.style.backgroundColor = this.boxColour; else
73
+ newCorner.style.backgroundImage = this.backgroundImage; switch(cc)
74
+ { case "tl":
75
+ newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.tr.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.left = -this.borderWidth + "px"; break; case "tr":
76
+ newCorner.style.height = topMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.tl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderTop = this.borderString; newCorner.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; newCorner.style.left = this.borderWidth + "px"; break; case "bl":
77
+ newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginRight = this.settings.br.radius - (this.borderWidth*2) + "px"; newCorner.style.borderLeft = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = -this.borderWidth + "px"; newCorner.style.backgroundPosition = "-" + (this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break; case "br":
78
+ newCorner.style.height = botMaxRadius - this.borderWidth + "px"; newCorner.style.marginLeft = this.settings.bl.radius - (this.borderWidth*2) + "px"; newCorner.style.borderRight = this.borderString; newCorner.style.borderBottom = this.borderString; newCorner.style.left = this.borderWidth + "px"
79
+ newCorner.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (botMaxRadius + this.borderWidth)) + "px"; break;}
80
+ }
81
+ }
82
+ else
83
+ { if(this.masterCorners[this.settings[cc].radius])
84
+ { var newCorner = this.masterCorners[this.settings[cc].radius].cloneNode(true);}
85
+ else
86
+ { var newCorner = document.createElement("DIV"); newCorner.style.height = this.settings[cc].radius + "px"; newCorner.style.width = this.settings[cc].radius + "px"; newCorner.style.position = "absolute"; newCorner.style.fontSize = "1px"; newCorner.style.overflow = "hidden"; var borderRadius = parseInt(this.settings[cc].radius - this.borderWidth); for(var intx = 0, j = this.settings[cc].radius; intx < j; intx++)
87
+ { if((intx +1) >= borderRadius)
88
+ var y1 = -1; else
89
+ var y1 = (Math.floor(Math.sqrt(Math.pow(borderRadius, 2) - Math.pow((intx+1), 2))) - 1); if(borderRadius != j)
90
+ { if((intx) >= borderRadius)
91
+ var y2 = -1; else
92
+ var y2 = Math.ceil(Math.sqrt(Math.pow(borderRadius,2) - Math.pow(intx, 2))); if((intx+1) >= j)
93
+ var y3 = -1; else
94
+ var y3 = (Math.floor(Math.sqrt(Math.pow(j ,2) - Math.pow((intx+1), 2))) - 1);}
95
+ if((intx) >= j)
96
+ var y4 = -1; else
97
+ var y4 = Math.ceil(Math.sqrt(Math.pow(j ,2) - Math.pow(intx, 2))); if(y1 > -1) this.drawPixel(intx, 0, this.boxColour, 100, (y1+1), newCorner, -1, this.settings[cc].radius); if(borderRadius != j)
98
+ { for(var inty = (y1 + 1); inty < y2; inty++)
99
+ { if(this.settings.antiAlias)
100
+ { if(this.backgroundImage != "")
101
+ { var borderFract = (pixelFraction(intx, inty, borderRadius) * 100); if(borderFract < 30)
102
+ { this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, 0, this.settings[cc].radius);}
103
+ else
104
+ { this.drawPixel(intx, inty, this.borderColour, 100, 1, newCorner, -1, this.settings[cc].radius);}
105
+ }
106
+ else
107
+ { var pixelcolour = BlendColour(this.boxColour, this.borderColour, pixelFraction(intx, inty, borderRadius)); this.drawPixel(intx, inty, pixelcolour, 100, 1, newCorner, 0, this.settings[cc].radius, cc);}
108
+ }
109
+ }
110
+ if(this.settings.antiAlias)
111
+ { if(y3 >= y2)
112
+ { if (y2 == -1) y2 = 0; this.drawPixel(intx, y2, this.borderColour, 100, (y3 - y2 + 1), newCorner, 0, 0);}
113
+ }
114
+ else
115
+ { if(y3 >= y1)
116
+ { this.drawPixel(intx, (y1 + 1), this.borderColour, 100, (y3 - y1), newCorner, 0, 0);}
117
+ }
118
+ var outsideColour = this.borderColour;}
119
+ else
120
+ { var outsideColour = this.boxColour; var y3 = y1;}
121
+ if(this.settings.antiAlias)
122
+ { for(var inty = (y3 + 1); inty < y4; inty++)
123
+ { this.drawPixel(intx, inty, outsideColour, (pixelFraction(intx, inty , j) * 100), 1, newCorner, ((this.borderWidth > 0)? 0 : -1), this.settings[cc].radius);}
124
+ }
125
+ }
126
+ this.masterCorners[this.settings[cc].radius] = newCorner.cloneNode(true);}
127
+ if(cc != "br")
128
+ { for(var t = 0, k = newCorner.childNodes.length; t < k; t++)
129
+ { var pixelBar = newCorner.childNodes[t]; var pixelBarTop = parseInt(pixelBar.style.top.substring(0, pixelBar.style.top.indexOf("px"))); var pixelBarLeft = parseInt(pixelBar.style.left.substring(0, pixelBar.style.left.indexOf("px"))); var pixelBarHeight = parseInt(pixelBar.style.height.substring(0, pixelBar.style.height.indexOf("px"))); if(cc == "tl" || cc == "bl"){ pixelBar.style.left = this.settings[cc].radius -pixelBarLeft -1 + "px";}
130
+ if(cc == "tr" || cc == "tl"){ pixelBar.style.top = this.settings[cc].radius -pixelBarHeight -pixelBarTop + "px";}
131
+ switch(cc)
132
+ { case "tr":
133
+ pixelBar.style.backgroundPosition = "-" + Math.abs((this.boxWidth - this.settings[cc].radius + this.borderWidth) + pixelBarLeft) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "tl":
134
+ pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs(this.settings[cc].radius -pixelBarHeight -pixelBarTop - this.borderWidth) + "px"; break; case "bl":
135
+ pixelBar.style.backgroundPosition = "-" + Math.abs((this.settings[cc].radius -pixelBarLeft -1) - this.borderWidth) + "px -" + Math.abs((this.boxHeight + this.settings[cc].radius + pixelBarTop) -this.borderWidth) + "px"; break;}
136
+ }
137
+ }
138
+ }
139
+ if(newCorner)
140
+ { switch(cc)
141
+ { case "tl":
142
+ if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "tr":
143
+ if(newCorner.style.position == "absolute") newCorner.style.top = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.topContainer) this.topContainer.appendChild(newCorner); break; case "bl":
144
+ if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.left = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break; case "br":
145
+ if(newCorner.style.position == "absolute") newCorner.style.bottom = "0px"; if(newCorner.style.position == "absolute") newCorner.style.right = "0px"; if(this.bottomContainer) this.bottomContainer.appendChild(newCorner); break;}
146
+ }
147
+ }
148
+ }
149
+ var radiusDiff = new Array(); radiusDiff["t"] = Math.abs(this.settings.tl.radius - this.settings.tr.radius)
150
+ radiusDiff["b"] = Math.abs(this.settings.bl.radius - this.settings.br.radius); for(z in radiusDiff)
151
+ { if(z == "t" || z == "b")
152
+ { if(radiusDiff[z])
153
+ { var smallerCornerType = ((this.settings[z + "l"].radius < this.settings[z + "r"].radius)? z +"l" : z +"r"); var newFiller = document.createElement("DIV"); newFiller.style.height = radiusDiff[z] + "px"; newFiller.style.width = this.settings[smallerCornerType].radius+ "px"
154
+ newFiller.style.position = "absolute"; newFiller.style.fontSize = "1px"; newFiller.style.overflow = "hidden"; newFiller.style.backgroundColor = this.boxColour; switch(smallerCornerType)
155
+ { case "tl":
156
+ newFiller.style.bottom = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.topContainer.appendChild(newFiller); break; case "tr":
157
+ newFiller.style.bottom = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.topContainer.appendChild(newFiller); break; case "bl":
158
+ newFiller.style.top = "0px"; newFiller.style.left = "0px"; newFiller.style.borderLeft = this.borderString; this.bottomContainer.appendChild(newFiller); break; case "br":
159
+ newFiller.style.top = "0px"; newFiller.style.right = "0px"; newFiller.style.borderRight = this.borderString; this.bottomContainer.appendChild(newFiller); break;}
160
+ }
161
+ var newFillerBar = document.createElement("DIV"); newFillerBar.style.position = "relative"; newFillerBar.style.fontSize = "1px"; newFillerBar.style.overflow = "hidden"; newFillerBar.style.backgroundColor = this.boxColour; newFillerBar.style.backgroundImage = this.backgroundImage; switch(z)
162
+ { case "t":
163
+ if(this.topContainer)
164
+ { if(this.settings.tl.radius && this.settings.tr.radius)
165
+ { newFillerBar.style.height = topMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.tl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.tr.radius - this.borderWidth + "px"; newFillerBar.style.borderTop = this.borderString; if(this.backgroundImage != "")
166
+ newFillerBar.style.backgroundPosition = "-" + (topMaxRadius + this.borderWidth) + "px 0px"; this.topContainer.appendChild(newFillerBar);}
167
+ this.box.style.backgroundPosition = "0px -" + (topMaxRadius - this.borderWidth) + "px";}
168
+ break; case "b":
169
+ if(this.bottomContainer)
170
+ { if(this.settings.bl.radius && this.settings.br.radius)
171
+ { newFillerBar.style.height = botMaxRadius - this.borderWidth + "px"; newFillerBar.style.marginLeft = this.settings.bl.radius - this.borderWidth + "px"; newFillerBar.style.marginRight = this.settings.br.radius - this.borderWidth + "px"; newFillerBar.style.borderBottom = this.borderString; if(this.backgroundImage != "")
172
+ newFillerBar.style.backgroundPosition = "-" + (botMaxRadius + this.borderWidth) + "px -" + (this.boxHeight + (topMaxRadius + this.borderWidth)) + "px"; this.bottomContainer.appendChild(newFillerBar);}
173
+ }
174
+ break;}
175
+ }
176
+ }
177
+ if(this.settings.autoPad == true && this.boxPadding > 0)
178
+ { var contentContainer = document.createElement("DIV"); contentContainer.style.position = "relative"; contentContainer.innerHTML = this.boxContent; contentContainer.className = "autoPadDiv"; var topPadding = Math.abs(topMaxRadius - this.boxPadding); var botPadding = Math.abs(botMaxRadius - this.boxPadding); if(topMaxRadius < this.boxPadding)
179
+ contentContainer.style.paddingTop = topPadding + "px"; if(botMaxRadius < this.boxPadding)
180
+ contentContainer.style.paddingBottom = botMaxRadius + "px"; contentContainer.style.paddingLeft = this.boxPadding + "px"; contentContainer.style.paddingRight = this.boxPadding + "px"; this.contentDIV = this.box.appendChild(contentContainer);}
181
+ }
182
+ this.drawPixel = function(intx, inty, colour, transAmount, height, newCorner, image, cornerRadius)
183
+ { var pixel = document.createElement("DIV"); pixel.style.height = height + "px"; pixel.style.width = "1px"; pixel.style.position = "absolute"; pixel.style.fontSize = "1px"; pixel.style.overflow = "hidden"; var topMaxRadius = Math.max(this.settings["tr"].radius, this.settings["tl"].radius); if(image == -1 && this.backgroundImage != "")
184
+ { pixel.style.backgroundImage = this.backgroundImage; pixel.style.backgroundPosition = "-" + (this.boxWidth - (cornerRadius - intx) + this.borderWidth) + "px -" + ((this.boxHeight + topMaxRadius + inty) -this.borderWidth) + "px";}
185
+ else
186
+ { pixel.style.backgroundColor = colour;}
187
+ if (transAmount != 100)
188
+ setOpacity(pixel, transAmount); pixel.style.top = inty + "px"; pixel.style.left = intx + "px"; newCorner.appendChild(pixel);}
189
+ }
190
+ function insertAfter(parent, node, referenceNode)
191
+ { parent.insertBefore(node, referenceNode.nextSibling);}
192
+ function BlendColour(Col1, Col2, Col1Fraction)
193
+ { var red1 = parseInt(Col1.substr(1,2),16); var green1 = parseInt(Col1.substr(3,2),16); var blue1 = parseInt(Col1.substr(5,2),16); var red2 = parseInt(Col2.substr(1,2),16); var green2 = parseInt(Col2.substr(3,2),16); var blue2 = parseInt(Col2.substr(5,2),16); if(Col1Fraction > 1 || Col1Fraction < 0) Col1Fraction = 1; var endRed = Math.round((red1 * Col1Fraction) + (red2 * (1 - Col1Fraction))); if(endRed > 255) endRed = 255; if(endRed < 0) endRed = 0; var endGreen = Math.round((green1 * Col1Fraction) + (green2 * (1 - Col1Fraction))); if(endGreen > 255) endGreen = 255; if(endGreen < 0) endGreen = 0; var endBlue = Math.round((blue1 * Col1Fraction) + (blue2 * (1 - Col1Fraction))); if(endBlue > 255) endBlue = 255; if(endBlue < 0) endBlue = 0; return "#" + IntToHex(endRed)+ IntToHex(endGreen)+ IntToHex(endBlue);}
194
+ function IntToHex(strNum)
195
+ { base = strNum / 16; rem = strNum % 16; base = base - (rem / 16); baseS = MakeHex(base); remS = MakeHex(rem); return baseS + '' + remS;}
196
+ function MakeHex(x)
197
+ { if((x >= 0) && (x <= 9))
198
+ { return x;}
199
+ else
200
+ { switch(x)
201
+ { case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F";}
202
+ }
203
+ }
204
+ function pixelFraction(x, y, r)
205
+ { var pixelfraction = 0; var xvalues = new Array(1); var yvalues = new Array(1); var point = 0; var whatsides = ""; var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x,2))); if ((intersect >= y) && (intersect < (y+1)))
206
+ { whatsides = "Left"; xvalues[point] = 0; yvalues[point] = intersect - y; point = point + 1;}
207
+ var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y+1,2))); if ((intersect >= x) && (intersect < (x+1)))
208
+ { whatsides = whatsides + "Top"; xvalues[point] = intersect - x; yvalues[point] = 1; point = point + 1;}
209
+ var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(x+1,2))); if ((intersect >= y) && (intersect < (y+1)))
210
+ { whatsides = whatsides + "Right"; xvalues[point] = 1; yvalues[point] = intersect - y; point = point + 1;}
211
+ var intersect = Math.sqrt((Math.pow(r,2) - Math.pow(y,2))); if ((intersect >= x) && (intersect < (x+1)))
212
+ { whatsides = whatsides + "Bottom"; xvalues[point] = intersect - x; yvalues[point] = 0;}
213
+ switch (whatsides)
214
+ { case "LeftRight":
215
+ pixelfraction = Math.min(yvalues[0],yvalues[1]) + ((Math.max(yvalues[0],yvalues[1]) - Math.min(yvalues[0],yvalues[1]))/2); break; case "TopRight":
216
+ pixelfraction = 1-(((1-xvalues[0])*(1-yvalues[1]))/2); break; case "TopBottom":
217
+ pixelfraction = Math.min(xvalues[0],xvalues[1]) + ((Math.max(xvalues[0],xvalues[1]) - Math.min(xvalues[0],xvalues[1]))/2); break; case "LeftBottom":
218
+ pixelfraction = (yvalues[0]*xvalues[1])/2; break; default:
219
+ pixelfraction = 1;}
220
+ return pixelfraction;}
221
+ function rgb2Hex(rgbColour)
222
+ { try{ var rgbArray = rgb2Array(rgbColour); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); var hexColour = "#" + IntToHex(red) + IntToHex(green) + IntToHex(blue);}
223
+ catch(e){ alert("There was an error converting the RGB value to Hexadecimal in function rgb2Hex");}
224
+ return hexColour;}
225
+ function rgb2Array(rgbColour)
226
+ { var rgbValues = rgbColour.substring(4, rgbColour.indexOf(")")); var rgbArray = rgbValues.split(", "); return rgbArray;}
227
+ function setOpacity(obj, opacity)
228
+ { opacity = (opacity == 100)?99.999:opacity; if(isSafari && obj.tagName != "IFRAME")
229
+ { var rgbArray = rgb2Array(obj.style.backgroundColor); var red = parseInt(rgbArray[0]); var green = parseInt(rgbArray[1]); var blue = parseInt(rgbArray[2]); obj.style.backgroundColor = "rgba(" + red + ", " + green + ", " + blue + ", " + opacity/100 + ")";}
230
+ else if(typeof(obj.style.opacity) != "undefined")
231
+ { obj.style.opacity = opacity/100;}
232
+ else if(typeof(obj.style.MozOpacity) != "undefined")
233
+ { obj.style.MozOpacity = opacity/100;}
234
+ else if(typeof(obj.style.filter) != "undefined")
235
+ { obj.style.filter = "alpha(opacity:" + opacity + ")";}
236
+ else if(typeof(obj.style.KHTMLOpacity) != "undefined")
237
+ { obj.style.KHTMLOpacity = opacity/100;}
238
+ }
239
+ function inArray(array, value)
240
+ { for(var i = 0; i < array.length; i++){ if (array[i] === value) return i;}
241
+ return false;}
242
+ function inArrayKey(array, value)
243
+ { for(key in array){ if(key === value) return true;}
244
+ return false;}
245
+ function addEvent(elm, evType, fn, useCapture) { if (elm.addEventListener) { elm.addEventListener(evType, fn, useCapture); return true;}
246
+ else if (elm.attachEvent) { var r = elm.attachEvent('on' + evType, fn); return r;}
247
+ else { elm['on' + evType] = fn;}
248
+ }
249
+ function removeEvent(obj, evType, fn, useCapture){ if (obj.removeEventListener){ obj.removeEventListener(evType, fn, useCapture); return true;} else if (obj.detachEvent){ var r = obj.detachEvent("on"+evType, fn); return r;} else { alert("Handler could not be removed");}
250
+ }
251
+ function format_colour(colour)
252
+ { var returnColour = "#ffffff"; if(colour != "" && colour != "transparent")
253
+ { if(colour.substr(0, 3) == "rgb")
254
+ { returnColour = rgb2Hex(colour);}
255
+ else if(colour.length == 4)
256
+ { returnColour = "#" + colour.substring(1, 2) + colour.substring(1, 2) + colour.substring(2, 3) + colour.substring(2, 3) + colour.substring(3, 4) + colour.substring(3, 4);}
257
+ else
258
+ { returnColour = colour;}
259
+ }
260
+ return returnColour;}
261
+ function get_style(obj, property, propertyNS)
262
+ { try
263
+ { if(obj.currentStyle)
264
+ { var returnVal = eval("obj.currentStyle." + property);}
265
+ else
266
+ { if(isSafari && obj.style.display == "none")
267
+ { obj.style.display = ""; var wasHidden = true;}
268
+ var returnVal = document.defaultView.getComputedStyle(obj, '').getPropertyValue(propertyNS); if(isSafari && wasHidden)
269
+ { obj.style.display = "none";}
270
+ }
271
+ }
272
+ catch(e)
273
+ { }
274
+ return returnVal;}
275
+ function getElementsByClass(searchClass, node, tag)
276
+ { var classElements = new Array(); if(node == null)
277
+ node = document; if(tag == null)
278
+ tag = '*'; var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\s)"+searchClass+"(\s|$)"); for (i = 0, j = 0; i < elsLen; i++)
279
+ { if(pattern.test(els[i].className))
280
+ { classElements[j] = els[i]; j++;}
281
+ }
282
+ return classElements;}
283
+ function newCurvyError(errorMessage)
284
+ { return new Error("curvyCorners Error:\n" + errorMessage)
285
+ }
@@ -0,0 +1,159 @@
1
+ body {
2
+ background-color: #8DBD82;
3
+ font-family: "Georgia", sans-serif;
4
+ font-size: 16px;
5
+ line-height: 1.6em;
6
+ padding: 1.6em 0 0 0;
7
+ color: #333;
8
+ }
9
+ h1, h2, h3, h4, h5, h6 {
10
+ color: #444;
11
+ }
12
+ h1 {
13
+ font-family: sans-serif;
14
+ font-weight: normal;
15
+ font-size: 4em;
16
+ line-height: 0.8em;
17
+ letter-spacing: -0.1ex;
18
+ margin: 5px;
19
+ }
20
+ li {
21
+ padding: 0;
22
+ margin: 0;
23
+ list-style-type: square;
24
+ }
25
+ a {
26
+ color: #5E5AFF;
27
+ background-color: #A1DDB1;
28
+ font-weight: normal;
29
+ text-decoration: underline;
30
+ }
31
+ blockquote {
32
+ font-size: 90%;
33
+ font-style: italic;
34
+ border-left: 1px solid #111;
35
+ padding-left: 1em;
36
+ }
37
+ .caps {
38
+ font-size: 80%;
39
+ }
40
+
41
+ #main {
42
+ width: 55em;
43
+ padding: 0;
44
+ margin: 0 auto;
45
+ }
46
+ .coda {
47
+ text-align: right;
48
+ color: #77f;
49
+ font-size: smaller;
50
+ }
51
+
52
+ table {
53
+ font-size: 90%;
54
+ line-height: 1.4em;
55
+ color: #ff8;
56
+ background-color: #111;
57
+ padding: 2px 10px 2px 10px;
58
+ border-style: dashed;
59
+ }
60
+
61
+ th {
62
+ color: #fff;
63
+ }
64
+
65
+ td {
66
+ padding: 2px 10px 2px 10px;
67
+ }
68
+
69
+ .success {
70
+ color: #0CC52B;
71
+ }
72
+
73
+ .failed {
74
+ color: #E90A1B;
75
+ }
76
+
77
+ .unknown {
78
+ color: #995000;
79
+ }
80
+ pre, code {
81
+ font-family: monospace;
82
+ font-size: 90%;
83
+ line-height: 1.4em;
84
+ color: #ff8;
85
+ background-color: #111;
86
+ width: 40em;
87
+ padding: 2px 10px 2px 10px;
88
+ }
89
+ .comment { color: #aaa; font-style: italic; }
90
+ .keyword { color: #eff; font-weight: bold; }
91
+ .punct { color: #eee; font-weight: bold; }
92
+ .symbol { color: #0bb; }
93
+ .string { color: #6b4; }
94
+ .ident { color: #ff8; }
95
+ .constant { color: #66f; }
96
+ .regex { color: #ec6; }
97
+ .number { color: #F99; }
98
+ .expr { color: #227; }
99
+
100
+ .sidebar {
101
+ float: right;
102
+ }
103
+
104
+ #version {
105
+ width: 217px;
106
+ text-align: right;
107
+ font-family: sans-serif;
108
+ font-weight: normal;
109
+ color: #141331;
110
+ padding: 15px 20px 10px 20px;
111
+ margin: 0 auto;
112
+ margin-top: 15px;
113
+ background-color: #9A5535;
114
+ border: 3px solid #7E393E;
115
+ }
116
+
117
+ #version .numbers {
118
+ display: block;
119
+ font-size: 4em;
120
+ line-height: 0.8em;
121
+ letter-spacing: -0.1ex;
122
+ margin-bottom: 15px;
123
+ }
124
+
125
+ #version p {
126
+ text-decoration: none;
127
+ color: #F1F4FF;
128
+ background-color: #9A5535;
129
+ margin: 0;
130
+ padding: 0;
131
+ }
132
+
133
+ #version a {
134
+ text-decoration: none;
135
+ color: #F1F4FF;
136
+ background-color: #9A5535;
137
+ }
138
+
139
+ .clickable {
140
+ cursor: pointer;
141
+ cursor: hand;
142
+ }
143
+
144
+ #twitter_search {
145
+ margin: 40px 0 10px 15px;
146
+ color: #F1F4FF;
147
+ background-color: #9A5535;
148
+ border: 3px solid #7E393E;
149
+ }
150
+
151
+ #twitter_search h3 {
152
+ color: #F1F4FF;
153
+ margin-bottom: 0px;
154
+ }
155
+
156
+ #twitter_search center b {
157
+ display: none;
158
+ }
159
+
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: demingfactor-ri_cal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
- - Rick DeNatale, Richie Khoo
7
+ - Rick DeNatale
8
+ - Demingfactor
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2023-04-25 00:00:00.000000000 Z
12
+ date: 2024-03-05 00:00:00.000000000 Z
12
13
  dependencies: []
13
14
  description: "A new Ruby implementation of RFC2445 iCalendar.\n\nThe existing Ruby
14
15
  iCalendar libraries (e.g. icalendar, vpim) provide for parsing and generating icalendar
@@ -16,7 +17,7 @@ description: "A new Ruby implementation of RFC2445 iCalendar.\n\nThe existing Ru
16
17
  events.\n\nThis is a clean-slate implementation of RFC2445.\n\nA Google group for
17
18
  discussion of this library has been set up http://groups.google.com/group/rical_gem\n
18
19
  \ "
19
- email: rick.denatale@gmail.com
20
+ email: dev@demingfactor.com
20
21
  executables:
21
22
  - ri_cal
22
23
  extensions: []
@@ -25,6 +26,7 @@ extra_rdoc_files:
25
26
  - README.txt
26
27
  - copyrights.txt
27
28
  files:
29
+ - CHANGELOG.md
28
30
  - History.txt
29
31
  - Manifest.txt
30
32
  - README.txt
@@ -148,7 +150,7 @@ files:
148
150
  - performance/psm_big_enum/ical.ics
149
151
  - performance/psm_big_enum/subject.rb
150
152
  - performance/utah_cycling/subject.rb
151
- - ri_cal.gemspec
153
+ - sample_ical_files/from_ical_dot_app/test1.ics
152
154
  - script/benchmark_subject
153
155
  - script/console
154
156
  - script/destroy
@@ -190,9 +192,11 @@ files:
190
192
  - tasks/gem_loader/load_tzinfo_gem.rb
191
193
  - tasks/ri_cal.rake
192
194
  - tasks/spec.rake
193
- homepage: http://github.com/rubyredrick/ri_cal
194
- licenses:
195
- - MIT
195
+ - website/images/rubytrends.png
196
+ - website/javascripts/rounded_corners_lite.inc.js
197
+ - website/stylesheets/screen.css
198
+ homepage: http://github.com/demingfactor/ri_cal
199
+ licenses: []
196
200
  metadata: {}
197
201
  post_install_message:
198
202
  rdoc_options: []
@@ -209,38 +213,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
213
  - !ruby/object:Gem::Version
210
214
  version: '0'
211
215
  requirements: []
212
- rubygems_version: 3.0.3.1
216
+ rubygems_version: 3.3.3
213
217
  signing_key:
214
- specification_version: 3
218
+ specification_version: 4
215
219
  summary: a new implementation of RFC2445 in Ruby
216
- test_files:
217
- - spec/ri_cal/bugreports_spec.rb
218
- - spec/ri_cal/component/alarm_spec.rb
219
- - spec/ri_cal/component/calendar_spec.rb
220
- - spec/ri_cal/component/event_spec.rb
221
- - spec/ri_cal/component/freebusy_spec.rb
222
- - spec/ri_cal/component/journal_spec.rb
223
- - spec/ri_cal/component/t_z_info_timezone_spec.rb
224
- - spec/ri_cal/component/timezone_spec.rb
225
- - spec/ri_cal/component/todo_spec.rb
226
- - spec/ri_cal/component_spec.rb
227
- - spec/ri_cal/core_extensions/string/conversions_spec.rb
228
- - spec/ri_cal/core_extensions/time/calculations_spec.rb
229
- - spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb
230
- - spec/ri_cal/fast_date_time_spec.rb
231
- - spec/ri_cal/inf_loop_spec.rb
232
- - spec/ri_cal/occurrence_enumerator_spec.rb
233
- - spec/ri_cal/parser_spec.rb
234
- - spec/ri_cal/property_value/date_spec.rb
235
- - spec/ri_cal/property_value/date_time_spec.rb
236
- - spec/ri_cal/property_value/duration_spec.rb
237
- - spec/ri_cal/property_value/occurrence_list_spec.rb
238
- - spec/ri_cal/property_value/period_spec.rb
239
- - spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb
240
- - spec/ri_cal/property_value/recurrence_rule_spec.rb
241
- - spec/ri_cal/property_value/text_spec.rb
242
- - spec/ri_cal/property_value/utc_offset_spec.rb
243
- - spec/ri_cal/property_value_spec.rb
244
- - spec/ri_cal/required_timezones_spec.rb
245
- - spec/ri_cal_spec.rb
246
- - spec/spec_helper.rb
220
+ test_files: []
data/ri_cal.gemspec DELETED
@@ -1,244 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{ri_cal}
8
- s.version = "0.8.8"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Rick DeNatale"]
12
- s.license = "MIT"
13
- s.date = %q{2011-02-13}
14
- s.description = %q{A new Ruby implementation of RFC2445 iCalendar.
15
-
16
- The existing Ruby iCalendar libraries (e.g. icalendar, vpim) provide for parsing and generating icalendar files,
17
- but do not support important things like enumerating occurrences of repeating events.
18
-
19
- This is a clean-slate implementation of RFC2445.
20
-
21
- A Google group for discussion of this library has been set up http://groups.google.com/group/rical_gem
22
- }
23
- s.email = %q{rick.denatale@gmail.com}
24
- s.executables = ["ri_cal"]
25
- s.extra_rdoc_files = [
26
- "History.txt",
27
- "README.txt",
28
- "copyrights.txt"
29
- ]
30
- s.files = [
31
- "History.txt",
32
- "Manifest.txt",
33
- "README.txt",
34
- "Rakefile",
35
- "VERSION",
36
- "bin/ri_cal",
37
- "component_attributes/alarm.yml",
38
- "component_attributes/calendar.yml",
39
- "component_attributes/component_property_defs.yml",
40
- "component_attributes/event.yml",
41
- "component_attributes/freebusy.yml",
42
- "component_attributes/journal.yml",
43
- "component_attributes/timezone.yml",
44
- "component_attributes/timezone_period.yml",
45
- "component_attributes/todo.yml",
46
- "copyrights.txt",
47
- "docs/draft-ietf-calsify-2446bis-08.txt",
48
- "docs/draft-ietf-calsify-rfc2445bis-09.txt",
49
- "docs/incrementers.txt",
50
- "docs/rfc2445.pdf",
51
- "lib/ri_cal.rb",
52
- "lib/ri_cal/component.rb",
53
- "lib/ri_cal/component/alarm.rb",
54
- "lib/ri_cal/component/calendar.rb",
55
- "lib/ri_cal/component/event.rb",
56
- "lib/ri_cal/component/freebusy.rb",
57
- "lib/ri_cal/component/journal.rb",
58
- "lib/ri_cal/component/non_standard.rb",
59
- "lib/ri_cal/component/t_z_info_timezone.rb",
60
- "lib/ri_cal/component/timezone.rb",
61
- "lib/ri_cal/component/timezone/daylight_period.rb",
62
- "lib/ri_cal/component/timezone/standard_period.rb",
63
- "lib/ri_cal/component/timezone/timezone_period.rb",
64
- "lib/ri_cal/component/todo.rb",
65
- "lib/ri_cal/core_extensions.rb",
66
- "lib/ri_cal/core_extensions/array.rb",
67
- "lib/ri_cal/core_extensions/array/conversions.rb",
68
- "lib/ri_cal/core_extensions/date.rb",
69
- "lib/ri_cal/core_extensions/date/conversions.rb",
70
- "lib/ri_cal/core_extensions/date_time.rb",
71
- "lib/ri_cal/core_extensions/date_time/conversions.rb",
72
- "lib/ri_cal/core_extensions/object.rb",
73
- "lib/ri_cal/core_extensions/object/conversions.rb",
74
- "lib/ri_cal/core_extensions/string.rb",
75
- "lib/ri_cal/core_extensions/string/conversions.rb",
76
- "lib/ri_cal/core_extensions/time.rb",
77
- "lib/ri_cal/core_extensions/time/calculations.rb",
78
- "lib/ri_cal/core_extensions/time/conversions.rb",
79
- "lib/ri_cal/core_extensions/time/tzid_access.rb",
80
- "lib/ri_cal/core_extensions/time/week_day_predicates.rb",
81
- "lib/ri_cal/fast_date_time.rb",
82
- "lib/ri_cal/floating_timezone.rb",
83
- "lib/ri_cal/invalid_property_value.rb",
84
- "lib/ri_cal/invalid_timezone_identifier.rb",
85
- "lib/ri_cal/occurrence_enumerator.rb",
86
- "lib/ri_cal/occurrence_period.rb",
87
- "lib/ri_cal/parser.rb",
88
- "lib/ri_cal/properties.rb",
89
- "lib/ri_cal/properties/alarm.rb",
90
- "lib/ri_cal/properties/calendar.rb",
91
- "lib/ri_cal/properties/event.rb",
92
- "lib/ri_cal/properties/freebusy.rb",
93
- "lib/ri_cal/properties/journal.rb",
94
- "lib/ri_cal/properties/timezone.rb",
95
- "lib/ri_cal/properties/timezone_period.rb",
96
- "lib/ri_cal/properties/todo.rb",
97
- "lib/ri_cal/property_value.rb",
98
- "lib/ri_cal/property_value/array.rb",
99
- "lib/ri_cal/property_value/cal_address.rb",
100
- "lib/ri_cal/property_value/date.rb",
101
- "lib/ri_cal/property_value/date_time.rb",
102
- "lib/ri_cal/property_value/date_time/additive_methods.rb",
103
- "lib/ri_cal/property_value/date_time/time_machine.rb",
104
- "lib/ri_cal/property_value/date_time/timezone_support.rb",
105
- "lib/ri_cal/property_value/duration.rb",
106
- "lib/ri_cal/property_value/geo.rb",
107
- "lib/ri_cal/property_value/integer.rb",
108
- "lib/ri_cal/property_value/occurrence_list.rb",
109
- "lib/ri_cal/property_value/period.rb",
110
- "lib/ri_cal/property_value/recurrence_rule.rb",
111
- "lib/ri_cal/property_value/recurrence_rule/enumeration_support_methods.rb",
112
- "lib/ri_cal/property_value/recurrence_rule/enumerator.rb",
113
- "lib/ri_cal/property_value/recurrence_rule/initialization_methods.rb",
114
- "lib/ri_cal/property_value/recurrence_rule/negative_setpos_enumerator.rb",
115
- "lib/ri_cal/property_value/recurrence_rule/numbered_span.rb",
116
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer.rb",
117
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_day_incrementer.rb",
118
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_hour_incrementer.rb",
119
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_minute_incrementer.rb",
120
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb",
121
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_monthday_incrementer.rb",
122
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_numbered_day_incrementer.rb",
123
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_second_incrementer.rb",
124
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_weekno_incrementer.rb",
125
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_yearday_incrementer.rb",
126
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/daily_incrementer.rb",
127
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/frequency_incrementer.rb",
128
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/hourly_incrementer.rb",
129
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/list_incrementer.rb",
130
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/minutely_incrementer.rb",
131
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/monthly_incrementer.rb",
132
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/null_sub_cycle_incrementer.rb",
133
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/secondly_incrementer.rb",
134
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/weekly_incrementer.rb",
135
- "lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/yearly_incrementer.rb",
136
- "lib/ri_cal/property_value/recurrence_rule/recurring_day.rb",
137
- "lib/ri_cal/property_value/recurrence_rule/recurring_month_day.rb",
138
- "lib/ri_cal/property_value/recurrence_rule/recurring_numbered_week.rb",
139
- "lib/ri_cal/property_value/recurrence_rule/recurring_year_day.rb",
140
- "lib/ri_cal/property_value/recurrence_rule/time_manipulation.rb",
141
- "lib/ri_cal/property_value/recurrence_rule/validations.rb",
142
- "lib/ri_cal/property_value/text.rb",
143
- "lib/ri_cal/property_value/uri.rb",
144
- "lib/ri_cal/property_value/utc_offset.rb",
145
- "lib/ri_cal/property_value/zulu_date_time.rb",
146
- "lib/ri_cal/required_timezones.rb",
147
- "parked_specs/ri_cal/claudio_a_bug_spec.rb",
148
- "performance/empty_propval/subject.rb",
149
- "performance/paris_eastern/subject.rb",
150
- "performance/penultimate_weekday/subject.rb",
151
- "performance/psm_big_enum/ical.ics",
152
- "performance/psm_big_enum/subject.rb",
153
- "performance/utah_cycling/subject.rb",
154
- "ri_cal.gemspec",
155
- "script/benchmark_subject",
156
- "script/console",
157
- "script/destroy",
158
- "script/generate",
159
- "script/profile_subject",
160
- "script/txt2html",
161
- "spec/ri_cal/bugreports_spec.rb",
162
- "spec/ri_cal/component/alarm_spec.rb",
163
- "spec/ri_cal/component/calendar_spec.rb",
164
- "spec/ri_cal/component/event_spec.rb",
165
- "spec/ri_cal/component/freebusy_spec.rb",
166
- "spec/ri_cal/component/journal_spec.rb",
167
- "spec/ri_cal/component/t_z_info_timezone_spec.rb",
168
- "spec/ri_cal/component/timezone_spec.rb",
169
- "spec/ri_cal/component/todo_spec.rb",
170
- "spec/ri_cal/component_spec.rb",
171
- "spec/ri_cal/core_extensions/string/conversions_spec.rb",
172
- "spec/ri_cal/core_extensions/time/calculations_spec.rb",
173
- "spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb",
174
- "spec/ri_cal/fast_date_time_spec.rb",
175
- "spec/ri_cal/inf_loop_spec.rb",
176
- "spec/ri_cal/occurrence_enumerator_spec.rb",
177
- "spec/ri_cal/parser_spec.rb",
178
- "spec/ri_cal/property_value/date_spec.rb",
179
- "spec/ri_cal/property_value/date_time_spec.rb",
180
- "spec/ri_cal/property_value/duration_spec.rb",
181
- "spec/ri_cal/property_value/occurrence_list_spec.rb",
182
- "spec/ri_cal/property_value/period_spec.rb",
183
- "spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb",
184
- "spec/ri_cal/property_value/recurrence_rule_spec.rb",
185
- "spec/ri_cal/property_value/text_spec.rb",
186
- "spec/ri_cal/property_value/utc_offset_spec.rb",
187
- "spec/ri_cal/property_value_spec.rb",
188
- "spec/ri_cal/required_timezones_spec.rb",
189
- "spec/ri_cal_spec.rb",
190
- "spec/spec.opts",
191
- "spec/spec_helper.rb",
192
- "tasks/gem_loader/load_active_support.rb",
193
- "tasks/gem_loader/load_tzinfo_gem.rb",
194
- "tasks/ri_cal.rake",
195
- "tasks/spec.rake"
196
- ]
197
- s.homepage = %q{http://github.com/rubyredrick/ri_cal}
198
- s.require_paths = ["lib"]
199
- s.rubygems_version = %q{1.3.7}
200
- s.summary = %q{a new implementation of RFC2445 in Ruby}
201
- s.test_files = [
202
- "spec/ri_cal/bugreports_spec.rb",
203
- "spec/ri_cal/component/alarm_spec.rb",
204
- "spec/ri_cal/component/calendar_spec.rb",
205
- "spec/ri_cal/component/event_spec.rb",
206
- "spec/ri_cal/component/freebusy_spec.rb",
207
- "spec/ri_cal/component/journal_spec.rb",
208
- "spec/ri_cal/component/t_z_info_timezone_spec.rb",
209
- "spec/ri_cal/component/timezone_spec.rb",
210
- "spec/ri_cal/component/todo_spec.rb",
211
- "spec/ri_cal/component_spec.rb",
212
- "spec/ri_cal/core_extensions/string/conversions_spec.rb",
213
- "spec/ri_cal/core_extensions/time/calculations_spec.rb",
214
- "spec/ri_cal/core_extensions/time/week_day_predicates_spec.rb",
215
- "spec/ri_cal/fast_date_time_spec.rb",
216
- "spec/ri_cal/inf_loop_spec.rb",
217
- "spec/ri_cal/occurrence_enumerator_spec.rb",
218
- "spec/ri_cal/parser_spec.rb",
219
- "spec/ri_cal/property_value/date_spec.rb",
220
- "spec/ri_cal/property_value/date_time_spec.rb",
221
- "spec/ri_cal/property_value/duration_spec.rb",
222
- "spec/ri_cal/property_value/occurrence_list_spec.rb",
223
- "spec/ri_cal/property_value/period_spec.rb",
224
- "spec/ri_cal/property_value/recurrence_rule/recurring_year_day_spec.rb",
225
- "spec/ri_cal/property_value/recurrence_rule_spec.rb",
226
- "spec/ri_cal/property_value/text_spec.rb",
227
- "spec/ri_cal/property_value/utc_offset_spec.rb",
228
- "spec/ri_cal/property_value_spec.rb",
229
- "spec/ri_cal/required_timezones_spec.rb",
230
- "spec/ri_cal_spec.rb",
231
- "spec/spec_helper.rb"
232
- ]
233
-
234
- if s.respond_to? :specification_version then
235
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
236
- s.specification_version = 3
237
-
238
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
239
- else
240
- end
241
- else
242
- end
243
- end
244
-