icalendar 1.4.4 → 1.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3bb514e630455e28b49f977bb6c316dc470cb98f
4
- data.tar.gz: 02953a2e8e74af0680d02e6ae889dd30fee8cedb
3
+ metadata.gz: fac2f5451b7ca770f2ac6c7a821cde7019b243b0
4
+ data.tar.gz: 2e67f1b9d5f1e0194fc3a988674e18095947dc64
5
5
  SHA512:
6
- metadata.gz: 107461d20bf35d2f4df715e52605126a55a532c8dabb51c6b35eda16828fe50220a073b7c76b09dda00165c34745414b5172206a422aeeee4e9fc2ba7df46cef
7
- data.tar.gz: 66694d2dd3cc7f70d3ddcbd81d6682fca411dffe57bd76afacc015f6c1328b0f6f67ffed512c42b08d500644d8d8e514502c2c438e32644b43c66f9c2976bde9
6
+ metadata.gz: f5d251b5bc4f461d7870a47b97f0b31ab7333e2cd7db214903b15275a9994f152f19330fe4a4a926c6c26a90d885c856f4ab9cebee55f6a3c1cdc488a044e6f0
7
+ data.tar.gz: 85137efbd0de1f1233f043dace763619e1332ba49a38a709da4a3c30243a7b10b9cc452bf47d5e13c78a214b95137aa200e7769b888c15998f6686c80deeac58
data/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ === 1.4.5 2013-11-14
2
+ * Fix Geo accessor methods - bouzuya
3
+ * Add ical_multiline_property :related_to for Alarm
4
+ * Allow using multi setters to append single values
5
+
1
6
  === 1.4.4 2013-11-05
2
7
  * Allow user to handle TZInfo::AmbiguousTime error - David Bradford
3
8
  * Better handling of multiple exdate and rdate values
data/README.md CHANGED
@@ -2,6 +2,7 @@ iCalendar -- Internet calendaring, Ruby style
2
2
  ===
3
3
 
