railties 3.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (334) hide show
  1. data/CHANGELOG +2201 -0
  2. data/README +286 -0
  3. data/bin/rails +11 -0
  4. data/builtin/rails_info/rails/info.rb +147 -0
  5. data/builtin/rails_info/rails/info_controller.rb +15 -0
  6. data/builtin/rails_info/rails/info_helper.rb +2 -0
  7. data/builtin/routes.rb +3 -0
  8. data/guides/files/javascripts/code_highlighter.js +188 -0
  9. data/guides/files/javascripts/guides.js +7 -0
  10. data/guides/files/javascripts/highlighters.js +90 -0
  11. data/guides/files/stylesheets/main.css +441 -0
  12. data/guides/files/stylesheets/print.css +52 -0
  13. data/guides/files/stylesheets/reset.css +43 -0
  14. data/guides/files/stylesheets/style.css +13 -0
  15. data/guides/files/stylesheets/syntax.css +31 -0
  16. data/guides/images/belongs_to.png +0 -0
  17. data/guides/images/book_icon.gif +0 -0
  18. data/guides/images/bullet.gif +0 -0
  19. data/guides/images/chapters_icon.gif +0 -0
  20. data/guides/images/check_bullet.gif +0 -0
  21. data/guides/images/credits_pic_blank.gif +0 -0
  22. data/guides/images/csrf.png +0 -0
  23. data/guides/images/customized_error_messages.png +0 -0
  24. data/guides/images/error_messages.png +0 -0
  25. data/guides/images/feature_tile.gif +0 -0
  26. data/guides/images/footer_tile.gif +0 -0
  27. data/guides/images/fxn.png +0 -0
  28. data/guides/images/grey_bullet.gif +0 -0
  29. data/guides/images/habtm.png +0 -0
  30. data/guides/images/has_many.png +0 -0
  31. data/guides/images/has_many_through.png +0 -0
  32. data/guides/images/has_one.png +0 -0
  33. data/guides/images/has_one_through.png +0 -0
  34. data/guides/images/header_backdrop.png +0 -0
  35. data/guides/images/header_tile.gif +0 -0
  36. data/guides/images/i18n/demo_localized_pirate.png +0 -0
  37. data/guides/images/i18n/demo_translated_en.png +0 -0
  38. data/guides/images/i18n/demo_translated_pirate.png +0 -0
  39. data/guides/images/i18n/demo_translation_missing.png +0 -0
  40. data/guides/images/i18n/demo_untranslated.png +0 -0
  41. data/guides/images/icons/README +5 -0
  42. data/guides/images/icons/callouts/1.png +0 -0
  43. data/guides/images/icons/callouts/10.png +0 -0
  44. data/guides/images/icons/callouts/11.png +0 -0
  45. data/guides/images/icons/callouts/12.png +0 -0
  46. data/guides/images/icons/callouts/13.png +0 -0
  47. data/guides/images/icons/callouts/14.png +0 -0
  48. data/guides/images/icons/callouts/15.png +0 -0
  49. data/guides/images/icons/callouts/2.png +0 -0
  50. data/guides/images/icons/callouts/3.png +0 -0
  51. data/guides/images/icons/callouts/4.png +0 -0
  52. data/guides/images/icons/callouts/5.png +0 -0
  53. data/guides/images/icons/callouts/6.png +0 -0
  54. data/guides/images/icons/callouts/7.png +0 -0
  55. data/guides/images/icons/callouts/8.png +0 -0
  56. data/guides/images/icons/callouts/9.png +0 -0
  57. data/guides/images/icons/caution.png +0 -0
  58. data/guides/images/icons/example.png +0 -0
  59. data/guides/images/icons/home.png +0 -0
  60. data/guides/images/icons/important.png +0 -0
  61. data/guides/images/icons/next.png +0 -0
  62. data/guides/images/icons/note.png +0 -0
  63. data/guides/images/icons/prev.png +0 -0
  64. data/guides/images/icons/tip.png +0 -0
  65. data/guides/images/icons/up.png +0 -0
  66. data/guides/images/icons/warning.png +0 -0
  67. data/guides/images/nav_arrow.gif +0 -0
  68. data/guides/images/polymorphic.png +0 -0
  69. data/guides/images/posts_index.png +0 -0
  70. data/guides/images/rails_guides_logo.gif +0 -0
  71. data/guides/images/rails_logo_remix.gif +0 -0
  72. data/guides/images/rails_welcome.png +0 -0
  73. data/guides/images/session_fixation.png +0 -0
  74. data/guides/images/tab_grey.gif +0 -0
  75. data/guides/images/tab_info.gif +0 -0
  76. data/guides/images/tab_note.gif +0 -0
  77. data/guides/images/tab_red.gif +0 -0
  78. data/guides/images/tab_yellow.gif +0 -0
  79. data/guides/images/tab_yellow.png +0 -0
  80. data/guides/images/validation_error_messages.png +0 -0
  81. data/guides/rails_guides.rb +44 -0
  82. data/guides/rails_guides/generator.rb +178 -0
  83. data/guides/rails_guides/helpers.rb +34 -0
  84. data/guides/rails_guides/indexer.rb +55 -0
  85. data/guides/rails_guides/levenshtein.rb +31 -0
  86. data/guides/rails_guides/textile_extensions.rb +41 -0
  87. data/guides/source/2_2_release_notes.textile +422 -0
  88. data/guides/source/2_3_release_notes.textile +610 -0
  89. data/guides/source/3_0_release_notes.textile +560 -0
  90. data/guides/source/action_controller_overview.textile +783 -0
  91. data/guides/source/action_mailer_basics.textile +437 -0
  92. data/guides/source/action_view_overview.textile +1481 -0
  93. data/guides/source/active_record_basics.textile +204 -0
  94. data/guides/source/active_record_querying.textile +961 -0
  95. data/guides/source/active_support_core_extensions.textile +1835 -0
  96. data/guides/source/activerecord_validations_callbacks.textile +1127 -0
  97. data/guides/source/ajax_on_rails.textile +342 -0
  98. data/guides/source/association_basics.textile +1816 -0
  99. data/guides/source/caching_with_rails.textile +390 -0
  100. data/guides/source/command_line.textile +589 -0
  101. data/guides/source/configuring.textile +290 -0
  102. data/guides/source/contribute.textile +71 -0
  103. data/guides/source/contributing_to_rails.textile +272 -0
  104. data/guides/source/credits.textile.erb +52 -0
  105. data/guides/source/debugging_rails_applications.textile +709 -0
  106. data/guides/source/form_helpers.textile +768 -0
  107. data/guides/source/generators.textile +378 -0
  108. data/guides/source/getting_started.textile +1310 -0
  109. data/guides/source/i18n.textile +879 -0
  110. data/guides/source/index.textile.erb +124 -0
  111. data/guides/source/layout.html.erb +103 -0
  112. data/guides/source/layouts_and_rendering.textile +979 -0
  113. data/guides/source/migrations.textile +591 -0
  114. data/guides/source/nested_model_forms.textile +222 -0
  115. data/guides/source/performance_testing.textile +531 -0
  116. data/guides/source/plugins.textile +1512 -0
  117. data/guides/source/rails_application_templates.textile +238 -0
  118. data/guides/source/rails_on_rack.textile +306 -0
  119. data/guides/source/routing.textile +903 -0
  120. data/guides/source/security.textile +984 -0
  121. data/guides/source/testing.textile +946 -0
  122. data/lib/generators/erb.rb +8 -0
  123. data/lib/generators/erb/controller/controller_generator.rb +21 -0
  124. data/lib/generators/erb/controller/templates/view.html.erb +2 -0
  125. data/lib/generators/erb/mailer/mailer_generator.rb +20 -0
  126. data/lib/generators/erb/mailer/templates/view.text.erb +3 -0
  127. data/lib/generators/erb/scaffold/scaffold_generator.rb +53 -0
  128. data/lib/generators/erb/scaffold/templates/_form.html.erb +13 -0
  129. data/lib/generators/erb/scaffold/templates/edit.html.erb +6 -0
  130. data/lib/generators/erb/scaffold/templates/index.html.erb +27 -0
  131. data/lib/generators/erb/scaffold/templates/layout.html.erb +16 -0
  132. data/lib/generators/erb/scaffold/templates/new.html.erb +5 -0
  133. data/lib/generators/erb/scaffold/templates/show.html.erb +10 -0
  134. data/lib/generators/rails/app/USAGE +9 -0
  135. data/lib/generators/rails/app/app_generator.rb +262 -0
  136. data/lib/generators/rails/app/templates/Gemfile +34 -0
  137. data/lib/generators/rails/app/templates/README +243 -0
  138. data/lib/generators/rails/app/templates/Rakefile +10 -0
  139. data/lib/generators/rails/app/templates/app/controllers/application_controller.rb +3 -0
  140. data/lib/generators/rails/app/templates/app/helpers/application_helper.rb +2 -0
  141. data/lib/generators/rails/app/templates/app/models/.empty_directory +0 -0
  142. data/lib/generators/rails/app/templates/app/views/layouts/.empty_directory +0 -0
  143. data/lib/generators/rails/app/templates/config.ru +4 -0
  144. data/lib/generators/rails/app/templates/config/application.rb +51 -0
  145. data/lib/generators/rails/app/templates/config/boot.rb +17 -0
  146. data/lib/generators/rails/app/templates/config/databases/frontbase.yml +28 -0
  147. data/lib/generators/rails/app/templates/config/databases/ibm_db.yml +71 -0
  148. data/lib/generators/rails/app/templates/config/databases/mysql.yml +60 -0
  149. data/lib/generators/rails/app/templates/config/databases/oracle.yml +39 -0
  150. data/lib/generators/rails/app/templates/config/databases/postgresql.yml +51 -0
  151. data/lib/generators/rails/app/templates/config/databases/sqlite3.yml +22 -0
  152. data/lib/generators/rails/app/templates/config/environment.rb +5 -0
  153. data/lib/generators/rails/app/templates/config/environments/development.rb.tt +19 -0
  154. data/lib/generators/rails/app/templates/config/environments/production.rb.tt +33 -0
  155. data/lib/generators/rails/app/templates/config/environments/test.rb.tt +29 -0
  156. data/lib/generators/rails/app/templates/config/initializers/backtrace_silencers.rb +7 -0
  157. data/lib/generators/rails/app/templates/config/initializers/cookie_verification_secret.rb.tt +7 -0
  158. data/lib/generators/rails/app/templates/config/initializers/inflections.rb +10 -0
  159. data/lib/generators/rails/app/templates/config/initializers/mime_types.rb +5 -0
  160. data/lib/generators/rails/app/templates/config/initializers/session_store.rb.tt +15 -0
  161. data/lib/generators/rails/app/templates/config/locales/en.yml +5 -0
  162. data/lib/generators/rails/app/templates/config/routes.rb +58 -0
  163. data/lib/generators/rails/app/templates/db/seeds.rb +7 -0
  164. data/lib/generators/rails/app/templates/doc/README_FOR_APP +2 -0
  165. data/lib/generators/rails/app/templates/gitignore +4 -0
  166. data/lib/generators/rails/app/templates/public/404.html +26 -0
  167. data/lib/generators/rails/app/templates/public/422.html +26 -0
  168. data/lib/generators/rails/app/templates/public/500.html +26 -0
  169. data/lib/generators/rails/app/templates/public/favicon.ico +0 -0
  170. data/lib/generators/rails/app/templates/public/images/rails.png +0 -0
  171. data/lib/generators/rails/app/templates/public/index.html +278 -0
  172. data/lib/generators/rails/app/templates/public/javascripts/application.js +2 -0
  173. data/lib/generators/rails/app/templates/public/javascripts/controls.js +963 -0
  174. data/lib/generators/rails/app/templates/public/javascripts/dragdrop.js +973 -0
  175. data/lib/generators/rails/app/templates/public/javascripts/effects.js +1128 -0
  176. data/lib/generators/rails/app/templates/public/javascripts/prototype.js +4320 -0
  177. data/lib/generators/rails/app/templates/public/javascripts/rails.js +110 -0
  178. data/lib/generators/rails/app/templates/public/robots.txt +5 -0
  179. data/lib/generators/rails/app/templates/public/stylesheets/.empty_directory +0 -0
  180. data/lib/generators/rails/app/templates/script/rails +9 -0
  181. data/lib/generators/rails/app/templates/test/fixtures/.empty_directory +0 -0
  182. data/lib/generators/rails/app/templates/test/functional/.empty_directory +0 -0
  183. data/lib/generators/rails/app/templates/test/integration/.empty_directory +0 -0
  184. data/lib/generators/rails/app/templates/test/performance/browsing_test.rb +9 -0
  185. data/lib/generators/rails/app/templates/test/test_helper.rb +13 -0
  186. data/lib/generators/rails/app/templates/test/unit/.empty_directory +0 -0
  187. data/lib/generators/rails/controller/USAGE +18 -0
  188. data/lib/generators/rails/controller/controller_generator.rb +14 -0
  189. data/lib/generators/rails/controller/templates/controller.rb +7 -0
  190. data/lib/generators/rails/generator/USAGE +11 -0
  191. data/lib/generators/rails/generator/generator_generator.rb +25 -0
  192. data/lib/generators/rails/generator/templates/%file_name%_generator.rb.tt +5 -0
  193. data/lib/generators/rails/generator/templates/USAGE.tt +8 -0
  194. data/lib/generators/rails/generator/templates/templates/.empty_directory +0 -0
  195. data/lib/generators/rails/helper/USAGE +17 -0
  196. data/lib/generators/rails/helper/helper_generator.rb +13 -0
  197. data/lib/generators/rails/helper/templates/helper.rb +2 -0
  198. data/lib/generators/rails/integration_test/USAGE +10 -0
  199. data/lib/generators/rails/integration_test/integration_test_generator.rb +7 -0
  200. data/lib/generators/rails/mailer/USAGE +15 -0
  201. data/lib/generators/rails/mailer/mailer_generator.rb +14 -0
  202. data/lib/generators/rails/mailer/templates/mailer.rb +16 -0
  203. data/lib/generators/rails/metal/USAGE +8 -0
  204. data/lib/generators/rails/metal/metal_generator.rb +11 -0
  205. data/lib/generators/rails/metal/templates/metal.rb +12 -0
  206. data/lib/generators/rails/migration/USAGE +29 -0
  207. data/lib/generators/rails/migration/migration_generator.rb +8 -0
  208. data/lib/generators/rails/model/USAGE +30 -0
  209. data/lib/generators/rails/model/model_generator.rb +8 -0
  210. data/lib/generators/rails/model_subclass/model_subclass_generator.rb +12 -0
  211. data/lib/generators/rails/observer/USAGE +12 -0
  212. data/lib/generators/rails/observer/observer_generator.rb +7 -0
  213. data/lib/generators/rails/performance_test/USAGE +10 -0
  214. data/lib/generators/rails/performance_test/performance_test_generator.rb +7 -0
  215. data/lib/generators/rails/plugin/USAGE +13 -0
  216. data/lib/generators/rails/plugin/plugin_generator.rb +47 -0
  217. data/lib/generators/rails/plugin/templates/MIT-LICENSE.tt +20 -0
  218. data/lib/generators/rails/plugin/templates/README.tt +13 -0
  219. data/lib/generators/rails/plugin/templates/Rakefile.tt +10 -0
  220. data/lib/generators/rails/plugin/templates/init.rb +1 -0
  221. data/lib/generators/rails/plugin/templates/install.rb +1 -0
  222. data/lib/generators/rails/plugin/templates/lib/%file_name%.rb.tt +1 -0
  223. data/lib/generators/rails/plugin/templates/lib/tasks/%file_name%_tasks.rake.tt +4 -0
  224. data/lib/generators/rails/plugin/templates/uninstall.rb +1 -0
  225. data/lib/generators/rails/resource/USAGE +23 -0
  226. data/lib/generators/rails/resource/resource_generator.rb +34 -0
  227. data/lib/generators/rails/scaffold/USAGE +29 -0
  228. data/lib/generators/rails/scaffold/scaffold_generator.rb +13 -0
  229. data/lib/generators/rails/scaffold_controller/USAGE +20 -0
  230. data/lib/generators/rails/scaffold_controller/scaffold_controller_generator.rb +27 -0
  231. data/lib/generators/rails/scaffold_controller/templates/controller.rb +85 -0
  232. data/lib/generators/rails/session_migration/USAGE +8 -0
  233. data/lib/generators/rails/session_migration/session_migration_generator.rb +8 -0
  234. data/lib/generators/rails/stylesheets/USAGE +5 -0
  235. data/lib/generators/rails/stylesheets/stylesheets_generator.rb +9 -0
  236. data/lib/generators/rails/stylesheets/templates/scaffold.css +61 -0
  237. data/lib/generators/test_unit.rb +8 -0
  238. data/lib/generators/test_unit/controller/controller_generator.rb +14 -0
  239. data/lib/generators/test_unit/controller/templates/functional_test.rb +8 -0
  240. data/lib/generators/test_unit/helper/helper_generator.rb +13 -0
  241. data/lib/generators/test_unit/helper/templates/helper_test.rb +4 -0
  242. data/lib/generators/test_unit/integration/integration_generator.rb +13 -0
  243. data/lib/generators/test_unit/integration/templates/integration_test.rb +10 -0
  244. data/lib/generators/test_unit/mailer/mailer_generator.rb +21 -0
  245. data/lib/generators/test_unit/mailer/templates/fixture +3 -0
  246. data/lib/generators/test_unit/mailer/templates/functional_test.rb +22 -0
  247. data/lib/generators/test_unit/model/model_generator.rb +24 -0
  248. data/lib/generators/test_unit/model/templates/fixtures.yml +23 -0
  249. data/lib/generators/test_unit/model/templates/unit_test.rb +8 -0
  250. data/lib/generators/test_unit/observer/observer_generator.rb +13 -0
  251. data/lib/generators/test_unit/observer/templates/unit_test.rb +8 -0
  252. data/lib/generators/test_unit/performance/performance_generator.rb +13 -0
  253. data/lib/generators/test_unit/performance/templates/performance_test.rb +9 -0
  254. data/lib/generators/test_unit/plugin/plugin_generator.rb +13 -0
  255. data/lib/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +8 -0
  256. data/lib/generators/test_unit/plugin/templates/test_helper.rb +3 -0
  257. data/lib/generators/test_unit/scaffold/scaffold_generator.rb +18 -0
  258. data/lib/generators/test_unit/scaffold/templates/functional_test.rb +47 -0
  259. data/lib/rails.rb +95 -0
  260. data/lib/rails/all.rb +14 -0
  261. data/lib/rails/application.rb +125 -0
  262. data/lib/rails/application/bootstrap.rb +85 -0
  263. data/lib/rails/application/configurable.rb +19 -0
  264. data/lib/rails/application/configuration.rb +86 -0
  265. data/lib/rails/application/finisher.rb +49 -0
  266. data/lib/rails/application/metal_loader.rb +50 -0
  267. data/lib/rails/application/railties.rb +31 -0
  268. data/lib/rails/application/routes_reloader.rb +46 -0
  269. data/lib/rails/backtrace_cleaner.rb +54 -0
  270. data/lib/rails/code_statistics.rb +107 -0
  271. data/lib/rails/commands.rb +72 -0
  272. data/lib/rails/commands/application.rb +13 -0
  273. data/lib/rails/commands/console.rb +55 -0
  274. data/lib/rails/commands/dbconsole.rb +104 -0
  275. data/lib/rails/commands/destroy.rb +9 -0
  276. data/lib/rails/commands/generate.rb +9 -0
  277. data/lib/rails/commands/performance/benchmarker.rb +23 -0
  278. data/lib/rails/commands/performance/profiler.rb +46 -0
  279. data/lib/rails/commands/plugin.rb +542 -0
  280. data/lib/rails/commands/runner.rb +51 -0
  281. data/lib/rails/commands/server.rb +75 -0
  282. data/lib/rails/commands/update.rb +9 -0
  283. data/lib/rails/configuration.rb +191 -0
  284. data/lib/rails/console/app.rb +33 -0
  285. data/lib/rails/console/helpers.rb +5 -0
  286. data/lib/rails/console/sandbox.rb +6 -0
  287. data/lib/rails/deprecation.rb +62 -0
  288. data/lib/rails/dispatcher.rb +24 -0
  289. data/lib/rails/engine.rb +130 -0
  290. data/lib/rails/engine/configurable.rb +25 -0
  291. data/lib/rails/engine/configuration.rb +49 -0
  292. data/lib/rails/generators.rb +289 -0
  293. data/lib/rails/generators/actions.rb +309 -0
  294. data/lib/rails/generators/active_model.rb +78 -0
  295. data/lib/rails/generators/base.rb +362 -0
  296. data/lib/rails/generators/generated_attribute.rb +48 -0
  297. data/lib/rails/generators/migration.rb +64 -0
  298. data/lib/rails/generators/named_base.rb +95 -0
  299. data/lib/rails/generators/resource_helpers.rb +80 -0
  300. data/lib/rails/generators/test_case.rb +239 -0
  301. data/lib/rails/initializable.rb +97 -0
  302. data/lib/rails/paths.rb +144 -0
  303. data/lib/rails/performance_test_help.rb +3 -0
  304. data/lib/rails/plugin.rb +64 -0
  305. data/lib/rails/rack.rb +8 -0
  306. data/lib/rails/rack/debugger.rb +23 -0
  307. data/lib/rails/rack/log_tailer.rb +33 -0
  308. data/lib/rails/rack/logger.rb +34 -0
  309. data/lib/rails/rack/static.rb +5 -0
  310. data/lib/rails/railtie.rb +74 -0
  311. data/lib/rails/railtie/configurable.rb +23 -0
  312. data/lib/rails/railtie/configuration.rb +9 -0
  313. data/lib/rails/railties_path.rb +1 -0
  314. data/lib/rails/ruby_version_check.rb +10 -0
  315. data/lib/rails/rubyprof_ext.rb +35 -0
  316. data/lib/rails/source_annotation_extractor.rb +102 -0
  317. data/lib/rails/subscriber.rb +108 -0
  318. data/lib/rails/subscriber/test_helper.rb +98 -0
  319. data/lib/rails/tasks.rb +16 -0
  320. data/lib/rails/tasks/annotations.rake +20 -0
  321. data/lib/rails/tasks/documentation.rake +96 -0
  322. data/lib/rails/tasks/framework.rake +69 -0
  323. data/lib/rails/tasks/log.rake +9 -0
  324. data/lib/rails/tasks/middleware.rake +7 -0
  325. data/lib/rails/tasks/misc.rake +71 -0
  326. data/lib/rails/tasks/routes.rake +17 -0
  327. data/lib/rails/tasks/statistics.rake +16 -0
  328. data/lib/rails/tasks/tmp.rake +37 -0
  329. data/lib/rails/test_help.rb +30 -0
  330. data/lib/rails/test_unit/railtie.rb +17 -0
  331. data/lib/rails/test_unit/testing.rake +130 -0
  332. data/lib/rails/version.rb +9 -0
  333. data/lib/rails/webrick_server.rb +156 -0
  334. metadata +427 -0
