icalendar 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. data/History.txt +3 -0
  2. data/Manifest.txt +61 -0
  3. data/PostInstall.txt +5 -0
  4. data/{README → README.rdoc} +4 -0
  5. data/Rakefile +28 -133
  6. data/config/website.yml +2 -0
  7. data/icalendar.gemspec +55 -0
  8. data/lib/icalendar/base.rb +2 -0
  9. data/lib/icalendar/component.rb +9 -7
  10. data/script/console +10 -0
  11. data/script/destroy +14 -0
  12. data/script/generate +14 -0
  13. data/script/recur1.ics +38 -0
  14. data/script/tryit.rb +13 -0
  15. data/script/txt2html +71 -0
  16. data/test.ical +33 -0
  17. data/test.ics +33 -0
  18. data/test.rb +48 -0
  19. data/test/component/{event_test.rb → test_event.rb} +0 -0
  20. data/test/component/{timezone_test.rb → test_timezone.rb} +1 -1
  21. data/test/component/{todo_test.rb → test_todo.rb} +0 -0
  22. data/test/fixtures/folding.ics +7 -7
  23. data/test/{calendar_test.rb → test_calendar.rb} +1 -4
  24. data/test/{component_test.rb → test_component.rb} +0 -0
  25. data/test/{conversions_test.rb → test_conversions.rb} +8 -8
  26. data/test/test_helper.rb +3 -0
  27. data/test/{parameter_test.rb → test_parameter.rb} +4 -0
  28. data/test/{parser_test.rb → test_parser.rb} +0 -0
  29. data/test2.rb +28 -0
  30. data/website/index.html +11 -0
  31. data/website/index.txt +79 -0
  32. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  33. data/website/stylesheets/screen.css +159 -0
  34. data/website/template.html.erb +50 -0
  35. metadata +135 -135
  36. data/docs/api/classes/Array.html +0 -155
  37. data/docs/api/classes/Bignum.html +0 -148
  38. data/docs/api/classes/Date.html +0 -172
  39. data/docs/api/classes/DateTime.html +0 -200
  40. data/docs/api/classes/Fixnum.html +0 -148
  41. data/docs/api/classes/Float.html +0 -148
  42. data/docs/api/classes/HashAttrs.html +0 -212
  43. data/docs/api/classes/Icalendar/Alarm.html +0 -228
  44. data/docs/api/classes/Icalendar/Base.html +0 -179
  45. data/docs/api/classes/Icalendar/Calendar.html +0 -504
  46. data/docs/api/classes/Icalendar/Component.html +0 -853
  47. data/docs/api/classes/Icalendar/DateProp.html +0 -187
  48. data/docs/api/classes/Icalendar/DateProp/ClassMethods.html +0 -195
  49. data/docs/api/classes/Icalendar/Daylight.html +0 -156
  50. data/docs/api/classes/Icalendar/Event.html +0 -671
  51. data/docs/api/classes/Icalendar/Freebusy.html +0 -266
  52. data/docs/api/classes/Icalendar/Geo.html +0 -211
  53. data/docs/api/classes/Icalendar/InvalidPropertyValue.html +0 -117
  54. data/docs/api/classes/Icalendar/Journal.html +0 -443
  55. data/docs/api/classes/Icalendar/Parameter.html +0 -166
  56. data/docs/api/classes/Icalendar/Parser.html +0 -352
  57. data/docs/api/classes/Icalendar/RRule.html +0 -428
  58. data/docs/api/classes/Icalendar/RRule/Weekday.html +0 -199
  59. data/docs/api/classes/Icalendar/Standard.html +0 -156
  60. data/docs/api/classes/Icalendar/Timezone.html +0 -450
  61. data/docs/api/classes/Icalendar/Todo.html +0 -480
  62. data/docs/api/classes/Icalendar/TzidSupport.html +0 -118
  63. data/docs/api/classes/Icalendar/UnknownComponentClass.html +0 -117
  64. data/docs/api/classes/Icalendar/UnknownPropertyMethod.html +0 -117
  65. data/docs/api/classes/Object.html +0 -272
  66. data/docs/api/classes/String.html +0 -148
  67. data/docs/api/classes/TZInfo.html +0 -119
  68. data/docs/api/classes/TZInfo/Timezone.html +0 -153
  69. data/docs/api/classes/TZInfo/TimezonePeriod.html +0 -200
  70. data/docs/api/classes/TZInfo/TimezoneTransitionInfo.html +0 -229
  71. data/docs/api/classes/Time.html +0 -180
  72. data/docs/api/classes/URI.html +0 -111
  73. data/docs/api/classes/URI/Generic.html +0 -148
  74. data/docs/api/created.rid +0 -1
  75. data/docs/api/files/COPYING.html +0 -163
  76. data/docs/api/files/GPL.html +0 -531
  77. data/docs/api/files/README.html +0 -401
  78. data/docs/api/files/lib/hash_attrs_rb.html +0 -107
  79. data/docs/api/files/lib/icalendar/base_rb.html +0 -108
  80. data/docs/api/files/lib/icalendar/calendar_rb.html +0 -101
  81. data/docs/api/files/lib/icalendar/component/alarm_rb.html +0 -101
  82. data/docs/api/files/lib/icalendar/component/event_rb.html +0 -101
  83. data/docs/api/files/lib/icalendar/component/freebusy_rb.html +0 -101
  84. data/docs/api/files/lib/icalendar/component/journal_rb.html +0 -101
  85. data/docs/api/files/lib/icalendar/component/timezone_rb.html +0 -101
  86. data/docs/api/files/lib/icalendar/component/todo_rb.html +0 -101
  87. data/docs/api/files/lib/icalendar/component_rb.html +0 -108
  88. data/docs/api/files/lib/icalendar/conversions_rb.html +0 -109
  89. data/docs/api/files/lib/icalendar/helpers_rb.html +0 -101
  90. data/docs/api/files/lib/icalendar/parameter_rb.html +0 -101
  91. data/docs/api/files/lib/icalendar/parser_rb.html +0 -110
  92. data/docs/api/files/lib/icalendar/rrule_rb.html +0 -110
  93. data/docs/api/files/lib/icalendar/tzinfo_rb.html +0 -101
  94. data/docs/api/files/lib/icalendar_rb.html +0 -121
  95. data/docs/api/files/lib/meta_rb.html +0 -107
  96. data/docs/api/fr_class_index.html +0 -64
  97. data/docs/api/fr_file_index.html +0 -47
  98. data/docs/api/fr_method_index.html +0 -123
  99. data/docs/api/index.html +0 -24
  100. data/docs/api/rdoc-style.css +0 -208
  101. data/docs/rfcs/itip_notes.txt +0 -69
  102. data/docs/rfcs/rfc2425.pdf +0 -0
  103. data/docs/rfcs/rfc2426.pdf +0 -0
  104. data/docs/rfcs/rfc2445.pdf +0 -0
  105. data/docs/rfcs/rfc2446.pdf +0 -0
  106. data/docs/rfcs/rfc2447.pdf +0 -0
  107. data/docs/rfcs/rfc3283.txt +0 -738
  108. data/test/coverage/STUB +0 -0
  109. data/test/coverage/index.html +0 -272
  110. data/test/coverage/lib-hash_attrs_rb.html +0 -235
  111. data/test/coverage/lib-icalendar-base_rb.html +0 -249
  112. data/test/coverage/lib-icalendar-calendar_rb.html +0 -324
  113. data/test/coverage/lib-icalendar-component-alarm_rb.html +0 -250
  114. data/test/coverage/lib-icalendar-component-event_rb.html +0 -353
  115. data/test/coverage/lib-icalendar-component-freebusy_rb.html +0 -245
  116. data/test/coverage/lib-icalendar-component-journal_rb.html +0 -278
  117. data/test/coverage/lib-icalendar-component-timezone_rb.html +0 -326
  118. data/test/coverage/lib-icalendar-component-todo_rb.html +0 -277
  119. data/test/coverage/lib-icalendar-component_rb.html +0 -733
  120. data/test/coverage/lib-icalendar-conversions_rb.html +0 -358
  121. data/test/coverage/lib-icalendar-parser_rb.html +0 -671
  122. data/test/coverage/lib-icalendar-rrule_rb.html +0 -357
  123. data/test/coverage/lib-icalendar_rb.html +0 -243
  124. data/test/coverage/lib-meta_rb.html +0 -234
@@ -1,401 +0,0 @@
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>
@@ -1,107 +0,0 @@
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>