icalendar 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/Rakefile +26 -3
  2. data/docs/api/classes/Array.html +155 -0
  3. data/docs/api/classes/Bignum.html +148 -0
  4. data/docs/api/classes/Date.html +172 -0
  5. data/docs/api/classes/DateTime.html +200 -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 +212 -0
  9. data/docs/api/classes/Icalendar/Alarm.html +228 -0
  10. data/docs/api/classes/Icalendar/Base.html +179 -0
  11. data/docs/api/classes/Icalendar/Calendar.html +504 -0
  12. data/docs/api/classes/Icalendar/Component.html +853 -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 +671 -0
  17. data/docs/api/classes/Icalendar/Freebusy.html +266 -0
  18. data/docs/api/classes/Icalendar/Geo.html +211 -0
  19. data/docs/api/classes/Icalendar/InvalidPropertyValue.html +117 -0
  20. data/docs/api/classes/Icalendar/Journal.html +443 -0
  21. data/docs/api/classes/Icalendar/Parameter.html +166 -0
  22. data/docs/api/classes/Icalendar/Parser.html +352 -0
  23. data/docs/api/classes/Icalendar/RRule.html +428 -0
  24. data/docs/api/classes/Icalendar/RRule/Weekday.html +199 -0
  25. data/docs/api/classes/Icalendar/Standard.html +156 -0
  26. data/docs/api/classes/Icalendar/Timezone.html +450 -0
  27. data/docs/api/classes/Icalendar/Todo.html +480 -0
  28. data/docs/api/classes/Icalendar/TzidSupport.html +118 -0
  29. data/docs/api/classes/Icalendar/UnknownComponentClass.html +117 -0
  30. data/docs/api/classes/Icalendar/UnknownPropertyMethod.html +117 -0
  31. data/docs/api/classes/Object.html +272 -0
  32. data/docs/api/classes/String.html +148 -0
  33. data/docs/api/classes/TZInfo.html +119 -0
  34. data/docs/api/classes/TZInfo/Timezone.html +153 -0
  35. data/docs/api/classes/TZInfo/TimezonePeriod.html +200 -0
  36. data/docs/api/classes/TZInfo/TimezoneTransitionInfo.html +229 -0
  37. data/docs/api/classes/Time.html +180 -0
  38. data/docs/api/classes/URI.html +111 -0
  39. data/docs/api/classes/URI/Generic.html +148 -0
  40. data/docs/api/created.rid +1 -0
  41. data/docs/api/files/COPYING.html +163 -0
  42. data/docs/api/files/GPL.html +531 -0
  43. data/docs/api/files/README.html +401 -0
  44. data/docs/api/files/lib/hash_attrs_rb.html +107 -0
  45. data/docs/api/files/lib/icalendar/base_rb.html +108 -0
  46. data/docs/api/files/lib/icalendar/calendar_rb.html +101 -0
  47. data/docs/api/files/lib/icalendar/component/alarm_rb.html +101 -0
  48. data/docs/api/files/lib/icalendar/component/event_rb.html +101 -0
  49. data/docs/api/files/lib/icalendar/component/freebusy_rb.html +101 -0
  50. data/docs/api/files/lib/icalendar/component/journal_rb.html +101 -0
  51. data/docs/api/files/lib/icalendar/component/timezone_rb.html +101 -0
  52. data/docs/api/files/lib/icalendar/component/todo_rb.html +101 -0
  53. data/docs/api/files/lib/icalendar/component_rb.html +108 -0
  54. data/docs/api/files/lib/icalendar/conversions_rb.html +109 -0
  55. data/docs/api/files/lib/icalendar/helpers_rb.html +101 -0
  56. data/docs/api/files/lib/icalendar/parameter_rb.html +101 -0
  57. data/docs/api/files/lib/icalendar/parser_rb.html +110 -0
  58. data/docs/api/files/lib/icalendar/rrule_rb.html +110 -0
  59. data/docs/api/files/lib/icalendar/tzinfo_rb.html +101 -0
  60. data/docs/api/files/lib/icalendar_rb.html +121 -0
  61. data/docs/api/files/lib/meta_rb.html +107 -0
  62. data/docs/api/fr_class_index.html +64 -0
  63. data/docs/api/fr_file_index.html +47 -0
  64. data/docs/api/fr_method_index.html +123 -0
  65. data/docs/api/index.html +24 -0
  66. data/docs/api/rdoc-style.css +208 -0
  67. data/lib/icalendar.rb +1 -0
  68. data/lib/icalendar/component.rb +3 -3
  69. data/lib/icalendar/component/event.rb +1 -1
  70. data/lib/icalendar/component/freebusy.rb +1 -0
  71. data/lib/icalendar/conversions.rb +6 -0
  72. data/lib/icalendar/conversions.rb.orig +144 -0
  73. data/lib/icalendar/parser.rb +0 -94
  74. data/lib/icalendar/rrule.rb +133 -0
  75. data/test/component/timezone_test.rb +1 -1
  76. data/test/component_test.rb +10 -0
  77. data/test/conversions_test.rb +4 -4
  78. data/test/coverage/index.html +272 -0
  79. data/test/coverage/lib-hash_attrs_rb.html +235 -0
  80. data/test/coverage/lib-icalendar-base_rb.html +249 -0
  81. data/test/coverage/lib-icalendar-calendar_rb.html +324 -0
  82. data/test/coverage/lib-icalendar-component-alarm_rb.html +250 -0
  83. data/test/coverage/lib-icalendar-component-event_rb.html +353 -0
  84. data/test/coverage/lib-icalendar-component-freebusy_rb.html +245 -0
  85. data/test/coverage/lib-icalendar-component-journal_rb.html +278 -0
  86. data/test/coverage/lib-icalendar-component-timezone_rb.html +326 -0
  87. data/test/coverage/lib-icalendar-component-todo_rb.html +277 -0
  88. data/test/coverage/lib-icalendar-component_rb.html +733 -0
  89. data/test/coverage/lib-icalendar-conversions_rb.html +358 -0
  90. data/test/coverage/lib-icalendar-parser_rb.html +671 -0
  91. data/test/coverage/lib-icalendar-rrule_rb.html +357 -0
  92. data/test/coverage/lib-icalendar_rb.html +243 -0
  93. data/test/coverage/lib-meta_rb.html +234 -0
  94. data/test/fixtures/folding.ics +2 -2
  95. metadata +113 -36
  96. data/docs/api/STUB +0 -0
