icalendar 0.96 → 0.96.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/README +3 -3
  2. data/Rakefile +3 -4
  3. data/docs/api/classes/Array.html +148 -0
  4. data/docs/api/classes/Date.html +159 -0
  5. data/docs/api/classes/DateTime.html +180 -0
  6. data/docs/api/classes/Fixnum.html +148 -0
  7. data/docs/api/classes/Float.html +148 -0
  8. data/docs/api/classes/HashAttrs.html +199 -0
  9. data/docs/api/classes/Icalendar/Alarm.html +228 -0
  10. data/docs/api/classes/Icalendar/Base.html +120 -0
  11. data/docs/api/classes/Icalendar/Calendar.html +365 -0
  12. data/docs/api/classes/Icalendar/Component.html +689 -0
  13. data/docs/api/classes/Icalendar/DateProp.html +187 -0
  14. data/docs/api/classes/Icalendar/DateProp/ClassMethods.html +195 -0
  15. data/docs/api/classes/Icalendar/Daylight.html +156 -0
  16. data/docs/api/classes/Icalendar/Event.html +650 -0
  17. data/docs/api/classes/Icalendar/Freebusy.html +297 -0
  18. data/docs/api/classes/Icalendar/InvalidPropertyValue.html +117 -0
  19. data/docs/api/classes/Icalendar/Journal.html +459 -0
  20. data/docs/api/classes/Icalendar/Parameter.html +166 -0
  21. data/docs/api/classes/Icalendar/Parser.html +447 -0
  22. data/docs/api/classes/Icalendar/Standard.html +156 -0
  23. data/docs/api/classes/Icalendar/Timezone.html +351 -0
  24. data/docs/api/classes/Icalendar/Todo.html +496 -0
  25. data/docs/api/classes/Icalendar/UnknownComponentClass.html +117 -0
  26. data/docs/api/classes/Icalendar/UnknownPropertyMethod.html +117 -0
  27. data/docs/api/classes/Object.html +270 -0
  28. data/docs/api/classes/String.html +148 -0
  29. data/docs/api/classes/Time.html +163 -0
  30. data/docs/api/classes/URI.html +111 -0
  31. data/docs/api/classes/URI/Generic.html +148 -0
  32. data/docs/api/created.rid +1 -0
  33. data/docs/api/files/COPYING.html +163 -0
  34. data/docs/api/files/GPL.html +531 -0
  35. data/docs/api/files/README.html +254 -0
  36. data/docs/api/files/lib/hash_attrs_rb.html +107 -0
  37. data/docs/api/files/lib/icalendar/base_rb.html +108 -0
  38. data/docs/api/files/lib/icalendar/calendar_rb.html +101 -0
  39. data/docs/api/files/lib/icalendar/component/alarm_rb.html +101 -0
  40. data/docs/api/files/lib/icalendar/component/event_rb.html +101 -0
  41. data/docs/api/files/lib/icalendar/component/freebusy_rb.html +101 -0
  42. data/docs/api/files/lib/icalendar/component/journal_rb.html +101 -0
  43. data/docs/api/files/lib/icalendar/component/timezone_rb.html +101 -0
  44. data/docs/api/files/lib/icalendar/component/todo_rb.html +101 -0
  45. data/docs/api/files/lib/icalendar/component_rb.html +101 -0
  46. data/docs/api/files/lib/icalendar/conversions_rb.html +109 -0
  47. data/docs/api/files/lib/icalendar/helpers_rb.html +101 -0
  48. data/docs/api/files/lib/icalendar/parameter_rb.html +101 -0
  49. data/docs/api/files/lib/icalendar/parser_rb.html +109 -0
  50. data/docs/api/files/lib/icalendar_rb.html +120 -0
  51. data/docs/api/files/lib/meta_rb.html +107 -0
  52. data/docs/api/fr_class_index.html +55 -0
  53. data/docs/api/fr_file_index.html +45 -0
  54. data/docs/api/fr_method_index.html +79 -0
  55. data/docs/api/index.html +24 -0
  56. data/docs/api/rdoc-style.css +208 -0
  57. data/{docs/examples → examples}/create_cal.rb +6 -2
  58. data/{docs/examples → examples}/parse_cal.rb +3 -2
  59. data/{docs/examples → examples}/single_event.ics +0 -0
  60. data/lib/hash_attrs.rb +29 -0
  61. data/lib/icalendar.rb +11 -2
  62. data/lib/icalendar/base.rb +6 -2
  63. data/lib/icalendar/calendar.rb +1 -1
  64. data/lib/icalendar/component.rb +98 -71
  65. data/lib/icalendar/component/alarm.rb +5 -3
  66. data/lib/icalendar/component/event.rb +1 -1
  67. data/lib/icalendar/component/freebusy.rb +23 -23
  68. data/lib/icalendar/component/journal.rb +1 -5
  69. data/lib/icalendar/component/timezone.rb +7 -0
  70. data/lib/icalendar/component/todo.rb +1 -6
  71. data/lib/icalendar/conversions.rb +10 -0
  72. data/lib/icalendar/parser.rb +82 -85
  73. data/lib/meta.rb +32 -0
  74. data/test/component_test.rb +69 -64
  75. metadata +74 -12
  76. data/lib/icalendar/foo.rb +0 -394
  77. data/test/property_helpers.rb +0 -35