4
4
  [![Build Status](https://travis-ci.org/icalendar/icalendar.png)](https://travis-ci.org/icalendar/icalendar)
5
+ [![Code Climate](https://codeclimate.com/github/icalendar/icalendar.png)](https://codeclimate.com/github/icalendar/icalendar)
5
6
 
6
7
  <http://github.com/icalendar/icalendar>
7
8
 
@@ -11,7 +11,7 @@ require 'logger'
11
11
 
12
12
  module Icalendar #:nodoc:
13
13
 
14
- VERSION = '1.4.4'
14
+ VERSION = '1.4.5'
15
15
 
16
16
  # A simple error class to differentiate iCalendar library exceptions
17
17
  # from ruby language exceptions or others.
@@ -14,15 +14,17 @@ module Icalendar
14
14
  class Geo < Icalendar::Base
15
15
  attr_accessor :latitude, :longitude
16
16
  alias :lat :latitude
17
+ alias :lat= :latitude=
17
18
  alias :long :longitude
19
+ alias :long= :longitude=
18
20
 
19
21
  def initialize(lat, long)
20
- @lat = lat
21
- @long = long
22
+ @latitude = lat
23
+ @longitude = long
22
24
  end
23
25
 
24
26
  def to_ical
25
- "#{@lat.to_ical};#{@long.to_ical}"
27
+ "#{@latitude.to_ical};#{@longitude.to_ical}"
26
28
  end
27
29
  end
28
30
 
@@ -345,7 +347,7 @@ module Icalendar
345
347
  elsif a =~ /^[^"].*(?<!\\\\),.*[^"]$/
346
348
  @properties["#{property}"] = a.split(/(?<!\\\\),/).to_ary
347
349
  else
348
- raise ArgumentError, "#{plural} is a multi-property that must be an array! Use the add_[property] method to add single entries."
350
+ (@properties["#{property}"] ||= []) << a
349
351
  end
350
352
  end
351
353
  code
@@ -5,26 +5,26 @@
5
5
  under the same terms as the ruby language itself, see the file COPYING for
6
6
  details.
7
7
  =end
8
- module Icalendar
8
+ module Icalendar
9
9
  # An Alarm calendar component is a grouping of component
10
10
  # properties that is a reminder or alarm for an event or a
11
11
  # to-do. For example, it may be used to define a reminder for a
12
- # pending Event or an overdue Todo.
12
+ # pending Event or an overdue Todo.
13
13
  class Alarm < Component
14
-
14
+
15
15
  # Single properties
16
16
  ical_property :action
17
17
  ical_property :description
18
18
  ical_property :trigger
19
19
  ical_property :summary
20
20
  ical_property :uid
21
-
21
+
22
22
  # Single but must appear together
23
23
  ical_property :duration
24
24
  ical_property :repeat
25
-
25
+
26
26
  # Single and only occurring once
27
-
27
+
28
28
  ical_property :created
29
29
  ical_property :last_modified
30
30
  ical_property :timestamp
@@ -34,11 +34,12 @@ module Icalendar
34
34
  # Multi properties
35
35
  ical_multiline_property :attendee, :attendee, :attendees
36
36
  ical_multiline_property :attach, :attachment, :attachments
37
+ ical_multiline_property :related_to, :related_to, :related_to
37
38
 
38
39
  def initialize()
39
40
  super("VALARM")
40
-
41
- # Almost everyone just wants to display so I make it the
41
+
42
+ # Almost everyone just wants to display so I make it the
42
43
  # default so it works for most people right away...
43
44
  action "DISPLAY"
44
45
  end
@@ -12,7 +12,7 @@ require 'uri'
12
12
  require 'stringio'
13
13
 
14
14
  module Icalendar
15
-
15
+
16
16
  def Icalendar.parse(src, single = false)
17
17
  cals = Icalendar::Parser.new(src).parse
18
18
 
@@ -70,8 +70,8 @@ module Icalendar
70
70
  def next_line
71
71
  line = @prev_line
72
72
 
73
- if line.nil?
74
- return nil
73
+ if line.nil?
74
+ return nil
75
75
  end
76
76
 
77
77
  # Loop through until we get to a non-continuation line...
@@ -102,7 +102,7 @@ module Icalendar
102
102
 
103
103
  @@logger.debug "parsing..."
104
104
  # Outer loop for Calendar objects
105
- while (line = next_line)
105
+ while (line = next_line)
106
106
  fields = parse_line(line)
107
107
 
108
108
  # Just iterate through until we find the beginning of a calendar object
@@ -120,7 +120,7 @@ module Icalendar
120
120
 
121
121
  # Parse a single VCALENDAR object
122
122
  # -- This should consist of the PRODID, VERSION, option METHOD & CALSCALE,
123
- # and then one or more calendar components: VEVENT, VTODO, VJOURNAL,
123
+ # and then one or more calendar components: VEVENT, VTODO, VJOURNAL,
124
124
  # VFREEBUSY, VTIMEZONE
125
125
  def parse_component(component = Calendar.new)
126
126
  @@logger.debug "parsing new component..."
@@ -190,7 +190,7 @@ module Icalendar
190
190
  raise(UnknownPropertyMethod, "Unknown property type: #{name}") if strict
191
191
  end
192
192
  end
193
- end
193
+ end
194
194
  end
195
195
 
196
196
  component
@@ -204,7 +204,7 @@ module Icalendar
204
204
 
205
205
  # Contentline
206
206
  LINE = "(#{NAME})((?:(?:[^:]*?)(?:#{QSTR})(?:[^:]*?))+|(?:[^:]*))\:(.*)"
207
-
207
+
208
208
  # *<Any character except CTLs, DQUOTE, ";", ":", ",">
209
209
  PTEXT = '[^";:,]*'
210
210
 
@@ -266,7 +266,7 @@ module Icalendar
266
266
  {:name => name, :value => value, :params => params}
267
267
  end
268
268
 
269
- ## Following is a collection of parsing functions for various
269
+ ## Following is a collection of parsing functions for various
270
270
  ## icalendar property value data types... First we setup
271
271
  ## a hash with property names pointing to methods...
272
272
  def setup_parsers
@@ -305,12 +305,12 @@ module Icalendar
305
305
  # This is a URI by default, and if its not a valid URI
306
306
  # it will be returned as a string which works for binary data
307
307
  # the other possible type.
308
- @parsers["ATTACH"] = m
308
+ @parsers["ATTACH"] = m
309
309
 
310
310
  # GEO
311
311
  m = self.method(:parse_geo)
312
312
  @parsers["GEO"] = m
313
-
313
+
314
314
  #RECUR
315
315
  m = self.method(:parse_recur)
316
316
  @parsers["RRULE"] = m
@@ -378,7 +378,7 @@ module Icalendar
378
378
  end
379
379
 
380
380
  # Durations
381
- # TODO: Need to figure out the best way to represent durations
381
+ # TODO: Need to figure out the best way to represent durations
382
382
  # so just returning string for now.
383
383
  def parse_duration(name, params, value)
384
384
  value
@@ -417,7 +417,7 @@ module Icalendar
417
417
  # if the parsing fails return the string
418
418
  def parse_geo(name, params, value)
419
419
  strloc = value.split(';')
420
- if strloc.size != 2
420
+ if strloc.size != 2
421
421
  return value
422
422
  end
423
423
 
@@ -52,6 +52,10 @@ class TestComponent < Test::Unit::TestCase
52
52
  @event.remove_comment "c1"
53
53
  assert_equal(["c2"], @event.comments)
54
54
 
55
+ # Add using multi setter
56
+ @event.comments "c3"
57
+ assert_equal(["c2","c3"], @event.comments)
58
+
55
59
  # Set & get whole array
56
60
  foo = ["as", "df"]
57
61
  @event.comments = foo
@@ -78,4 +82,21 @@ class TestComponent < Test::Unit::TestCase
78
82
  component = Icalendar::Component.new('name')
79
83
  assert component.respond_to?(:x_foobar)
80
84
  end
85
+
86
+ def test_geo_constructor
87
+ geo = Icalendar::Geo.new(1, 2)
88
+ assert_equal(1, geo.latitude)
89
+ assert_equal(1, geo.lat)
90
+ assert_equal(2, geo.longitude)
91
+ assert_equal(2, geo.long)
92
+ assert_equal('1;2', geo.to_ical)
93
+ end
94
+
95
+ def test_geo_lat_and_long_setter
96
+ geo = Icalendar::Geo.new(1, 2)
97
+ geo.lat = 3
98
+ geo.long = 4
99
+ assert_equal(3, geo.lat)
100
+ assert_equal(4, geo.long)
101
+ end
81
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icalendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Ahearn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-06 00:00:00.000000000 Z
11
+ date: 2013-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake