roby 0.7.3 → 0.8.0

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.
Files changed (236) hide show
  1. data/History.txt +7 -5
  2. data/Manifest.txt +91 -16
  3. data/README.txt +24 -24
  4. data/Rakefile +92 -64
  5. data/app/config/app.yml +42 -43
  6. data/app/config/init.rb +26 -0
  7. data/benchmark/alloc_misc.rb +123 -0
  8. data/benchmark/discovery_latency.rb +67 -0
  9. data/benchmark/garbage_collection.rb +48 -0
  10. data/benchmark/genom.rb +31 -0
  11. data/benchmark/transactions.rb +62 -0
  12. data/bin/roby +1 -1
  13. data/bin/roby-log +16 -6
  14. data/doc/guide/.gitignore +2 -0
  15. data/doc/guide/config.yaml +34 -0
  16. data/doc/guide/ext/init.rb +14 -0
  17. data/doc/guide/ext/previous_next.rb +40 -0
  18. data/doc/guide/ext/rdoc_links.rb +33 -0
  19. data/doc/guide/index.rdoc +16 -0
  20. data/doc/guide/overview.rdoc +62 -0
  21. data/doc/guide/plan_modifications.rdoc +67 -0
  22. data/doc/guide/src/abstraction/achieve_with.page +8 -0
  23. data/doc/guide/src/abstraction/forwarding.page +8 -0
  24. data/doc/guide/src/abstraction/hierarchy.page +19 -0
  25. data/doc/guide/src/abstraction/index.page +28 -0
  26. data/doc/guide/src/abstraction/task_models.page +13 -0
  27. data/doc/guide/src/basics.template +6 -0
  28. data/doc/guide/src/basics/app.page +139 -0
  29. data/doc/guide/src/basics/code_examples.page +33 -0
  30. data/doc/guide/src/basics/dry.page +69 -0
  31. data/doc/guide/src/basics/errors.page +443 -0
  32. data/doc/guide/src/basics/events.page +179 -0
  33. data/doc/guide/src/basics/hierarchy.page +275 -0
  34. data/doc/guide/src/basics/index.page +11 -0
  35. data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
  36. data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
  37. data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
  38. data/doc/guide/src/basics/log_replay/goForward_4.png +0 -0
  39. data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
  40. data/doc/guide/src/basics/log_replay/hierarchy_error_1.png +0 -0
  41. data/doc/guide/src/basics/log_replay/hierarchy_error_2.png +0 -0
  42. data/doc/guide/src/basics/log_replay/hierarchy_error_3.png +0 -0
  43. data/doc/guide/src/basics/log_replay/plan_repair_1.png +0 -0
  44. data/doc/guide/src/basics/log_replay/plan_repair_2.png +0 -0
  45. data/doc/guide/src/basics/log_replay/plan_repair_3.png +0 -0
  46. data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
  47. data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
  48. data/doc/guide/src/basics/log_replay/roby_log_relation_window.png +0 -0
  49. data/doc/guide/src/basics/log_replay/roby_replay_event_representation.png +0 -0
  50. data/doc/guide/src/basics/plan_objects.page +71 -0
  51. data/doc/guide/src/basics/relations_display.page +203 -0
  52. data/doc/guide/src/basics/roby_cycle_overview.png +0 -0
  53. data/doc/guide/src/basics/shell.page +102 -0
  54. data/doc/guide/src/basics/summary.page +32 -0
  55. data/doc/guide/src/basics/tasks.page +357 -0
  56. data/doc/guide/src/basics_shell_header.txt +16 -0
  57. data/doc/guide/src/cycle/cycle-overview.png +0 -0
  58. data/doc/guide/src/cycle/cycle-overview.svg +208 -0
  59. data/doc/guide/src/cycle/error_handling.page +168 -0
  60. data/doc/guide/src/cycle/error_instantaneous_repair.png +0 -0
  61. data/doc/guide/src/cycle/error_instantaneous_repair.svg +1224 -0
  62. data/doc/guide/src/cycle/garbage_collection.page +10 -0
  63. data/doc/guide/src/cycle/index.page +23 -0
  64. data/doc/guide/src/cycle/propagation.page +154 -0
  65. data/doc/guide/src/cycle/propagation_diamond.png +0 -0
  66. data/doc/guide/src/cycle/propagation_diamond.svg +1279 -0
  67. data/doc/guide/src/default.css +319 -0
  68. data/doc/guide/src/default.template +74 -0
  69. data/doc/guide/src/htmldoc.metainfo +20 -0
  70. data/doc/guide/src/htmldoc.virtual +18 -0
  71. data/doc/guide/src/images/bodybg.png +0 -0
  72. data/doc/guide/src/images/contbg.png +0 -0
  73. data/doc/guide/src/images/footerbg.png +0 -0
  74. data/doc/guide/src/images/gradient1.png +0 -0
  75. data/doc/guide/src/images/gradient2.png +0 -0
  76. data/doc/guide/src/index.page +7 -0
  77. data/doc/guide/src/introduction/index.page +29 -0
  78. data/doc/guide/src/introduction/install.page +133 -0
  79. data/doc/{papers.rdoc → guide/src/introduction/publications.page} +5 -2
  80. data/doc/{videos.rdoc → guide/src/introduction/videos.page} +4 -2
  81. data/doc/guide/src/plugins/fault_tolerance.page +44 -0
  82. data/doc/guide/src/plugins/index.page +11 -0
  83. data/doc/guide/src/plugins/subsystems.page +45 -0
  84. data/doc/guide/src/relations/dependency.page +89 -0
  85. data/doc/guide/src/relations/index.page +12 -0
  86. data/doc/misc/update_github +24 -0
  87. data/doc/tutorials/02-GoForward.rdoc +3 -3
  88. data/ext/graph/graph.cc +46 -0
  89. data/lib/roby.rb +57 -22
  90. data/lib/roby/app.rb +132 -112
  91. data/lib/roby/app/plugins/rake.rb +21 -0
  92. data/lib/roby/app/rake.rb +0 -7
  93. data/lib/roby/app/run.rb +1 -1
  94. data/lib/roby/app/scripts/distributed.rb +1 -2
  95. data/lib/roby/app/scripts/generate/bookmarks.rb +1 -1
  96. data/lib/roby/app/scripts/results.rb +2 -1
  97. data/lib/roby/app/scripts/run.rb +6 -2
  98. data/lib/roby/app/scripts/shell.rb +11 -11
  99. data/lib/roby/config.rb +1 -1
  100. data/lib/roby/decision_control.rb +62 -3
  101. data/lib/roby/distributed.rb +4 -0
  102. data/lib/roby/distributed/base.rb +8 -0
  103. data/lib/roby/distributed/communication.rb +12 -8
  104. data/lib/roby/distributed/connection_space.rb +61 -44
  105. data/lib/roby/distributed/distributed_object.rb +1 -1
  106. data/lib/roby/distributed/notifications.rb +22 -30
  107. data/lib/roby/distributed/peer.rb +13 -8
  108. data/lib/roby/distributed/proxy.rb +5 -5
  109. data/lib/roby/distributed/subscription.rb +4 -4
  110. data/lib/roby/distributed/transaction.rb +3 -3
  111. data/lib/roby/event.rb +176 -110
  112. data/lib/roby/exceptions.rb +12 -4
  113. data/lib/roby/execution_engine.rb +1604 -0
  114. data/lib/roby/external_process_task.rb +225 -0
  115. data/lib/roby/graph.rb +0 -6
  116. data/lib/roby/interface.rb +221 -137
  117. data/lib/roby/log/console.rb +5 -3
  118. data/lib/roby/log/data_stream.rb +94 -16
  119. data/lib/roby/log/dot.rb +8 -8
  120. data/lib/roby/log/event_stream.rb +13 -3
  121. data/lib/roby/log/file.rb +43 -18
  122. data/lib/roby/log/gui/basic_display_ui.rb +89 -0
  123. data/lib/roby/log/gui/chronicle_view_ui.rb +90 -0
  124. data/lib/roby/log/gui/data_displays.rb +4 -5
  125. data/lib/roby/log/gui/data_displays_ui.rb +146 -0
  126. data/lib/roby/log/gui/relations.rb +18 -18
  127. data/lib/roby/log/gui/relations_ui.rb +120 -0
  128. data/lib/roby/log/gui/relations_view_ui.rb +144 -0
  129. data/lib/roby/log/gui/replay.rb +41 -13
  130. data/lib/roby/log/gui/replay_controls.rb +3 -0
  131. data/lib/roby/log/gui/replay_controls.ui +133 -110
  132. data/lib/roby/log/gui/replay_controls_ui.rb +249 -0
  133. data/lib/roby/log/hooks.rb +19 -18
  134. data/lib/roby/log/logger.rb +7 -6
  135. data/lib/roby/log/notifications.rb +4 -4
  136. data/lib/roby/log/plan_rebuilder.rb +20 -22
  137. data/lib/roby/log/relations.rb +44 -16
  138. data/lib/roby/log/server.rb +1 -4
  139. data/lib/roby/log/timings.rb +88 -19
  140. data/lib/roby/plan-object.rb +135 -11
  141. data/lib/roby/plan.rb +408 -224
  142. data/lib/roby/planning/loops.rb +32 -25
  143. data/lib/roby/planning/model.rb +157 -51
  144. data/lib/roby/planning/task.rb +47 -20
  145. data/lib/roby/query.rb +128 -92
  146. data/lib/roby/relations.rb +254 -136
  147. data/lib/roby/relations/conflicts.rb +6 -9
  148. data/lib/roby/relations/dependency.rb +358 -0
  149. data/lib/roby/relations/ensured.rb +0 -1
  150. data/lib/roby/relations/error_handling.rb +0 -1
  151. data/lib/roby/relations/events.rb +0 -2
  152. data/lib/roby/relations/executed_by.rb +26 -11
  153. data/lib/roby/relations/planned_by.rb +14 -14
  154. data/lib/roby/robot.rb +46 -0
  155. data/lib/roby/schedulers/basic.rb +34 -0
  156. data/lib/roby/standalone.rb +4 -0
  157. data/lib/roby/standard_errors.rb +21 -15
  158. data/lib/roby/state/events.rb +5 -4
  159. data/lib/roby/support.rb +107 -6
  160. data/lib/roby/task-operations.rb +23 -19
  161. data/lib/roby/task.rb +522 -148
  162. data/lib/roby/task_index.rb +80 -0
  163. data/lib/roby/test/common.rb +283 -44
  164. data/lib/roby/test/distributed.rb +53 -37
  165. data/lib/roby/test/testcase.rb +9 -204
  166. data/lib/roby/test/tools.rb +3 -3
  167. data/lib/roby/transactions.rb +154 -111
  168. data/lib/roby/transactions/proxy.rb +40 -7
  169. data/manifest.xml +20 -0
  170. data/plugins/fault_injection/README.txt +0 -3
  171. data/plugins/fault_injection/Rakefile +2 -8
  172. data/plugins/fault_injection/app.rb +1 -1
  173. data/plugins/fault_injection/fault_injection.rb +3 -3
  174. data/plugins/fault_injection/test/test_fault_injection.rb +19 -25
  175. data/plugins/subsystems/README.txt +0 -3
  176. data/plugins/subsystems/Rakefile +2 -7
  177. data/plugins/subsystems/app.rb +27 -16
  178. data/plugins/subsystems/test/app/config/init.rb +3 -0
  179. data/plugins/subsystems/test/app/planners/main.rb +1 -1
  180. data/plugins/subsystems/test/app/tasks/services.rb +1 -1
  181. data/plugins/subsystems/test/test_subsystems.rb +23 -16
  182. data/test/distributed/test_communication.rb +32 -15
  183. data/test/distributed/test_connection.rb +28 -26
  184. data/test/distributed/test_execution.rb +59 -54
  185. data/test/distributed/test_mixed_plan.rb +34 -34
  186. data/test/distributed/test_plan_notifications.rb +26 -26
  187. data/test/distributed/test_protocol.rb +57 -48
  188. data/test/distributed/test_query.rb +11 -7
  189. data/test/distributed/test_remote_plan.rb +71 -71
  190. data/test/distributed/test_transaction.rb +50 -47
  191. data/test/mockups/external_process +28 -0
  192. data/test/planning/test_loops.rb +163 -119
  193. data/test/planning/test_model.rb +3 -3
  194. data/test/planning/test_task.rb +27 -7
  195. data/test/relations/test_conflicts.rb +3 -3
  196. data/test/relations/test_dependency.rb +324 -0
  197. data/test/relations/test_ensured.rb +2 -2
  198. data/test/relations/test_executed_by.rb +94 -19
  199. data/test/relations/test_planned_by.rb +11 -9
  200. data/test/suite_core.rb +6 -3
  201. data/test/suite_distributed.rb +1 -0
  202. data/test/suite_planning.rb +1 -0
  203. data/test/suite_relations.rb +2 -2
  204. data/test/tasks/test_external_process.rb +126 -0
  205. data/test/{test_thread_task.rb → tasks/test_thread_task.rb} +17 -20
  206. data/test/test_bgl.rb +21 -1
  207. data/test/test_event.rb +229 -155
  208. data/test/test_exceptions.rb +79 -80
  209. data/test/test_execution_engine.rb +987 -0
  210. data/test/test_gui.rb +1 -1
  211. data/test/test_interface.rb +11 -5
  212. data/test/test_log.rb +18 -7
  213. data/test/test_log_server.rb +1 -0
  214. data/test/test_plan.rb +229 -395
  215. data/test/test_query.rb +193 -35
  216. data/test/test_relations.rb +88 -8
  217. data/test/test_state.rb +55 -37
  218. data/test/test_support.rb +1 -1
  219. data/test/test_task.rb +371 -218
  220. data/test/test_testcase.rb +32 -16
  221. data/test/test_transactions.rb +211 -170
  222. data/test/test_transactions_proxy.rb +37 -19
  223. metadata +169 -71
  224. data/.gitignore +0 -29
  225. data/doc/styles/allison.css +0 -314
  226. data/doc/styles/allison.js +0 -316
  227. data/doc/styles/allison.rb +0 -276
  228. data/doc/styles/jamis.rb +0 -593
  229. data/lib/roby/control.rb +0 -746
  230. data/lib/roby/executives/simple.rb +0 -30
  231. data/lib/roby/propagation.rb +0 -562
  232. data/lib/roby/relations/hierarchy.rb +0 -239
  233. data/lib/roby/transactions/updates.rb +0 -139
  234. data/test/relations/test_hierarchy.rb +0 -158
  235. data/test/test_control.rb +0 -399
  236. data/test/test_propagation.rb +0 -210
