icalendar 1.2.3 → 1.2.4

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.
@@ -1,3 +1,7 @@
1
+ === 1.2.4 2013-03-26
2
+ * Proxy component values now frozen in Ruby 2.0 (Fixed issue #17)
3
+ * Clean up gemspec for cleaner installing via bundler/git
4
+
1
5
  === 1.2.3 2013-03-09
2
6
  * Call `super` from Component#method_missing
3
7
  * Clean up warnings in test suite
data/Rakefile CHANGED
@@ -4,6 +4,8 @@ require './lib/icalendar'
4
4
 
5
5
  Hoe.plugin :newgem
6
6
  Hoe.plugin :website
7
+ Hoe.plugins.delete :gemcutter
8
+ Hoe.plugin :rubyforge
7
9
 
8
10
  # Generate all the Rake tasks
9
11
  # Run 'rake -T' to see list of generated tasks (from gem root directory)
@@ -1,2 +1,2 @@
1
- host: sdague@rubyforge.org
2
- remote_dir: /var/www/gforge-projects/icalendar
1
+ host: rcahearn@rubyforge.org
2
+ remote_dir: /var/www/gforge-projects/icalendar
@@ -1,6 +1,11 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'icalendar/base'
3
+
1
4
  Gem::Specification.new do |s|
5
+ s.authors = ['Ryan Ahearn']
6
+
2
7
  s.name = "icalendar"
3
- s.version = "1.2"
8
+ s.version = Icalendar::VERSION
4
9
 
5
10
  s.homepage = "http://icalendar.rubyforge.org/"
6
11
  s.platform = Gem::Platform::RUBY
@@ -10,5 +15,6 @@ Gem::Specification.new do |s|
10
15
  s.add_development_dependency 'hoe', '~> 3.5'
11
16
  s.add_development_dependency 'newgem', '~> 1.5'
12
17
  s.add_development_dependency 'rubyforge', '~> 2.0'
18
+ s.add_development_dependency 'rdoc', '~> 4.0'
13
19
  end
14
20
 
@@ -11,7 +11,7 @@ require 'logger'
11
11
 
12
12
  module Icalendar #:nodoc:
13
13
 
14
- VERSION = '1.2.3'
14
+ VERSION = '1.2.4'
15
15
 
16
16
  # A simple error class to differentiate iCalendar library exceptions
17
17
  # from ruby language exceptions or others.
@@ -184,8 +184,8 @@ module Icalendar
184
184
  unless val.empty?
185
185
  s << "="
186
186
  sep = "" # First entry comes after = sign, but then we need commas
187
- val.each do |pval|
188
- if pval.respond_to? :to_ical
187
+ val.each do |pval|
188
+ if pval.respond_to? :to_ical
189
189
  s << sep << pval.to_ical
190
190
  sep = ","
191
191
  end
@@ -228,8 +228,8 @@ module Icalendar
228
228
  generate_setter(property, alias_name)
229
229
  generate_query(property, alias_name)
230
230
  end
231
-
232
- # Define a set of methods defining a new property, which
231
+
232
+ # Define a set of methods defining a new property, which
233
233
  # supports multiple values for the same property name.
234
234
  def Component.ical_multi_property(property, singular, plural)
235
235
  property = "#{property}".strip.downcase.gsub(/-/, '_')
@@ -246,7 +246,7 @@ module Icalendar
246
246
  generate_multi_remover(property, singular)
247
247
  end
248
248
 
249
- # Define a set of methods defining a new property, which
249
+ # Define a set of methods defining a new property, which
250
250
  # supports multiple values in multiple lines with same property name
251
251
  def Component.ical_multiline_property(property, singular, plural)
252
252
  @@multiline_properties["#{property}"] = true
@@ -267,8 +267,9 @@ module Icalendar
267
267
  end
268
268
 
269
269
  unless params.nil?
270
+ val = FrozenProxy.new val if val.frozen?
270
271
  # Extend with the parameter methods only if we have to...
271
- unless val.respond_to?(:ical_params)
272
+ unless val.respond_to?(:ical_params)
272
273
  val.class.class_eval { attr_accessor :ical_params }
273
274
  end
274
275
  val.ical_params = params
@@ -309,10 +310,10 @@ module Icalendar
309
310
  class_eval code, "component.rb", 226
310
311
 
311
312
  alias_method("#{alias_name}\?", "#{query}") unless alias_name.nil?
312
- end
313
+ end
313
314
  end
314
315
 
315
- def Component.generate_multi_getter(property, plural)
316
+ def Component.generate_multi_getter(property, plural)
316
317
  # Getter for whole array
317
318
  unless instance_methods.include? plural
318
319
  code = <<-code
@@ -321,7 +322,7 @@ module Icalendar
321
322
  @properties["#{property}"] || []
322
323
  else
323
324
  self.#{plural}=(a)
324
- end
325
+ end
325
326
  end
326
327
  code
327
328
 
@@ -377,7 +378,7 @@ module Icalendar
377
378
 
378
379
  unless params.nil?
379
380
  # Extend with the parameter methods only if we have to...
380
- unless val.respond_to?(:ical_params)
381
+ unless val.respond_to?(:ical_params)
381
382
  val.class.class_eval { attr_accessor :ical_params }
382
383
  end
383
384
  val.ical_params = params
@@ -392,7 +393,7 @@ module Icalendar
392
393
  code
393
394
 
394
395
  class_eval code, "component.rb", 289
395
- alias_method("add_#{property.downcase}", "#{adder}")
396
+ alias_method("add_#{property.downcase}", "#{adder}")
396
397
  end
397
398
  end
398
399
 
@@ -20,6 +20,11 @@ module Icalendar
20
20
  module TzidSupport
21
21
  attr_accessor :icalendar_tzid
22
22
  end
23
+
24
+ require 'delegate'
25
+ class FrozenProxy < SimpleDelegator
26
+ attr_accessor :ical_params
27
+ end
23
28
  end
24
29
 
25
30
  require 'uri/generic'
@@ -13,28 +13,42 @@ class TestParameter < Test::Unit::TestCase
13
13
  @cal = Icalendar::Calendar.new
14
14
  @event = Icalendar::Event.new
15
15
  end
16
-
16
+
17
17
  def test_property_parameters
18
18
  tests = [
19
- {"ALTREP" =>['"http://my.language.net"'],
19
+ {"ALTREP" =>['"http://my.language.net"'],
20
20
  "LANGUAGE" => ["SPANISH"]},
21
- {"ALTREP" =>['"http://my.language.net"'],
21
+ {"ALTREP" =>['"http://my.language.net"'],
22
22
  "LANGUAGE" => ['"SPANISH:CATILLAN"']},
23
- {"ALTREP" =>["foo"],
23
+ {"ALTREP" =>["foo"],
24
24
  "LANGUAGE" => ["SPANISH"]}
25
25
  ]
26
26
 
27
- tests.each do |params|
27
+ tests.each do |params|
28
28
  @event.summary("This is a test summary.", params)
29
-
29
+
30
30
  assert_equal params, @event.summary.ical_params
31
-
31
+
32
32
  @cal.add_event @event
33
33
  cal_str = @cal.to_ical
34
-
34
+
35
35
  cals = Icalendar::Parser.new(cal_str).parse
36
36
  event = cals.first.events.first
37
37
  assert_equal params, event.summary.ical_params
38
38
  end
39
39
  end
40
+
41
+ def test_nonstandard_property_parameters
42
+ params = {'CUSTOM' => ['yours']}
43
+ @event.priority(2, params)
44
+
45
+ assert_equal params, @event.priority.ical_params
46
+
47
+ @cal.add_event @event
48
+ cal_str = @cal.to_ical
49
+
50
+ cals = Icalendar::Parser.new(cal_str).parse
51
+ event = cals.first.events.first
52
+ assert_equal params, event.priority.ical_params
53
+ end
40
54
  end
@@ -34,13 +34,15 @@
34
34
  <div class="sidebar">
35
35
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/icalendar"; return false'>
36
36
  <p>Get Version</p>
37
- <a href="http://rubyforge.org/projects/icalendar" class="numbers">1.2.2</a>
37
+ <a href="http://rubyforge.org/projects/icalendar" class="numbers">1.2.3</a>
38
38
  </div>
39
39
  </div>
40
40
  <h2>What</h2>
41
41
  <p>This gem implements the iCalendar specification (<span class="caps">RFC</span>-2445) in Ruby. This allows for the generation and parsing of .ics files, which are used by a variety of calendaring applications.</p>
42
42
  <h2>How</h2>
43
43
  <p>Please see <a href="https://github.com/icalendar/icalendar/blob/master/README.rdoc">the <span class="caps">README</span></a> for more information.</p>
44
+ <h2>Docs</h2>
45
+ <p>The best documents are the code, but we&#8217;ll attempt to keep the <a href="http://icalendar.rubyforge.org/rdoc">rdoc</a> up to date.</p>
44
46
  <h2>Installing</h2>
45
47
  <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">icalendar</span></pre></p>
46
48
  <h2>How to submit patches</h2>
@@ -8,6 +8,10 @@ h2. How
8
8
 
9
9
  Please see "the README":https://github.com/icalendar/icalendar/blob/master/README.rdoc for more information.
10
10
 
11
+ h2. Docs
12
+
13
+ The best documents are the code, but we'll attempt to keep the "rdoc":http://icalendar.rubyforge.org/rdoc up to date.
14
+
11
15
  h2. Installing
12
16
 
13
17
  <pre syntax="ruby">sudo gem install icalendar</pre>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icalendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-09 00:00:00.000000000 Z
12
+ date: 2013-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rubyforge
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.4
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.0.4
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: rdoc
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -161,18 +177,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
177
  - - ! '>='
162
178
  - !ruby/object:Gem::Version
163
179
  version: '0'
164
- segments:
165
- - 0
166
- hash: -3884597809888146880
167
180
  required_rubygems_version: !ruby/object:Gem::Requirement
168
181
  none: false
169
182
  requirements:
170
183
  - - ! '>='
171
184
  - !ruby/object:Gem::Version
172
185
  version: '0'
173
- segments:
174
- - 0
175
- hash: -3884597809888146880
176
186
  requirements: []
177
187
  rubyforge_project: icalendar
178
188
  rubygems_version: 1.8.25