icalendar 0.97 → 0.98
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.
- data/Rakefile +2 -2
- data/docs/api/classes/Icalendar/Component.src/M000029.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000030.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000035.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000040.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000041.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000042.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000043.html +9 -4
- data/docs/api/classes/Icalendar/Component.src/M000044.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000045.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000046.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000047.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000048.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000049.html +1 -1
- data/docs/api/classes/Icalendar/Component.src/M000050.html +1 -1
- data/docs/api/classes/Icalendar/Geo.html +2 -2
- data/docs/api/classes/Icalendar/Geo.src/M000024.html +1 -1
- data/docs/api/classes/Icalendar/Geo.src/M000025.html +1 -1
- data/docs/api/classes/String.src/M000012.html +1 -1
- data/docs/api/created.rid +1 -1
- data/docs/api/files/lib/icalendar/component_rb.html +1 -1
- data/docs/api/files/lib/icalendar/conversions_rb.html +1 -1
- data/docs/api/files/lib/icalendar/parser_rb.html +1 -1
- data/lib/icalendar/component.rb +10 -3
- data/lib/icalendar/conversions.rb +1 -1
- data/lib/icalendar/parser.rb +1 -1
- data/test/conversions_test.rb +35 -4
- data/test/fixtures/folding.ics +23 -0
- data/test/{life.ics → fixtures/life.ics} +0 -0
- data/test/{simplecal.ics → fixtures/simplecal.ics} +0 -0
- data/test/{single_event.ics → fixtures/single_event.ics} +1 -1
- data/test/parser_test.rb +2 -2
- metadata +7 -44
- data/test/coverage/-home-rosejn-projects-icalendar-lib-hash_attrs_rb.html +0 -574
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-base_rb.html +0 -575
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-calendar_rb.html +0 -629
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-alarm_rb.html +0 -581
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-event_rb.html +0 -658
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-freebusy_rb.html +0 -574
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-journal_rb.html +0 -597
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-timezone_rb.html +0 -625
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component-todo_rb.html +0 -600
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-component_rb.html +0 -924
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-conversions_rb.html +0 -667
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar-parser_rb.html +0 -938
- data/test/coverage/-home-rosejn-projects-icalendar-lib-icalendar_rb.html +0 -576
- data/test/coverage/-home-rosejn-projects-icalendar-lib-meta_rb.html +0 -572
- data/test/coverage/calendar_test_rb.html +0 -590
- data/test/coverage/component_test_rb.html +0 -602
- data/test/coverage/index.html +0 -1009
- data/test/coverage/lib-hash_attrs_rb.html +0 -574
- data/test/coverage/lib-icalendar-base_rb.html +0 -583
- data/test/coverage/lib-icalendar-calendar_rb.html +0 -631
- data/test/coverage/lib-icalendar-component-alarm_rb.html +0 -581
- data/test/coverage/lib-icalendar-component-event_rb.html +0 -661
- data/test/coverage/lib-icalendar-component-freebusy_rb.html +0 -576
- data/test/coverage/lib-icalendar-component-journal_rb.html +0 -599
- data/test/coverage/lib-icalendar-component-timezone_rb.html +0 -625
- data/test/coverage/lib-icalendar-component-todo_rb.html +0 -602
- data/test/coverage/lib-icalendar-component_rb.html +0 -941
- data/test/coverage/lib-icalendar-conversions_rb.html +0 -673
- data/test/coverage/lib-icalendar-parser_rb.html +0 -916
- data/test/coverage/lib-icalendar_rb.html +0 -576
- data/test/coverage/lib-meta_rb.html +0 -572
- data/test/coverage/parameter_test_rb.html +0 -569
- data/test/coverage/parser_test_rb.html +0 -623
- data/test/coverage/test-calendar_test_rb.html +0 -590
- data/test/coverage/test-component-event_test_rb.html +0 -584
- data/test/coverage/test-component_test_rb.html +0 -606
- data/test/coverage/test-conversions_test_rb.html +0 -603
- data/test/coverage/test-parameter_test_rb.html +0 -569
- data/test/coverage/test-parser_test_rb.html +0 -624
|
@@ -1,941 +0,0 @@
|
|
|
1
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>lib/icalendar/component.rb - C0 code coverage information</title><style type='text/css'>body { background-color: rgb(240, 240, 245); }</style><style type='text/css'>span.marked {
|
|
2
|
-
background-color: rgb(185, 200, 200);
|
|
3
|
-
display: block;
|
|
4
|
-
}
|
|
5
|
-
span.inferred {
|
|
6
|
-
background-color: rgb(170, 185, 185);
|
|
7
|
-
display: block;
|
|
8
|
-
}
|
|
9
|
-
span.overview {
|
|
10
|
-
border-bottom: 8px solid black;
|
|
11
|
-
}
|
|
12
|
-
div.overview {
|
|
13
|
-
border-bottom: 8px solid black;
|
|
14
|
-
}
|
|
15
|
-
body {
|
|
16
|
-
font-family: verdana, arial, helvetica;
|
|
17
|
-
}
|
|
18
|
-
div.footer {
|
|
19
|
-
font-size: 68%;
|
|
20
|
-
margin-top: 1.5em;
|
|
21
|
-
}
|
|
22
|
-
h1, h2, h3, h4, h5, h6 {
|
|
23
|
-
margin-bottom: 0.5em;
|
|
24
|
-
}
|
|
25
|
-
h5 {
|
|
26
|
-
margin-top: 0.5em;
|
|
27
|
-
}
|
|
28
|
-
.hidden {
|
|
29
|
-
display: none;
|
|
30
|
-
}
|
|
31
|
-
div.separator {
|
|
32
|
-
height: 10px;
|
|
33
|
-
}
|
|
34
|
-
table tr td, table tr th {
|
|
35
|
-
font-size: 68%;
|
|
36
|
-
}
|
|
37
|
-
td.value table tr td {
|
|
38
|
-
font-size: 11px;
|
|
39
|
-
}
|
|
40
|
-
table.percent_graph {
|
|
41
|
-
height: 12px;
|
|
42
|
-
border: #808080 1px solid;
|
|
43
|
-
empty-cells: show;
|
|
44
|
-
}
|
|
45
|
-
table.percent_graph td.covered {
|
|
46
|
-
height: 10px;
|
|
47
|
-
background: #00f000;
|
|
48
|
-
}
|
|
49
|
-
table.percent_graph td.uncovered {
|
|
50
|
-
height: 10px;
|
|
51
|
-
background: #e00000;
|
|
52
|
-
}
|
|
53
|
-
table.percent_graph td.NA {
|
|
54
|
-
height: 10px;
|
|
55
|
-
background: #eaeaea;
|
|
56
|
-
}
|
|
57
|
-
table.report {
|
|
58
|
-
border-collapse: collapse;
|
|
59
|
-
width: 100%;
|
|
60
|
-
}
|
|
61
|
-
table.report td.heading {
|
|
62
|
-
background: #dcecff;
|
|
63
|
-
border: #d0d0d0 1px solid;
|
|
64
|
-
font-weight: bold;
|
|
65
|
-
text-align: center;
|
|
66
|
-
}
|
|
67
|
-
table.report td.heading:hover {
|
|
68
|
-
background: #c0ffc0;
|
|
69
|
-
}
|
|
70
|
-
table.report td.text {
|
|
71
|
-
border: #d0d0d0 1px solid;
|
|
72
|
-
}
|
|
73
|
-
table.report td.value {
|
|
74
|
-
text-align: right;
|
|
75
|
-
border: #d0d0d0 1px solid;
|
|
76
|
-
}
|
|
77
|
-
</style><style type='text/css'>span.run0 {
|
|
78
|
-
background-color: rgb(178, 204, 255);
|
|
79
|
-
display: block;
|
|
80
|
-
}
|
|
81
|
-
span.run1 {
|
|
82
|
-
background-color: rgb(178, 206, 255);
|
|
83
|
-
display: block;
|
|
84
|
-
}
|
|
85
|
-
span.run2 {
|
|
86
|
-
background-color: rgb(178, 209, 255);
|
|
87
|
-
display: block;
|
|
88
|
-
}
|
|
89
|
-
span.run3 {
|
|
90
|
-
background-color: rgb(178, 211, 255);
|
|
91
|
-
display: block;
|
|
92
|
-
}
|
|
93
|
-
span.run4 {
|
|
94
|
-
background-color: rgb(178, 214, 255);
|
|
95
|
-
display: block;
|
|
96
|
-
}
|
|
97
|
-
span.run5 {
|
|
98
|
-
background-color: rgb(178, 218, 255);
|
|
99
|
-
display: block;
|
|
100
|
-
}
|
|
101
|
-
span.run6 {
|
|
102
|
-
background-color: rgb(178, 220, 255);
|
|
103
|
-
display: block;
|
|
104
|
-
}
|
|
105
|
-
span.run7 {
|
|
106
|
-
background-color: rgb(178, 223, 255);
|
|
107
|
-
display: block;
|
|
108
|
-
}
|
|
109
|
-
span.run8 {
|
|
110
|
-
background-color: rgb(178, 225, 255);
|
|
111
|
-
display: block;
|
|
112
|
-
}
|
|
113
|
-
span.run9 {
|
|
114
|
-
background-color: rgb(178, 228, 255);
|
|
115
|
-
display: block;
|
|
116
|
-
}
|
|
117
|
-
span.run10 {
|
|
118
|
-
background-color: rgb(178, 232, 255);
|
|
119
|
-
display: block;
|
|
120
|
-
}
|
|
121
|
-
span.run11 {
|
|
122
|
-
background-color: rgb(178, 234, 255);
|
|
123
|
-
display: block;
|
|
124
|
-
}
|
|
125
|
-
span.run12 {
|
|
126
|
-
background-color: rgb(178, 237, 255);
|
|
127
|
-
display: block;
|
|
128
|
-
}
|
|
129
|
-
span.run13 {
|
|
130
|
-
background-color: rgb(178, 239, 255);
|
|
131
|
-
display: block;
|
|
132
|
-
}
|
|
133
|
-
span.run14 {
|
|
134
|
-
background-color: rgb(178, 242, 255);
|
|
135
|
-
display: block;
|
|
136
|
-
}
|
|
137
|
-
span.run15 {
|
|
138
|
-
background-color: rgb(178, 246, 255);
|
|
139
|
-
display: block;
|
|
140
|
-
}
|
|
141
|
-
span.run16 {
|
|
142
|
-
background-color: rgb(178, 248, 255);
|
|
143
|
-
display: block;
|
|
144
|
-
}
|
|
145
|
-
span.run17 {
|
|
146
|
-
background-color: rgb(178, 251, 255);
|
|
147
|
-
display: block;
|
|
148
|
-
}
|
|
149
|
-
span.run18 {
|
|
150
|
-
background-color: rgb(178, 253, 255);
|
|
151
|
-
display: block;
|
|
152
|
-
}
|
|
153
|
-
span.run19 {
|
|
154
|
-
background-color: rgb(178, 255, 253);
|
|
155
|
-
display: block;
|
|
156
|
-
}
|
|
157
|
-
span.run20 {
|
|
158
|
-
background-color: rgb(178, 255, 249);
|
|
159
|
-
display: block;
|
|
160
|
-
}
|
|
161
|
-
span.run21 {
|
|
162
|
-
background-color: rgb(178, 255, 247);
|
|
163
|
-
display: block;
|
|
164
|
-
}
|
|
165
|
-
span.run22 {
|
|
166
|
-
background-color: rgb(178, 255, 244);
|
|
167
|
-
display: block;
|
|
168
|
-
}
|
|
169
|
-
span.run23 {
|
|
170
|
-
background-color: rgb(178, 255, 242);
|
|
171
|
-
display: block;
|
|
172
|
-
}
|
|
173
|
-
span.run24 {
|
|
174
|
-
background-color: rgb(178, 255, 239);
|
|
175
|
-
display: block;
|
|
176
|
-
}
|
|
177
|
-
span.run25 {
|
|
178
|
-
background-color: rgb(178, 255, 235);
|
|
179
|
-
display: block;
|
|
180
|
-
}
|
|
181
|
-
span.run26 {
|
|
182
|
-
background-color: rgb(178, 255, 233);
|
|
183
|
-
display: block;
|
|
184
|
-
}
|
|
185
|
-
span.run27 {
|
|
186
|
-
background-color: rgb(178, 255, 230);
|
|
187
|
-
display: block;
|
|
188
|
-
}
|
|
189
|
-
span.run28 {
|
|
190
|
-
background-color: rgb(178, 255, 228);
|
|
191
|
-
display: block;
|
|
192
|
-
}
|
|
193
|
-
span.run29 {
|
|
194
|
-
background-color: rgb(178, 255, 225);
|
|
195
|
-
display: block;
|
|
196
|
-
}
|
|
197
|
-
span.run30 {
|
|
198
|
-
background-color: rgb(178, 255, 221);
|
|
199
|
-
display: block;
|
|
200
|
-
}
|
|
201
|
-
span.run31 {
|
|
202
|
-
background-color: rgb(178, 255, 219);
|
|
203
|
-
display: block;
|
|
204
|
-
}
|
|
205
|
-
span.run32 {
|
|
206
|
-
background-color: rgb(178, 255, 216);
|
|
207
|
-
display: block;
|
|
208
|
-
}
|
|
209
|
-
span.run33 {
|
|
210
|
-
background-color: rgb(178, 255, 214);
|
|
211
|
-
display: block;
|
|
212
|
-
}
|
|
213
|
-
span.run34 {
|
|
214
|
-
background-color: rgb(178, 255, 211);
|
|
215
|
-
display: block;
|
|
216
|
-
}
|
|
217
|
-
span.run35 {
|
|
218
|
-
background-color: rgb(178, 255, 207);
|
|
219
|
-
display: block;
|
|
220
|
-
}
|
|
221
|
-
span.run36 {
|
|
222
|
-
background-color: rgb(178, 255, 205);
|
|
223
|
-
display: block;
|
|
224
|
-
}
|
|
225
|
-
span.run37 {
|
|
226
|
-
background-color: rgb(178, 255, 202);
|
|
227
|
-
display: block;
|
|
228
|
-
}
|
|
229
|
-
span.run38 {
|
|
230
|
-
background-color: rgb(178, 255, 200);
|
|
231
|
-
display: block;
|
|
232
|
-
}
|
|
233
|
-
span.run39 {
|
|
234
|
-
background-color: rgb(178, 255, 197);
|
|
235
|
-
display: block;
|
|
236
|
-
}
|
|
237
|
-
span.run40 {
|
|
238
|
-
background-color: rgb(178, 255, 193);
|
|
239
|
-
display: block;
|
|
240
|
-
}
|
|
241
|
-
span.run41 {
|
|
242
|
-
background-color: rgb(178, 255, 191);
|
|
243
|
-
display: block;
|
|
244
|
-
}
|
|
245
|
-
span.run42 {
|
|
246
|
-
background-color: rgb(178, 255, 188);
|
|
247
|
-
display: block;
|
|
248
|
-
}
|
|
249
|
-
span.run43 {
|
|
250
|
-
background-color: rgb(178, 255, 186);
|
|
251
|
-
display: block;
|
|
252
|
-
}
|
|
253
|
-
span.run44 {
|
|
254
|
-
background-color: rgb(178, 255, 183);
|
|
255
|
-
display: block;
|
|
256
|
-
}
|
|
257
|
-
span.run45 {
|
|
258
|
-
background-color: rgb(178, 255, 179);
|
|
259
|
-
display: block;
|
|
260
|
-
}
|
|
261
|
-
span.run46 {
|
|
262
|
-
background-color: rgb(179, 255, 178);
|
|
263
|
-
display: block;
|
|
264
|
-
}
|
|
265
|
-
span.run47 {
|
|
266
|
-
background-color: rgb(182, 255, 178);
|
|
267
|
-
display: block;
|
|
268
|
-
}
|
|
269
|
-
span.run48 {
|
|
270
|
-
background-color: rgb(184, 255, 178);
|
|
271
|
-
display: block;
|
|
272
|
-
}
|
|
273
|
-
span.run49 {
|
|
274
|
-
background-color: rgb(187, 255, 178);
|
|
275
|
-
display: block;
|
|
276
|
-
}
|
|
277
|
-
span.run50 {
|
|
278
|
-
background-color: rgb(191, 255, 178);
|
|
279
|
-
display: block;
|
|
280
|
-
}
|
|
281
|
-
span.run51 {
|
|
282
|
-
background-color: rgb(193, 255, 178);
|
|
283
|
-
display: block;
|
|
284
|
-
}
|
|
285
|
-
span.run52 {
|
|
286
|
-
background-color: rgb(196, 255, 178);
|
|
287
|
-
display: block;
|
|
288
|
-
}
|
|
289
|
-
span.run53 {
|
|
290
|
-
background-color: rgb(198, 255, 178);
|
|
291
|
-
display: block;
|
|
292
|
-
}
|
|
293
|
-
span.run54 {
|
|
294
|
-
background-color: rgb(201, 255, 178);
|
|
295
|
-
display: block;
|
|
296
|
-
}
|
|
297
|
-
span.run55 {
|
|
298
|
-
background-color: rgb(205, 255, 178);
|
|
299
|
-
display: block;
|
|
300
|
-
}
|
|
301
|
-
span.run56 {
|
|
302
|
-
background-color: rgb(207, 255, 178);
|
|
303
|
-
display: block;
|
|
304
|
-
}
|
|
305
|
-
span.run57 {
|
|
306
|
-
background-color: rgb(210, 255, 178);
|
|
307
|
-
display: block;
|
|
308
|
-
}
|
|
309
|
-
span.run58 {
|
|
310
|
-
background-color: rgb(212, 255, 178);
|
|
311
|
-
display: block;
|
|
312
|
-
}
|
|
313
|
-
span.run59 {
|
|
314
|
-
background-color: rgb(215, 255, 178);
|
|
315
|
-
display: block;
|
|
316
|
-
}
|
|
317
|
-
span.run60 {
|
|
318
|
-
background-color: rgb(219, 255, 178);
|
|
319
|
-
display: block;
|
|
320
|
-
}
|
|
321
|
-
span.run61 {
|
|
322
|
-
background-color: rgb(221, 255, 178);
|
|
323
|
-
display: block;
|
|
324
|
-
}
|
|
325
|
-
span.run62 {
|
|
326
|
-
background-color: rgb(224, 255, 178);
|
|
327
|
-
display: block;
|
|
328
|
-
}
|
|
329
|
-
span.run63 {
|
|
330
|
-
background-color: rgb(226, 255, 178);
|
|
331
|
-
display: block;
|
|
332
|
-
}
|
|
333
|
-
span.run64 {
|
|
334
|
-
background-color: rgb(229, 255, 178);
|
|
335
|
-
display: block;
|
|
336
|
-
}
|
|
337
|
-
span.run65 {
|
|
338
|
-
background-color: rgb(233, 255, 178);
|
|
339
|
-
display: block;
|
|
340
|
-
}
|
|
341
|
-
span.run66 {
|
|
342
|
-
background-color: rgb(235, 255, 178);
|
|
343
|
-
display: block;
|
|
344
|
-
}
|
|
345
|
-
span.run67 {
|
|
346
|
-
background-color: rgb(238, 255, 178);
|
|
347
|
-
display: block;
|
|
348
|
-
}
|
|
349
|
-
span.run68 {
|
|
350
|
-
background-color: rgb(240, 255, 178);
|
|
351
|
-
display: block;
|
|
352
|
-
}
|
|
353
|
-
span.run69 {
|
|
354
|
-
background-color: rgb(243, 255, 178);
|
|
355
|
-
display: block;
|
|
356
|
-
}
|
|
357
|
-
span.run70 {
|
|
358
|
-
background-color: rgb(247, 255, 178);
|
|
359
|
-
display: block;
|
|
360
|
-
}
|
|
361
|
-
span.run71 {
|
|
362
|
-
background-color: rgb(249, 255, 178);
|
|
363
|
-
display: block;
|
|
364
|
-
}
|
|
365
|
-
span.run72 {
|
|
366
|
-
background-color: rgb(252, 255, 178);
|
|
367
|
-
display: block;
|
|
368
|
-
}
|
|
369
|
-
span.run73 {
|
|
370
|
-
background-color: rgb(255, 255, 178);
|
|
371
|
-
display: block;
|
|
372
|
-
}
|
|
373
|
-
span.run74 {
|
|
374
|
-
background-color: rgb(255, 252, 178);
|
|
375
|
-
display: block;
|
|
376
|
-
}
|
|
377
|
-
span.run75 {
|
|
378
|
-
background-color: rgb(255, 248, 178);
|
|
379
|
-
display: block;
|
|
380
|
-
}
|
|
381
|
-
span.run76 {
|
|
382
|
-
background-color: rgb(255, 246, 178);
|
|
383
|
-
display: block;
|
|
384
|
-
}
|
|
385
|
-
span.run77 {
|
|
386
|
-
background-color: rgb(255, 243, 178);
|
|
387
|
-
display: block;
|
|
388
|
-
}
|
|
389
|
-
span.run78 {
|
|
390
|
-
background-color: rgb(255, 240, 178);
|
|
391
|
-
display: block;
|
|
392
|
-
}
|
|
393
|
-
span.run79 {
|
|
394
|
-
background-color: rgb(255, 238, 178);
|
|
395
|
-
display: block;
|
|
396
|
-
}
|
|
397
|
-
span.run80 {
|
|
398
|
-
background-color: rgb(255, 234, 178);
|
|
399
|
-
display: block;
|
|
400
|
-
}
|
|
401
|
-
span.run81 {
|
|
402
|
-
background-color: rgb(255, 232, 178);
|
|
403
|
-
display: block;
|
|
404
|
-
}
|
|
405
|
-
span.run82 {
|
|
406
|
-
background-color: rgb(255, 229, 178);
|
|
407
|
-
display: block;
|
|
408
|
-
}
|
|
409
|
-
span.run83 {
|
|
410
|
-
background-color: rgb(255, 226, 178);
|
|
411
|
-
display: block;
|
|
412
|
-
}
|
|
413
|
-
span.run84 {
|
|
414
|
-
background-color: rgb(255, 224, 178);
|
|
415
|
-
display: block;
|
|
416
|
-
}
|
|
417
|
-
span.run85 {
|
|
418
|
-
background-color: rgb(255, 220, 178);
|
|
419
|
-
display: block;
|
|
420
|
-
}
|
|
421
|
-
span.run86 {
|
|
422
|
-
background-color: rgb(255, 218, 178);
|
|
423
|
-
display: block;
|
|
424
|
-
}
|
|
425
|
-
span.run87 {
|
|
426
|
-
background-color: rgb(255, 215, 178);
|
|
427
|
-
display: block;
|
|
428
|
-
}
|
|
429
|
-
span.run88 {
|
|
430
|
-
background-color: rgb(255, 212, 178);
|
|
431
|
-
display: block;
|
|
432
|
-
}
|
|
433
|
-
span.run89 {
|
|
434
|
-
background-color: rgb(255, 210, 178);
|
|
435
|
-
display: block;
|
|
436
|
-
}
|
|
437
|
-
span.run90 {
|
|
438
|
-
background-color: rgb(255, 206, 178);
|
|
439
|
-
display: block;
|
|
440
|
-
}
|
|
441
|
-
span.run91 {
|
|
442
|
-
background-color: rgb(255, 204, 178);
|
|
443
|
-
display: block;
|
|
444
|
-
}
|
|
445
|
-
span.run92 {
|
|
446
|
-
background-color: rgb(255, 201, 178);
|
|
447
|
-
display: block;
|
|
448
|
-
}
|
|
449
|
-
span.run93 {
|
|
450
|
-
background-color: rgb(255, 198, 178);
|
|
451
|
-
display: block;
|
|
452
|
-
}
|
|
453
|
-
span.run94 {
|
|
454
|
-
background-color: rgb(255, 196, 178);
|
|
455
|
-
display: block;
|
|
456
|
-
}
|
|
457
|
-
span.run95 {
|
|
458
|
-
background-color: rgb(255, 192, 178);
|
|
459
|
-
display: block;
|
|
460
|
-
}
|
|
461
|
-
span.run96 {
|
|
462
|
-
background-color: rgb(255, 189, 178);
|
|
463
|
-
display: block;
|
|
464
|
-
}
|
|
465
|
-
span.run97 {
|
|
466
|
-
background-color: rgb(255, 187, 178);
|
|
467
|
-
display: block;
|
|
468
|
-
}
|
|
469
|
-
span.run98 {
|
|
470
|
-
background-color: rgb(255, 184, 178);
|
|
471
|
-
display: block;
|
|
472
|
-
}
|
|
473
|
-
span.run99 {
|
|
474
|
-
background-color: rgb(255, 182, 178);
|
|
475
|
-
display: block;
|
|
476
|
-
}
|
|
477
|
-
span.run100 {
|
|
478
|
-
background-color: rgb(255, 178, 178);
|
|
479
|
-
display: block;
|
|
480
|
-
}
|
|
481
|
-
</style></head><body><h3>C0 code coverage information generated on Thu Jul 20 18:17:28 CEST 2006</h3><hr /><pre><span class='marked'>Marked code looks like this.
|
|
482
|
-
This line is also marked as covered.
|
|
483
|
-
</span><span class='inferred'>Lines considered as run by rcov, but not reported by Ruby, look like this.
|
|
484
|
-
</span><span class='false'>Finally, here's a line marked as not executed.
|
|
485
|
-
</span></pre> <table class='report'>
|
|
486
|
-
<thead>
|
|
487
|
-
<tr>
|
|
488
|
-
<td class='heading'>Name</td>
|
|
489
|
-
<td class='heading'>Total lines</td>
|
|
490
|
-
<td class='heading'>Lines of code</td>
|
|
491
|
-
<td class='heading'>Total coverage</td>
|
|
492
|
-
<td class='heading'>Code coverage</td>
|
|
493
|
-
</tr>
|
|
494
|
-
</thead>
|
|
495
|
-
<tbody>
|
|
496
|
-
<tr>
|
|
497
|
-
<td>
|
|
498
|
-
<a href='lib-icalendar-component_rb.html'>lib/icalendar/component.rb</a>
|
|
499
|
-
</td>
|
|
500
|
-
<td class='value'>
|
|
501
|
-
<tt>401</tt>
|
|
502
|
-
</td>
|
|
503
|
-
<td class='value'>
|
|
504
|
-
<tt>401</tt>
|
|
505
|
-
</td>
|
|
506
|
-
<td>
|
|
507
|
-
<table cellspacing='0' cellpadding='0' align='right'>
|
|
508
|
-
<tr>
|
|
509
|
-
<td>
|
|
510
|
-
<tt>78.3%</tt> </td>
|
|
511
|
-
<td>
|
|
512
|
-
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
513
|
-
<tr>
|
|
514
|
-
<td class='covered' width='78' />
|
|
515
|
-
<td class='uncovered' width='22' />
|
|
516
|
-
</tr>
|
|
517
|
-
</table>
|
|
518
|
-
</td>
|
|
519
|
-
</tr>
|
|
520
|
-
</table>
|
|
521
|
-
</td>
|
|
522
|
-
<td>
|
|
523
|
-
<table cellspacing='0' cellpadding='0' align='right'>
|
|
524
|
-
<tr>
|
|
525
|
-
<td>
|
|
526
|
-
<tt>71.7%</tt> </td>
|
|
527
|
-
<td>
|
|
528
|
-
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
529
|
-
<tr>
|
|
530
|
-
<td class='covered' width='72' />
|
|
531
|
-
<td class='uncovered' width='28' />
|
|
532
|
-
</tr>
|
|
533
|
-
</table>
|
|
534
|
-
</td>
|
|
535
|
-
</tr>
|
|
536
|
-
</table>
|
|
537
|
-
</td>
|
|
538
|
-
</tr>
|
|
539
|
-
</tbody>
|
|
540
|
-
</table><pre><span class="false"> 1 =begin
|
|
541
|
-
2 Copyright (C) 2005 Jeff Rose
|
|
542
|
-
3
|
|
543
|
-
4 This library is free software; you can redistribute it and/or modify it
|
|
544
|
-
5 under the same terms as the ruby language itself, see the file COPYING for
|
|
545
|
-
6 details.
|
|
546
|
-
7 =end
|
|
547
|
-
</span><span class="marked"> 8
|
|
548
|
-
9 module Icalendar
|
|
549
|
-
10 class Geo < Icalendar::Base
|
|
550
|
-
11 attr_accessor :latitude, :longitude
|
|
551
|
-
12 alias :lat :latitude
|
|
552
|
-
13 alias :long :longitude
|
|
553
|
-
14
|
|
554
|
-
15 def initialize(lat, long)
|
|
555
|
-
16 @lat = lat
|
|
556
|
-
17 @long = long
|
|
557
|
-
18 end
|
|
558
|
-
19
|
|
559
|
-
20 def to_ical
|
|
560
|
-
21 "#{@lat.to_ical};#{@long.to_ical}"
|
|
561
|
-
22 end
|
|
562
|
-
23 end
|
|
563
|
-
24
|
|
564
|
-
25 # The body of the iCalendar object consists of a sequence of calendar
|
|
565
|
-
26 # properties and one or more calendar components. The calendar
|
|
566
|
-
27 # properties are attributes that apply to the calendar as a whole. The
|
|
567
|
-
28 # calendar components are collections of properties that express a
|
|
568
|
-
29 # particular calendar semantic. For example, the calendar component can
|
|
569
|
-
30 # specify an Event, a Todo, a Journal entry, Timezone information, or
|
|
570
|
-
31 # Freebusy time information, or an Alarm.
|
|
571
|
-
32 class Component < Icalendar::Base
|
|
572
|
-
33
|
|
573
|
-
34 meta_include HashAttrs
|
|
574
|
-
35
|
|
575
|
-
36 attr_reader :name
|
|
576
|
-
37 attr_accessor :properties
|
|
577
|
-
38
|
|
578
|
-
39 @@multi_properties = {}
|
|
579
|
-
40
|
|
580
|
-
41 def initialize(name)
|
|
581
|
-
42 @name = name
|
|
582
|
-
43 @components = Hash.new([])
|
|
583
|
-
44 @properties = {}
|
|
584
|
-
45
|
|
585
|
-
46 @@logger.info("New #{@name[1,@name.size].capitalize}...")
|
|
586
|
-
47 end
|
|
587
|
-
48
|
|
588
|
-
49 # Add a sub-component to the current component object.
|
|
589
|
-
50 def add_component(component)
|
|
590
|
-
51 key = (component.class.to_s.downcase + 's').gsub('icalendar::', '').to_sym
|
|
591
|
-
52
|
|
592
|
-
53 unless @components.has_key? key
|
|
593
|
-
54 @components[key] = []
|
|
594
|
-
55 end
|
|
595
|
-
56
|
|
596
|
-
57 @components[key] << component
|
|
597
|
-
58 end
|
|
598
|
-
59
|
|
599
|
-
60 # Add a component to the calendar.
|
|
600
|
-
61 alias add add_component
|
|
601
|
-
62
|
|
602
|
-
63 # Add an event to the calendar.
|
|
603
|
-
64 alias add_event add_component
|
|
604
|
-
65
|
|
605
|
-
66 # Add a todo item to the calendar.
|
|
606
|
-
67 alias add_todo add_component
|
|
607
|
-
68
|
|
608
|
-
69 # Add a journal item to the calendar.
|
|
609
|
-
70 alias add_journal add_component
|
|
610
|
-
71
|
|
611
|
-
72 def remove_component(component)
|
|
612
|
-
73 key = (component.class.to_s.downcase + 's').gsub('icalendar::', '').to_sym
|
|
613
|
-
74
|
|
614
|
-
75 if @components.has_key? key
|
|
615
|
-
76 @components[key].delete(component)
|
|
616
|
-
77 end
|
|
617
|
-
78 end
|
|
618
|
-
79
|
|
619
|
-
80 # Remove a component from the calendar.
|
|
620
|
-
81 alias remove remove_component
|
|
621
|
-
82
|
|
622
|
-
83 # Remove an event from the calendar.
|
|
623
|
-
84 alias remove_event remove_component
|
|
624
|
-
85
|
|
625
|
-
86 # Remove a todo item from the calendar.
|
|
626
|
-
87 alias remove_todo remove_component
|
|
627
|
-
88
|
|
628
|
-
89 # Remove a journal item from the calendar.
|
|
629
|
-
90 alias remove_journal remove_component
|
|
630
|
-
91
|
|
631
|
-
92 def to_ical
|
|
632
|
-
93 print_component do
|
|
633
|
-
94 s = ""
|
|
634
|
-
95 @components.each_value do |comps|
|
|
635
|
-
96 comps.each { |component| s << component.to_ical }
|
|
636
|
-
97 end
|
|
637
|
-
98 s
|
|
638
|
-
99 end
|
|
639
|
-
100 end
|
|
640
|
-
101
|
|
641
|
-
102 # Print this icalendar component
|
|
642
|
-
103 def print_component
|
|
643
|
-
104 # Begin a new component
|
|
644
|
-
105 "BEGIN:#{@name.upcase}\r\n" +
|
|
645
|
-
106
|
|
646
|
-
107 # Then the properties
|
|
647
|
-
108 print_properties +
|
|
648
|
-
109
|
|
649
|
-
110 # sub components
|
|
650
|
-
111 yield +
|
|
651
|
-
112
|
|
652
|
-
113 # End of this component
|
|
653
|
-
114 "END:#{@name.upcase}\r\n"
|
|
654
|
-
115 end
|
|
655
|
-
116
|
|
656
|
-
117 # Print this components properties
|
|
657
|
-
118 def print_properties
|
|
658
|
-
119 s = ""
|
|
659
|
-
120
|
|
660
|
-
121 @properties.each do |key,val|
|
|
661
|
-
122 # Take out underscore for property names that conflicted
|
|
662
|
-
123 # with built-in words.
|
|
663
|
-
124 if key =~ /ip_.*/
|
|
664
|
-
125 key = key[3..-1]
|
|
665
|
-
126 end
|
|
666
|
-
127
|
|
667
|
-
128 # Property name
|
|
668
|
-
129 s << "#{key.upcase}" +
|
|
669
|
-
130
|
|
670
|
-
131 # Possible parameters
|
|
671
|
-
132 print_parameters(val) +
|
|
672
|
-
133
|
|
673
|
-
134 # Property value
|
|
674
|
-
135 ":#{val.to_ical}\r\n"
|
|
675
|
-
136 end
|
|
676
|
-
137
|
|
677
|
-
138 s
|
|
678
|
-
139 end
|
|
679
|
-
140
|
|
680
|
-
141 # Print the parameters for a specific property
|
|
681
|
-
142 def print_parameters(val)
|
|
682
|
-
143 s = ""
|
|
683
|
-
144 return s unless val.respond_to?(:ical_params) and not val.ical_params.nil?
|
|
684
|
-
145
|
|
685
|
-
146 val.ical_params.each do |key,val|
|
|
686
|
-
147 s << ";#{key}"
|
|
687
|
-
148 val = [ val ] unless val.is_a?(Array)
|
|
688
|
-
149
|
|
689
|
-
150 # Possible parameter values
|
|
690
|
-
151 unless val.empty?
|
|
691
|
-
152 s << "="
|
|
692
|
-
153 sep = "" # First entry comes after = sign, but then we need commas
|
|
693
|
-
154 val.each do |pval|
|
|
694
|
-
155 if pval.respond_to? :to_ical
|
|
695
|
-
156 s << sep << pval.to_ical
|
|
696
|
-
157 sep = ","
|
|
697
|
-
158 end
|
|
698
|
-
159 end
|
|
699
|
-
160 end
|
|
700
|
-
161 end
|
|
701
|
-
162 s
|
|
702
|
-
163 end
|
|
703
|
-
164
|
|
704
|
-
165 # TODO: Look into the x-property, x-param stuff...
|
|
705
|
-
166 # This would really only be needed for subclassing to add additional
|
|
706
|
-
167 # properties to an application using the API.
|
|
707
|
-
168 def custom_property(name, value)
|
|
708
|
-
</span><span class="false">169 @properties[name] = value
|
|
709
|
-
170 end
|
|
710
|
-
</span><span class="marked">171
|
|
711
|
-
172 def multi_property?(name)
|
|
712
|
-
173 @@multi_properties.has_key?(name.downcase)
|
|
713
|
-
174 end
|
|
714
|
-
175
|
|
715
|
-
176 # Make it protected so we can monitor usage...
|
|
716
|
-
177 protected
|
|
717
|
-
178
|
|
718
|
-
179 def Component.ical_component(*syms)
|
|
719
|
-
180 hash_accessor :@components, *syms
|
|
720
|
-
181 end
|
|
721
|
-
182
|
|
722
|
-
183 # Define a set of methods supporting a new property
|
|
723
|
-
184 def Component.ical_property(property, alias_name = nil, prop_name = nil)
|
|
724
|
-
185 property = "#{property}".strip.downcase
|
|
725
|
-
186 alias_name = "#{alias_name}".strip.downcase unless alias_name.nil?
|
|
726
|
-
187
|
|
727
|
-
188 # If a prop_name was given then we use that for the actual storage
|
|
728
|
-
189 property = "#{prop_name}".strip.downcase unless prop_name.nil?
|
|
729
|
-
190
|
|
730
|
-
191 generate_getter(property, alias_name)
|
|
731
|
-
192 generate_setter(property, alias_name)
|
|
732
|
-
193 generate_query(property, alias_name)
|
|
733
|
-
194 end
|
|
734
|
-
195
|
|
735
|
-
196 # Define a set of methods defining a new property, which
|
|
736
|
-
197 # supports multiple values for the same property name.
|
|
737
|
-
198 def Component.ical_multi_property(property, singular, plural)
|
|
738
|
-
199 property = "#{property}".strip.downcase.gsub(/-/, '_')
|
|
739
|
-
200 plural = "#{plural}".strip.downcase
|
|
740
|
-
201
|
|
741
|
-
202 # Set this key so the parser knows to use an array for
|
|
742
|
-
203 # storing this property type.
|
|
743
|
-
204 @@multi_properties["#{property}"] = true
|
|
744
|
-
205
|
|
745
|
-
206 generate_multi_getter(property, plural)
|
|
746
|
-
207 generate_multi_setter(property, plural)
|
|
747
|
-
208 generate_multi_query(property, plural)
|
|
748
|
-
209 generate_multi_adder(property, singular)
|
|
749
|
-
210 generate_multi_remover(property, singular)
|
|
750
|
-
211 end
|
|
751
|
-
212
|
|
752
|
-
213 private
|
|
753
|
-
214
|
|
754
|
-
215 def Component.generate_getter(property, alias_name)
|
|
755
|
-
216 unless instance_methods.include? property
|
|
756
|
-
217 code = <<-code
|
|
757
|
-
</span><span class="false">218 def #{property}(val = nil, params = nil)
|
|
758
|
-
219 return @properties["#{property}"] if val.nil?
|
|
759
|
-
220
|
|
760
|
-
221 unless val.respond_to?(:to_ical)
|
|
761
|
-
222 raise(NotImplementedError, "Value of type (" + val.class.to_s + ") does not support to_ical method!")
|
|
762
|
-
223 end
|
|
763
|
-
224
|
|
764
|
-
225 unless params.nil?
|
|
765
|
-
226 # Extend with the parameter methods only if we have to...
|
|
766
|
-
227 unless val.respond_to?(:ical_params)
|
|
767
|
-
228 val.class.class_eval { attr_accessor :ical_params }
|
|
768
|
-
229 end
|
|
769
|
-
230 val.ical_params = params
|
|
770
|
-
231 end
|
|
771
|
-
232
|
|
772
|
-
233 @properties["#{property}"] = val
|
|
773
|
-
234 end
|
|
774
|
-
235 code
|
|
775
|
-
</span><span class="marked">236
|
|
776
|
-
237 class_eval code, "component.rb", 219
|
|
777
|
-
238 alias_method("#{alias_name}", "#{property}") unless alias_name.nil?
|
|
778
|
-
239 end
|
|
779
|
-
240 end
|
|
780
|
-
241
|
|
781
|
-
242 def Component.generate_setter(property, alias_name)
|
|
782
|
-
243 setter = property + '='
|
|
783
|
-
244 unless instance_methods.include? setter
|
|
784
|
-
245 code = <<-code
|
|
785
|
-
</span><span class="false">246 def #{setter}(val)
|
|
786
|
-
247 #{property}(val)
|
|
787
|
-
248 end
|
|
788
|
-
249 code
|
|
789
|
-
</span><span class="marked">250
|
|
790
|
-
251 class_eval code, "component.rb", 233
|
|
791
|
-
252 alias_method("#{alias_name}=", "#{property+'='}") unless alias_name.nil?
|
|
792
|
-
253 end
|
|
793
|
-
254 end
|
|
794
|
-
255
|
|
795
|
-
256 def Component.generate_query(property, alias_name)
|
|
796
|
-
257 query = "#{property}?"
|
|
797
|
-
258 unless instance_methods.include? query
|
|
798
|
-
259 code = <<-code
|
|
799
|
-
</span><span class="false">260 def #{query}
|
|
800
|
-
261 @properties.has_key?("#{property.downcase}")
|
|
801
|
-
262 end
|
|
802
|
-
263 code
|
|
803
|
-
</span><span class="marked">264
|
|
804
|
-
265 class_eval code, "component.rb", 226
|
|
805
|
-
266
|
|
806
|
-
267 alias_method("#{alias_name}\?", "#{query}") unless alias_name.nil?
|
|
807
|
-
268 end
|
|
808
|
-
269 end
|
|
809
|
-
270
|
|
810
|
-
271 def Component.generate_multi_getter(property, plural)
|
|
811
|
-
272 # Getter for whole array
|
|
812
|
-
273 unless instance_methods.include? plural
|
|
813
|
-
274 code = <<-code
|
|
814
|
-
</span><span class="false">275 def #{plural}(a = nil)
|
|
815
|
-
276 if a.nil?
|
|
816
|
-
277 @properties["#{property}"] || []
|
|
817
|
-
278 else
|
|
818
|
-
279 self.#{plural}=(a)
|
|
819
|
-
280 end
|
|
820
|
-
281 end
|
|
821
|
-
282 code
|
|
822
|
-
</span><span class="marked">283
|
|
823
|
-
284 class_eval code, "component.rb", 186
|
|
824
|
-
285 end
|
|
825
|
-
286 end
|
|
826
|
-
287
|
|
827
|
-
288 def Component.generate_multi_setter(property, plural)
|
|
828
|
-
289 # Setter for whole array
|
|
829
|
-
290 unless instance_methods.include? plural+'+'
|
|
830
|
-
291 code = <<-code
|
|
831
|
-
</span><span class="false">292 def #{plural}=(a)
|
|
832
|
-
293 if a.respond_to?(:to_ary)
|
|
833
|
-
294 a.to_ary.each do |val|
|
|
834
|
-
295 unless val.respond_to?(:to_ical)
|
|
835
|
-
296 raise(NotImplementedError, "Property values do not support to_ical method!")
|
|
836
|
-
297 end
|
|
837
|
-
298 end
|
|
838
|
-
299
|
|
839
|
-
300 @properties["#{property}"] = a.to_ary
|
|
840
|
-
301 else
|
|
841
|
-
302 raise ArgumentError, "#{plural} is a multi-property that must be an array! Use the add_[property] method to add single entries."
|
|
842
|
-
303 end
|
|
843
|
-
304 end
|
|
844
|
-
305 code
|
|
845
|
-
</span><span class="marked">306
|
|
846
|
-
307 class_eval code, "component.rb", 198
|
|
847
|
-
308 end
|
|
848
|
-
309 end
|
|
849
|
-
310
|
|
850
|
-
311 def Component.generate_multi_query(property, plural)
|
|
851
|
-
312 # Query for any of these properties
|
|
852
|
-
313 unless instance_methods.include? plural+'?'
|
|
853
|
-
314 code = <<-code
|
|
854
|
-
</span><span class="false">315 def #{plural}?
|
|
855
|
-
316 @properties.has_key?("#{property}")
|
|
856
|
-
317 end
|
|
857
|
-
318 code
|
|
858
|
-
</span><span class="marked">319
|
|
859
|
-
320 class_eval code, "component.rb", 210
|
|
860
|
-
321 end
|
|
861
|
-
322 end
|
|
862
|
-
323
|
|
863
|
-
324 def Component.generate_multi_adder(property, singular)
|
|
864
|
-
325 adder = "add_"+singular.to_s
|
|
865
|
-
326 # Add another item to this properties array
|
|
866
|
-
327 unless instance_methods.include? adder
|
|
867
|
-
328 code = <<-code
|
|
868
|
-
</span><span class="false">329 def #{adder}(val, params = {})
|
|
869
|
-
330 unless val.respond_to?(:to_ical)
|
|
870
|
-
331 raise(NotImplementedError, "Property value object does not support to_ical method!")
|
|
871
|
-
332 end
|
|
872
|
-
333
|
|
873
|
-
334 unless params.nil?
|
|
874
|
-
335 # Extend with the parameter methods only if we have to...
|
|
875
|
-
336 unless val.respond_to?(:ical_params)
|
|
876
|
-
337 val.class.class_eval { attr_accessor :ical_params }
|
|
877
|
-
338 end
|
|
878
|
-
339 val.ical_params = params
|
|
879
|
-
340 end
|
|
880
|
-
341
|
|
881
|
-
342 if @properties.has_key?("#{property}")
|
|
882
|
-
343 @properties["#{property}"] << val
|
|
883
|
-
344 else
|
|
884
|
-
345 @properties["#{property}"] = [val]
|
|
885
|
-
346 end
|
|
886
|
-
347 end
|
|
887
|
-
348 code
|
|
888
|
-
</span><span class="marked">349
|
|
889
|
-
350 class_eval code, "component.rb", 289
|
|
890
|
-
351 alias_method("add_#{property.downcase}", "#{adder}")
|
|
891
|
-
352 end
|
|
892
|
-
353 end
|
|
893
|
-
354
|
|
894
|
-
355 def Component.generate_multi_remover(property, singular)
|
|
895
|
-
356 # Remove an item from this properties array
|
|
896
|
-
357 unless instance_methods.include? "remove_#{singular}"
|
|
897
|
-
358 code = <<-code
|
|
898
|
-
</span><span class="false">359 def remove_#{singular}(a)
|
|
899
|
-
360 if @properties.has_key?("#{property}")
|
|
900
|
-
361 @properties["#{property}"].delete(a)
|
|
901
|
-
362 end
|
|
902
|
-
363 end
|
|
903
|
-
364 code
|
|
904
|
-
</span><span class="marked">365
|
|
905
|
-
366 class_eval code, "component.rb", 303
|
|
906
|
-
367 alias_method("remove_#{property.downcase}", "remove_#{singular}")
|
|
907
|
-
368 end
|
|
908
|
-
369 end
|
|
909
|
-
370
|
|
910
|
-
371 def method_missing(method_name, *args)
|
|
911
|
-
372 @@logger.debug("Inside method_missing...")
|
|
912
|
-
373 method_name = method_name.to_s.downcase
|
|
913
|
-
374
|
|
914
|
-
375 unless method_name =~ /x_.*/
|
|
915
|
-
376 raise NoMethodError, "Method Name: #{method_name}"
|
|
916
|
-
377 end
|
|
917
|
-
378
|
|
918
|
-
379 # x-properties are accessed with underscore but stored with a dash so
|
|
919
|
-
380 # they output correctly and we don't have to special case the
|
|
920
|
-
381 # output code, which would require checking every property.
|
|
921
|
-
382 if args.size > 0 # Its a setter
|
|
922
|
-
383 # Pull off the possible equals
|
|
923
|
-
384 @properties[method_name[/x_[^=]*/].gsub('x_', 'x-')] = args.first
|
|
924
|
-
385 else # Or its a getter
|
|
925
|
-
386 return @properties[method_name.gsub('x_', 'x-')]
|
|
926
|
-
387 end
|
|
927
|
-
388 end
|
|
928
|
-
389
|
|
929
|
-
390 public
|
|
930
|
-
391
|
|
931
|
-
392 def respond_to?(method_name)
|
|
932
|
-
393 unless method_name.to_s.downcase =~ /x_.*/
|
|
933
|
-
394 super
|
|
934
|
-
395 end
|
|
935
|
-
396
|
|
936
|
-
397 true
|
|
937
|
-
398 end
|
|
938
|
-
399
|
|
939
|
-
400 end # class Component
|
|
940
|
-
401 end
|
|
941
|
-
</span></pre><hr /><p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' /></a><a href='http://jigsaw.w3.org/css-validator/check/referer'><img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' /></a></p></body></html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|