@@ -0,0 +1,2 @@
1
+ module Rails::InfoHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ match '/rails/info/properties' => "rails/info#properties"
3
+ end
@@ -0,0 +1,188 @@
1
+ /* Unobtrustive Code Highlighter By Dan Webb 11/2005
2
+ Version: 0.4
3
+
4
+ Usage:
5
+ Add a script tag for this script and any stylesets you need to use
6
+ to the page in question, add correct class names to CODE elements,
7
+ define CSS styles for elements. That's it!
8
+
9
+ Known to work on:
10
+ IE 5.5+ PC
11
+ Firefox/Mozilla PC/Mac
12
+ Opera 7.23 + PC
13
+ Safari 2
14
+
15
+ Known to degrade gracefully on:
16
+ IE5.0 PC
17
+
18
+ Note: IE5.0 fails due to the use of lookahead in some stylesets. To avoid script errors
19
+ in older browsers use expressions that use lookahead in string format when defining stylesets.
20
+
21
+ This script is inspired by star-light by entirely cunning Dean Edwards
22
+ http://dean.edwards.name/star-light/.
23
+ */
24
+
25
+ // replace callback support for safari.
26
+ if ("a".replace(/a/, function() {return "b"}) != "b") (function(){
27
+ var default_replace = String.prototype.replace;
28
+ String.prototype.replace = function(search,replace){
29
+ // replace is not function
30
+ if(typeof replace != "function"){
31
+ return default_replace.apply(this,arguments)
32
+ }
33
+ var str = "" + this;
34
+ var callback = replace;
35
+ // search string is not RegExp
36
+ if(!(search instanceof RegExp)){
37
+ var idx = str.indexOf(search);
38
+ return (
39
+ idx == -1 ? str :
40
+ default_replace.apply(str,[search,callback(search, idx, str)])
41
+ )
42
+ }
43
+ var reg = search;
44
+ var result = [];
45
+ var lastidx = reg.lastIndex;
46
+ var re;
47
+ while((re = reg.exec(str)) != null){
48
+ var idx = re.index;
49
+ var args = re.concat(idx, str);
50
+ result.push(
51
+ str.slice(lastidx,idx),
52
+ callback.apply(null,args).toString()
53
+ );
54
+ if(!reg.global){
55
+ lastidx += RegExp.lastMatch.length;
56
+ break
57
+ }else{
58
+ lastidx = reg.lastIndex;
59
+ }
60
+ }
61
+ result.push(str.slice(lastidx));
62
+ return result.join("")
63
+ }
64
+ })();
65
+
66
+ var CodeHighlighter = { styleSets : new Array };
67
+
68
+ CodeHighlighter.addStyle = function(name, rules) {
69
+ // using push test to disallow older browsers from adding styleSets
70
+ if ([].push) this.styleSets.push({
71
+ name : name,
72
+ rules : rules,
73
+ ignoreCase : arguments[2] || false
74
+ })
75
+
76
+ function setEvent() {
77
+ // set highlighter to run on load (use LowPro if present)
78
+ if (typeof Event != 'undefined' && typeof Event.onReady == 'function')
79
+ return Event.onReady(CodeHighlighter.init.bind(CodeHighlighter));
80
+
81
+ var old = window.onload;
82
+
83
+ if (typeof window.onload != 'function') {
84
+ window.onload = function() { CodeHighlighter.init() };
85
+ } else {
86
+ window.onload = function() {
87
+ old();
88
+ CodeHighlighter.init();
89
+ }
90
+ }
91
+ }
92
+
93
+ // only set the event when the first style is added
94
+ if (this.styleSets.length==1) setEvent();
95
+ }
96
+
97
+ CodeHighlighter.init = function() {
98
+ if (!document.getElementsByTagName) return;
99
+ if ("a".replace(/a/, function() {return "b"}) != "b") return; // throw out Safari versions that don't support replace function
100
+ // throw out older browsers
101
+
102
+ var codeEls = document.getElementsByTagName("CODE");
103
+ // collect array of all pre elements
104
+ codeEls.filter = function(f) {
105
+ var a = new Array;
106
+ for (var i = 0; i < this.length; i++) if (f(this[i])) a[a.length] = this[i];
107
+ return a;
108
+ }
109
+
110
+ var rules = new Array;
111
+ rules.toString = function() {
112
+ // joins regexes into one big parallel regex
113
+ var exps = new Array;
114
+ for (var i = 0; i < this.length; i++) exps.push(this[i].exp);
115
+ return exps.join("|");
116
+ }
117
+
118
+ function addRule(className, rule) {
119
+ // add a replace rule
120
+ var exp = (typeof rule.exp != "string")?String(rule.exp).substr(1, String(rule.exp).length-2):rule.exp;
121
+ // converts regex rules to strings and chops of the slashes
122
+ rules.push({
123
+ className : className,
124
+ exp : "(" + exp + ")",
125
+ length : (exp.match(/(^|[^\\])\([^?]/g) || "").length + 1, // number of subexps in rule
126
+ replacement : rule.replacement || null
127
+ });
128
+ }
129
+
130
+ function parse(text, ignoreCase) {
131
+ // main text parsing and replacement
132
+ return text.replace(new RegExp(rules, (ignoreCase)?"gi":"g"), function() {
133
+ var i = 0, j = 1, rule;
134
+ while (rule = rules[i++]) {
135
+ if (arguments[j]) {
136
+ // if no custom replacement defined do the simple replacement
137
+ if (!rule.replacement) return "<span class=\"" + rule.className + "\">" + arguments[0] + "</span>";
138
+ else {
139
+ // replace $0 with the className then do normal replaces
140
+ var str = rule.replacement.replace("$0", rule.className);
141
+ for (var k = 1; k <= rule.length - 1; k++) str = str.replace("$" + k, arguments[j + k]);
142
+ return str;
143
+ }
144
+ } else j+= rule.length;
145
+ }
146
+ });
147
+ }
148
+
149
+ function highlightCode(styleSet) {
150
+ // clear rules array
151
+ var parsed, clsRx = new RegExp("(\\s|^)" + styleSet.name + "(\\s|$)");
152
+ rules.length = 0;
153
+
154
+ // get stylable elements by filtering out all code elements without the correct className
155
+ var stylableEls = codeEls.filter(function(item) { return clsRx.test(item.className) });
156
+
157
+ // add style rules to parser
158
+ for (var className in styleSet.rules) addRule(className, styleSet.rules[className]);
159
+
160
+
161
+ // replace for all elements
162
+ for (var i = 0; i < stylableEls.length; i++) {
163
+ // EVIL hack to fix IE whitespace badness if it's inside a <pre>
164
+ if (/MSIE/.test(navigator.appVersion) && stylableEls[i].parentNode.nodeName == 'PRE') {
165
+ stylableEls[i] = stylableEls[i].parentNode;
166
+
167
+ parsed = stylableEls[i].innerHTML.replace(/(<code[^>]*>)([^<]*)<\/code>/i, function() {
168
+ return arguments[1] + parse(arguments[2], styleSet.ignoreCase) + "</code>"
169
+ });
170
+ parsed = parsed.replace(/\n( *)/g, function() {
171
+ var spaces = "";
172
+ for (var i = 0; i < arguments[1].length; i++) spaces+= "&nbsp;";
173
+ return "\n" + spaces;
174
+ });
175
+ parsed = parsed.replace(/\t/g, "&nbsp;&nbsp;&nbsp;&nbsp;");
176
+ parsed = parsed.replace(/\n(<\/\w+>)?/g, "<br />$1").replace(/<br \/>[\n\r\s]*<br \/>/g, "<p><br></p>");
177
+
178
+ } else parsed = parse(stylableEls[i].innerHTML, styleSet.ignoreCase);
179
+
180
+ stylableEls[i].innerHTML = parsed;
181
+ }
182
+ }
183
+
184
+ // run highlighter on all stylesets
185
+ for (var i=0; i < this.styleSets.length; i++) {
186
+ highlightCode(this.styleSets[i]);
187
+ }
188
+ }
@@ -0,0 +1,7 @@
1
+ function guideMenu(){
2
+ if (document.getElementById('guides').style.display == "none") {
3
+ document.getElementById('guides').style.display = "block";
4
+ } else {
5
+ document.getElementById('guides').style.display = "none";
6
+ }
7
+ }
@@ -0,0 +1,90 @@
1
+ CodeHighlighter.addStyle("css", {
2
+ comment : {
3
+ exp : /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
4
+ },
5
+ keywords : {
6
+ exp : /@\w[\w\s]*/
7
+ },
8
+ selectors : {
9
+ exp : "([\\w-:\\[.#][^{};>]*)(?={)"
10
+ },
11
+ properties : {
12
+ exp : "([\\w-]+)(?=\\s*:)"
13
+ },
14
+ units : {
15
+ exp : /([0-9])(em|en|px|%|pt)\b/,
16
+ replacement : "$1<span class=\"$0\">$2</span>"
17
+ },
18
+ urls : {
19
+ exp : /url\([^\)]*\)/
20
+ }
21
+ });
22
+
23
+ CodeHighlighter.addStyle("ruby",{
24
+ comment : {
25
+ exp : /#[^\n]+/
26
+ },
27
+ brackets : {
28
+ exp : /\(|\)/
29
+ },
30
+ string : {
31
+ exp : /'[^']*'|"[^"]*"/
32
+ },
33
+ keywords : {
34
+ exp : /\b(do|end|self|class|def|if|module|yield|then|else|for|until|unless|while|elsif|case|when|break|retry|redo|rescue|require|raise)\b/
35
+ },
36
+ /* Added by Shelly Fisher (shelly@agileevolved.com) */
37
+ symbol : {
38
+ exp : /([^:])(:[A-Za-z0-9_!?]+)/
39
+ },
40
+ ivar : {
41
+ exp : /\@[A-Za-z0-9_!?]+/
42
+ }
43
+ });
44
+
45
+ CodeHighlighter.addStyle("html", {
46
+ comment : {
47
+ exp: /&lt;!\s*(--([^-]|[\r\n]|-[^-])*--\s*)&gt;/
48
+ },
49
+ tag : {
50
+ exp: /(&lt;\/?)([a-zA-Z1-9]+\s?)/,
51
+ replacement: "$1<span class=\"$0\">$2</span>"
52
+ },
53
+ string : {
54
+ exp : /'[^']*'|"[^"]*"/
55
+ },
56
+ attribute : {
57
+ exp: /\b([a-zA-Z-:]+)(=)/,
58
+ replacement: "<span class=\"$0\">$1</span>$2"
59
+ },
60
+ doctype : {
61
+ exp: /&lt;!DOCTYPE([^&]|&[^g]|&g[^t])*&gt;/
62
+ }
63
+ });
64
+
65
+ CodeHighlighter.addStyle("javascript",{
66
+ comment : {
67
+ exp : /(\/\/[^\n]*(\n|$))|(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)/
68
+ },
69
+ brackets : {
70
+ exp : /\(|\)/
71
+ },
72
+ string : {
73
+ exp : /'[^']*'|"[^"]*"/
74
+ },
75
+ keywords : {
76
+ exp : /\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with)\b/
77
+ },
78
+ global : {
79
+ exp : /\b(toString|valueOf|window|element|prototype|constructor|document|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity)\b/
80
+ }
81
+ });
82
+
83
+ CodeHighlighter.addStyle("yaml", {
84
+ keyword : {
85
+ exp : /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
86
+ },
87
+ value : {
88
+ exp : /@\w[\w\s]*/
89
+ },
90
+ });
@@ -0,0 +1,441 @@
1
+ /* Guides.rubyonrails.org */
2
+ /* Main.css */
3
+ /* Created January 30, 2009 */
4
+ /* Modified February 8, 2009
5
+ --------------------------------------- */
6
+
7
+ /* General
8
+ --------------------------------------- */
9
+
10
+ .left {float: left; margin-right: 1em;}
11
+ .right {float: right; margin-left: 1em;}
12
+ .small {font-size: smaller;}
13
+ .large {font-size: larger;}
14
+ .hide {display: none;}
15
+
16
+ li ul, li ol { margin:0 1.5em; }
17
+ ul, ol { margin: 0 1.5em 1.5em 1.5em; }
18
+
19
+ ul { list-style-type: disc; }
20
+ ol { list-style-type: decimal; }
21
+
22
+ dl { margin: 0 0 1.5em 0; }
23
+ dl dt { font-weight: bold; }
24
+ dd { margin-left: 1.5em;}
25
+
26
+ pre,code { margin: 1.5em 0; white-space: pre; overflow: auto; }
27
+ pre,code,tt { font: 1em 'andale mono', 'lucida console', monospace; line-height: 1.5; }
28
+
29
+ abbr, acronym { border-bottom: 1px dotted #666; }
30
+ address { margin: 0 0 1.5em; font-style: italic; }
31
+ del { color:#666; }
32
+
33
+ blockquote { margin: 1.5em; color: #666; font-style: italic; }
34
+ strong { font-weight: bold; }
35
+ em, dfn { font-style: italic; }
36
+ dfn { font-weight: bold; }
37
+ sup, sub { line-height: 0; }
38
+ p {margin: 0 0 1.5em;}
39
+
40
+ label { font-weight: bold; }
41
+ fieldset { padding:1.4em; margin: 0 0 1.5em 0; border: 1px solid #ccc; }
42
+ legend { font-weight: bold; font-size:1.2em; }
43
+
44
+ input.text, input.title,
45
+ textarea, select {
46
+ margin:0.5em 0;
47
+ border:1px solid #bbb;
48
+ }
49
+
50
+ table {
51
+ margin: 0 0 1.5em;
52
+ border: 2px solid #CCC;
53
+ background: #FFF;
54
+ border-collapse: collapse;
55
+ }
56
+
57
+ table th, table td {
58
+ padding: 0.25em 1em;
59
+ border: 1px solid #CCC;
60
+ border-collapse: collapse;
61
+ }
62
+
63
+ table th {
64
+ border-bottom: 2px solid #CCC;
65
+ background: #EEE;
66
+ font-weight: bold;
67
+ padding: 0.5em 1em;
68
+ }
69
+
70
+
71
+ /* Structure and Layout
72
+ --------------------------------------- */
73
+
74
+ body {
75
+ text-align: center;
76
+ font-family: Helvetica, Arial, sans-serif;
77
+ font-size: 87.5%;
78
+ line-height: 1.5em;
79
+ background: #222;
80
+ color: #999;
81
+ }
82
+
83
+ .wrapper {
84
+ text-align: left;
85
+ margin: 0 auto;
86
+ width: 69em;
87
+ }
88
+
89
+ #topNav {
90
+ padding: 1em 0;
91
+ color: #565656;
92
+ }
93
+
94
+ #header {
95
+ background: #c52f24 url(../../images/header_tile.gif) repeat-x;
96
+ color: #FFF;
97
+ padding: 1.5em 0;
98
+ position: relative;
99
+ z-index: 99;
100
+ }
101
+
102
+ #feature {
103
+ background: #d5e9f6 url(../../images/feature_tile.gif) repeat-x;
104
+ color: #333;
105
+ padding: 0.5em 0 1.5em;
106
+ }
107
+
108
+ #container {
109
+ background: #FFF;
110
+ color: #333;
111
+ padding: 0.5em 0 1.5em 0;
112
+ }
113
+
114
+ #mainCol {
115
+ width: 45em;
116
+ margin-left: 2em;
117
+ }
118
+
119
+ #subCol {
120
+ position: absolute;
121
+ z-index: 0;
122
+ top: 0;
123
+ right: 0;
124
+ background: #FFF;
125
+ padding: 1em 1.5em 1em 1.25em;
126
+ width: 17em;
127
+ font-size: 0.9285em;
128
+ line-height: 1.3846em;
129
+ }
130
+
131
+ #extraCol {display: none;}
132
+
133
+ #footer {
134
+ padding: 2em 0;
135
+ background: url(../../images/footer_tile.gif) repeat-x;
136
+ }
137
+ #footer .wrapper {
138
+ padding-left: 2em;
139
+ width: 67em;
140
+ }
141
+
142
+ #header .wrapper, #topNav .wrapper, #feature .wrapper {padding-left: 1em; width: 68em;}
143
+ #feature .wrapper {width: 45em; padding-right: 23em; position: relative; z-index: 0;}
144
+
145
+ /* Links
146
+ --------------------------------------- */
147
+
148
+ a, a:link, a:visited {
149
+ color: #ee3f3f;
150
+ text-decoration: underline;
151
+ }
152
+
153
+ #mainCol a, #subCol a, #feature a {color: #980905;}
154
+
155
+
156
+ /* Navigation
157
+ --------------------------------------- */
158
+
159
+ .nav {margin: 0; padding: 0;}
160
+ .nav li {display: inline; list-style: none;}
161
+
162
+ #header .nav {
163
+ float: right;
164
+ margin-top: 1.5em;
165
+ font-size: 1.2857em;
166
+ }
167
+
168
+ #header .nav li {margin: 0 0 0 0.5em;}
169
+ #header .nav a {color: #FFF; text-decoration: none;}
170
+ #header .nav a:hover {text-decoration: underline;}
171
+
172
+ #header .nav .index {
173
+ padding: 0.5em 1.5em;
174
+ border-radius: 1em;
175
+ -webkit-border-radius: 1em;
176
+ -moz-border-radius: 1em;
177
+ background: #980905;
178
+ position: relative;
179
+ }
180
+
181
+ #header .nav .index a {
182
+ background: #980905 url(../../images/nav_arrow.gif) no-repeat right top;
183
+ padding-right: 1em;
184
+ position: relative;
185
+ z-index: 15;
186
+ padding-bottom: 0.125em;
187
+ }
188
+ #header .nav .index:hover a, #header .nav .index a:hover {background-position: right -81px;}
189
+
190
+ #guides {
191
+ width: 27em;
192
+ display: block;
193
+ background: #980905;
194
+ border-radius: 1em;
195
+ -webkit-border-radius: 1em;
196
+ -moz-border-radius: 1em;
197
+ -webkit-box-shadow: 0.25em 0.25em 1em rgba(0,0,0,0.25);
198
+ -moz-box-shadow: rgba(0,0,0,0.25) 0.25em 0.25em 1em;
199
+ color: #f1938c;
200
+ padding: 1.5em 2em;
201
+ position: absolute;
202
+ z-index: 10;
203
+ top: -0.25em;
204
+ right: 0;
205
+ padding-top: 2em;
206
+ }
207
+
208
+ #guides dt, #guides dd {
209
+ font-weight: normal;
210
+ font-size: 0.722em;
211
+ margin: 0;
212
+ padding: 0;
213
+ }
214
+ #guides dt {padding:0; margin: 0.5em 0 0;}
215
+ #guides a {color: #FFF; background: none !important;}
216
+ #guides .L, #guides .R {float: left; width: 50%; margin: 0; padding: 0;}
217
+ #guides .R {float: right;}
218
+ #guides hr {
219
+ display: block;
220
+ border: none;
221
+ height: 1px;
222
+ color: #f1938c;
223
+ background: #f1938c;
224
+ }
225
+
226
+ /* Headings
227
+ --------------------------------------- */
228
+
229
+ h1 {
230
+ font-size: 2.5em;
231
+ line-height: 1em;
232
+ margin: 0.6em 0 .2em;
233
+ font-weight: bold;
234
+ }
235
+
236
+ h2 {
237
+ font-size: 2.1428em;
238
+ line-height: 1em;
239
+ margin: 0.7em 0 .2333em;
240
+ font-weight: bold;
241
+ }
242
+
243
+ h3 {
244
+ font-size: 1.7142em;
245
+ line-height: 1.286em;
246
+ margin: 0.875em 0 0.2916em;
247
+ font-weight: bold;
248
+ }
249
+
250
+ h4 {
251
+ font-size: 1.2857em;
252
+ line-height: 1.2em;
253
+ margin: 1.6667em 0 .3887em;
254
+ font-weight: bold;
255
+ }
256
+
257
+ h5 {
258
+ font-size: 1em;
259
+ line-height: 1.5em;
260
+ margin: 1em 0 .5em;
261
+ font-weight: bold;
262
+ }
263
+
264
+ h6 {
265
+ font-size: 1em;
266
+ line-height: 1.5em;
267
+ margin: 1em 0 .5em;
268
+ font-weight: normal;
269
+ }
270
+
271
+ .section {
272
+ padding-bottom: 0.25em;
273
+ border-bottom: 1px solid #999;
274
+ }
275
+
276
+ /* Content
277
+ --------------------------------------- */
278
+
279
+ .pic {
280
+ margin: 0 2em 2em 0;
281
+ }
282
+
283
+ #topNav strong {color: #999; margin-right: 0.5em;}
284
+ #topNav strong a {color: #FFF;}
285
+
286
+ #header h1 {
287
+ float: left;
288
+ background: url(../../images/rails_guides_logo.gif) no-repeat;
289
+ width: 297px;
290
+ text-indent: -9999em;
291
+ margin: 0;
292
+ padding: 0;
293
+ }
294
+
295
+ #header h1 a {
296
+ text-decoration: none;
297
+ display: block;
298
+ height: 77px;
299
+ }
300
+
301
+ #feature p {
302
+ font-size: 1.2857em;
303
+ margin-bottom: 0.75em;
304
+ }
305
+
306
+ #feature ul {margin-left: 0;}
307
+ #feature ul li {
308
+ list-style: none;
309
+ background: url(../../images/check_bullet.gif) no-repeat left 0.5em;
310
+ padding: 0.5em 1.75em 0.5em 1.75em;
311
+ font-size: 1.1428em;
312
+ font-weight: bold;
313
+ }
314
+
315
+ #mainCol dd, #subCol dd {
316
+ padding: 0.25em 0 1em;
317
+ border-bottom: 1px solid #CCC;
318
+ margin-bottom: 1em;
319
+ margin-left: 0;
320
+ /*padding-left: 28px;*/
321
+ padding-left: 0;
322
+ }
323
+
324
+ #mainCol dt, #subCol dt {
325
+ font-size: 1.2857em;
326
+ padding: 0.125em 0 0.25em 0;
327
+ margin-bottom: 0;
328
+ /*background: url(../../images/book_icon.gif) no-repeat left top;
329
+ padding: 0.125em 0 0.25em 28px;*/
330
+ }
331
+
332
+ #mainCol dd.ticket, #subCol dd.ticket {
333
+ background: #fff9d8 url(../../images/tab_yellow.gif) no-repeat left top;
334
+ border: none;
335
+ padding: 1.25em 1em 1.25em 48px;
336
+ margin-left: 0;
337
+ margin-top: 0.25em;
338
+ }
339
+
340
+ #mainCol div.warning, #subCol dd.warning {
341
+ background: #f9d9d8 url(../../images/tab_red.gif) no-repeat left top;
342
+ border: none;
343
+ padding: 1.25em 1.25em 1.25em 48px;
344
+ margin-left: 0;
345
+ margin-top: 0.25em;
346
+ }
347
+
348
+ #subCol .chapters {color: #980905;}
349
+ #subCol .chapters a {font-weight: bold;}
350
+ #subCol .chapters ul a {font-weight: normal;}
351
+ #subCol .chapters li {margin-bottom: 0.75em;}
352
+ #subCol h3.chapter {margin-top: 0.25em;}
353
+ #subCol h3.chapter img {vertical-align: text-bottom;}
354
+ #subCol .chapters ul {margin-left: 0; margin-top: 0.5em;}
355
+ #subCol .chapters ul li {
356
+ list-style: none;
357
+ padding: 0 0 0 1em;
358
+ background: url(../../images/bullet.gif) no-repeat left 0.45em;
359
+ margin-left: 0;
360
+ font-size: 1em;
361
+ font-weight: normal;
362
+ }
363
+
364
+ tt {
365
+ font-family: monaco, "Bitstream Vera Sans Mono", "Courier New", courier, monospace;
366
+ }
367
+
368
+ div.code_container {
369
+ background: #EEE url(../../images/tab_grey.gif) no-repeat left top;
370
+ padding: 0.25em 1em 0.5em 48px;
371
+ }
372
+
373
+ code {
374
+ font-family: monaco, "Bitstream Vera Sans Mono", "Courier New", courier, monospace;
375
+ border: none;
376
+ margin: 0.25em 0 1.5em 0;
377
+ display: block;
378
+ }
379
+
380
+ .note {
381
+ background: #fff9d8 url(../../images/tab_note.gif) no-repeat left top;
382
+ border: none;
383
+ padding: 1em 1em 0.25em 48px;
384
+ margin: 0.25em 0 1.5em 0;
385
+ }
386
+
387
+ .info {
388
+ background: #d5e9f6 url(../../images/tab_info.gif) no-repeat left top;
389
+ border: none;
390
+ padding: 1em 1em 0.25em 48px;
391
+ margin: 0.25em 0 1.5em 0;
392
+ }
393
+
394
+ .note tt, .info tt {border:none; background: none; padding: 0;}
395
+
396
+ #mainCol ul li {
397
+ list-style:none;
398
+ background: url(../../images/grey_bullet.gif) no-repeat left 0.5em;
399
+ padding-left: 1em;
400
+ margin-left: 0;
401
+ }
402
+
403
+ #subCol .content {
404
+ font-size: 0.7857em;
405
+ line-height: 1.5em;
406
+ }
407
+
408
+ #subCol .content li {
409
+ font-weight: normal;
410
+ background: none;
411
+ padding: 0 0 1em;
412
+ font-size: 1.1667em;
413
+ }
414
+
415
+ /* Clearing
416
+ --------------------------------------- */
417
+
418
+ .clearfix:after {
419
+ content: ".";
420
+ display: block;
421
+ height: 0;
422
+ clear: both;
423
+ visibility: hidden;
424
+ }
425
+
426
+ .clearfix {display: inline-block;}
427
+ * html .clearfix {height: 1%;}
428
+ .clearfix {display: block;}
429
+ .clear { clear:both; }
430
+
431
+ /* Same bottom margin for special boxes than for regular paragraphs, this way
432
+ intermediate whitespace looks uniform. */
433
+ div.code_container, div.important, div.caution, div.warning, div.note, div.info {
434
+ margin-bottom: 1.5em;
435
+ }
436
+
437
+ /* Remove bottom margin of paragraphs in special boxes, otherwise they get a
438
+ spurious blank area below with the box background. */
439
+ div.important p, div.caution p, div.warning p, div.note p, div.info p {
440
+ margin-bottom: 0px;
441
+ }