@@ -0,0 +1,401 @@
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>File: README</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="fileHeader">
50
+ <h1>README</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>README
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Thu Jan 22 09:08:32 -0500 2009</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <h1>iCalendar &#8212; Internet calendaring, Ruby style</h1>
73
+ <p>
74
+ This is a Ruby library for dealing with iCalendar files. Rather than
75
+ explaining myself, here is the introduction from RFC-2445, which defines
76
+ the format:
77
+ </p>
78
+ <p>
79
+ The use of calendaring and scheduling has grown considerably in the last
80
+ decade. Enterprise and inter-enterprise business has become dependent on
81
+ rapid scheduling of events and actions using this information technology.
82
+ However, the longer term growth of calendaring and scheduling, is currently
83
+ limited by the lack of Internet standards for the message content types
84
+ that are central to these knowledgeware applications. This memo is intended
85
+ to progress the level of interoperability possible between dissimilar
86
+ calendaring and scheduling applications. This memo defines a MIME content
87
+ type for exchanging electronic calendaring and scheduling information. The
88
+ Internet Calendaring and Scheduling Core <a
89
+ href="../classes/Object.html">Object</a> Specification, or iCalendar,
90
+ allows for the capture and exchange of information normally stored within a
91
+ calendaring and scheduling application; such as a Personal Information
92
+ Manager (PIM) or a Group Scheduling product.
93
+ </p>
94
+ <p>
95
+ The iCalendar format is suitable as an exchange format between applications
96
+ or systems. The format is defined in terms of a MIME content type. This
97
+ will enable the object to be exchanged using several transports, including
98
+ but not limited to SMTP, HTTP, a file system, desktop interactive protocols
99
+ such as the use of a memory- based clipboard or drag/drop interactions,
100
+ point-to-point asynchronous communication, wired-network transport, or some
101
+ form of unwired transport such as infrared might also be used.
102
+ </p>
103
+ <p>
104
+ Now for some examples:
105
+ </p>
106
+ <p>
107
+ ## Probably want to start with this
108
+ </p>
109
+ <pre>
110
+ require 'rubygems' # Unless you install from the tarball or zip.
111
+ require 'icalendar'
112
+ require 'date'
113
+
114
+ include Icalendar # Probably do this in your class to limit namespace overlap
115
+ </pre>
116
+ <p>
117
+ ## Creating calendars and events is easy.
118
+ </p>
119
+ <pre>
120
+ # Create a calendar with an event (standard method)
121
+ cal = Calendar.new
122
+ cal.event do
123
+ dtstart Date.new(2005, 04, 29)
124
+ dtend Date.new(2005, 04, 28)
125
+ summary &quot;Meeting with the man.&quot;
126
+ description &quot;Have a long lunch meeting and decide nothing...&quot;
127
+ klass &quot;PRIVATE&quot;
128
+ end
129
+
130
+ cal.publish
131
+ </pre>
132
+ <p>
133
+ ## Or you can make events like this
134
+ </p>
135
+ <pre>
136
+ event = Event.new
137
+ event.start = DateTime.civil(2006, 6, 23, 8, 30)
138
+ event.summary = &quot;A great event!&quot;
139
+ cal.add_event(event)
140
+
141
+ event2 = cal.event # This automatically adds the event to the calendar
142
+ event2.start = DateTime.civil(2006, 6, 24, 8, 30)
143
+ event2.summary = &quot;Another great event!&quot;
144
+
145
+ # Now with support for property parameters
146
+ params = {&quot;ALTREP&quot; =&gt;['&quot;http://my.language.net&quot;'], &quot;LANGUAGE&quot; =&gt; [&quot;SPANISH&quot;]}
147
+
148
+ cal.event do
149
+ dtstart Date.new(2005, 04, 29)
150
+ dtend Date.new(2005, 04, 28)
151
+ summary &quot;This is a summary with params.&quot;, params
152
+ end
153
+
154
+ # We can output the calendar as a string to write to a file,
155
+ # network port, database etc.
156
+ cal_string = cal.to_ical
157
+ puts cal_string
158
+ </pre>
159
+ <p>
160
+ ## ALARMS
161
+ </p>
162
+ <p>
163
+ ## Within an event, you can create e-mail notification alarms like
164
+ this&#8230;
165
+ </p>
166
+ <pre>
167
+ cal.event.do
168
+ # ...other event properties
169
+ alarm do
170
+ action &quot;EMAIL&quot;
171
+ description &quot;This is an event reminder&quot; # email body (required)
172
+ summary &quot;Alarm notification&quot; # email subject (required)
173
+ attendees %w(mailto:me@my-domain.com mailto:me-too@my-domain.com) # one or more email recipients (required)
174
+ add_attendee &quot;mailto:me-three@my-domain.com&quot;
175
+ remove_attendee &quot;mailto:me@my-domain.com&quot;
176
+ trigger &quot;-PT15M&quot; # 15 minutes before
177
+ add_attach &quot;ftp://host.com/novo-procs/felizano.exe&quot;, {&quot;FMTTYPE&quot; =&gt; &quot;application/binary&quot;} # email attachments (optional)
178
+ end
179
+
180
+ alarm do
181
+ action &quot;DISPLAY&quot; # This line isn't necessary, it's the default
182
+ summary &quot;Alarm notification&quot;
183
+ trigger &quot;-P1DT0H0M0S&quot; # 1 day before
184
+ end
185
+
186
+ alarm do
187
+ action &quot;AUDIO&quot;
188
+ trigger &quot;-PT15M&quot;
189
+ add_attach &quot;Basso&quot;, {&quot;VALUE&quot; =&gt; [&quot;URI&quot;]} # only one attach allowed (optional)
190
+ end
191
+ end
192
+
193
+ # Output
194
+
195
+ # BEGIN:VALARM
196
+ # ACTION:EMAIL
197
+ # ATTACH;FMTTYPE=application/binary:ftp://host.com/novo-procs/felizano.exe
198
+ # TRIGGER:-PT15M
199
+ # SUMMARY:Alarm notification
200
+ # DESCRIPTION:This is an event reminder
201
+ # ATTENDEE:mailto:me-too@my-domain.com
202
+ # ATTENDEE:mailto:me-three@my-domain.com
203
+ # END:VALARM
204
+ #
205
+ # BEGIN:VALARM
206
+ # ACTION:DISPLAY
207
+ # TRIGGER:-P1DT0H0M0S
208
+ # SUMMARY:Alarm notification
209
+ # END:VALARM
210
+ #
211
+ # BEGIN:VALARM
212
+ # ACTION:AUDIO
213
+ # ATTACH;VALUE=URI:Basso
214
+ # TRIGGER:-PT15M
215
+ # END:VALARM
216
+ </pre>
217
+ <p>
218
+ ## Timezones
219
+ </p>
220
+ <pre>
221
+ # Create a timezone definition (previous convention)
222
+ cal = Calendar.new
223
+ timezone = Icalendar::Timezone.new
224
+ daylight = Icalendar::Daylight.new
225
+ standard = Icalendar::Standard.new
226
+
227
+ timezone.timezone_id = &quot;America/Chicago&quot;
228
+
229
+ daylight.timezone_offset_from = &quot;-0600&quot;
230
+ daylight.timezone_offset_to = &quot;-0500&quot;
231
+ daylight.timezone_name = &quot;CDT&quot;
232
+ daylight.dtstart = &quot;19700308TO20000&quot;
233
+ daylight.recurrence_rules = [&quot;FREQ=YEARLY;BYMONTH=3;BYDAY=2SU&quot;]
234
+
235
+ standard.timezone_offset_from = &quot;-0500&quot;
236
+ standard.timezone_offset_to = &quot;-0600&quot;
237
+ standard.timezone_name = &quot;CST&quot;
238
+ standard.dtstart = &quot;19701101T020000&quot;
239
+ standard.recurrence_rules = [&quot;YEARLY;BYMONTH=11;BYDAY=1SU&quot;]
240
+
241
+ timezone.add(daylight)
242
+ timezone.add(standard)
243
+ cal.add(timezone)
244
+
245
+ # Now, you can make timezones like this
246
+ cal = Calendar.new
247
+ cal.timezone do
248
+ timezone_id &quot;America/Chicago&quot;
249
+
250
+ daylight do
251
+ timezone_offset_from &quot;-0600&quot;
252
+ timezone_offset_to &quot;-0500&quot;
253
+ timezone_name &quot;CDT&quot;
254
+ dtstart &quot;19700308TO20000&quot;
255
+ add_recurrence_rule &quot;FREQ=YEARLY;BYMONTH=3;BYDAY=2SU&quot;
256
+ end
257
+
258
+ standard do
259
+ timezone_offset_from &quot;-0500&quot;
260
+ timezone_offset_to &quot;-0600&quot;
261
+ timezone_name &quot;CST&quot;
262
+ dtstart &quot;19701101T020000&quot;
263
+ add_recurrence_rule &quot;YEARLY;BYMONTH=11;BYDAY=1SU&quot;
264
+ end
265
+ end
266
+
267
+ # Both conventions output
268
+
269
+ # BEGIN:VTIMEZONE
270
+ # TZID:America/Chicago
271
+ # BEGIN:DAYLIGHT
272
+ # TZOFFSETFROM:-0600
273
+ # TZOFFSETTO:-0500
274
+ # TZNAME:CDT
275
+ # DTSTART:19700308T020000
276
+ # RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
277
+ # END:DAYLIGHT
278
+ # BEGIN:STANDARD
279
+ # TZOFFSETFROM:-0500
280
+ # TZOFFSETTO:-0600
281
+ # TZNAME:CST
282
+ # DTSTART:19701101T020000
283
+ # RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
284
+ # END:STANDARD
285
+ # END:VTIMEZONE
286
+ </pre>
287
+ <h2>Unicode</h2>
288
+ <p>
289
+ Add `$KCODE = &#8216;u&#8217;` to make icalender work correctly with Utf8
290
+ texts
291
+ </p>
292
+ <h2>Parsing iCalendars:</h2>
293
+ <pre>
294
+ # Open a file or pass a string to the parser
295
+ cal_file = File.open(&quot;single_event.ics&quot;)
296
+
297
+ # Parser returns an array of calendars because a single file
298
+ # can have multiple calendars.
299
+ cals = Icalendar.parse(cal_file)
300
+ cal = cals.first
301
+
302
+ # Now you can access the cal object in just the same way I created it
303
+ event = cal.events.first
304
+
305
+ puts &quot;start date-time: &quot; + event.dtstart
306
+ puts &quot;summary: &quot; + event.summary
307
+ </pre>
308
+ <h2>Finders:</h2>
309
+ <p>
310
+ Often times in web apps and other interactive applications you&#8216;ll
311
+ need to lookup items in a calendar to make changes or get details. Now you
312
+ can find everything by the unique id automatically associated with all
313
+ components.
314
+ </p>
315
+ <pre>
316
+ cal = Calendar.new
317
+ 10.times { cal.event } # Create 10 events with only default data.
318
+ some_event = cal.events[5] # Grab it from the array of events
319
+
320
+ # Use the uid as the key in your app
321
+ key = some_event.uid
322
+
323
+ # so later you can find it.
324
+ same_event = cal.find_event(key)
325
+ </pre>
326
+ <h2>Examples:</h2>
327
+ <p>
328
+ Check the unit tests for examples of most things you&#8216;ll want to do,
329
+ but please send me example code or let me know what&#8216;s missing.
330
+ </p>
331
+ <h2>Download</h2>
332
+ <p>
333
+ The latest release version of this library can be found at
334
+ </p>
335
+ <ul>
336
+ <li><a
337
+ href="http://rubyforge.org/projects/icalendar">rubyforge.org/projects/icalendar</a>/
338
+
339
+ </li>
340
+ </ul>
341
+ <p>
342
+ Documentation can be found at
343
+ </p>
344
+ <ul>
345
+ <li><a href="http://icalendar.rubyforge.org">icalendar.rubyforge.org</a>/
346
+
347
+ </li>
348
+ </ul>
349
+ <h2>Installation</h2>
350
+ <p>
351
+ It&#8216;s all about rubygems:
352
+ </p>
353
+ <p>
354
+ $ sudo gem install icalendar
355
+ </p>
356
+ <h2>License</h2>
357
+ <p>
358
+ This library is released under the same license as Ruby itself.
359
+ </p>
360
+ <h2>Support &amp; Contributions</h2>
361
+ <p>
362
+ The iCalendar library homepage is <a
363
+ href="http://icalendar.rubyforge.org">icalendar.rubyforge.org</a>/
364
+ </p>
365
+ <p>
366
+ There is an icalendar-devel@rubyforge.org mailing list that can be used for
367
+ asking questions, making comments or submitting patches.
368
+ </p>
369
+
370
+ </div>
371
+
372
+
373
+ </div>
374
+
375
+
376
+ </div>
377
+
378
+
379
+ <!-- if includes -->
380
+
381
+ <div id="section">
382
+
383
+
384
+
385
+
386
+
387
+
388
+
389
+
390
+ <!-- if method_list -->
391
+
392
+
393
+ </div>
394
+
395
+
396
+ <div id="validator-badges">
397
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
398
+ </div>
399
+
400
+ </body>
401
+ </html>
@@ -0,0 +1,107 @@
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>File: hash_attrs.rb</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="fileHeader">
50
+ <h1>hash_attrs.rb</h1>
51
+ <table class="header-table">
52
+ <tr class="top-aligned-row">
53
+ <td><strong>Path:</strong></td>
54
+ <td>lib/hash_attrs.rb
55
+ </td>
56
+ </tr>
57
+ <tr class="top-aligned-row">
58
+ <td><strong>Last Update:</strong></td>
59
+ <td>Sat Dec 27 17:44:32 -0500 2008</td>
60
+ </tr>
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+ <div id="description">
72
+ <p>
73
+ A module which adds some generators for hash based accessors.
74
+ </p>
75
+
76
+ </div>
77
+
78
+
79
+ </div>
80
+
81
+
82
+ </div>
83
+
84
+
85
+ <!-- if includes -->
86
+
87
+ <div id="section">
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <!-- if method_list -->
97
+
98
+
99
+ </div>
100
+
101
+
102
+ <div id="validator-badges">
103
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
104
+ </div>
105
+
106
+ </body>
107
+ </html>