@@ -1,276 +0,0 @@
1
-
2
- # RDoc workarounds
3
- class String
4
- def if_exists (item = nil)
5
- unless item
6
- self unless self =~ /(%(\w+)%)/
7
- "\nIF:#{$2}\n#{self}\nENDIF:#{$2}\n"
8
- else
9
- "\nIF:#{item}\n#{self}\nENDIF:#{item}\n"
10
- end
11
- end
12
- def loop(item)
13
- "\nSTART:#{item}\n#{self}\nEND:#{item}\n"
14
- end
15
- end
16
-
17
- module RDoc
18
- module Page
19
-
20
- puts "Allison 2 template (c) 2007 Cloudburst, LLC"
21
-
22
- require 'pathname'
23
- CACHE_DIR = File.expand_path(File.dirname(__FILE__) + "/../cache")
24
- Dir.mkdir(CACHE_DIR) unless File.exist?(CACHE_DIR)
25
-
26
- begin
27
- require 'rubygems'
28
- gem 'markaby', '>= 0.5'
29
- require 'markaby'
30
- require 'base64'
31
-
32
- # Markaby page says Markaby is better in its own module
33
- module Allison
34
-
35
- FONTS = METHOD_LIST = SRC_PAGE = FILE_PAGE = CLASS_PAGE = ""
36
-
37
- FR_INDEX_BODY = "!INCLUDE!" # Who knows
38
-
39
- STYLE, JAVASCRIPT = ["css", "js"].map do |extension|
40
- s = File.open(File.dirname(__FILE__) + "/allison.#{extension}").read
41
- # Programmatic CSS
42
- if extension == "css"
43
- s_lines = s.split("\n")
44
- meths = []
45
- s_lines.collect! do |line|
46
- line = line.squeeze(" ").strip
47
- if line =~ /(\w+)/ and meths.include? $1
48
- line = instance_eval line
49
- # puts "Called method #{$1}"
50
- elsif line !~ /\*\/|\/\*/ and line =~ /(@.*|^def (\w+).*)/
51
- # printf "Evalled #{$1}"
52
- result = instance_eval $1
53
- # puts " to #{result.inspect}"
54
- result = (result.is_a?(Fixnum) ? result.to_s + "px" : result.to_s)
55
- line = (line == $1 ? "" : line.gsub($1, result))
56
- meths.push $2 if $2
57
- end
58
- line !~ /^\s*$|\s*^\/\*.*\*\/\s*$|\{|\}/ ? line + ";" : line
59
- end
60
- s = s_lines.join("\n")
61
- else
62
- # Do nothing; the Javascript is already fine
63
- end
64
- s
65
- end
66
-
67
- INDEX = Markaby::Builder.new.xhtml_strict do
68
- head do
69
- title '%title%'
70
- link :rel => 'stylesheet', :type => 'text/css', :href => 'rdoc-style.css', :media => 'screen'
71
- tag! :meta, 'http-equiv' => 'refresh', 'content' => '0;url=%initial_page%'
72
- end
73
- body do
74
- div.container! do
75
- 6.times {|n| div('', :class => "curve", :id => "preheader_curve_#{n}") }
76
- div.header! do
77
- span.title! do
78
- p { ' ' }
79
- h1 "Ruby Documentation"
80
- end
81
- end
82
- div.clear {}
83
- div.redirect! do
84
- a :href => '%initial_page%' do
85
- h1 "Redirect"
86
- end
87
- end
88
- end
89
- end
90
- end.to_s
91
-
92
- FILE_INDEX = METHOD_INDEX = CLASS_INDEX = Markaby::Builder.new.capture do
93
- a :href => '%href%' do
94
- self << '%name%'
95
- br
96
- end
97
- end.loop('entries')
98
-
99
- BODY = Markaby::Builder.new.xhtml_strict do
100
- head do
101
- title "%title%"
102
- link :rel => 'stylesheet', :type => 'text/css', :href => '%style_url%', :media => 'screen'
103
- script :type => 'text/javascript' do
104
- JAVASCRIPT
105
- end
106
- end
107
- body do
108
- div.container! do
109
- 6.times {|n| div('', :class => "curve", :id => "preheader_curve_#{n}") }
110
- div.header! do
111
- p {'%full_path%'.if_exists}
112
- span do
113
- h1.title! '%title%'.if_exists
114
- end
115
- self << "!INCLUDE!" # Always empty
116
- end
117
- div.clear {}
118
- div.left! do
119
- self << (div.navigation.darker.top.child_of! do
120
- # Ugh
121
- h3 "Child of"
122
- self << "<span>\n#{"<a href='%par_url%'>".if_exists}%parent%#{"</a>".if_exists('par_url')}</span>"
123
- end).if_exists('parent')
124
-
125
- self << div.navigation.darker.top.defined_in! do
126
- h3('Defined in')
127
- self << a('%full_path%', :href => '%full_path_url%').if_exists.loop('infiles')
128
- end.if_exists('infiles')
129
-
130
- ['includes', 'requires', 'methods'].each do |item|
131
- self << div.navigation.top(:id => item) do
132
- self << h3(item.capitalize)
133
- self << "#{"<a href='%aref%'>".if_exists}%name%#{br}#{"</a>".if_exists('aref')}".if_exists('name').loop(item)
134
- end.if_exists(item)
135
- end
136
-
137
- div.spacer! ''
138
-
139
- # For the local AJAX includes
140
- ['class', 'file', 'method'].each do |item|
141
- div.navigation.darker.index :id => "#{item}_wrapper" do
142
- div.list_header do
143
- h3 'All ' + (item == 'class' ? 'classes' : item + 's')
144
- end
145
- div.list_header_link do
146
- a((item == 'method' ? 'Show...' : 'Hide...'),
147
- :id => "#{item}_link", :href => "#",
148
- :onclick=> "toggle('#{item}'); toggleText('#{item}_link'); return false;")
149
- end
150
- div.clear {}
151
- div(:id => item) do
152
- form do
153
- label(:for => "filter_#{item}") { 'Filter:' + '&nbsp;' * 2 }
154
- input '', :type => 'text', :id => "filter_#{item}",
155
- :onKeyUp => "return filterList('#{item}', this.value, event);",
156
- :onKeyPress => "return disableSubmit(event);"
157
- end
158
- end
159
- end
160
- end
161
- end
162
-
163
- div.content! do
164
-
165
- self << capture do
166
- h1.item_name! '%title%'
167
- end.if_exists('title')
168
-
169
- self << capture do
170
- div.description! do
171
- '%description%'
172
- end
173
- end.if_exists('description')
174
-
175
- self << capture do
176
- self << h1 {a '%sectitle%', :name => '%secsequence%'}.if_exists('sectitle')
177
- self << p {'%seccomment%'}.if_exists
178
-
179
- self << capture do
180
- h1 "Child modules and classes"
181
- p '%classlist%'
182
- end.if_exists('classlist')
183
-
184
- ['constants', 'aliases', 'attributes'].each do |item|
185
- self << capture do
186
- h1(item.capitalize)
187
- p do
188
- table do
189
- fields = %w[name value old_name new_name rw]
190
- self << tr do
191
- # Header row
192
- if item == 'constants'
193
- th 'Name'
194
- th 'Value'
195
- elsif item == 'aliases'
196
- th 'Old name'
197
- th 'New name'
198
- elsif item == 'attributes'
199
- th 'Name'
200
- th 'Read/write?'
201
- end
202
- end
203
- self << tr do
204
- # Looped item rows
205
- fields.each do |field|
206
- if field !~ /desc/
207
- self << td('%' + field + '%', :class => field =~ /^old|^name/ ? "highlight" : "normal").if_exists
208
- else
209
- self << td(('%' + field+ '%').if_exists)
210
- end
211
- end
212
- end.loop(item)
213
- end
214
- end
215
- end.if_exists(item)
216
- end
217
-
218
- self << capture do
219
- h1('%type% %category% Methods')
220
- self << capture do
221
- self << a.small(:name => '%aref%') {br}.if_exists
222
- div.method_block do
223
- h3 { "<a href='#%aref%'>".if_exists + '%callseq%'.if_exists + '%name%'.if_exists + '%params%'.if_exists + "</a>".if_exists('aref')}
224
- self << '%m_desc%'.if_exists
225
-
226
- self << capture do
227
- p.source_link :id => '%aref%-show-link' do
228
- a "Show source...", :id => '%aref%-link', :href => "#",
229
- :onclick=> "toggle('%aref%-source'); toggleText('%aref%-link'); return false;"
230
- end
231
- div.source :id => '%aref%-source' do
232
- pre { '%sourcecode%' }
233
- end
234
- end.if_exists('sourcecode')
235
- end
236
-
237
- end.loop('methods').if_exists('methods')
238
- end.loop('method_list').if_exists('method_list')
239
-
240
- end.loop('sections').if_exists('sections')
241
-
242
- end
243
-
244
- div.footer!.clear do
245
- self << Time.now.strftime("Generated on %b %d, %Y").gsub(' 0', ' ')
246
- self << " / Allison 2 &copy; 2007 "
247
- a "Cloudburst, LLC", :href => "http://cloudbur.st"
248
- end
249
- end
250
- end
251
-
252
- end.to_s
253
- end
254
-
255
- Allison.constants.each do |c|
256
- eval "#{c} = Allison::#{c}" # Jump out of the namespace
257
- begin
258
- File.open("#{CACHE_DIR}/#{c}", 'w') do |f|
259
- f.puts eval(c) # Write cache
260
- end
261
- rescue Errno::EACCES => e
262
- end
263
- end
264
-
265
- rescue LoadError => e
266
- # We don't have some dependency
267
- lib = (e.to_s[/(.*)\(/, 1] or e.to_s).split(" ").last.capitalize
268
- puts "Using cache (couldn't load '#{lib}')"
269
- Dir[CACHE_DIR + '/*'].each do |filename|
270
- eval("#{filename.split("/").last} = File.open(filename) {|s| s.read}")
271
- end
272
- end
273
-
274
- end
275
-
276
- end
@@ -1,593 +0,0 @@
1
- module RDoc
2
- module Page
3
-
4
- FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif"
5
-
6
- STYLE = <<CSS
7
- a {
8
- color: #00F;
9
- text-decoration: none;
10
- }
11
-
12
- a:hover {
13
- color: #77F;
14
- text-decoration: underline;
15
- }
16
-
17
- body, td, p {
18
- font-family: %fonts%;
19
- background: #FFF;
20
- color: #000;
21
- margin: 0px;
22
- font-size: small;
23
- }
24
-
25
- #content {
26
- margin: 2em;
27
- }
28
-
29
- #description p {
30
- margin-bottom: 0.5em;
31
- }
32
-
33
- .sectiontitle {
34
- margin-top: 1em;
35
- margin-bottom: 1em;
36
- padding: 0.5em;
37
- padding-left: 2em;
38
- background: #005;
39
- color: #FFF;
40
- font-weight: bold;
41
- border: 1px dotted black;
42
- }
43
-
44
- .attr-rw {
45
- padding-left: 1em;
46
- padding-right: 1em;
47
- text-align: center;
48
- color: #055;
49
- }
50
-
51
- .attr-name {
52
- font-weight: bold;
53
- }
54
-
55
- .attr-desc {
56
- }
57
-
58
- .attr-value {
59
- font-family: monospace;
60
- }
61
-
62
- .file-title-prefix {
63
- font-size: large;
64
- }
65
-
66
- .file-title {
67
- font-size: large;
68
- font-weight: bold;
69
- background: #005;
70
- color: #FFF;
71
- }
72
-
73
- .banner {
74
- background: #005;
75
- color: #FFF;
76
- border: 1px solid black;
77
- padding: 1em;
78
- }
79
-
80
- .banner td {
81
- background: transparent;
82
- color: #FFF;
83
- }
84
-
85
- h1 a, h2 a, .sectiontitle a, .banner a {
86
- color: #FF0;
87
- }
88
-
89
- h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover {
90
- color: #FF7;
91
- }
92
-
93
- img {
94
- margin: 2em;
95
- }
96
-
97
- .dyn-source {
98
- display: none;
99
- background: #FFE;
100
- color: #000;
101
- border: 1px dotted black;
102
- margin: 0.5em 2em 0.5em 2em;
103
- padding: 0.5em;
104
- }
105
-
106
- .dyn-source .cmt {
107
- color: #00F;
108
- font-style: italic;
109
- }
110
-
111
- .dyn-source .kw {
112
- color: #070;
113
- font-weight: bold;
114
- }
115
-
116
- .method {
117
- margin-left: 1em;
118
- margin-right: 1em;
119
- margin-bottom: 1em;
120
- }
121
-
122
- .description pre {
123
- padding: 0.5em;
124
- border: 1px dotted black;
125
- background: #FFE;
126
- }
127
-
128
- .method .title {
129
- font-family: monospace;
130
- font-size: large;
131
- border-bottom: 1px dashed black;
132
- margin-bottom: 0.3em;
133
- padding-bottom: 0.1em;
134
- }
135
-
136
- .method .description, .method .sourcecode {
137
- margin-left: 1em;
138
- }
139
-
140
- .description p, .sourcecode p {
141
- margin-bottom: 0.5em;
142
- }
143
-
144
- .method .sourcecode p.source-link {
145
- text-indent: 0em;
146
- margin-top: 0.5em;
147
- }
148
-
149
- .method .aka {
150
- margin-top: 0.3em;
151
- margin-left: 1em;
152
- font-style: italic;
153
- text-indent: 2em;
154
- }
155
-
156
- h1 {
157
- padding: 1em;
158
- border: 1px solid black;
159
- font-size: x-large;
160
- font-weight: bold;
161
- color: #FFF;
162
- background: #007;
163
- }
164
-
165
- h2 {
166
- padding: 0.5em 1em 0.5em 1em;
167
- border: 1px solid black;
168
- font-size: large;
169
- font-weight: bold;
170
- color: #FFF;
171
- background: #009;
172
- }
173
-
174
- h3, h4, h5, h6 {
175
- padding: 0.2em 1em 0.2em 1em;
176
- border: 1px dashed black;
177
- color: #000;
178
- background: #AAF;
179
- }
180
-
181
- .sourcecode > pre {
182
- padding: 0.5em;
183
- border: 1px dotted black;
184
- background: #FFE;
185
- }
186
-
187
- CSS
188
-
189
- XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
190
- <!DOCTYPE html
191
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
192
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
193
- }
194
-
195
- XHTML_FRAMESET_PREAMBLE = %{
196
- <!DOCTYPE html
197
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
198
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
199
- }
200
-
201
- HEADER = XHTML_PREAMBLE + <<ENDHEADER
202
- <html>
203
- <head>
204
- <title>%title%</title>
205
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
206
- <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
207
-
208
- <script language="JavaScript" type="text/javascript">
209
- // <![CDATA[
210
-
211
- function toggleSource( id )
212
- {
213
- var elem
214
- var link
215
-
216
- if( document.getElementById )
217
- {
218
- elem = document.getElementById( id )
219
- link = document.getElementById( "l_" + id )
220
- }
221
- else if ( document.all )
222
- {
223
- elem = eval( "document.all." + id )
224
- link = eval( "document.all.l_" + id )
225
- }
226
- else
227
- return false;
228
-
229
- if( elem.style.display == "block" )
230
- {
231
- elem.style.display = "none"
232
- link.innerHTML = "show source"
233
- }
234
- else
235
- {
236
- elem.style.display = "block"
237
- link.innerHTML = "hide source"
238
- }
239
- }
240
-
241
- function openCode( url )
242
- {
243
- window.open( url, "SOURCE_CODE", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=480,width=750" ).focus();
244
- }
245
- // ]]>
246
- </script>
247
- </head>
248
-
249
- <body>
250
- ENDHEADER
251
-
252
- FILE_PAGE = <<HTML
253
- <table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
254
- <tr><td>
255
- <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
256
- <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />%short_name%</td>
257
- <td align="right">
258
- <table border='0' cellspacing="0" cellpadding="2">
259
- <tr>
260
- <td>Path:</td>
261
- <td>%full_path%
262
- IF:cvsurl
263
- &nbsp;(<a href="%cvsurl%">CVS</a>)
264
- ENDIF:cvsurl
265
- </td>
266
- </tr>
267
- <tr>
268
- <td>Modified:</td>
269
- <td>%dtm_modified%</td>
270
- </tr>
271
- </table>
272
- </td></tr>
273
- </table>
274
- </td></tr>
275
- </table><br />
276
- HTML
277
-
278
- ###################################################################
279
-
280
- CLASS_PAGE = <<HTML
281
- <table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
282
- <td class="file-title"><span class="file-title-prefix">%classmod%</span><br />%full_name%</td>
283
- <td align="right">
284
- <table cellspacing="0" cellpadding="2">
285
- <tr valign="top">
286
- <td>In:</td>
287
- <td>
288
- START:infiles
289
- HREF:full_path_url:full_path:
290
- IF:cvsurl
291
- &nbsp;(<a href="%cvsurl%">CVS</a>)
292
- ENDIF:cvsurl
293
- END:infiles
294
- </td>
295
- </tr>
296
- IF:parent
297
- <tr>
298
- <td>Parent:</td>
299
- <td>
300
- IF:par_url
301
- <a href="%par_url%">
302
- ENDIF:par_url
303
- %parent%
304
- IF:par_url
305
- </a>
306
- ENDIF:par_url
307
- </td>
308
- </tr>
309
- ENDIF:parent
310
- </table>
311
- </td>
312
- </tr>
313
- </table>
314
- HTML
315
-
316
- ###################################################################
317
-
318
- METHOD_LIST = <<HTML
319
- <div id="content">
320
- IF:diagram
321
- <table cellpadding='0' cellspacing='0' border='0' width="100%"><tr><td align="center">
322
- %diagram%
323
- </td></tr></table>
324
- ENDIF:diagram
325
-
326
- IF:description
327
- <div class="description">%description%</div>
328
- ENDIF:description
329
-
330
- IF:requires
331
- <div class="sectiontitle">Required Files</div>
332
- <ul>
333
- START:requires
334
- <li>HREF:aref:name:</li>
335
- END:requires
336
- </ul>
337
- ENDIF:requires
338
-
339
- IF:toc
340
- <div class="sectiontitle">Contents</div>
341
- <ul>
342
- START:toc
343
- <li><a href="#%href%">%secname%</a></li>
344
- END:toc
345
- </ul>
346
- ENDIF:toc
347
-
348
- IF:methods
349
- <div class="sectiontitle">Methods</div>
350
- <ul>
351
- START:methods
352
- <li>HREF:aref:name:</li>
353
- END:methods
354
- </ul>
355
- ENDIF:methods
356
-
357
- IF:includes
358
- <div class="sectiontitle">Included Modules</div>
359
- <ul>
360
- START:includes
361
- <li>HREF:aref:name:</li>
362
- END:includes
363
- </ul>
364
- ENDIF:includes
365
-
366
- START:sections
367
- IF:sectitle
368
- <div class="sectiontitle"><a name="%secsequence%">%sectitle%</a></div>
369
- IF:seccomment
370
- <div class="description">
371
- %seccomment%
372
- </div>
373
- ENDIF:seccomment
374
- ENDIF:sectitle
375
-
376
- IF:classlist
377
- <div class="sectiontitle">Classes and Modules</div>
378
- %classlist%
379
- ENDIF:classlist
380
-
381
- IF:constants
382
- <div class="sectiontitle">Constants</div>
383
- <table border='0' cellpadding='5'>
384
- START:constants
385
- <tr valign='top'>
386
- <td class="attr-name">%name%</td>
387
- <td>=</td>
388
- <td class="attr-value">%value%</td>
389
- </tr>
390
- IF:desc
391
- <tr valign='top'>
392
- <td>&nbsp;</td>
393
- <td colspan="2" class="attr-desc">%desc%</td>
394
- </tr>
395
- ENDIF:desc
396
- END:constants
397
- </table>
398
- ENDIF:constants
399
-
400
- IF:attributes
401
- <div class="sectiontitle">Attributes</div>
402
- <table border='0' cellpadding='5'>
403
- START:attributes
404
- <tr valign='top'>
405
- <td class='attr-rw'>
406
- IF:rw
407
- [%rw%]
408
- ENDIF:rw
409
- </td>
410
- <td class='attr-name'>%name%</td>
411
- <td class='attr-desc'>%a_desc%</td>
412
- </tr>
413
- END:attributes
414
- </table>
415
- ENDIF:attributes
416
-
417
- IF:method_list
418
- START:method_list
419
- IF:methods
420
- <div class="sectiontitle">%type% %category% methods</div>
421
- START:methods
422
- <div class="method">
423
- <div class="title">
424
- IF:callseq
425
- <a name="%aref%"></a><b>%callseq%</b>
426
- ENDIF:callseq
427
- IFNOT:callseq
428
- <a name="%aref%"></a><b>%name%</b>%params%
429
- ENDIF:callseq
430
- IF:codeurl
431
- [&nbsp;<a href="%codeurl%" target="SOURCE_CODE" onclick="javascript:openCode('%codeurl%'); return false;">source</a>&nbsp;]
432
- ENDIF:codeurl
433
- </div>
434
- IF:m_desc
435
- <div class="description">
436
- %m_desc%
437
- </div>
438
- ENDIF:m_desc
439
- IF:aka
440
- <div class="aka">
441
- This method is also aliased as
442
- START:aka
443
- <a href="%aref%">%name%</a>
444
- END:aka
445
- </div>
446
- ENDIF:aka
447
- IF:sourcecode
448
- <div class="sourcecode">
449
- <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
450
- <div id="%aref%_source" class="dyn-source">
451
- <pre>
452
- %sourcecode%
453
- </pre>
454
- </div>
455
- </div>
456
- ENDIF:sourcecode
457
- </div>
458
- END:methods
459
- ENDIF:methods
460
- END:method_list
461
- ENDIF:method_list
462
- END:sections
463
- </div>
464
- HTML
465
-
466
- FOOTER = <<ENDFOOTER
467
- </body>
468
- </html>
469
- ENDFOOTER
470
-
471
- BODY = HEADER + <<ENDBODY
472
- !INCLUDE! <!-- banner header -->
473
-
474
- <div id="bodyContent">
475
- #{METHOD_LIST}
476
- </div>
477
-
478
- #{FOOTER}
479
- ENDBODY
480
-
481
- ########################## Source code ##########################
482
-
483
- SRC_PAGE = XHTML_PREAMBLE + <<HTML
484
- <html>
485
- <head><title>%title%</title>
486
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
487
- <style type="text/css">
488
- .ruby-comment { color: green; font-style: italic }
489
- .ruby-constant { color: #4433aa; font-weight: bold; }
490
- .ruby-identifier { color: #222222; }
491
- .ruby-ivar { color: #2233dd; }
492
- .ruby-keyword { color: #3333FF; font-weight: bold }
493
- .ruby-node { color: #777777; }
494
- .ruby-operator { color: #111111; }
495
- .ruby-regexp { color: #662222; }
496
- .ruby-value { color: #662222; font-style: italic }
497
- .kw { color: #3333FF; font-weight: bold }
498
- .cmt { color: green; font-style: italic }
499
- .str { color: #662222; font-style: italic }
500
- .re { color: #662222; }
501
- </style>
502
- </head>
503
- <body bgcolor="white">
504
- <pre>%code%</pre>
505
- </body>
506
- </html>
507
- HTML
508
-
509
- ########################## Index ################################
510
-
511
- FR_INDEX_BODY = <<HTML
512
- !INCLUDE!
513
- HTML
514
-
515
- FILE_INDEX = XHTML_PREAMBLE + <<HTML
516
- <html>
517
- <head>
518
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
519
- <title>Index</title>
520
- <style type="text/css">
521
- <!--
522
- body {
523
- background-color: #EEE;
524
- font-family: #{FONTS};
525
- color: #000;
526
- margin: 0px;
527
- }
528
- .banner {
529
- background: #005;
530
- color: #FFF;
531
- padding: 0.2em;
532
- font-size: small;
533
- font-weight: bold;
534
- text-align: center;
535
- }
536
- .entries {
537
- margin: 0.25em 1em 0 1em;
538
- font-size: x-small;
539
- }
540
- a {
541
- color: #00F;
542
- text-decoration: none;
543
- white-space: nowrap;
544
- }
545
- a:hover {
546
- color: #77F;
547
- text-decoration: underline;
548
- }
549
- -->
550
- </style>
551
- <base target="docwin" />
552
- </head>
553
- <body>
554
- <div class="banner">%list_title%</div>
555
- <div class="entries">
556
- START:entries
557
- <a href="%href%">%name%</a><br />
558
- END:entries
559
- </div>
560
- </body></html>
561
- HTML
562
-
563
- CLASS_INDEX = FILE_INDEX
564
- METHOD_INDEX = FILE_INDEX
565
-
566
- INDEX = XHTML_FRAMESET_PREAMBLE + <<HTML
567
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
568
- <head>
569
- <title>%title%</title>
570
- <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
571
- </head>
572
-
573
- <frameset cols="20%,*">
574
- <frameset rows="15%,35%,50%">
575
- <frame src="fr_file_index.html" title="Files" name="Files" />
576
- <frame src="fr_class_index.html" name="Classes" />
577
- <frame src="fr_method_index.html" name="Methods" />
578
- </frameset>
579
- <frame src="%initial_page%" name="docwin" />
580
- <noframes>
581
- <body bgcolor="white">
582
- Click <a href="html/index.html">here</a> for a non-frames
583
- version of this page.
584
- </body>
585
- </noframes>
586
- </frameset>
587
-
588
- </html>
589
- HTML
590
-
591
- end
592
- end
593
-