@@ -0,0 +1,689 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Icalendar::Component</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Icalendar::Component</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/icalendar/component_rb.html">
59
+ lib/icalendar/component.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Base.html">
69
+ Icalendar::Base
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ The body of the iCalendar object consists of a sequence of calendar
86
+ properties and one or more calendar components. The calendar properties are
87
+ attributes that apply to the calendar as a whole. The calendar components
88
+ are collections of properties that express a particular calendar semantic.
89
+ For example, the calendar component can specify an <a
90
+ href="Event.html">Event</a>, a <a href="Todo.html">Todo</a>, a <a
91
+ href="Journal.html">Journal</a> entry, <a href="Timezone.html">Timezone</a>
92
+ information, or <a href="Freebusy.html">Freebusy</a> time information, or
93
+ an <a href="Alarm.html">Alarm</a>.
94
+ </p>
95
+
96
+ </div>
97
+
98
+
99
+ </div>
100
+
101
+ <div id="method-list">
102
+ <h3 class="section-bar">Methods</h3>
103
+
104
+ <div class="name-list">
105
+ <a href="#M000027">add</a>&nbsp;&nbsp;
106
+ <a href="#M000026">add_component</a>&nbsp;&nbsp;
107
+ <a href="#M000032">custom_property</a>&nbsp;&nbsp;
108
+ <a href="#M000034">ical_component</a>&nbsp;&nbsp;
109
+ <a href="#M000036">ical_multi_property</a>&nbsp;&nbsp;
110
+ <a href="#M000035">ical_property</a>&nbsp;&nbsp;
111
+ <a href="#M000037">method_missing</a>&nbsp;&nbsp;
112
+ <a href="#M000033">multi_property?</a>&nbsp;&nbsp;
113
+ <a href="#M000025">new</a>&nbsp;&nbsp;
114
+ <a href="#M000029">print_component</a>&nbsp;&nbsp;
115
+ <a href="#M000031">print_parameter</a>&nbsp;&nbsp;
116
+ <a href="#M000030">print_properties</a>&nbsp;&nbsp;
117
+ <a href="#M000038">respond_to?</a>&nbsp;&nbsp;
118
+ <a href="#M000028">to_ical</a>&nbsp;&nbsp;
119
+ </div>
120
+ </div>
121
+
122
+ </div>
123
+
124
+
125
+ <!-- if includes -->
126
+
127
+ <div id="section">
128
+
129
+
130
+
131
+
132
+
133
+ <div id="attribute-list">
134
+ <h3 class="section-bar">Attributes</h3>
135
+
136
+ <div class="name-list">
137
+ <table>
138
+ <tr class="top-aligned-row context-row">
139
+ <td class="context-item-name">name</td>
140
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
141
+ <td class="context-item-desc"></td>
142
+ </tr>
143
+ <tr class="top-aligned-row context-row">
144
+ <td class="context-item-name">properties</td>
145
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
146
+ <td class="context-item-desc"></td>
147
+ </tr>
148
+ <tr class="top-aligned-row context-row">
149
+ <td class="context-item-name">property_params</td>
150
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
151
+ <td class="context-item-desc"></td>
152
+ </tr>
153
+ </table>
154
+ </div>
155
+ </div>
156
+
157
+
158
+
159
+ <!-- if method_list -->
160
+ <div id="methods">
161
+ <h3 class="section-bar">Public Class methods</h3>
162
+
163
+ <div id="method-M000025" class="method-detail">
164
+ <a name="M000025"></a>
165
+
166
+ <div class="method-heading">
167
+ <a href="#M000025" class="method-signature">
168
+ <span class="method-name">new</span><span class="method-args">(name)</span>
169
+ </a>
170
+ </div>
171
+
172
+ <div class="method-description">
173
+ <p><a class="source-toggle" href="#"
174
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
175
+ <div class="method-source-code" id="M000025-source">
176
+ <pre>
177
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 26</span>
178
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>)
179
+ 27: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
180
+ 28: <span class="ruby-ivar">@components</span> = <span class="ruby-constant">Hash</span>.<span class="ruby-identifier">new</span>([])
181
+ 29: <span class="ruby-ivar">@properties</span> = {}
182
+ 30: <span class="ruby-ivar">@property_params</span> = {}
183
+ 31:
184
+ 32: <span class="ruby-ivar">@@logger</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;New #{@name[1,@name.size].capitalize}...&quot;</span>)
185
+ 33: <span class="ruby-keyword kw">end</span>
186
+ </pre>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+ <h3 class="section-bar">Protected Class methods</h3>
192
+
193
+ <div id="method-M000034" class="method-detail">
194
+ <a name="M000034"></a>
195
+
196
+ <div class="method-heading">
197
+ <a href="#M000034" class="method-signature">
198
+ <span class="method-name">ical_component</span><span class="method-args">(*syms)</span>
199
+ </a>
200
+ </div>
201
+
202
+ <div class="method-description">
203
+ <p>
204
+ Make it protected so we can monitor usage&#8230;
205
+ </p>
206
+ <p><a class="source-toggle" href="#"
207
+ onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
208
+ <div class="method-source-code" id="M000034-source">
209
+ <pre>
210
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 129</span>
211
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Component</span>.<span class="ruby-identifier">ical_component</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">syms</span>)
212
+ 130: <span class="ruby-identifier">hash_accessor</span> <span class="ruby-identifier">:components</span>, <span class="ruby-identifier">syms</span>
213
+ 131: <span class="ruby-keyword kw">end</span>
214
+ </pre>
215
+ </div>
216
+ </div>
217
+ </div>
218
+
219
+ <div id="method-M000036" class="method-detail">
220
+ <a name="M000036"></a>
221
+
222
+ <div class="method-heading">
223
+ <a href="#M000036" class="method-signature">
224
+ <span class="method-name">ical_multi_property</span><span class="method-args">(property, singular, plural)</span>
225
+ </a>
226
+ </div>
227
+
228
+ <div class="method-description">
229
+ <p>
230
+ Define a set of methods defining a new property, which supports multiple
231
+ values for the same property name.
232
+ </p>
233
+ <p><a class="source-toggle" href="#"
234
+ onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
235
+ <div class="method-source-code" id="M000036-source">
236
+ <pre>
237
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 201</span>
238
+ 201: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Component</span>.<span class="ruby-identifier">ical_multi_property</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">singular</span>, <span class="ruby-identifier">plural</span>)
239
+ 202: <span class="ruby-identifier">property</span> = <span class="ruby-node">&quot;#{property}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">upcase</span>
240
+ 203: <span class="ruby-identifier">singular</span> = <span class="ruby-node">&quot;#{singular}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
241
+ 204: <span class="ruby-identifier">plural</span> = <span class="ruby-node">&quot;#{plural}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
242
+ 205:
243
+ 206: <span class="ruby-identifier">getter</span> = <span class="ruby-node">&quot;#{plural}&quot;</span>
244
+ 207: <span class="ruby-identifier">setter</span> = <span class="ruby-node">&quot;#{plural}=&quot;</span>
245
+ 208: <span class="ruby-identifier">adder</span> = <span class="ruby-node">&quot;add_#{singular}&quot;</span>
246
+ 209: <span class="ruby-identifier">remover</span> = <span class="ruby-node">&quot;remove_#{singular}&quot;</span>
247
+ 210: <span class="ruby-identifier">query</span> = <span class="ruby-node">&quot;#{plural}?&quot;</span>
248
+ 211:
249
+ 212: <span class="ruby-comment cmt"># Set this key so the parser knows to use an array for</span>
250
+ 213: <span class="ruby-comment cmt"># storing this property type.</span>
251
+ 214: <span class="ruby-ivar">@@multi_properties</span>[<span class="ruby-node">&quot;#{property}&quot;</span>] = <span class="ruby-keyword kw">true</span>
252
+ 215:
253
+ 216: <span class="ruby-comment cmt"># Getter for whole array</span>
254
+ 217: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">getter</span>
255
+ 218: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{getter}(*a)\nif a.empty?\nif @properties.has_key?(\&quot;\#{property}\&quot;)\n@properties[\&quot;\#{property}\&quot;]\nelse\n[]\nend\nelse\nself.\#{setter}(a.first)\nend\nend\n&quot;</span>
256
+ 219:
257
+ 220: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">186</span>
258
+ 221: <span class="ruby-keyword kw">end</span>
259
+ 222:
260
+ 223: <span class="ruby-comment cmt"># Setter for whole array</span>
261
+ 224: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">setter</span>
262
+ 225: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{setter}(a)\nif a.respond_to?(:to_ary)\na.to_ary.each do |val|\nunless val.respond_to?(:to_ical)\nraise(NotImplementedError, \&quot;Property values do not support to_ical method!\&quot;)\nend\nend\n\n@properties[\&quot;\#{property}\&quot;] = a.to_ary\n\nelse\nraise ArgumentError, \&quot;\#{getter} is a multi-property that must be an array! Use the \#{adder} method to add single entries.\&quot;\nend\nend\n&quot;</span>
263
+ 226:
264
+ 227: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">198</span>
265
+ 228: <span class="ruby-keyword kw">end</span>
266
+ 229:
267
+ 230: <span class="ruby-comment cmt"># Query for any of these properties</span>
268
+ 231: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">query</span>
269
+ 232: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{query}\n@properties.has_key?(\&quot;\#{property}\&quot;)\nend\n&quot;</span>
270
+ 233:
271
+ 234: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">210</span>
272
+ 235: <span class="ruby-keyword kw">end</span>
273
+ 236:
274
+ 237: <span class="ruby-comment cmt"># Add another item to this properties array</span>
275
+ 238: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">adder</span>
276
+ 239: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{adder}(val, params = {})\nunless val.respond_to?(:to_ical)\nraise(NotImplementedError, \&quot;Property value object does not support to_ical method!\&quot;)\nend\n\nif @properties.has_key?(\&quot;\#{property}\&quot;)\n@properties[\&quot;\#{property}\&quot;] &lt;&lt; val\nelse\n@properties[\&quot;\#{property}\&quot;] = [val]\nend\nend\n&quot;</span>
277
+ 240:
278
+ 241: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">228</span>
279
+ 242: <span class="ruby-identifier">alias_method</span>(<span class="ruby-node">&quot;add_#{property.downcase}&quot;</span>, <span class="ruby-node">&quot;#{adder}&quot;</span>)
280
+ 243: <span class="ruby-keyword kw">end</span>
281
+ 244:
282
+ 245: <span class="ruby-comment cmt"># Remove an item from this properties array</span>
283
+ 246: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">remover</span>
284
+ 247: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{remover}(a)\nif @properties.has_key?(\&quot;\#{property}\&quot;)\n@properties[\&quot;\#{property}\&quot;].delete(a)\nend\nend\n&quot;</span>
285
+ 248:
286
+ 249: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">241</span>
287
+ 250: <span class="ruby-identifier">alias_method</span>(<span class="ruby-node">&quot;remove_#{property.downcase}&quot;</span>, <span class="ruby-node">&quot;#{remover}&quot;</span>)
288
+ 251: <span class="ruby-keyword kw">end</span>
289
+ 252:
290
+ 253: <span class="ruby-keyword kw">end</span>
291
+ </pre>
292
+ </div>
293
+ </div>
294
+ </div>
295
+
296
+ <div id="method-M000035" class="method-detail">
297
+ <a name="M000035"></a>
298
+
299
+ <div class="method-heading">
300
+ <a href="#M000035" class="method-signature">
301
+ <span class="method-name">ical_property</span><span class="method-args">(property, alias_name = nil, prop_name = nil)</span>
302
+ </a>
303
+ </div>
304
+
305
+ <div class="method-description">
306
+ <p>
307
+ Define a set of methods supporting a new property
308
+ </p>
309
+ <p><a class="source-toggle" href="#"
310
+ onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
311
+ <div class="method-source-code" id="M000035-source">
312
+ <pre>
313
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 134</span>
314
+ 134: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">Component</span>.<span class="ruby-identifier">ical_property</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">alias_name</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">prop_name</span> = <span class="ruby-keyword kw">nil</span>)
315
+ 135:
316
+ 136: <span class="ruby-identifier">property</span> = <span class="ruby-node">&quot;#{property}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span>
317
+ 137: <span class="ruby-identifier">getter</span> = <span class="ruby-node">&quot;#{property}&quot;</span>
318
+ 138: <span class="ruby-identifier">setter</span> = <span class="ruby-node">&quot;#{property}=&quot;</span>
319
+ 139: <span class="ruby-identifier">query</span> = <span class="ruby-node">&quot;#{property}?&quot;</span>
320
+ 140: <span class="ruby-identifier">alias_name</span> = <span class="ruby-node">&quot;#{alias_name}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">alias_name</span>.<span class="ruby-identifier">nil?</span>
321
+ 141:
322
+ 142: <span class="ruby-comment cmt"># If a prop_name was given then we use that for the actual storage</span>
323
+ 143: <span class="ruby-identifier">property</span> = <span class="ruby-node">&quot;#{prop_name}&quot;</span>.<span class="ruby-identifier">strip</span>.<span class="ruby-identifier">upcase</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">prop_name</span>.<span class="ruby-identifier">nil?</span>
324
+ 144:
325
+ 145: <span class="ruby-comment cmt"># Change underscores in property name to a dash</span>
326
+ 146: <span class="ruby-identifier">property</span>[<span class="ruby-regexp re">/_/</span>] = <span class="ruby-value str">'-'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">property</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/_/</span>
327
+ 147:
328
+ 148: <span class="ruby-comment cmt"># All properties names are stored in caps...</span>
329
+ 149: <span class="ruby-identifier">property</span> = <span class="ruby-identifier">property</span>.<span class="ruby-identifier">upcase</span>
330
+ 150:
331
+ 151: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">getter</span>
332
+ 152: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{getter}(val = nil, params = {})\nif val.nil?\n@properties[\&quot;\#{property}\&quot;]\nelse\n# Set the value just like normal\nself.\#{setter}(val)\nend\nend\n&quot;</span>
333
+ 153:
334
+ 154: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">155</span>
335
+ 155: <span class="ruby-identifier">alias_method</span>(<span class="ruby-node">&quot;#{alias_name}&quot;</span>, <span class="ruby-node">&quot;#{getter}&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">alias_name</span>.<span class="ruby-identifier">nil?</span>
336
+ 156: <span class="ruby-keyword kw">end</span>
337
+ 157:
338
+ 158: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">setter</span>
339
+ 159: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{setter}(val)\nunless val.respond_to?(:to_ical)\nraise(NotImplementedError, \&quot;Value of type (\&quot; + val.class.to_s + \&quot;) does not support to_ical method!\&quot;)\nend\n\n@properties[\&quot;\#{property}\&quot;] = val\nend\n&quot;</span>
340
+ 160:
341
+ 161: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">171</span>
342
+ 162:
343
+ 163: <span class="ruby-identifier">alias_method</span>(<span class="ruby-node">&quot;#{alias_name}=&quot;</span>, <span class="ruby-node">&quot;#{setter}&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">alias_name</span>.<span class="ruby-identifier">nil?</span>
344
+ 164: <span class="ruby-keyword kw">end</span>
345
+ 165:
346
+ 166: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">instance_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">query</span>
347
+ 167: <span class="ruby-identifier">code</span> = <span class="ruby-value str">&quot;def \#{query}\n@properties.has_key?(\&quot;\#{property}\&quot;)\nend\n&quot;</span>
348
+ 168:
349
+ 169: <span class="ruby-identifier">class_eval</span> <span class="ruby-identifier">code</span>, <span class="ruby-value str">&quot;component.rb&quot;</span>, <span class="ruby-value">183</span>
350
+ 170:
351
+ 171: <span class="ruby-identifier">alias_method</span>(<span class="ruby-node">&quot;#{alias_name}\?&quot;</span>, <span class="ruby-node">&quot;#{query}&quot;</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">alias_name</span>.<span class="ruby-identifier">nil?</span>
352
+ 172: <span class="ruby-keyword kw">end</span>
353
+ 173: <span class="ruby-keyword kw">end</span>
354
+ </pre>
355
+ </div>
356
+ </div>
357
+ </div>
358
+
359
+ <h3 class="section-bar">Public Instance methods</h3>
360
+
361
+ <div id="method-M000027" class="method-detail">
362
+ <a name="M000027"></a>
363
+
364
+ <div class="method-heading">
365
+ <span class="method-name">add</span><span class="method-args">(component)</span>
366
+ </div>
367
+
368
+ <div class="method-description">
369
+ <p>
370
+ Alias for <a href="Component.html#M000026">add_component</a>
371
+ </p>
372
+ </div>
373
+ </div>
374
+
375
+ <div id="method-M000026" class="method-detail">
376
+ <a name="M000026"></a>
377
+
378
+ <div class="method-heading">
379
+ <a href="#M000026" class="method-signature">
380
+ <span class="method-name">add_component</span><span class="method-args">(component)</span>
381
+ </a>
382
+ </div>
383
+
384
+ <div class="method-description">
385
+ <p>
386
+ Add a sub-component to the current component object.
387
+ </p>
388
+ <p><a class="source-toggle" href="#"
389
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
390
+ <div class="method-source-code" id="M000026-source">
391
+ <pre>
392
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 36</span>
393
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_component</span>(<span class="ruby-identifier">component</span>)
394
+ 37: <span class="ruby-identifier">key</span> = (<span class="ruby-identifier">component</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'s'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-value str">'icalendar::'</span>, <span class="ruby-value str">''</span>).<span class="ruby-identifier">to_sym</span>
395
+ 38:
396
+ 39: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@components</span>.<span class="ruby-identifier">has_key?</span> <span class="ruby-identifier">key</span>
397
+ 40: <span class="ruby-ivar">@components</span>[<span class="ruby-identifier">key</span>] = []
398
+ 41: <span class="ruby-keyword kw">end</span>
399
+ 42:
400
+ 43: <span class="ruby-ivar">@components</span>[<span class="ruby-identifier">key</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">component</span>
401
+ 44: <span class="ruby-keyword kw">end</span>
402
+ </pre>
403
+ </div>
404
+ </div>
405
+ </div>
406
+
407
+ <div id="method-M000032" class="method-detail">
408
+ <a name="M000032"></a>
409
+
410
+ <div class="method-heading">
411
+ <a href="#M000032" class="method-signature">
412
+ <span class="method-name">custom_property</span><span class="method-args">(name, value)</span>
413
+ </a>
414
+ </div>
415
+
416
+ <div class="method-description">
417
+ <p>
418
+ TODO: Look into the x-property, x-param stuff&#8230;
419
+ </p>
420
+ <p><a class="source-toggle" href="#"
421
+ onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
422
+ <div class="method-source-code" id="M000032-source">
423
+ <pre>
424
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 118</span>
425
+ 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">custom_property</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>)
426
+ 119: <span class="ruby-ivar">@properties</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">value</span>
427
+ 120: <span class="ruby-keyword kw">end</span>
428
+ </pre>
429
+ </div>
430
+ </div>
431
+ </div>
432
+
433
+ <div id="method-M000033" class="method-detail">
434
+ <a name="M000033"></a>
435
+
436
+ <div class="method-heading">
437
+ <a href="#M000033" class="method-signature">
438
+ <span class="method-name">multi_property?</span><span class="method-args">(name)</span>
439
+ </a>
440
+ </div>
441
+
442
+ <div class="method-description">
443
+ <p><a class="source-toggle" href="#"
444
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
445
+ <div class="method-source-code" id="M000033-source">
446
+ <pre>
447
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 122</span>
448
+ 122: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">multi_property?</span>(<span class="ruby-identifier">name</span>)
449
+ 123: <span class="ruby-ivar">@@multi_properties</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>.<span class="ruby-identifier">upcase</span>)
450
+ 124: <span class="ruby-keyword kw">end</span>
451
+ </pre>
452
+ </div>
453
+ </div>
454
+ </div>
455
+
456
+ <div id="method-M000029" class="method-detail">
457
+ <a name="M000029"></a>
458
+
459
+ <div class="method-heading">
460
+ <a href="#M000029" class="method-signature">
461
+ <span class="method-name">print_component</span><span class="method-args">() {|s| ...}</span>
462
+ </a>
463
+ </div>
464
+
465
+ <div class="method-description">
466
+ <p>
467
+ Print this icalendar component
468
+ </p>
469
+ <p><a class="source-toggle" href="#"
470
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
471
+ <div class="method-source-code" id="M000029-source">
472
+ <pre>
473
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 57</span>
474
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">print_component</span>
475
+ 58: <span class="ruby-identifier">s</span> = <span class="ruby-value str">&quot;&quot;</span>
476
+ 59:
477
+ 60: <span class="ruby-comment cmt"># Begin a new component</span>
478
+ 61: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;BEGIN:#{@name.upcase}\r\n&quot;</span>
479
+ 62:
480
+ 63: <span class="ruby-comment cmt"># Then the properties</span>
481
+ 64: <span class="ruby-identifier">print_properties</span>(<span class="ruby-identifier">s</span>)
482
+ 65:
483
+ 66: <span class="ruby-comment cmt"># Any custom body of the derived component</span>
484
+ 67: <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">s</span>)
485
+ 68:
486
+ 69: <span class="ruby-comment cmt"># End of this component</span>
487
+ 70: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;END:#{@name.upcase}\r\n&quot;</span>
488
+ 71: <span class="ruby-keyword kw">end</span>
489
+ </pre>
490
+ </div>
491
+ </div>
492
+ </div>
493
+
494
+ <div id="method-M000031" class="method-detail">
495
+ <a name="M000031"></a>
496
+
497
+ <div class="method-heading">
498
+ <a href="#M000031" class="method-signature">
499
+ <span class="method-name">print_parameter</span><span class="method-args">(s, key, value)</span>
500
+ </a>
501
+ </div>
502
+
503
+ <div class="method-description">
504
+ <p>
505
+ Print the parameters for a specific property
506
+ </p>
507
+ <p><a class="source-toggle" href="#"
508
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
509
+ <div class="method-source-code" id="M000031-source">
510
+ <pre>
511
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 94</span>
512
+ 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">print_parameter</span>(<span class="ruby-identifier">s</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
513
+ 95: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property_params</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
514
+ 96: <span class="ruby-identifier">params</span> = <span class="ruby-ivar">@property_params</span>[<span class="ruby-identifier">key</span>]
515
+ 97: <span class="ruby-identifier">params</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>,<span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
516
+ 98: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;;#{key}&quot;</span>
517
+ 99: <span class="ruby-identifier">val</span> = [ <span class="ruby-identifier">val</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ary</span>)
518
+ 100:
519
+ 101: <span class="ruby-comment cmt"># Possible parameter values</span>
520
+ 102: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">empty?</span>
521
+ 103: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;=&quot;</span>
522
+ 104: <span class="ruby-identifier">sep</span> = <span class="ruby-value str">&quot;&quot;</span> <span class="ruby-comment cmt"># First entry comes after = sign, but then we need commas</span>
523
+ 105: <span class="ruby-identifier">val</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pval</span><span class="ruby-operator">|</span>
524
+ 106: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pval</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:to_ical</span>
525
+ 107: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">sep</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pval</span>.<span class="ruby-identifier">to_ical</span>
526
+ 108: <span class="ruby-identifier">sep</span> = <span class="ruby-value str">&quot;,&quot;</span>
527
+ 109: <span class="ruby-keyword kw">end</span>
528
+ 110: <span class="ruby-keyword kw">end</span>
529
+ 111: <span class="ruby-keyword kw">end</span>
530
+ 112:
531
+ 113: <span class="ruby-keyword kw">end</span>
532
+ 114: <span class="ruby-keyword kw">end</span>
533
+ 115: <span class="ruby-keyword kw">end</span>
534
+ </pre>
535
+ </div>
536
+ </div>
537
+ </div>
538
+
539
+ <div id="method-M000030" class="method-detail">
540
+ <a name="M000030"></a>
541
+
542
+ <div class="method-heading">
543
+ <a href="#M000030" class="method-signature">
544
+ <span class="method-name">print_properties</span><span class="method-args">(s)</span>
545
+ </a>
546
+ </div>
547
+
548
+ <div class="method-description">
549
+ <p>
550
+ Print this components properties
551
+ </p>
552
+ <p><a class="source-toggle" href="#"
553
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
554
+ <div class="method-source-code" id="M000030-source">
555
+ <pre>
556
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 74</span>
557
+ 74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">print_properties</span>(<span class="ruby-identifier">s</span>)
558
+ 75: <span class="ruby-ivar">@properties</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>,<span class="ruby-identifier">value</span><span class="ruby-operator">|</span>
559
+ 76: <span class="ruby-comment cmt"># Take out underscore for property names that conflicted</span>
560
+ 77: <span class="ruby-comment cmt"># with built-in words.</span>
561
+ 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/ip_.*/</span>
562
+ 79: <span class="ruby-identifier">key</span> = <span class="ruby-identifier">key</span>[<span class="ruby-value">3</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
563
+ 80: <span class="ruby-keyword kw">end</span>
564
+ 81:
565
+ 82: <span class="ruby-comment cmt"># Property name</span>
566
+ 83: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{key.upcase}&quot;</span>
567
+ 84:
568
+ 85: <span class="ruby-comment cmt"># Possible parameters</span>
569
+ 86: <span class="ruby-identifier">print_parameter</span>(<span class="ruby-identifier">s</span>, <span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
570
+ 87:
571
+ 88: <span class="ruby-comment cmt"># Property value</span>
572
+ 89: <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;:#{value.to_ical}\r\n&quot;</span>
573
+ 90: <span class="ruby-keyword kw">end</span>
574
+ 91: <span class="ruby-keyword kw">end</span>
575
+ </pre>
576
+ </div>
577
+ </div>
578
+ </div>
579
+
580
+ <div id="method-M000038" class="method-detail">
581
+ <a name="M000038"></a>
582
+
583
+ <div class="method-heading">
584
+ <a href="#M000038" class="method-signature">
585
+ <span class="method-name">respond_to?</span><span class="method-args">(method_name)</span>
586
+ </a>
587
+ </div>
588
+
589
+ <div class="method-description">
590
+ <p><a class="source-toggle" href="#"
591
+ onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
592
+ <div class="method-source-code" id="M000038-source">
593
+ <pre>
594
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 333</span>
595
+ 333: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">method_name</span>)
596
+ 334: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">method_name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/x-.*/</span>
597
+ 335: <span class="ruby-keyword kw">super</span>
598
+ 336: <span class="ruby-keyword kw">end</span>
599
+ 337:
600
+ 338: <span class="ruby-keyword kw">true</span>
601
+ 339: <span class="ruby-keyword kw">end</span>
602
+ </pre>
603
+ </div>
604
+ </div>
605
+ </div>
606
+
607
+ <div id="method-M000028" class="method-detail">
608
+ <a name="M000028"></a>
609
+
610
+ <div class="method-heading">
611
+ <a href="#M000028" class="method-signature">
612
+ <span class="method-name">to_ical</span><span class="method-args">()</span>
613
+ </a>
614
+ </div>
615
+
616
+ <div class="method-description">
617
+ <p><a class="source-toggle" href="#"
618
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
619
+ <div class="method-source-code" id="M000028-source">
620
+ <pre>
621
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 48</span>
622
+ 48: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_ical</span>
623
+ 49: <span class="ruby-identifier">print_component</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
624
+ 50: <span class="ruby-ivar">@components</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">comps</span><span class="ruby-operator">|</span>
625
+ 51: <span class="ruby-identifier">comps</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">component</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">component</span>.<span class="ruby-identifier">to_ical</span> }
626
+ 52: <span class="ruby-keyword kw">end</span>
627
+ 53: <span class="ruby-keyword kw">end</span>
628
+ 54: <span class="ruby-keyword kw">end</span>
629
+ </pre>
630
+ </div>
631
+ </div>
632
+ </div>
633
+
634
+ <h3 class="section-bar">Protected Instance methods</h3>
635
+
636
+ <div id="method-M000037" class="method-detail">
637
+ <a name="M000037"></a>
638
+
639
+ <div class="method-heading">
640
+ <a href="#M000037" class="method-signature">
641
+ <span class="method-name">method_missing</span><span class="method-args">(method_name, *args)</span>
642
+ </a>
643
+ </div>
644
+
645
+ <div class="method-description">
646
+ <p><a class="source-toggle" href="#"
647
+ onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
648
+ <div class="method-source-code" id="M000037-source">
649
+ <pre>
650
+ <span class="ruby-comment cmt"># File lib/icalendar/component.rb, line 309</span>
651
+ 309: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">method_name</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
652
+ 310: <span class="ruby-identifier">method_name</span> = <span class="ruby-identifier">method_name</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>
653
+ 311:
654
+ 312: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">method_name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/x_.*/</span>
655
+ 313: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NoMethodError</span>
656
+ 314: <span class="ruby-keyword kw">end</span>
657
+ 315:
658
+ 316: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">first</span>
659
+ 317:
660
+ 318: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">:to_ical</span>)
661
+ 319: <span class="ruby-identifier">raise</span>(<span class="ruby-constant">NotImplementedError</span>, <span class="ruby-value str">&quot;Value of type (&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">val</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;) does not support to_ical method!&quot;</span>)
662
+ 320: <span class="ruby-keyword kw">end</span>
663
+ 321:
664
+ 322: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">method_name</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/(.*)(=)/</span> <span class="ruby-comment cmt"># Its a setter</span>
665
+ 323: <span class="ruby-ivar">@properties</span>[<span class="ruby-identifier">$1</span>] = <span class="ruby-identifier">val</span>
666
+ 324: <span class="ruby-ivar">@@logger</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Setting #{$1} =&gt; #{val}&quot;</span>)
667
+ 325: <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># Or its a getter</span>
668
+ 326: <span class="ruby-ivar">@@logger</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Getting #{method_name} =&gt; #{@properties[method_name]}&quot;</span>)
669
+ 327: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@properties</span>[<span class="ruby-identifier">method_name</span>]
670
+ 328: <span class="ruby-keyword kw">end</span>
671
+ 329: <span class="ruby-keyword kw">end</span>
672
+ </pre>
673
+ </div>
674
+ </div>
675
+ </div>
676
+
677
+
678
+ </div>
679
+
680
+
681
+ </div>
682
+
683
+
684
+ <div id="validator-badges">
685
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
686
+ </div>
687
+
688
+ </body>
689
+ </html>