antfarm 0.3.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 (1690) hide show
  1. data/CHANGELOG +20 -0
  2. data/LICENSE +504 -0
  3. data/README +183 -0
  4. data/bin/antfarm +137 -0
  5. data/config/boot.rb +43 -0
  6. data/config/environment.rb +29 -0
  7. data/db/migrate/001_create_nodes.rb +33 -0
  8. data/db/migrate/002_create_layer2_interfaces.rb +33 -0
  9. data/db/migrate/003_create_layer3_interfaces.rb +34 -0
  10. data/db/migrate/004_create_layer3_networks.rb +32 -0
  11. data/db/migrate/005_create_ethernet_interfaces.rb +31 -0
  12. data/db/migrate/006_create_ip_interfaces.rb +31 -0
  13. data/db/migrate/007_create_ip_networks.rb +33 -0
  14. data/db/migrate/008_create_private_networks.rb +31 -0
  15. data/db/migrate/009_create_traffic.rb +35 -0
  16. data/db/schema.rb +84 -0
  17. data/lib/antfarm.jar +0 -0
  18. data/lib/antfarm.rb +242 -0
  19. data/lib/antfarm/ethernet_interface.rb +91 -0
  20. data/lib/antfarm/ip_interface.rb +177 -0
  21. data/lib/antfarm/ip_network.rb +109 -0
  22. data/lib/antfarm/layer2_interface.rb +98 -0
  23. data/lib/antfarm/layer3_interface.rb +140 -0
  24. data/lib/antfarm/layer3_network.rb +126 -0
  25. data/lib/antfarm/node.rb +78 -0
  26. data/lib/antfarm/private_network.rb +34 -0
  27. data/lib/antfarm/traffic.rb +32 -0
  28. data/lib/dbmanage.rb +135 -0
  29. data/lib/init/initializer.rb +107 -0
  30. data/lib/scparse.rb +332 -0
  31. data/lib/scripts/cisco/parse-arp.rb +66 -0
  32. data/lib/scripts/cisco/parse-ip-ifaces.rb +116 -0
  33. data/lib/scripts/cisco/parse-network-objects.rb +80 -0
  34. data/lib/scripts/cisco/parse-pix-config.rb +263 -0
  35. data/lib/scripts/cisco/parse-routes.rb +84 -0
  36. data/lib/scripts/load-host.rb +51 -0
  37. data/lib/scripts/load-network.rb +51 -0
  38. data/lib/scripts/load-route.rb +79 -0
  39. data/lib/scripts/load-router-nomac.rb +60 -0
  40. data/lib/scripts/load-router.rb +59 -0
  41. data/lib/scripts/nmap/parse-xml-results.rb +240 -0
  42. data/lib/scripts/pcap/parse-pcap-file.rb +64 -0
  43. data/lib/scripts/route.rb +89 -0
  44. data/lib/scripts/tethereal/load-arp.rb +67 -0
  45. data/lib/scripts/tethereal/load-ip.rb +65 -0
  46. data/lib/scripts/viz/display-networks.rb +97 -0
  47. data/lib/scripts/viz/dump-graphml.rb +219 -0
  48. data/lib/scripts/viz/dump-graphviz.rb +136 -0
  49. data/log/antfarm.log +0 -0
  50. data/rails/app/controllers/application.rb +10 -0
  51. data/rails/app/controllers/ethernet_interfaces_controller.rb +4 -0
  52. data/rails/app/controllers/ip_interfaces_controller.rb +4 -0
  53. data/rails/app/controllers/ip_networks_controller.rb +4 -0
  54. data/rails/app/controllers/layer2_interfaces_controller.rb +6 -0
  55. data/rails/app/controllers/layer3_interfaces_controller.rb +6 -0
  56. data/rails/app/controllers/layer3_networks_controller.rb +4 -0
  57. data/rails/app/controllers/nodes_controller.rb +9 -0
  58. data/rails/app/controllers/private_networks_controller.rb +4 -0
  59. data/rails/app/controllers/traffic_controller.rb +4 -0
  60. data/rails/app/helpers/application_helper.rb +3 -0
  61. data/rails/app/helpers/ethernet_interfaces_helper.rb +2 -0
  62. data/rails/app/helpers/ip_interfaces_helper.rb +2 -0
  63. data/rails/app/helpers/ip_networks_helper.rb +2 -0
  64. data/rails/app/helpers/layer2_interfaces_helper.rb +2 -0
  65. data/rails/app/helpers/layer3_interfaces_helper.rb +5 -0
  66. data/rails/app/helpers/layer3_networks_helper.rb +2 -0
  67. data/rails/app/helpers/nodes_helper.rb +2 -0
  68. data/rails/app/helpers/private_networks_helper.rb +2 -0
  69. data/rails/app/helpers/traffic_helper.rb +2 -0
  70. data/rails/app/views/layouts/ethernet_interfaces.html.erb +15 -0
  71. data/rails/app/views/layouts/ip_interfaces.html.erb +15 -0
  72. data/rails/app/views/layouts/ip_networks.html.erb +15 -0
  73. data/rails/app/views/layouts/layer2_interfaces.html.erb +15 -0
  74. data/rails/app/views/layouts/layer3_interfaces.html.erb +15 -0
  75. data/rails/app/views/layouts/layer3_networks.html.erb +15 -0
  76. data/rails/app/views/layouts/nodes.html.erb +15 -0
  77. data/rails/app/views/layouts/private_networks.html.erb +15 -0
  78. data/rails/app/views/layouts/traffic.html.erb +15 -0
  79. data/rails/config/boot.rb +145 -0
  80. data/rails/config/environment.rb +62 -0
  81. data/rails/config/environments/development.rb +17 -0
  82. data/rails/config/initializers/inflections.rb +10 -0
  83. data/rails/config/initializers/mime_types.rb +5 -0
  84. data/rails/config/routes.rb +36 -0
  85. data/rails/public/000-index.html +277 -0
  86. data/rails/public/404.html +30 -0
  87. data/rails/public/422.html +30 -0
  88. data/rails/public/500.html +30 -0
  89. data/rails/public/blank.html +33 -0
  90. data/rails/public/dispatch.cgi +10 -0
  91. data/rails/public/dispatch.fcgi +24 -0
  92. data/rails/public/dispatch.rb +10 -0
  93. data/rails/public/favicon.ico +0 -0
  94. data/rails/public/images/active_scaffold/DO_NOT_EDIT +2 -0
  95. data/rails/public/images/active_scaffold/default/add.gif +0 -0
  96. data/rails/public/images/active_scaffold/default/arrow_down.gif +0 -0
  97. data/rails/public/images/active_scaffold/default/arrow_up.gif +0 -0
  98. data/rails/public/images/active_scaffold/default/close.gif +0 -0
  99. data/rails/public/images/active_scaffold/default/cross.png +0 -0
  100. data/rails/public/images/active_scaffold/default/indicator-small.gif +0 -0
  101. data/rails/public/images/active_scaffold/default/indicator.gif +0 -0
  102. data/rails/public/images/active_scaffold/default/magnifier.png +0 -0
  103. data/rails/public/images/rails.png +0 -0
  104. data/rails/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
  105. data/rails/public/javascripts/active_scaffold/default/active_scaffold.js +418 -0
  106. data/rails/public/javascripts/active_scaffold/default/dhtml_history.js +942 -0
  107. data/rails/public/javascripts/active_scaffold/default/form_enhancements.js +89 -0
  108. data/rails/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
  109. data/rails/public/javascripts/application.js +2 -0
  110. data/rails/public/javascripts/controls.js +963 -0
  111. data/rails/public/javascripts/dragdrop.js +972 -0
  112. data/rails/public/javascripts/effects.js +1120 -0
  113. data/rails/public/javascripts/prototype.js +4225 -0
  114. data/rails/public/robots.txt +5 -0
  115. data/rails/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
  116. data/rails/public/stylesheets/active_scaffold/default/stylesheet-ie.css +35 -0
  117. data/rails/public/stylesheets/active_scaffold/default/stylesheet.css +770 -0
  118. data/rails/script/server +3 -0
  119. data/rails/vendor/plugins/active_scaffold/CHANGELOG +151 -0
  120. data/rails/vendor/plugins/active_scaffold/MIT-LICENSE +20 -0
  121. data/rails/vendor/plugins/active_scaffold/README +19 -0
  122. data/rails/vendor/plugins/active_scaffold/Rakefile +24 -0
  123. data/rails/vendor/plugins/active_scaffold/environment.rb +83 -0
  124. data/rails/vendor/plugins/active_scaffold/frontends/default/images/add.gif +0 -0
  125. data/rails/vendor/plugins/active_scaffold/frontends/default/images/arrow_down.gif +0 -0
  126. data/rails/vendor/plugins/active_scaffold/frontends/default/images/arrow_up.gif +0 -0
  127. data/rails/vendor/plugins/active_scaffold/frontends/default/images/close.gif +0 -0
  128. data/rails/vendor/plugins/active_scaffold/frontends/default/images/cross.png +0 -0
  129. data/rails/vendor/plugins/active_scaffold/frontends/default/images/indicator-small.gif +0 -0
  130. data/rails/vendor/plugins/active_scaffold/frontends/default/images/indicator.gif +0 -0
  131. data/rails/vendor/plugins/active_scaffold/frontends/default/images/magnifier.png +0 -0
  132. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +418 -0
  133. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +942 -0
  134. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +89 -0
  135. data/rails/vendor/plugins/active_scaffold/frontends/default/javascripts/rico_corner.js +370 -0
  136. data/rails/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +35 -0
  137. data/rails/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +770 -0
  138. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.rhtml +40 -0
  139. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_create_form.rhtml +45 -0
  140. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_field_search.rhtml +55 -0
  141. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form.rhtml +18 -0
  142. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association.rhtml +44 -0
  143. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.rhtml +42 -0
  144. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_header.rhtml +10 -0
  145. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_association_record.rhtml +22 -0
  146. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.rhtml +12 -0
  147. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.rhtml +1 -0
  148. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_form_messages.rhtml +5 -0
  149. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list.rhtml +34 -0
  150. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.rhtml +13 -0
  151. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.rhtml +22 -0
  152. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.rhtml +32 -0
  153. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_header.rhtml +12 -0
  154. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.rhtml +9 -0
  155. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.rhtml +30 -0
  156. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_list_record.rhtml +31 -0
  157. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_live_search.rhtml +25 -0
  158. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_messages.rhtml +10 -0
  159. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_nested.rhtml +44 -0
  160. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_search.rhtml +21 -0
  161. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_show.rhtml +8 -0
  162. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.rhtml +11 -0
  163. data/rails/vendor/plugins/active_scaffold/frontends/default/views/_update_form.rhtml +49 -0
  164. data/rails/vendor/plugins/active_scaffold/frontends/default/views/add_existing.rjs +16 -0
  165. data/rails/vendor/plugins/active_scaffold/frontends/default/views/add_existing_form.rhtml +5 -0
  166. data/rails/vendor/plugins/active_scaffold/frontends/default/views/create.rjs +19 -0
  167. data/rails/vendor/plugins/active_scaffold/frontends/default/views/create_form.rhtml +5 -0
  168. data/rails/vendor/plugins/active_scaffold/frontends/default/views/delete.rhtml +13 -0
  169. data/rails/vendor/plugins/active_scaffold/frontends/default/views/destroy.rjs +9 -0
  170. data/rails/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.rjs +15 -0
  171. data/rails/vendor/plugins/active_scaffold/frontends/default/views/field_search.rhtml +5 -0
  172. data/rails/vendor/plugins/active_scaffold/frontends/default/views/form_messages.rjs +1 -0
  173. data/rails/vendor/plugins/active_scaffold/frontends/default/views/list.rhtml +25 -0
  174. data/rails/vendor/plugins/active_scaffold/frontends/default/views/search.rhtml +5 -0
  175. data/rails/vendor/plugins/active_scaffold/frontends/default/views/show.rhtml +5 -0
  176. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update.rjs +10 -0
  177. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update_column.rjs +12 -0
  178. data/rails/vendor/plugins/active_scaffold/frontends/default/views/update_form.rhtml +5 -0
  179. data/rails/vendor/plugins/active_scaffold/init.rb +16 -0
  180. data/rails/vendor/plugins/active_scaffold/install.rb +40 -0
  181. data/rails/vendor/plugins/active_scaffold/install_assets.rb +36 -0
  182. data/rails/vendor/plugins/active_scaffold/lib/actions/core.rb +87 -0
  183. data/rails/vendor/plugins/active_scaffold/lib/actions/create.rb +98 -0
  184. data/rails/vendor/plugins/active_scaffold/lib/actions/delete.rb +46 -0
  185. data/rails/vendor/plugins/active_scaffold/lib/actions/field_search.rb +51 -0
  186. data/rails/vendor/plugins/active_scaffold/lib/actions/list.rb +75 -0
  187. data/rails/vendor/plugins/active_scaffold/lib/actions/live_search.rb +44 -0
  188. data/rails/vendor/plugins/active_scaffold/lib/actions/nested.rb +211 -0
  189. data/rails/vendor/plugins/active_scaffold/lib/actions/search.rb +38 -0
  190. data/rails/vendor/plugins/active_scaffold/lib/actions/show.rb +34 -0
  191. data/rails/vendor/plugins/active_scaffold/lib/actions/subform.rb +17 -0
  192. data/rails/vendor/plugins/active_scaffold/lib/actions/update.rb +112 -0
  193. data/rails/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +127 -0
  194. data/rails/vendor/plugins/active_scaffold/lib/active_scaffold.rb +141 -0
  195. data/rails/vendor/plugins/active_scaffold/lib/attribute_params.rb +184 -0
  196. data/rails/vendor/plugins/active_scaffold/lib/bridges/bridge.rb +52 -0
  197. data/rails/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/bridge.rb +11 -0
  198. data/rails/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +46 -0
  199. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/bridge.rb +12 -0
  200. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +48 -0
  201. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/file_column_helpers.rb +51 -0
  202. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +32 -0
  203. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/list_ui.rb +26 -0
  204. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
  205. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/mock_model.rb +9 -0
  206. data/rails/vendor/plugins/active_scaffold/lib/bridges/file_column/test/test_helper.rb +15 -0
  207. data/rails/vendor/plugins/active_scaffold/lib/config/base.rb +37 -0
  208. data/rails/vendor/plugins/active_scaffold/lib/config/core.rb +203 -0
  209. data/rails/vendor/plugins/active_scaffold/lib/config/create.rb +34 -0
  210. data/rails/vendor/plugins/active_scaffold/lib/config/delete.rb +25 -0
  211. data/rails/vendor/plugins/active_scaffold/lib/config/field_search.rb +53 -0
  212. data/rails/vendor/plugins/active_scaffold/lib/config/form.rb +49 -0
  213. data/rails/vendor/plugins/active_scaffold/lib/config/list.rb +100 -0
  214. data/rails/vendor/plugins/active_scaffold/lib/config/live_search.rb +52 -0
  215. data/rails/vendor/plugins/active_scaffold/lib/config/nested.rb +30 -0
  216. data/rails/vendor/plugins/active_scaffold/lib/config/search.rb +52 -0
  217. data/rails/vendor/plugins/active_scaffold/lib/config/show.rb +39 -0
  218. data/rails/vendor/plugins/active_scaffold/lib/config/subform.rb +33 -0
  219. data/rails/vendor/plugins/active_scaffold/lib/config/update.rb +24 -0
  220. data/rails/vendor/plugins/active_scaffold/lib/configurable.rb +29 -0
  221. data/rails/vendor/plugins/active_scaffold/lib/constraints.rb +174 -0
  222. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_columns.rb +92 -0
  223. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_link.rb +133 -0
  224. data/rails/vendor/plugins/active_scaffold/lib/data_structures/action_links.rb +49 -0
  225. data/rails/vendor/plugins/active_scaffold/lib/data_structures/actions.rb +45 -0
  226. data/rails/vendor/plugins/active_scaffold/lib/data_structures/column.rb +247 -0
  227. data/rails/vendor/plugins/active_scaffold/lib/data_structures/columns.rb +62 -0
  228. data/rails/vendor/plugins/active_scaffold/lib/data_structures/error_message.rb +24 -0
  229. data/rails/vendor/plugins/active_scaffold/lib/data_structures/set.rb +61 -0
  230. data/rails/vendor/plugins/active_scaffold/lib/data_structures/sorting.rb +89 -0
  231. data/rails/vendor/plugins/active_scaffold/lib/dhtml_confirm.rb +54 -0
  232. data/rails/vendor/plugins/active_scaffold/lib/exceptions.rb +7 -0
  233. data/rails/vendor/plugins/active_scaffold/lib/extensions/action_controller_rendering.rb +33 -0
  234. data/rails/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +94 -0
  235. data/rails/vendor/plugins/active_scaffold/lib/extensions/array.rb +7 -0
  236. data/rails/vendor/plugins/active_scaffold/lib/extensions/component_response_with_namespacing.rb +17 -0
  237. data/rails/vendor/plugins/active_scaffold/lib/extensions/error_messages.rb +65 -0
  238. data/rails/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +62 -0
  239. data/rails/vendor/plugins/active_scaffold/lib/extensions/hashes_in_url_for.rb +61 -0
  240. data/rails/vendor/plugins/active_scaffold/lib/extensions/json_mime_type.rb +28 -0
  241. data/rails/vendor/plugins/active_scaffold/lib/extensions/localize.rb +5 -0
  242. data/rails/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +33 -0
  243. data/rails/vendor/plugins/active_scaffold/lib/extensions/nil_id_in_url_params.rb +7 -0
  244. data/rails/vendor/plugins/active_scaffold/lib/extensions/resources.rb +26 -0
  245. data/rails/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +56 -0
  246. data/rails/vendor/plugins/active_scaffold/lib/extensions/to_label.rb +8 -0
  247. data/rails/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +61 -0
  248. data/rails/vendor/plugins/active_scaffold/lib/extensions/unsaved_record.rb +20 -0
  249. data/rails/vendor/plugins/active_scaffold/lib/finder.rb +149 -0
  250. data/rails/vendor/plugins/active_scaffold/lib/helpers/association_helpers.rb +40 -0
  251. data/rails/vendor/plugins/active_scaffold/lib/helpers/controller_helpers.rb +7 -0
  252. data/rails/vendor/plugins/active_scaffold/lib/helpers/form_column_helpers.rb +251 -0
  253. data/rails/vendor/plugins/active_scaffold/lib/helpers/id_helpers.rb +119 -0
  254. data/rails/vendor/plugins/active_scaffold/lib/helpers/list_column_helpers.rb +187 -0
  255. data/rails/vendor/plugins/active_scaffold/lib/helpers/pagination_helpers.rb +37 -0
  256. data/rails/vendor/plugins/active_scaffold/lib/helpers/usa_state.rb +46 -0
  257. data/rails/vendor/plugins/active_scaffold/lib/helpers/view_helpers.rb +205 -0
  258. data/rails/vendor/plugins/active_scaffold/lib/paginator.rb +136 -0
  259. data/rails/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +68 -0
  260. data/rails/vendor/plugins/active_scaffold/public/blank.html +33 -0
  261. data/rails/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +47 -0
  262. data/rails/vendor/plugins/active_scaffold/test/config/update_test.rb +17 -0
  263. data/rails/vendor/plugins/active_scaffold/test/const_mocker.rb +36 -0
  264. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +119 -0
  265. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +78 -0
  266. data/rails/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +63 -0
  267. data/rails/vendor/plugins/active_scaffold/test/data_structures/actions_test.rb +25 -0
  268. data/rails/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +41 -0
  269. data/rails/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +161 -0
  270. data/rails/vendor/plugins/active_scaffold/test/data_structures/columns_test.rb +69 -0
  271. data/rails/vendor/plugins/active_scaffold/test/data_structures/error_message_test.rb +28 -0
  272. data/rails/vendor/plugins/active_scaffold/test/data_structures/set_test.rb +86 -0
  273. data/rails/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +96 -0
  274. data/rails/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +34 -0
  275. data/rails/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +34 -0
  276. data/rails/vendor/plugins/active_scaffold/test/extensions/active_record_test.rb +45 -0
  277. data/rails/vendor/plugins/active_scaffold/test/extensions/array.rb +12 -0
  278. data/rails/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +154 -0
  279. data/rails/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +96 -0
  280. data/rails/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +175 -0
  281. data/rails/vendor/plugins/active_scaffold/test/misc/finder_test.rb +70 -0
  282. data/rails/vendor/plugins/active_scaffold/test/misc/lang_test.rb +12 -0
  283. data/rails/vendor/plugins/active_scaffold/test/model_stub.rb +39 -0
  284. data/rails/vendor/plugins/active_scaffold/test/run_all.rb +8 -0
  285. data/rails/vendor/plugins/active_scaffold/test/test_helper.rb +13 -0
  286. data/rails/vendor/plugins/active_scaffold/uninstall.rb +12 -0
  287. data/rails/vendor/rails/actionmailer/CHANGELOG +336 -0
  288. data/rails/vendor/rails/actionmailer/MIT-LICENSE +21 -0
  289. data/rails/vendor/rails/actionmailer/README +149 -0
  290. data/rails/vendor/rails/actionmailer/Rakefile +97 -0
  291. data/rails/vendor/rails/actionmailer/install.rb +30 -0
  292. data/rails/vendor/rails/actionmailer/lib/action_mailer.rb +52 -0
  293. data/rails/vendor/rails/actionmailer/lib/action_mailer/adv_attr_accessor.rb +30 -0
  294. data/rails/vendor/rails/actionmailer/lib/action_mailer/base.rb +646 -0
  295. data/rails/vendor/rails/actionmailer/lib/action_mailer/helpers.rb +111 -0
  296. data/rails/vendor/rails/actionmailer/lib/action_mailer/mail_helper.rb +19 -0
  297. data/rails/vendor/rails/actionmailer/lib/action_mailer/part.rb +110 -0
  298. data/rails/vendor/rails/actionmailer/lib/action_mailer/part_container.rb +51 -0
  299. data/rails/vendor/rails/actionmailer/lib/action_mailer/quoting.rb +61 -0
  300. data/rails/vendor/rails/actionmailer/lib/action_mailer/test_case.rb +64 -0
  301. data/rails/vendor/rails/actionmailer/lib/action_mailer/test_helper.rb +67 -0
  302. data/rails/vendor/rails/actionmailer/lib/action_mailer/utils.rb +8 -0
  303. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor.rb +14 -0
  304. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  305. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail.rb +5 -0
  306. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  307. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  308. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  309. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  310. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  311. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  312. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  313. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  314. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  315. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  316. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  317. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  318. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  319. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  320. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  321. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  322. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  323. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +1476 -0
  324. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  325. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  326. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  327. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  328. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  329. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  330. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  331. data/rails/vendor/rails/actionmailer/lib/action_mailer/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  332. data/rails/vendor/rails/actionmailer/lib/action_mailer/version.rb +9 -0
  333. data/rails/vendor/rails/actionmailer/lib/actionmailer.rb +1 -0
  334. data/rails/vendor/rails/actionmailer/test/abstract_unit.rb +49 -0
  335. data/rails/vendor/rails/actionmailer/test/delivery_method_test.rb +51 -0
  336. data/rails/vendor/rails/actionmailer/test/fixtures/first_mailer/share.erb +1 -0
  337. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  338. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper.erb +1 -0
  339. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  340. data/rails/vendor/rails/actionmailer/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  341. data/rails/vendor/rails/actionmailer/test/fixtures/helpers/example_helper.rb +5 -0
  342. data/rails/vendor/rails/actionmailer/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  343. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email +14 -0
  344. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email10 +20 -0
  345. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email12 +32 -0
  346. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email13 +29 -0
  347. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email2 +114 -0
  348. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email3 +70 -0
  349. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email4 +59 -0
  350. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email5 +19 -0
  351. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email6 +20 -0
  352. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email7 +66 -0
  353. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email8 +47 -0
  354. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email9 +28 -0
  355. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  356. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  357. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_nested_attachment +100 -0
  358. data/rails/vendor/rails/actionmailer/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  359. data/rails/vendor/rails/actionmailer/test/fixtures/second_mailer/share.erb +1 -0
  360. data/rails/vendor/rails/actionmailer/test/fixtures/templates/signed_up.erb +3 -0
  361. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  362. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  363. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  364. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  365. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  366. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  367. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  368. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  369. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.builder +2 -0
  370. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  371. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up.erb +3 -0
  372. data/rails/vendor/rails/actionmailer/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  373. data/rails/vendor/rails/actionmailer/test/mail_helper_test.rb +95 -0
  374. data/rails/vendor/rails/actionmailer/test/mail_render_test.rb +122 -0
  375. data/rails/vendor/rails/actionmailer/test/mail_service_test.rb +979 -0
  376. data/rails/vendor/rails/actionmailer/test/quoting_test.rb +98 -0
  377. data/rails/vendor/rails/actionmailer/test/test_helper_test.rb +129 -0
  378. data/rails/vendor/rails/actionmailer/test/tmail_test.rb +22 -0
  379. data/rails/vendor/rails/actionmailer/test/url_test.rb +76 -0
  380. data/rails/vendor/rails/actionpack/CHANGELOG +4798 -0
  381. data/rails/vendor/rails/actionpack/MIT-LICENSE +21 -0
  382. data/rails/vendor/rails/actionpack/README +469 -0
  383. data/rails/vendor/rails/actionpack/RUNNING_UNIT_TESTS +24 -0
  384. data/rails/vendor/rails/actionpack/Rakefile +154 -0
  385. data/rails/vendor/rails/actionpack/install.rb +30 -0
  386. data/rails/vendor/rails/actionpack/lib/action_controller.rb +79 -0
  387. data/rails/vendor/rails/actionpack/lib/action_controller/assertions.rb +69 -0
  388. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/dom_assertions.rb +39 -0
  389. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/model_assertions.rb +20 -0
  390. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +172 -0
  391. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/routing_assertions.rb +146 -0
  392. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/selector_assertions.rb +643 -0
  393. data/rails/vendor/rails/actionpack/lib/action_controller/assertions/tag_assertions.rb +130 -0
  394. data/rails/vendor/rails/actionpack/lib/action_controller/base.rb +1270 -0
  395. data/rails/vendor/rails/actionpack/lib/action_controller/benchmarking.rb +94 -0
  396. data/rails/vendor/rails/actionpack/lib/action_controller/caching.rb +72 -0
  397. data/rails/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +144 -0
  398. data/rails/vendor/rails/actionpack/lib/action_controller/caching/fragments.rb +138 -0
  399. data/rails/vendor/rails/actionpack/lib/action_controller/caching/pages.rb +154 -0
  400. data/rails/vendor/rails/actionpack/lib/action_controller/caching/sql_cache.rb +18 -0
  401. data/rails/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +97 -0
  402. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext.rb +16 -0
  403. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/cookie.rb +110 -0
  404. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  405. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/session.rb +73 -0
  406. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  407. data/rails/vendor/rails/actionpack/lib/action_controller/cgi_process.rb +223 -0
  408. data/rails/vendor/rails/actionpack/lib/action_controller/components.rb +166 -0
  409. data/rails/vendor/rails/actionpack/lib/action_controller/cookies.rb +96 -0
  410. data/rails/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +162 -0
  411. data/rails/vendor/rails/actionpack/lib/action_controller/filters.rb +643 -0
  412. data/rails/vendor/rails/actionpack/lib/action_controller/flash.rb +172 -0
  413. data/rails/vendor/rails/actionpack/lib/action_controller/headers.rb +31 -0
  414. data/rails/vendor/rails/actionpack/lib/action_controller/helpers.rb +221 -0
  415. data/rails/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +124 -0
  416. data/rails/vendor/rails/actionpack/lib/action_controller/integration.rb +634 -0
  417. data/rails/vendor/rails/actionpack/lib/action_controller/layout.rb +310 -0
  418. data/rails/vendor/rails/actionpack/lib/action_controller/mime_responds.rb +174 -0
  419. data/rails/vendor/rails/actionpack/lib/action_controller/mime_type.rb +182 -0
  420. data/rails/vendor/rails/actionpack/lib/action_controller/mime_types.rb +20 -0
  421. data/rails/vendor/rails/actionpack/lib/action_controller/polymorphic_routes.rb +178 -0
  422. data/rails/vendor/rails/actionpack/lib/action_controller/record_identifier.rb +97 -0
  423. data/rails/vendor/rails/actionpack/lib/action_controller/request.rb +761 -0
  424. data/rails/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +140 -0
  425. data/rails/vendor/rails/actionpack/lib/action_controller/request_profiler.rb +169 -0
  426. data/rails/vendor/rails/actionpack/lib/action_controller/rescue.rb +258 -0
  427. data/rails/vendor/rails/actionpack/lib/action_controller/resources.rb +572 -0
  428. data/rails/vendor/rails/actionpack/lib/action_controller/response.rb +76 -0
  429. data/rails/vendor/rails/actionpack/lib/action_controller/routing.rb +383 -0
  430. data/rails/vendor/rails/actionpack/lib/action_controller/routing/builder.rb +204 -0
  431. data/rails/vendor/rails/actionpack/lib/action_controller/routing/optimisations.rb +120 -0
  432. data/rails/vendor/rails/actionpack/lib/action_controller/routing/recognition_optimisation.rb +158 -0
  433. data/rails/vendor/rails/actionpack/lib/action_controller/routing/route.rb +240 -0
  434. data/rails/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +435 -0
  435. data/rails/vendor/rails/actionpack/lib/action_controller/routing/routing_ext.rb +46 -0
  436. data/rails/vendor/rails/actionpack/lib/action_controller/routing/segments.rb +283 -0
  437. data/rails/vendor/rails/actionpack/lib/action_controller/session/active_record_store.rb +340 -0
  438. data/rails/vendor/rails/actionpack/lib/action_controller/session/cookie_store.rb +166 -0
  439. data/rails/vendor/rails/actionpack/lib/action_controller/session/drb_server.rb +32 -0
  440. data/rails/vendor/rails/actionpack/lib/action_controller/session/drb_store.rb +35 -0
  441. data/rails/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb +98 -0
  442. data/rails/vendor/rails/actionpack/lib/action_controller/session_management.rb +158 -0
  443. data/rails/vendor/rails/actionpack/lib/action_controller/status_codes.rb +88 -0
  444. data/rails/vendor/rails/actionpack/lib/action_controller/streaming.rb +155 -0
  445. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  446. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/_trace.erb +26 -0
  447. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  448. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/layout.erb +29 -0
  449. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  450. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  451. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/template_error.erb +21 -0
  452. data/rails/vendor/rails/actionpack/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  453. data/rails/vendor/rails/actionpack/lib/action_controller/test_case.rb +83 -0
  454. data/rails/vendor/rails/actionpack/lib/action_controller/test_process.rb +524 -0
  455. data/rails/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +142 -0
  456. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  457. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/node.rb +530 -0
  458. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  459. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  460. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  461. data/rails/vendor/rails/actionpack/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  462. data/rails/vendor/rails/actionpack/lib/action_controller/verification.rb +130 -0
  463. data/rails/vendor/rails/actionpack/lib/action_pack.rb +24 -0
  464. data/rails/vendor/rails/actionpack/lib/action_pack/version.rb +9 -0
  465. data/rails/vendor/rails/actionpack/lib/action_view.rb +45 -0
  466. data/rails/vendor/rails/actionpack/lib/action_view/base.rb +343 -0
  467. data/rails/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb +276 -0
  468. data/rails/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +611 -0
  469. data/rails/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +143 -0
  470. data/rails/vendor/rails/actionpack/lib/action_view/helpers/benchmark_helper.rb +33 -0
  471. data/rails/vendor/rails/actionpack/lib/action_view/helpers/cache_helper.rb +40 -0
  472. data/rails/vendor/rails/actionpack/lib/action_view/helpers/capture_helper.rb +161 -0
  473. data/rails/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +711 -0
  474. data/rails/vendor/rails/actionpack/lib/action_view/helpers/debug_helper.rb +31 -0
  475. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +763 -0
  476. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +457 -0
  477. data/rails/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +459 -0
  478. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb +217 -0
  479. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/controls.js +963 -0
  480. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/dragdrop.js +972 -0
  481. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/effects.js +1120 -0
  482. data/rails/vendor/rails/actionpack/lib/action_view/helpers/javascripts/prototype.js +4225 -0
  483. data/rails/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +186 -0
  484. data/rails/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +1300 -0
  485. data/rails/vendor/rails/actionpack/lib/action_view/helpers/record_identification_helper.rb +20 -0
  486. data/rails/vendor/rails/actionpack/lib/action_view/helpers/record_tag_helper.rb +59 -0
  487. data/rails/vendor/rails/actionpack/lib/action_view/helpers/sanitize_helper.rb +229 -0
  488. data/rails/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +225 -0
  489. data/rails/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +133 -0
  490. data/rails/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +507 -0
  491. data/rails/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +575 -0
  492. data/rails/vendor/rails/actionpack/lib/action_view/inline_template.rb +20 -0
  493. data/rails/vendor/rails/actionpack/lib/action_view/partial_template.rb +70 -0
  494. data/rails/vendor/rails/actionpack/lib/action_view/partials.rb +158 -0
  495. data/rails/vendor/rails/actionpack/lib/action_view/template.rb +127 -0
  496. data/rails/vendor/rails/actionpack/lib/action_view/template_error.rb +110 -0
  497. data/rails/vendor/rails/actionpack/lib/action_view/template_finder.rb +177 -0
  498. data/rails/vendor/rails/actionpack/lib/action_view/template_handler.rb +34 -0
  499. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/builder.rb +27 -0
  500. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/compilable.rb +128 -0
  501. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/erb.rb +56 -0
  502. data/rails/vendor/rails/actionpack/lib/action_view/template_handlers/rjs.rb +27 -0
  503. data/rails/vendor/rails/actionpack/lib/action_view/test_case.rb +58 -0
  504. data/rails/vendor/rails/actionpack/lib/actionpack.rb +1 -0
  505. data/rails/vendor/rails/actionpack/test/abstract_unit.rb +36 -0
  506. data/rails/vendor/rails/actionpack/test/active_record_unit.rb +105 -0
  507. data/rails/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +141 -0
  508. data/rails/vendor/rails/actionpack/test/activerecord/render_partial_with_record_identification_test.rb +191 -0
  509. data/rails/vendor/rails/actionpack/test/adv_attr_test.rb +20 -0
  510. data/rails/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +524 -0
  511. data/rails/vendor/rails/actionpack/test/controller/addresses_render_test.rb +43 -0
  512. data/rails/vendor/rails/actionpack/test/controller/assert_select_test.rb +689 -0
  513. data/rails/vendor/rails/actionpack/test/controller/base_test.rb +183 -0
  514. data/rails/vendor/rails/actionpack/test/controller/benchmark_test.rb +32 -0
  515. data/rails/vendor/rails/actionpack/test/controller/caching_test.rb +610 -0
  516. data/rails/vendor/rails/actionpack/test/controller/capture_test.rb +89 -0
  517. data/rails/vendor/rails/actionpack/test/controller/cgi_test.rb +116 -0
  518. data/rails/vendor/rails/actionpack/test/controller/components_test.rb +140 -0
  519. data/rails/vendor/rails/actionpack/test/controller/content_type_test.rb +139 -0
  520. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  521. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  522. data/rails/vendor/rails/actionpack/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  523. data/rails/vendor/rails/actionpack/test/controller/cookie_test.rb +146 -0
  524. data/rails/vendor/rails/actionpack/test/controller/custom_handler_test.rb +45 -0
  525. data/rails/vendor/rails/actionpack/test/controller/deprecation/deprecated_base_methods_test.rb +37 -0
  526. data/rails/vendor/rails/actionpack/test/controller/dispatcher_test.rb +105 -0
  527. data/rails/vendor/rails/actionpack/test/controller/fake_controllers.rb +33 -0
  528. data/rails/vendor/rails/actionpack/test/controller/fake_models.rb +11 -0
  529. data/rails/vendor/rails/actionpack/test/controller/filter_params_test.rb +49 -0
  530. data/rails/vendor/rails/actionpack/test/controller/filters_test.rb +881 -0
  531. data/rails/vendor/rails/actionpack/test/controller/flash_test.rb +146 -0
  532. data/rails/vendor/rails/actionpack/test/controller/header_test.rb +14 -0
  533. data/rails/vendor/rails/actionpack/test/controller/helper_test.rb +210 -0
  534. data/rails/vendor/rails/actionpack/test/controller/html-scanner/document_test.rb +123 -0
  535. data/rails/vendor/rails/actionpack/test/controller/html-scanner/node_test.rb +68 -0
  536. data/rails/vendor/rails/actionpack/test/controller/html-scanner/sanitizer_test.rb +259 -0
  537. data/rails/vendor/rails/actionpack/test/controller/html-scanner/tag_node_test.rb +238 -0
  538. data/rails/vendor/rails/actionpack/test/controller/html-scanner/text_node_test.rb +50 -0
  539. data/rails/vendor/rails/actionpack/test/controller/html-scanner/tokenizer_test.rb +131 -0
  540. data/rails/vendor/rails/actionpack/test/controller/http_authentication_test.rb +54 -0
  541. data/rails/vendor/rails/actionpack/test/controller/integration_test.rb +252 -0
  542. data/rails/vendor/rails/actionpack/test/controller/integration_upload_test.rb +43 -0
  543. data/rails/vendor/rails/actionpack/test/controller/layout_test.rb +259 -0
  544. data/rails/vendor/rails/actionpack/test/controller/mime_responds_test.rb +538 -0
  545. data/rails/vendor/rails/actionpack/test/controller/mime_type_test.rb +84 -0
  546. data/rails/vendor/rails/actionpack/test/controller/new_render_test.rb +926 -0
  547. data/rails/vendor/rails/actionpack/test/controller/polymorphic_routes_test.rb +141 -0
  548. data/rails/vendor/rails/actionpack/test/controller/record_identifier_test.rb +139 -0
  549. data/rails/vendor/rails/actionpack/test/controller/redirect_test.rb +289 -0
  550. data/rails/vendor/rails/actionpack/test/controller/render_test.rb +527 -0
  551. data/rails/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +313 -0
  552. data/rails/vendor/rails/actionpack/test/controller/request_test.rb +922 -0
  553. data/rails/vendor/rails/actionpack/test/controller/rescue_test.rb +517 -0
  554. data/rails/vendor/rails/actionpack/test/controller/resources_test.rb +875 -0
  555. data/rails/vendor/rails/actionpack/test/controller/routing_test.rb +2415 -0
  556. data/rails/vendor/rails/actionpack/test/controller/selector_test.rb +628 -0
  557. data/rails/vendor/rails/actionpack/test/controller/send_file_test.rb +138 -0
  558. data/rails/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +258 -0
  559. data/rails/vendor/rails/actionpack/test/controller/session/mem_cache_store_test.rb +181 -0
  560. data/rails/vendor/rails/actionpack/test/controller/session_fixation_test.rb +89 -0
  561. data/rails/vendor/rails/actionpack/test/controller/session_management_test.rb +178 -0
  562. data/rails/vendor/rails/actionpack/test/controller/test_test.rb +686 -0
  563. data/rails/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +310 -0
  564. data/rails/vendor/rails/actionpack/test/controller/verification_test.rb +253 -0
  565. data/rails/vendor/rails/actionpack/test/controller/view_paths_test.rb +140 -0
  566. data/rails/vendor/rails/actionpack/test/controller/webservice_test.rb +229 -0
  567. data/rails/vendor/rails/actionpack/test/fixtures/addresses/list.erb +1 -0
  568. data/rails/vendor/rails/actionpack/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  569. data/rails/vendor/rails/actionpack/test/fixtures/companies.yml +24 -0
  570. data/rails/vendor/rails/actionpack/test/fixtures/company.rb +10 -0
  571. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  572. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  573. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  574. data/rails/vendor/rails/actionpack/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  575. data/rails/vendor/rails/actionpack/test/fixtures/customers/_customer.html.erb +1 -0
  576. data/rails/vendor/rails/actionpack/test/fixtures/db_definitions/sqlite.sql +49 -0
  577. data/rails/vendor/rails/actionpack/test/fixtures/developer.rb +9 -0
  578. data/rails/vendor/rails/actionpack/test/fixtures/developers.yml +21 -0
  579. data/rails/vendor/rails/actionpack/test/fixtures/developers_projects.yml +13 -0
  580. data/rails/vendor/rails/actionpack/test/fixtures/fun/games/hello_world.erb +1 -0
  581. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/_partial.erb +3 -0
  582. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  583. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  584. data/rails/vendor/rails/actionpack/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  585. data/rails/vendor/rails/actionpack/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  586. data/rails/vendor/rails/actionpack/test/fixtures/helpers/abc_helper.rb +5 -0
  587. data/rails/vendor/rails/actionpack/test/fixtures/helpers/fun/games_helper.rb +3 -0
  588. data/rails/vendor/rails/actionpack/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  589. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  590. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  591. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  592. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  593. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  594. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  595. data/rails/vendor/rails/actionpack/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  596. data/rails/vendor/rails/actionpack/test/fixtures/layouts/block_with_layout.erb +3 -0
  597. data/rails/vendor/rails/actionpack/test/fixtures/layouts/builder.builder +3 -0
  598. data/rails/vendor/rails/actionpack/test/fixtures/layouts/partial_with_layout.erb +3 -0
  599. data/rails/vendor/rails/actionpack/test/fixtures/layouts/standard.erb +1 -0
  600. data/rails/vendor/rails/actionpack/test/fixtures/layouts/talk_from_action.erb +2 -0
  601. data/rails/vendor/rails/actionpack/test/fixtures/layouts/yield.erb +2 -0
  602. data/rails/vendor/rails/actionpack/test/fixtures/mascot.rb +3 -0
  603. data/rails/vendor/rails/actionpack/test/fixtures/mascots.yml +4 -0
  604. data/rails/vendor/rails/actionpack/test/fixtures/mascots/_mascot.html.erb +1 -0
  605. data/rails/vendor/rails/actionpack/test/fixtures/multipart/binary_file +0 -0
  606. data/rails/vendor/rails/actionpack/test/fixtures/multipart/boundary_problem_file +10 -0
  607. data/rails/vendor/rails/actionpack/test/fixtures/multipart/bracketed_param +5 -0
  608. data/rails/vendor/rails/actionpack/test/fixtures/multipart/large_text_file +10 -0
  609. data/rails/vendor/rails/actionpack/test/fixtures/multipart/mixed_files +0 -0
  610. data/rails/vendor/rails/actionpack/test/fixtures/multipart/mona_lisa.jpg +0 -0
  611. data/rails/vendor/rails/actionpack/test/fixtures/multipart/single_parameter +5 -0
  612. data/rails/vendor/rails/actionpack/test/fixtures/multipart/text_file +10 -0
  613. data/rails/vendor/rails/actionpack/test/fixtures/override/test/hello_world.erb +1 -0
  614. data/rails/vendor/rails/actionpack/test/fixtures/override2/layouts/test/sub.erb +1 -0
  615. data/rails/vendor/rails/actionpack/test/fixtures/post_test/layouts/post.html.erb +1 -0
  616. data/rails/vendor/rails/actionpack/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  617. data/rails/vendor/rails/actionpack/test/fixtures/post_test/post/index.html.erb +1 -0
  618. data/rails/vendor/rails/actionpack/test/fixtures/post_test/post/index.iphone.erb +1 -0
  619. data/rails/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.html.erb +1 -0
  620. data/rails/vendor/rails/actionpack/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  621. data/rails/vendor/rails/actionpack/test/fixtures/project.rb +3 -0
  622. data/rails/vendor/rails/actionpack/test/fixtures/projects.yml +7 -0
  623. data/rails/vendor/rails/actionpack/test/fixtures/public/404.html +1 -0
  624. data/rails/vendor/rails/actionpack/test/fixtures/public/500.html +1 -0
  625. data/rails/vendor/rails/actionpack/test/fixtures/public/images/rails.png +0 -0
  626. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/application.js +1 -0
  627. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/bank.js +1 -0
  628. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/controls.js +1 -0
  629. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/dragdrop.js +1 -0
  630. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/effects.js +1 -0
  631. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/prototype.js +1 -0
  632. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/robber.js +1 -0
  633. data/rails/vendor/rails/actionpack/test/fixtures/public/javascripts/version.1.0.js +1 -0
  634. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/bank.css +1 -0
  635. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/robber.css +1 -0
  636. data/rails/vendor/rails/actionpack/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  637. data/rails/vendor/rails/actionpack/test/fixtures/replies.yml +15 -0
  638. data/rails/vendor/rails/actionpack/test/fixtures/reply.rb +7 -0
  639. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  640. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  641. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  642. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  643. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  644. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  645. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  646. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  647. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  648. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  649. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  650. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  651. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  652. data/rails/vendor/rails/actionpack/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  653. data/rails/vendor/rails/actionpack/test/fixtures/scope/test/modgreet.erb +1 -0
  654. data/rails/vendor/rails/actionpack/test/fixtures/shared.html.erb +1 -0
  655. data/rails/vendor/rails/actionpack/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  656. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer.erb +1 -0
  657. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer_counter.erb +1 -0
  658. data/rails/vendor/rails/actionpack/test/fixtures/test/_customer_greeting.erb +1 -0
  659. data/rails/vendor/rails/actionpack/test/fixtures/test/_form.erb +1 -0
  660. data/rails/vendor/rails/actionpack/test/fixtures/test/_hash_greeting.erb +1 -0
  661. data/rails/vendor/rails/actionpack/test/fixtures/test/_hash_object.erb +2 -0
  662. data/rails/vendor/rails/actionpack/test/fixtures/test/_hello.builder +1 -0
  663. data/rails/vendor/rails/actionpack/test/fixtures/test/_labelling_form.erb +1 -0
  664. data/rails/vendor/rails/actionpack/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  665. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.erb +1 -0
  666. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.html.erb +1 -0
  667. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial.js.erb +1 -0
  668. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  669. data/rails/vendor/rails/actionpack/test/fixtures/test/_partial_only.erb +1 -0
  670. data/rails/vendor/rails/actionpack/test/fixtures/test/_person.erb +2 -0
  671. data/rails/vendor/rails/actionpack/test/fixtures/test/_raise.html.erb +1 -0
  672. data/rails/vendor/rails/actionpack/test/fixtures/test/action_talk_to_layout.erb +2 -0
  673. data/rails/vendor/rails/actionpack/test/fixtures/test/block_content_for.erb +2 -0
  674. data/rails/vendor/rails/actionpack/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  675. data/rails/vendor/rails/actionpack/test/fixtures/test/capturing.erb +4 -0
  676. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for.erb +2 -0
  677. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for_concatenated.erb +3 -0
  678. data/rails/vendor/rails/actionpack/test/fixtures/test/content_for_with_parameter.erb +2 -0
  679. data/rails/vendor/rails/actionpack/test/fixtures/test/delete_with_js.rjs +2 -0
  680. data/rails/vendor/rails/actionpack/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  681. data/rails/vendor/rails/actionpack/test/fixtures/test/enum_rjs_test.rjs +6 -0
  682. data/rails/vendor/rails/actionpack/test/fixtures/test/erb_content_for.erb +2 -0
  683. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  684. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.builder +1 -0
  685. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  686. data/rails/vendor/rails/actionpack/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  687. data/rails/vendor/rails/actionpack/test/fixtures/test/greeting.erb +1 -0
  688. data/rails/vendor/rails/actionpack/test/fixtures/test/greeting.js.rjs +1 -0
  689. data/rails/vendor/rails/actionpack/test/fixtures/test/hello.builder +4 -0
  690. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world.erb +1 -0
  691. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_container.builder +3 -0
  692. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  693. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  694. data/rails/vendor/rails/actionpack/test/fixtures/test/hello_xml_world.builder +11 -0
  695. data/rails/vendor/rails/actionpack/test/fixtures/test/list.erb +1 -0
  696. data/rails/vendor/rails/actionpack/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  697. data/rails/vendor/rails/actionpack/test/fixtures/test/potential_conflicts.erb +4 -0
  698. data/rails/vendor/rails/actionpack/test/fixtures/test/render_file_with_ivar.erb +1 -0
  699. data/rails/vendor/rails/actionpack/test/fixtures/test/render_file_with_locals.erb +1 -0
  700. data/rails/vendor/rails/actionpack/test/fixtures/test/render_to_string_test.erb +1 -0
  701. data/rails/vendor/rails/actionpack/test/fixtures/test/update_element_with_capture.erb +9 -0
  702. data/rails/vendor/rails/actionpack/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  703. data/rails/vendor/rails/actionpack/test/fixtures/topic.rb +3 -0
  704. data/rails/vendor/rails/actionpack/test/fixtures/topics.yml +22 -0
  705. data/rails/vendor/rails/actionpack/test/fixtures/topics/_topic.html.erb +1 -0
  706. data/rails/vendor/rails/actionpack/test/template/active_record_helper_test.rb +268 -0
  707. data/rails/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +525 -0
  708. data/rails/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +179 -0
  709. data/rails/vendor/rails/actionpack/test/template/benchmark_helper_test.rb +60 -0
  710. data/rails/vendor/rails/actionpack/test/template/date_helper_test.rb +1740 -0
  711. data/rails/vendor/rails/actionpack/test/template/erb_util_test.rb +24 -0
  712. data/rails/vendor/rails/actionpack/test/template/form_helper_test.rb +918 -0
  713. data/rails/vendor/rails/actionpack/test/template/form_options_helper_test.rb +1336 -0
  714. data/rails/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +259 -0
  715. data/rails/vendor/rails/actionpack/test/template/javascript_helper_test.rb +109 -0
  716. data/rails/vendor/rails/actionpack/test/template/number_helper_test.rb +97 -0
  717. data/rails/vendor/rails/actionpack/test/template/prototype_helper_test.rb +614 -0
  718. data/rails/vendor/rails/actionpack/test/template/record_tag_helper_test.rb +54 -0
  719. data/rails/vendor/rails/actionpack/test/template/sanitize_helper_test.rb +48 -0
  720. data/rails/vendor/rails/actionpack/test/template/scriptaculous_helper_test.rb +90 -0
  721. data/rails/vendor/rails/actionpack/test/template/tag_helper_test.rb +77 -0
  722. data/rails/vendor/rails/actionpack/test/template/template_finder_test.rb +73 -0
  723. data/rails/vendor/rails/actionpack/test/template/template_object_test.rb +95 -0
  724. data/rails/vendor/rails/actionpack/test/template/test_test.rb +56 -0
  725. data/rails/vendor/rails/actionpack/test/template/text_helper_test.rb +366 -0
  726. data/rails/vendor/rails/actionpack/test/template/url_helper_test.rb +534 -0
  727. data/rails/vendor/rails/actionpack/test/testing_sandbox.rb +15 -0
  728. data/rails/vendor/rails/activemodel/CHANGES +12 -0
  729. data/rails/vendor/rails/activemodel/README +21 -0
  730. data/rails/vendor/rails/activemodel/Rakefile +16 -0
  731. data/rails/vendor/rails/activemodel/lib/active_model.rb +17 -0
  732. data/rails/vendor/rails/activemodel/lib/active_model/base.rb +4 -0
  733. data/rails/vendor/rails/activemodel/lib/active_model/callbacks.rb +5 -0
  734. data/rails/vendor/rails/activemodel/lib/active_model/deprecated_error_methods.rb +38 -0
  735. data/rails/vendor/rails/activemodel/lib/active_model/errors.rb +80 -0
  736. data/rails/vendor/rails/activemodel/lib/active_model/observing.rb +100 -0
  737. data/rails/vendor/rails/activemodel/lib/active_model/validations.rb +124 -0
  738. data/rails/vendor/rails/activemodel/lib/active_model/validations/acceptance.rb +45 -0
  739. data/rails/vendor/rails/activemodel/lib/active_model/validations/associated.rb +46 -0
  740. data/rails/vendor/rails/activemodel/lib/active_model/validations/confirmation.rb +44 -0
  741. data/rails/vendor/rails/activemodel/lib/active_model/validations/exclusion.rb +37 -0
  742. data/rails/vendor/rails/activemodel/lib/active_model/validations/format.rb +39 -0
  743. data/rails/vendor/rails/activemodel/lib/active_model/validations/inclusion.rb +37 -0
  744. data/rails/vendor/rails/activemodel/lib/active_model/validations/length.rb +95 -0
  745. data/rails/vendor/rails/activemodel/lib/active_model/validations/numericality.rb +80 -0
  746. data/rails/vendor/rails/activemodel/lib/active_model/validations/presence.rb +42 -0
  747. data/rails/vendor/rails/activemodel/lib/active_model/validations/uniqueness.rb +104 -0
  748. data/rails/vendor/rails/activemodel/spec/observing_spec.rb +120 -0
  749. data/rails/vendor/rails/activemodel/spec/spec_helper.rb +17 -0
  750. data/rails/vendor/rails/activerecord/CHANGELOG +5719 -0
  751. data/rails/vendor/rails/activerecord/MIT-LICENSE +20 -0
  752. data/rails/vendor/rails/activerecord/README +351 -0
  753. data/rails/vendor/rails/activerecord/RUNNING_UNIT_TESTS +36 -0
  754. data/rails/vendor/rails/activerecord/Rakefile +247 -0
  755. data/rails/vendor/rails/activerecord/examples/associations.png +0 -0
  756. data/rails/vendor/rails/activerecord/install.rb +30 -0
  757. data/rails/vendor/rails/activerecord/lib/active_record.rb +82 -0
  758. data/rails/vendor/rails/activerecord/lib/active_record/aggregations.rb +189 -0
  759. data/rails/vendor/rails/activerecord/lib/active_record/association_preload.rb +277 -0
  760. data/rails/vendor/rails/activerecord/lib/active_record/associations.rb +1994 -0
  761. data/rails/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +365 -0
  762. data/rails/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +224 -0
  763. data/rails/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +58 -0
  764. data/rails/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +49 -0
  765. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +112 -0
  766. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +109 -0
  767. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +254 -0
  768. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_one_association.rb +98 -0
  769. data/rails/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +28 -0
  770. data/rails/vendor/rails/activerecord/lib/active_record/attribute_methods.rb +379 -0
  771. data/rails/vendor/rails/activerecord/lib/active_record/base.rb +2726 -0
  772. data/rails/vendor/rails/activerecord/lib/active_record/calculations.rb +275 -0
  773. data/rails/vendor/rails/activerecord/lib/active_record/callbacks.rb +312 -0
  774. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +309 -0
  775. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +176 -0
  776. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb +93 -0
  777. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/quoting.rb +69 -0
  778. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +661 -0
  779. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +421 -0
  780. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +169 -0
  781. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +530 -0
  782. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +948 -0
  783. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -0
  784. data/rails/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +406 -0
  785. data/rails/vendor/rails/activerecord/lib/active_record/dirty.rb +158 -0
  786. data/rails/vendor/rails/activerecord/lib/active_record/fixtures.rb +997 -0
  787. data/rails/vendor/rails/activerecord/lib/active_record/locking/optimistic.rb +147 -0
  788. data/rails/vendor/rails/activerecord/lib/active_record/locking/pessimistic.rb +77 -0
  789. data/rails/vendor/rails/activerecord/lib/active_record/migration.rb +496 -0
  790. data/rails/vendor/rails/activerecord/lib/active_record/named_scope.rb +163 -0
  791. data/rails/vendor/rails/activerecord/lib/active_record/observer.rb +195 -0
  792. data/rails/vendor/rails/activerecord/lib/active_record/query_cache.rb +21 -0
  793. data/rails/vendor/rails/activerecord/lib/active_record/reflection.rb +239 -0
  794. data/rails/vendor/rails/activerecord/lib/active_record/schema.rb +51 -0
  795. data/rails/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +171 -0
  796. data/rails/vendor/rails/activerecord/lib/active_record/serialization.rb +98 -0
  797. data/rails/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +80 -0
  798. data/rails/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +338 -0
  799. data/rails/vendor/rails/activerecord/lib/active_record/test_case.rb +36 -0
  800. data/rails/vendor/rails/activerecord/lib/active_record/timestamp.rb +41 -0
  801. data/rails/vendor/rails/activerecord/lib/active_record/transactions.rb +130 -0
  802. data/rails/vendor/rails/activerecord/lib/active_record/validations.rb +961 -0
  803. data/rails/vendor/rails/activerecord/lib/active_record/vendor/db2.rb +362 -0
  804. data/rails/vendor/rails/activerecord/lib/active_record/vendor/mysql.rb +1214 -0
  805. data/rails/vendor/rails/activerecord/lib/active_record/version.rb +9 -0
  806. data/rails/vendor/rails/activerecord/lib/activerecord.rb +1 -0
  807. data/rails/vendor/rails/activerecord/test/assets/example.log +1 -0
  808. data/rails/vendor/rails/activerecord/test/assets/flowers.jpg +0 -0
  809. data/rails/vendor/rails/activerecord/test/cases/aaa_create_tables_test.rb +24 -0
  810. data/rails/vendor/rails/activerecord/test/cases/active_schema_test_mysql.rb +95 -0
  811. data/rails/vendor/rails/activerecord/test/cases/active_schema_test_postgresql.rb +24 -0
  812. data/rails/vendor/rails/activerecord/test/cases/adapter_test.rb +127 -0
  813. data/rails/vendor/rails/activerecord/test/cases/adapter_test_sqlserver.rb +95 -0
  814. data/rails/vendor/rails/activerecord/test/cases/aggregations_test.rb +128 -0
  815. data/rails/vendor/rails/activerecord/test/cases/ar_schema_test.rb +33 -0
  816. data/rails/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +412 -0
  817. data/rails/vendor/rails/activerecord/test/cases/associations/callbacks_test.rb +161 -0
  818. data/rails/vendor/rails/activerecord/test/cases/associations/cascaded_eager_loading_test.rb +111 -0
  819. data/rails/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +83 -0
  820. data/rails/vendor/rails/activerecord/test/cases/associations/eager_singularization_test.rb +145 -0
  821. data/rails/vendor/rails/activerecord/test/cases/associations/eager_test.rb +612 -0
  822. data/rails/vendor/rails/activerecord/test/cases/associations/extension_test.rb +47 -0
  823. data/rails/vendor/rails/activerecord/test/cases/associations/has_and_belongs_to_many_associations_test.rb +684 -0
  824. data/rails/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +932 -0
  825. data/rails/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +190 -0
  826. data/rails/vendor/rails/activerecord/test/cases/associations/has_one_associations_test.rb +323 -0
  827. data/rails/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +74 -0
  828. data/rails/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +88 -0
  829. data/rails/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +707 -0
  830. data/rails/vendor/rails/activerecord/test/cases/associations_test.rb +262 -0
  831. data/rails/vendor/rails/activerecord/test/cases/attribute_methods_test.rb +238 -0
  832. data/rails/vendor/rails/activerecord/test/cases/base_test.rb +1974 -0
  833. data/rails/vendor/rails/activerecord/test/cases/binary_test.rb +34 -0
  834. data/rails/vendor/rails/activerecord/test/cases/calculations_test.rb +271 -0
  835. data/rails/vendor/rails/activerecord/test/cases/callbacks_test.rb +400 -0
  836. data/rails/vendor/rails/activerecord/test/cases/class_inheritable_attributes_test.rb +32 -0
  837. data/rails/vendor/rails/activerecord/test/cases/column_alias_test.rb +17 -0
  838. data/rails/vendor/rails/activerecord/test/cases/connection_test_firebird.rb +8 -0
  839. data/rails/vendor/rails/activerecord/test/cases/connection_test_mysql.rb +30 -0
  840. data/rails/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +69 -0
  841. data/rails/vendor/rails/activerecord/test/cases/datatype_test_postgresql.rb +203 -0
  842. data/rails/vendor/rails/activerecord/test/cases/date_time_test.rb +37 -0
  843. data/rails/vendor/rails/activerecord/test/cases/default_test_firebird.rb +16 -0
  844. data/rails/vendor/rails/activerecord/test/cases/defaults_test.rb +69 -0
  845. data/rails/vendor/rails/activerecord/test/cases/deprecated_finder_test.rb +30 -0
  846. data/rails/vendor/rails/activerecord/test/cases/dirty_test.rb +163 -0
  847. data/rails/vendor/rails/activerecord/test/cases/finder_respond_to_test.rb +76 -0
  848. data/rails/vendor/rails/activerecord/test/cases/finder_test.rb +883 -0
  849. data/rails/vendor/rails/activerecord/test/cases/fixtures_test.rb +626 -0
  850. data/rails/vendor/rails/activerecord/test/cases/helper.rb +47 -0
  851. data/rails/vendor/rails/activerecord/test/cases/inheritance_test.rb +255 -0
  852. data/rails/vendor/rails/activerecord/test/cases/invalid_date_test.rb +24 -0
  853. data/rails/vendor/rails/activerecord/test/cases/json_serialization_test.rb +205 -0
  854. data/rails/vendor/rails/activerecord/test/cases/lifecycle_test.rb +140 -0
  855. data/rails/vendor/rails/activerecord/test/cases/locking_test.rb +289 -0
  856. data/rails/vendor/rails/activerecord/test/cases/method_scoping_test.rb +452 -0
  857. data/rails/vendor/rails/activerecord/test/cases/migration_test.rb +1319 -0
  858. data/rails/vendor/rails/activerecord/test/cases/migration_test_firebird.rb +124 -0
  859. data/rails/vendor/rails/activerecord/test/cases/mixin_test.rb +96 -0
  860. data/rails/vendor/rails/activerecord/test/cases/modules_test.rb +39 -0
  861. data/rails/vendor/rails/activerecord/test/cases/multiple_db_test.rb +60 -0
  862. data/rails/vendor/rails/activerecord/test/cases/named_scope_test.rb +157 -0
  863. data/rails/vendor/rails/activerecord/test/cases/pk_test.rb +101 -0
  864. data/rails/vendor/rails/activerecord/test/cases/query_cache_test.rb +126 -0
  865. data/rails/vendor/rails/activerecord/test/cases/readonly_test.rb +107 -0
  866. data/rails/vendor/rails/activerecord/test/cases/reflection_test.rb +176 -0
  867. data/rails/vendor/rails/activerecord/test/cases/reserved_word_test_mysql.rb +176 -0
  868. data/rails/vendor/rails/activerecord/test/cases/schema_authorization_test_postgresql.rb +75 -0
  869. data/rails/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +138 -0
  870. data/rails/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +102 -0
  871. data/rails/vendor/rails/activerecord/test/cases/serialization_test.rb +47 -0
  872. data/rails/vendor/rails/activerecord/test/cases/synonym_test_oracle.rb +17 -0
  873. data/rails/vendor/rails/activerecord/test/cases/table_name_test_sqlserver.rb +23 -0
  874. data/rails/vendor/rails/activerecord/test/cases/threaded_connections_test.rb +48 -0
  875. data/rails/vendor/rails/activerecord/test/cases/transactions_test.rb +307 -0
  876. data/rails/vendor/rails/activerecord/test/cases/unconnected_test.rb +32 -0
  877. data/rails/vendor/rails/activerecord/test/cases/validations_test.rb +1509 -0
  878. data/rails/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +202 -0
  879. data/rails/vendor/rails/activerecord/test/config.rb +5 -0
  880. data/rails/vendor/rails/activerecord/test/connections/native_db2/connection.rb +25 -0
  881. data/rails/vendor/rails/activerecord/test/connections/native_firebird/connection.rb +26 -0
  882. data/rails/vendor/rails/activerecord/test/connections/native_frontbase/connection.rb +27 -0
  883. data/rails/vendor/rails/activerecord/test/connections/native_mysql/connection.rb +27 -0
  884. data/rails/vendor/rails/activerecord/test/connections/native_openbase/connection.rb +21 -0
  885. data/rails/vendor/rails/activerecord/test/connections/native_oracle/connection.rb +27 -0
  886. data/rails/vendor/rails/activerecord/test/connections/native_postgresql/connection.rb +21 -0
  887. data/rails/vendor/rails/activerecord/test/connections/native_sqlite/connection.rb +25 -0
  888. data/rails/vendor/rails/activerecord/test/connections/native_sqlite3/connection.rb +25 -0
  889. data/rails/vendor/rails/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +18 -0
  890. data/rails/vendor/rails/activerecord/test/connections/native_sybase/connection.rb +23 -0
  891. data/rails/vendor/rails/activerecord/test/fixtures/accounts.yml +28 -0
  892. data/rails/vendor/rails/activerecord/test/fixtures/all/developers.yml +0 -0
  893. data/rails/vendor/rails/activerecord/test/fixtures/all/people.csv +0 -0
  894. data/rails/vendor/rails/activerecord/test/fixtures/all/tasks.yml +0 -0
  895. data/rails/vendor/rails/activerecord/test/fixtures/author_addresses.yml +5 -0
  896. data/rails/vendor/rails/activerecord/test/fixtures/author_favorites.yml +4 -0
  897. data/rails/vendor/rails/activerecord/test/fixtures/authors.yml +9 -0
  898. data/rails/vendor/rails/activerecord/test/fixtures/binaries.yml +132 -0
  899. data/rails/vendor/rails/activerecord/test/fixtures/books.yml +7 -0
  900. data/rails/vendor/rails/activerecord/test/fixtures/categories.yml +14 -0
  901. data/rails/vendor/rails/activerecord/test/fixtures/categories/special_categories.yml +9 -0
  902. data/rails/vendor/rails/activerecord/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  903. data/rails/vendor/rails/activerecord/test/fixtures/categories_ordered.yml +7 -0
  904. data/rails/vendor/rails/activerecord/test/fixtures/categories_posts.yml +23 -0
  905. data/rails/vendor/rails/activerecord/test/fixtures/categorizations.yml +17 -0
  906. data/rails/vendor/rails/activerecord/test/fixtures/clubs.yml +6 -0
  907. data/rails/vendor/rails/activerecord/test/fixtures/comments.yml +59 -0
  908. data/rails/vendor/rails/activerecord/test/fixtures/companies.yml +55 -0
  909. data/rails/vendor/rails/activerecord/test/fixtures/computers.yml +4 -0
  910. data/rails/vendor/rails/activerecord/test/fixtures/courses.yml +7 -0
  911. data/rails/vendor/rails/activerecord/test/fixtures/customers.yml +17 -0
  912. data/rails/vendor/rails/activerecord/test/fixtures/developers.yml +21 -0
  913. data/rails/vendor/rails/activerecord/test/fixtures/developers_projects.yml +17 -0
  914. data/rails/vendor/rails/activerecord/test/fixtures/edges.yml +6 -0
  915. data/rails/vendor/rails/activerecord/test/fixtures/entrants.yml +14 -0
  916. data/rails/vendor/rails/activerecord/test/fixtures/fk_test_has_fk.yml +3 -0
  917. data/rails/vendor/rails/activerecord/test/fixtures/fk_test_has_pk.yml +2 -0
  918. data/rails/vendor/rails/activerecord/test/fixtures/funny_jokes.yml +10 -0
  919. data/rails/vendor/rails/activerecord/test/fixtures/items.yml +4 -0
  920. data/rails/vendor/rails/activerecord/test/fixtures/jobs.yml +7 -0
  921. data/rails/vendor/rails/activerecord/test/fixtures/legacy_things.yml +3 -0
  922. data/rails/vendor/rails/activerecord/test/fixtures/mateys.yml +4 -0
  923. data/rails/vendor/rails/activerecord/test/fixtures/members.yml +4 -0
  924. data/rails/vendor/rails/activerecord/test/fixtures/memberships.yml +20 -0
  925. data/rails/vendor/rails/activerecord/test/fixtures/minimalistics.yml +2 -0
  926. data/rails/vendor/rails/activerecord/test/fixtures/mixed_case_monkeys.yml +6 -0
  927. data/rails/vendor/rails/activerecord/test/fixtures/mixins.yml +29 -0
  928. data/rails/vendor/rails/activerecord/test/fixtures/movies.yml +7 -0
  929. data/rails/vendor/rails/activerecord/test/fixtures/naked/csv/accounts.csv +1 -0
  930. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/accounts.yml +1 -0
  931. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/companies.yml +1 -0
  932. data/rails/vendor/rails/activerecord/test/fixtures/naked/yml/courses.yml +1 -0
  933. data/rails/vendor/rails/activerecord/test/fixtures/owners.yml +7 -0
  934. data/rails/vendor/rails/activerecord/test/fixtures/parrots.yml +27 -0
  935. data/rails/vendor/rails/activerecord/test/fixtures/parrots_pirates.yml +7 -0
  936. data/rails/vendor/rails/activerecord/test/fixtures/people.yml +6 -0
  937. data/rails/vendor/rails/activerecord/test/fixtures/pets.yml +14 -0
  938. data/rails/vendor/rails/activerecord/test/fixtures/pirates.yml +9 -0
  939. data/rails/vendor/rails/activerecord/test/fixtures/posts.yml +49 -0
  940. data/rails/vendor/rails/activerecord/test/fixtures/price_estimates.yml +7 -0
  941. data/rails/vendor/rails/activerecord/test/fixtures/projects.yml +7 -0
  942. data/rails/vendor/rails/activerecord/test/fixtures/readers.yml +9 -0
  943. data/rails/vendor/rails/activerecord/test/fixtures/references.yml +17 -0
  944. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/distinct.yml +5 -0
  945. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/distincts_selects.yml +11 -0
  946. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/group.yml +14 -0
  947. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/select.yml +8 -0
  948. data/rails/vendor/rails/activerecord/test/fixtures/reserved_words/values.yml +7 -0
  949. data/rails/vendor/rails/activerecord/test/fixtures/ships.yml +5 -0
  950. data/rails/vendor/rails/activerecord/test/fixtures/sponsors.yml +9 -0
  951. data/rails/vendor/rails/activerecord/test/fixtures/subscribers.yml +7 -0
  952. data/rails/vendor/rails/activerecord/test/fixtures/subscriptions.yml +12 -0
  953. data/rails/vendor/rails/activerecord/test/fixtures/taggings.yml +28 -0
  954. data/rails/vendor/rails/activerecord/test/fixtures/tags.yml +7 -0
  955. data/rails/vendor/rails/activerecord/test/fixtures/tasks.yml +7 -0
  956. data/rails/vendor/rails/activerecord/test/fixtures/topics.yml +42 -0
  957. data/rails/vendor/rails/activerecord/test/fixtures/treasures.yml +10 -0
  958. data/rails/vendor/rails/activerecord/test/fixtures/vertices.yml +4 -0
  959. data/rails/vendor/rails/activerecord/test/fixtures/warehouse-things.yml +3 -0
  960. data/rails/vendor/rails/activerecord/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
  961. data/rails/vendor/rails/activerecord/test/migrations/duplicate/1_people_have_last_names.rb +9 -0
  962. data/rails/vendor/rails/activerecord/test/migrations/duplicate/2_we_need_reminders.rb +12 -0
  963. data/rails/vendor/rails/activerecord/test/migrations/duplicate/3_foo.rb +7 -0
  964. data/rails/vendor/rails/activerecord/test/migrations/duplicate/3_innocent_jointable.rb +12 -0
  965. data/rails/vendor/rails/activerecord/test/migrations/duplicate_names/20080507052938_chunky.rb +7 -0
  966. data/rails/vendor/rails/activerecord/test/migrations/duplicate_names/20080507053028_chunky.rb +7 -0
  967. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +12 -0
  968. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +9 -0
  969. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +12 -0
  970. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +9 -0
  971. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +8 -0
  972. data/rails/vendor/rails/activerecord/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +12 -0
  973. data/rails/vendor/rails/activerecord/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
  974. data/rails/vendor/rails/activerecord/test/migrations/missing/1_people_have_last_names.rb +9 -0
  975. data/rails/vendor/rails/activerecord/test/migrations/missing/3_we_need_reminders.rb +12 -0
  976. data/rails/vendor/rails/activerecord/test/migrations/missing/4_innocent_jointable.rb +12 -0
  977. data/rails/vendor/rails/activerecord/test/migrations/valid/1_people_have_last_names.rb +9 -0
  978. data/rails/vendor/rails/activerecord/test/migrations/valid/2_we_need_reminders.rb +12 -0
  979. data/rails/vendor/rails/activerecord/test/migrations/valid/3_innocent_jointable.rb +12 -0
  980. data/rails/vendor/rails/activerecord/test/models/author.rb +133 -0
  981. data/rails/vendor/rails/activerecord/test/models/auto_id.rb +4 -0
  982. data/rails/vendor/rails/activerecord/test/models/binary.rb +2 -0
  983. data/rails/vendor/rails/activerecord/test/models/book.rb +4 -0
  984. data/rails/vendor/rails/activerecord/test/models/categorization.rb +5 -0
  985. data/rails/vendor/rails/activerecord/test/models/category.rb +29 -0
  986. data/rails/vendor/rails/activerecord/test/models/citation.rb +6 -0
  987. data/rails/vendor/rails/activerecord/test/models/club.rb +7 -0
  988. data/rails/vendor/rails/activerecord/test/models/column_name.rb +3 -0
  989. data/rails/vendor/rails/activerecord/test/models/comment.rb +25 -0
  990. data/rails/vendor/rails/activerecord/test/models/company.rb +123 -0
  991. data/rails/vendor/rails/activerecord/test/models/company_in_module.rb +61 -0
  992. data/rails/vendor/rails/activerecord/test/models/computer.rb +3 -0
  993. data/rails/vendor/rails/activerecord/test/models/contact.rb +16 -0
  994. data/rails/vendor/rails/activerecord/test/models/course.rb +3 -0
  995. data/rails/vendor/rails/activerecord/test/models/customer.rb +55 -0
  996. data/rails/vendor/rails/activerecord/test/models/default.rb +2 -0
  997. data/rails/vendor/rails/activerecord/test/models/developer.rb +76 -0
  998. data/rails/vendor/rails/activerecord/test/models/edge.rb +5 -0
  999. data/rails/vendor/rails/activerecord/test/models/entrant.rb +3 -0
  1000. data/rails/vendor/rails/activerecord/test/models/guid.rb +2 -0
  1001. data/rails/vendor/rails/activerecord/test/models/item.rb +7 -0
  1002. data/rails/vendor/rails/activerecord/test/models/job.rb +5 -0
  1003. data/rails/vendor/rails/activerecord/test/models/joke.rb +3 -0
  1004. data/rails/vendor/rails/activerecord/test/models/keyboard.rb +3 -0
  1005. data/rails/vendor/rails/activerecord/test/models/legacy_thing.rb +3 -0
  1006. data/rails/vendor/rails/activerecord/test/models/matey.rb +4 -0
  1007. data/rails/vendor/rails/activerecord/test/models/member.rb +9 -0
  1008. data/rails/vendor/rails/activerecord/test/models/membership.rb +9 -0
  1009. data/rails/vendor/rails/activerecord/test/models/minimalistic.rb +2 -0
  1010. data/rails/vendor/rails/activerecord/test/models/mixed_case_monkey.rb +3 -0
  1011. data/rails/vendor/rails/activerecord/test/models/movie.rb +5 -0
  1012. data/rails/vendor/rails/activerecord/test/models/order.rb +4 -0
  1013. data/rails/vendor/rails/activerecord/test/models/owner.rb +4 -0
  1014. data/rails/vendor/rails/activerecord/test/models/parrot.rb +13 -0
  1015. data/rails/vendor/rails/activerecord/test/models/person.rb +10 -0
  1016. data/rails/vendor/rails/activerecord/test/models/pet.rb +4 -0
  1017. data/rails/vendor/rails/activerecord/test/models/pirate.rb +9 -0
  1018. data/rails/vendor/rails/activerecord/test/models/post.rb +80 -0
  1019. data/rails/vendor/rails/activerecord/test/models/price_estimate.rb +3 -0
  1020. data/rails/vendor/rails/activerecord/test/models/project.rb +29 -0
  1021. data/rails/vendor/rails/activerecord/test/models/reader.rb +4 -0
  1022. data/rails/vendor/rails/activerecord/test/models/reference.rb +4 -0
  1023. data/rails/vendor/rails/activerecord/test/models/reply.rb +39 -0
  1024. data/rails/vendor/rails/activerecord/test/models/ship.rb +3 -0
  1025. data/rails/vendor/rails/activerecord/test/models/sponsor.rb +4 -0
  1026. data/rails/vendor/rails/activerecord/test/models/subject.rb +4 -0
  1027. data/rails/vendor/rails/activerecord/test/models/subscriber.rb +8 -0
  1028. data/rails/vendor/rails/activerecord/test/models/subscription.rb +4 -0
  1029. data/rails/vendor/rails/activerecord/test/models/tag.rb +7 -0
  1030. data/rails/vendor/rails/activerecord/test/models/tagging.rb +10 -0
  1031. data/rails/vendor/rails/activerecord/test/models/task.rb +3 -0
  1032. data/rails/vendor/rails/activerecord/test/models/topic.rb +65 -0
  1033. data/rails/vendor/rails/activerecord/test/models/treasure.rb +6 -0
  1034. data/rails/vendor/rails/activerecord/test/models/vertex.rb +9 -0
  1035. data/rails/vendor/rails/activerecord/test/models/warehouse_thing.rb +5 -0
  1036. data/rails/vendor/rails/activerecord/test/schema/mysql_specific_schema.rb +12 -0
  1037. data/rails/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +103 -0
  1038. data/rails/vendor/rails/activerecord/test/schema/schema.rb +421 -0
  1039. data/rails/vendor/rails/activerecord/test/schema/schema2.rb +6 -0
  1040. data/rails/vendor/rails/activerecord/test/schema/sqlite_specific_schema.rb +25 -0
  1041. data/rails/vendor/rails/activerecord/test/schema/sqlserver_specific_schema.rb +5 -0
  1042. data/rails/vendor/rails/activeresource/CHANGELOG +246 -0
  1043. data/rails/vendor/rails/activeresource/MIT-LICENSE +20 -0
  1044. data/rails/vendor/rails/activeresource/README +165 -0
  1045. data/rails/vendor/rails/activeresource/Rakefile +135 -0
  1046. data/rails/vendor/rails/activeresource/lib/active_resource.rb +47 -0
  1047. data/rails/vendor/rails/activeresource/lib/active_resource/base.rb +1014 -0
  1048. data/rails/vendor/rails/activeresource/lib/active_resource/connection.rb +207 -0
  1049. data/rails/vendor/rails/activeresource/lib/active_resource/custom_methods.rb +119 -0
  1050. data/rails/vendor/rails/activeresource/lib/active_resource/formats.rb +14 -0
  1051. data/rails/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +23 -0
  1052. data/rails/vendor/rails/activeresource/lib/active_resource/formats/xml_format.rb +34 -0
  1053. data/rails/vendor/rails/activeresource/lib/active_resource/http_mock.rb +217 -0
  1054. data/rails/vendor/rails/activeresource/lib/active_resource/validations.rb +288 -0
  1055. data/rails/vendor/rails/activeresource/lib/active_resource/version.rb +9 -0
  1056. data/rails/vendor/rails/activeresource/lib/activeresource.rb +1 -0
  1057. data/rails/vendor/rails/activeresource/test/abstract_unit.rb +22 -0
  1058. data/rails/vendor/rails/activeresource/test/authorization_test.rb +122 -0
  1059. data/rails/vendor/rails/activeresource/test/base/custom_methods_test.rb +99 -0
  1060. data/rails/vendor/rails/activeresource/test/base/equality_test.rb +43 -0
  1061. data/rails/vendor/rails/activeresource/test/base/load_test.rb +146 -0
  1062. data/rails/vendor/rails/activeresource/test/base_errors_test.rb +48 -0
  1063. data/rails/vendor/rails/activeresource/test/base_test.rb +791 -0
  1064. data/rails/vendor/rails/activeresource/test/connection_test.rb +190 -0
  1065. data/rails/vendor/rails/activeresource/test/fixtures/beast.rb +14 -0
  1066. data/rails/vendor/rails/activeresource/test/fixtures/person.rb +3 -0
  1067. data/rails/vendor/rails/activeresource/test/fixtures/street_address.rb +4 -0
  1068. data/rails/vendor/rails/activeresource/test/format_test.rb +83 -0
  1069. data/rails/vendor/rails/activeresource/test/setter_trap.rb +27 -0
  1070. data/rails/vendor/rails/activesupport/CHANGELOG +1181 -0
  1071. data/rails/vendor/rails/activesupport/MIT-LICENSE +20 -0
  1072. data/rails/vendor/rails/activesupport/README +43 -0
  1073. data/rails/vendor/rails/activesupport/Rakefile +175 -0
  1074. data/rails/vendor/rails/activesupport/install.rb +30 -0
  1075. data/rails/vendor/rails/activesupport/lib/active_support.rb +55 -0
  1076. data/rails/vendor/rails/activesupport/lib/active_support/base64.rb +22 -0
  1077. data/rails/vendor/rails/activesupport/lib/active_support/basic_object.rb +24 -0
  1078. data/rails/vendor/rails/activesupport/lib/active_support/buffered_logger.rb +121 -0
  1079. data/rails/vendor/rails/activesupport/lib/active_support/cache.rb +145 -0
  1080. data/rails/vendor/rails/activesupport/lib/active_support/cache/compressed_mem_cache_store.rb +15 -0
  1081. data/rails/vendor/rails/activesupport/lib/active_support/cache/drb_store.rb +15 -0
  1082. data/rails/vendor/rails/activesupport/lib/active_support/cache/file_store.rb +70 -0
  1083. data/rails/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +100 -0
  1084. data/rails/vendor/rails/activesupport/lib/active_support/cache/memory_store.rb +38 -0
  1085. data/rails/vendor/rails/activesupport/lib/active_support/callbacks.rb +275 -0
  1086. data/rails/vendor/rails/activesupport/lib/active_support/clean_logger.rb +127 -0
  1087. data/rails/vendor/rails/activesupport/lib/active_support/core_ext.rb +4 -0
  1088. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array.rb +13 -0
  1089. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/access.rb +26 -0
  1090. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +178 -0
  1091. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/extract_options.rb +20 -0
  1092. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/grouping.rb +63 -0
  1093. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/array/random_access.rb +12 -0
  1094. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/base64.rb +4 -0
  1095. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/base64/encoding.rb +13 -0
  1096. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/benchmark.rb +12 -0
  1097. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal.rb +6 -0
  1098. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/bigdecimal/conversions.rb +41 -0
  1099. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/blank.rb +53 -0
  1100. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/cgi.rb +5 -0
  1101. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/cgi/escape_skipping_slashes.rb +14 -0
  1102. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class.rb +4 -0
  1103. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/attribute_accessors.rb +54 -0
  1104. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/delegating_attributes.rb +46 -0
  1105. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/inheritable_attributes.rb +140 -0
  1106. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/class/removal.rb +50 -0
  1107. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date.rb +10 -0
  1108. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/behavior.rb +13 -0
  1109. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +215 -0
  1110. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date/conversions.rb +107 -0
  1111. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time.rb +12 -0
  1112. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time/calculations.rb +112 -0
  1113. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/date_time/conversions.rb +96 -0
  1114. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/duplicable.rb +37 -0
  1115. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +69 -0
  1116. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/exception.rb +41 -0
  1117. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/file.rb +21 -0
  1118. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/float.rb +5 -0
  1119. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/float/rounding.rb +24 -0
  1120. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash.rb +13 -0
  1121. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +259 -0
  1122. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/diff.rb +19 -0
  1123. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/except.rb +24 -0
  1124. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb +137 -0
  1125. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/keys.rb +52 -0
  1126. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/reverse_merge.rb +28 -0
  1127. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/hash/slice.rb +28 -0
  1128. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer.rb +7 -0
  1129. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer/even_odd.rb +29 -0
  1130. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/integer/inflections.rb +20 -0
  1131. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel.rb +5 -0
  1132. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/agnostics.rb +11 -0
  1133. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/daemonizing.rb +7 -0
  1134. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +13 -0
  1135. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb +59 -0
  1136. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/kernel/requires.rb +24 -0
  1137. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/load_error.rb +38 -0
  1138. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/logger.rb +16 -0
  1139. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module.rb +8 -0
  1140. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb +70 -0
  1141. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_accessor_with_default.rb +31 -0
  1142. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attr_internal.rb +32 -0
  1143. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +58 -0
  1144. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +64 -0
  1145. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/inclusion.rb +30 -0
  1146. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/introspection.rb +75 -0
  1147. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/module/loading.rb +23 -0
  1148. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/name_error.rb +17 -0
  1149. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric.rb +9 -0
  1150. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +44 -0
  1151. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/conversions.rb +19 -0
  1152. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/numeric/time.rb +91 -0
  1153. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object.rb +4 -0
  1154. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/conversions.rb +14 -0
  1155. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/extending.rb +58 -0
  1156. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/instance_variables.rb +74 -0
  1157. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb +59 -0
  1158. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/pathname.rb +7 -0
  1159. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/pathname/clean_within.rb +14 -0
  1160. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/proc.rb +12 -0
  1161. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/process.rb +1 -0
  1162. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/process/daemon.rb +25 -0
  1163. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range.rb +11 -0
  1164. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/blockless_step.rb +32 -0
  1165. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/conversions.rb +27 -0
  1166. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/include_range.rb +30 -0
  1167. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/range/overlaps.rb +15 -0
  1168. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +18 -0
  1169. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +82 -0
  1170. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/conversions.rb +28 -0
  1171. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/filters.rb +26 -0
  1172. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/inflections.rb +148 -0
  1173. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/iterators.rb +21 -0
  1174. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/starts_ends_with.rb +35 -0
  1175. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/unicode.rb +68 -0
  1176. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/string/xchar.rb +11 -0
  1177. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/symbol.rb +14 -0
  1178. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/test.rb +1 -0
  1179. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/test/unit/assertions.rb +64 -0
  1180. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time.rb +21 -0
  1181. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/behavior.rb +13 -0
  1182. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +276 -0
  1183. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/conversions.rb +89 -0
  1184. data/rails/vendor/rails/activesupport/lib/active_support/core_ext/time/zones.rb +86 -0
  1185. data/rails/vendor/rails/activesupport/lib/active_support/dependencies.rb +552 -0
  1186. data/rails/vendor/rails/activesupport/lib/active_support/deprecation.rb +205 -0
  1187. data/rails/vendor/rails/activesupport/lib/active_support/duration.rb +96 -0
  1188. data/rails/vendor/rails/activesupport/lib/active_support/gzip.rb +25 -0
  1189. data/rails/vendor/rails/activesupport/lib/active_support/inflections.rb +53 -0
  1190. data/rails/vendor/rails/activesupport/lib/active_support/inflector.rb +308 -0
  1191. data/rails/vendor/rails/activesupport/lib/active_support/json.rb +23 -0
  1192. data/rails/vendor/rails/activesupport/lib/active_support/json/decoding.rb +63 -0
  1193. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +14 -0
  1194. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +14 -0
  1195. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +12 -0
  1196. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +5 -0
  1197. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +47 -0
  1198. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +5 -0
  1199. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +5 -0
  1200. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -0
  1201. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +5 -0
  1202. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +36 -0
  1203. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +5 -0
  1204. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +14 -0
  1205. data/rails/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +5 -0
  1206. data/rails/vendor/rails/activesupport/lib/active_support/json/encoding.rb +37 -0
  1207. data/rails/vendor/rails/activesupport/lib/active_support/json/variable.rb +10 -0
  1208. data/rails/vendor/rails/activesupport/lib/active_support/multibyte.rb +9 -0
  1209. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +137 -0
  1210. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/generators/generate_tables.rb +149 -0
  1211. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/passthru_handler.rb +9 -0
  1212. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb +564 -0
  1213. data/rails/vendor/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler_proc.rb +43 -0
  1214. data/rails/vendor/rails/activesupport/lib/active_support/option_merger.rb +25 -0
  1215. data/rails/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +43 -0
  1216. data/rails/vendor/rails/activesupport/lib/active_support/ordered_options.rb +17 -0
  1217. data/rails/vendor/rails/activesupport/lib/active_support/test_case.rb +13 -0
  1218. data/rails/vendor/rails/activesupport/lib/active_support/testing/default.rb +9 -0
  1219. data/rails/vendor/rails/activesupport/lib/active_support/testing/setup_and_teardown.rb +93 -0
  1220. data/rails/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +283 -0
  1221. data/rails/vendor/rails/activesupport/lib/active_support/values/time_zone.rb +394 -0
  1222. data/rails/vendor/rails/activesupport/lib/active_support/values/unicode_tables.dat +0 -0
  1223. data/rails/vendor/rails/activesupport/lib/active_support/vendor.rb +26 -0
  1224. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/blankslate.rb +113 -0
  1225. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder.rb +13 -0
  1226. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/blankslate.rb +20 -0
  1227. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/css.rb +250 -0
  1228. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xchar.rb +115 -0
  1229. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlbase.rb +139 -0
  1230. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlevents.rb +63 -0
  1231. data/rails/vendor/rails/activesupport/lib/active_support/vendor/builder-2.1.2/builder/xmlmarkup.rb +328 -0
  1232. data/rails/vendor/rails/activesupport/lib/active_support/vendor/memcache-client-1.5.0/memcache.rb +849 -0
  1233. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo.rb +33 -0
  1234. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone.rb +47 -0
  1235. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/data_timezone_info.rb +226 -0
  1236. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Algiers.rb +55 -0
  1237. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Cairo.rb +219 -0
  1238. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Casablanca.rb +38 -0
  1239. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Harare.rb +18 -0
  1240. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Johannesburg.rb +25 -0
  1241. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Monrovia.rb +22 -0
  1242. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Africa/Nairobi.rb +23 -0
  1243. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +166 -0
  1244. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Argentina/San_Juan.rb +170 -0
  1245. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Bogota.rb +23 -0
  1246. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Caracas.rb +23 -0
  1247. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chicago.rb +283 -0
  1248. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Chihuahua.rb +136 -0
  1249. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Denver.rb +204 -0
  1250. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Godthab.rb +161 -0
  1251. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Guatemala.rb +27 -0
  1252. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Halifax.rb +274 -0
  1253. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Indiana/Indianapolis.rb +149 -0
  1254. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Juneau.rb +194 -0
  1255. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/La_Paz.rb +22 -0
  1256. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Lima.rb +35 -0
  1257. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Los_Angeles.rb +232 -0
  1258. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mazatlan.rb +139 -0
  1259. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Mexico_City.rb +144 -0
  1260. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Monterrey.rb +131 -0
  1261. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/New_York.rb +282 -0
  1262. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Phoenix.rb +30 -0
  1263. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Regina.rb +74 -0
  1264. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Santiago.rb +205 -0
  1265. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/St_Johns.rb +288 -0
  1266. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/America/Tijuana.rb +196 -0
  1267. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Almaty.rb +67 -0
  1268. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baghdad.rb +73 -0
  1269. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Baku.rb +161 -0
  1270. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Bangkok.rb +20 -0
  1271. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Chongqing.rb +33 -0
  1272. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Dhaka.rb +27 -0
  1273. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Hong_Kong.rb +87 -0
  1274. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Irkutsk.rb +165 -0
  1275. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jakarta.rb +30 -0
  1276. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Jerusalem.rb +163 -0
  1277. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kabul.rb +20 -0
  1278. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kamchatka.rb +163 -0
  1279. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Karachi.rb +28 -0
  1280. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Katmandu.rb +20 -0
  1281. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kolkata.rb +25 -0
  1282. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Krasnoyarsk.rb +163 -0
  1283. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuala_Lumpur.rb +31 -0
  1284. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Kuwait.rb +18 -0
  1285. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Magadan.rb +163 -0
  1286. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Muscat.rb +18 -0
  1287. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Novosibirsk.rb +164 -0
  1288. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Rangoon.rb +24 -0
  1289. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Riyadh.rb +18 -0
  1290. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Seoul.rb +34 -0
  1291. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Shanghai.rb +35 -0
  1292. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Singapore.rb +33 -0
  1293. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Taipei.rb +59 -0
  1294. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tashkent.rb +47 -0
  1295. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tbilisi.rb +78 -0
  1296. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tehran.rb +121 -0
  1297. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Tokyo.rb +30 -0
  1298. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Ulaanbaatar.rb +65 -0
  1299. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Urumqi.rb +33 -0
  1300. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Vladivostok.rb +164 -0
  1301. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yakutsk.rb +163 -0
  1302. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yekaterinburg.rb +165 -0
  1303. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Asia/Yerevan.rb +165 -0
  1304. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Azores.rb +270 -0
  1305. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/Cape_Verde.rb +23 -0
  1306. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Atlantic/South_Georgia.rb +18 -0
  1307. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Adelaide.rb +187 -0
  1308. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Brisbane.rb +35 -0
  1309. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Darwin.rb +29 -0
  1310. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Hobart.rb +193 -0
  1311. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Melbourne.rb +185 -0
  1312. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Perth.rb +37 -0
  1313. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Australia/Sydney.rb +185 -0
  1314. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Etc/UTC.rb +16 -0
  1315. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Amsterdam.rb +228 -0
  1316. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Athens.rb +185 -0
  1317. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Belgrade.rb +163 -0
  1318. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Berlin.rb +188 -0
  1319. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bratislava.rb +13 -0
  1320. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Brussels.rb +232 -0
  1321. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Bucharest.rb +181 -0
  1322. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Budapest.rb +197 -0
  1323. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Copenhagen.rb +179 -0
  1324. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Dublin.rb +276 -0
  1325. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Helsinki.rb +163 -0
  1326. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Istanbul.rb +218 -0
  1327. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Kiev.rb +168 -0
  1328. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Lisbon.rb +268 -0
  1329. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Ljubljana.rb +13 -0
  1330. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/London.rb +288 -0
  1331. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Madrid.rb +211 -0
  1332. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Minsk.rb +170 -0
  1333. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Moscow.rb +181 -0
  1334. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Paris.rb +232 -0
  1335. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Prague.rb +187 -0
  1336. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Riga.rb +176 -0
  1337. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Rome.rb +215 -0
  1338. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sarajevo.rb +13 -0
  1339. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Skopje.rb +13 -0
  1340. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Sofia.rb +173 -0
  1341. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Stockholm.rb +165 -0
  1342. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Tallinn.rb +172 -0
  1343. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vienna.rb +183 -0
  1344. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Vilnius.rb +170 -0
  1345. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Warsaw.rb +212 -0
  1346. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Europe/Zagreb.rb +13 -0
  1347. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Auckland.rb +202 -0
  1348. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Fiji.rb +23 -0
  1349. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Guam.rb +22 -0
  1350. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Honolulu.rb +28 -0
  1351. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Majuro.rb +20 -0
  1352. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Midway.rb +25 -0
  1353. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Noumea.rb +25 -0
  1354. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Pago_Pago.rb +26 -0
  1355. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Port_Moresby.rb +20 -0
  1356. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/definitions/Pacific/Tongatapu.rb +27 -0
  1357. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/info_timezone.rb +52 -0
  1358. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone.rb +51 -0
  1359. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/linked_timezone_info.rb +44 -0
  1360. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/offset_rationals.rb +95 -0
  1361. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/time_or_datetime.rb +292 -0
  1362. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone.rb +508 -0
  1363. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_definition.rb +56 -0
  1364. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_info.rb +40 -0
  1365. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_offset_info.rb +94 -0
  1366. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_period.rb +198 -0
  1367. data/rails/vendor/rails/activesupport/lib/active_support/vendor/tzinfo-0.3.8/tzinfo/timezone_transition_info.rb +138 -0
  1368. data/rails/vendor/rails/activesupport/lib/active_support/vendor/xml-simple-1.0.11/xmlsimple.rb +1021 -0
  1369. data/rails/vendor/rails/activesupport/lib/active_support/version.rb +9 -0
  1370. data/rails/vendor/rails/activesupport/lib/active_support/whiny_nil.rb +58 -0
  1371. data/rails/vendor/rails/activesupport/lib/activesupport.rb +1 -0
  1372. data/rails/vendor/rails/activesupport/test/abstract_unit.rb +24 -0
  1373. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/b.rb +2 -0
  1374. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/c/d.rb +2 -0
  1375. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/a/c/e/f.rb +2 -0
  1376. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/application.rb +1 -0
  1377. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder.rb +3 -0
  1378. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/class_folder_subclass.rb +3 -0
  1379. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/inline_class.rb +2 -0
  1380. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/class_folder/nested_class.rb +7 -0
  1381. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/conflict.rb +1 -0
  1382. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/counting_loader.rb +5 -0
  1383. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/cross_site_dependency.rb +2 -0
  1384. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/e.rb +2 -0
  1385. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/inline_class.rb +2 -0
  1386. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_class.rb +4 -0
  1387. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_folder/nested_sibling.rb +2 -0
  1388. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/module_with_custom_const_missing/a/b.rb +1 -0
  1389. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/multiple_constant_file.rb +2 -0
  1390. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/raises_name_error.rb +3 -0
  1391. data/rails/vendor/rails/activesupport/test/autoloading_fixtures/raises_no_method_error.rb +3 -0
  1392. data/rails/vendor/rails/activesupport/test/buffered_logger_test.rb +118 -0
  1393. data/rails/vendor/rails/activesupport/test/caching_test.rb +66 -0
  1394. data/rails/vendor/rails/activesupport/test/callbacks_test.rb +148 -0
  1395. data/rails/vendor/rails/activesupport/test/clean_logger_test.rb +57 -0
  1396. data/rails/vendor/rails/activesupport/test/core_ext/array_ext_test.rb +250 -0
  1397. data/rails/vendor/rails/activesupport/test/core_ext/base64_ext_test.rb +8 -0
  1398. data/rails/vendor/rails/activesupport/test/core_ext/bigdecimal.rb +9 -0
  1399. data/rails/vendor/rails/activesupport/test/core_ext/blank_test.rb +19 -0
  1400. data/rails/vendor/rails/activesupport/test/core_ext/cgi_ext_test.rb +14 -0
  1401. data/rails/vendor/rails/activesupport/test/core_ext/class/attribute_accessor_test.rb +31 -0
  1402. data/rails/vendor/rails/activesupport/test/core_ext/class/class_inheritable_attributes_test.rb +224 -0
  1403. data/rails/vendor/rails/activesupport/test/core_ext/class/delegating_attributes_test.rb +115 -0
  1404. data/rails/vendor/rails/activesupport/test/core_ext/class_test.rb +46 -0
  1405. data/rails/vendor/rails/activesupport/test/core_ext/date_ext_test.rb +242 -0
  1406. data/rails/vendor/rails/activesupport/test/core_ext/date_time_ext_test.rb +288 -0
  1407. data/rails/vendor/rails/activesupport/test/core_ext/duplicable_test.rb +22 -0
  1408. data/rails/vendor/rails/activesupport/test/core_ext/duration_test.rb +74 -0
  1409. data/rails/vendor/rails/activesupport/test/core_ext/enumerable_test.rb +66 -0
  1410. data/rails/vendor/rails/activesupport/test/core_ext/exception_test.rb +68 -0
  1411. data/rails/vendor/rails/activesupport/test/core_ext/file_test.rb +29 -0
  1412. data/rails/vendor/rails/activesupport/test/core_ext/float_ext_test.rb +25 -0
  1413. data/rails/vendor/rails/activesupport/test/core_ext/hash_ext_test.rb +815 -0
  1414. data/rails/vendor/rails/activesupport/test/core_ext/integer_ext_test.rb +37 -0
  1415. data/rails/vendor/rails/activesupport/test/core_ext/kernel_test.rb +43 -0
  1416. data/rails/vendor/rails/activesupport/test/core_ext/load_error_test.rb +16 -0
  1417. data/rails/vendor/rails/activesupport/test/core_ext/module/attr_accessor_with_default_test.rb +30 -0
  1418. data/rails/vendor/rails/activesupport/test/core_ext/module/attr_internal_test.rb +52 -0
  1419. data/rails/vendor/rails/activesupport/test/core_ext/module/attribute_accessor_test.rb +33 -0
  1420. data/rails/vendor/rails/activesupport/test/core_ext/module/attribute_aliasing_test.rb +58 -0
  1421. data/rails/vendor/rails/activesupport/test/core_ext/module_test.rb +293 -0
  1422. data/rails/vendor/rails/activesupport/test/core_ext/name_error_test.rb +24 -0
  1423. data/rails/vendor/rails/activesupport/test/core_ext/numeric_ext_test.rb +162 -0
  1424. data/rails/vendor/rails/activesupport/test/core_ext/object_and_class_ext_test.rb +246 -0
  1425. data/rails/vendor/rails/activesupport/test/core_ext/pathname_test.rb +9 -0
  1426. data/rails/vendor/rails/activesupport/test/core_ext/proc_test.rb +11 -0
  1427. data/rails/vendor/rails/activesupport/test/core_ext/range_ext_test.rb +63 -0
  1428. data/rails/vendor/rails/activesupport/test/core_ext/string_ext_test.rb +199 -0
  1429. data/rails/vendor/rails/activesupport/test/core_ext/symbol_test.rb +9 -0
  1430. data/rails/vendor/rails/activesupport/test/core_ext/time_ext_test.rb +622 -0
  1431. data/rails/vendor/rails/activesupport/test/core_ext/time_with_zone_test.rb +676 -0
  1432. data/rails/vendor/rails/activesupport/test/dependencies/check_warnings.rb +2 -0
  1433. data/rails/vendor/rails/activesupport/test/dependencies/conflict.rb +1 -0
  1434. data/rails/vendor/rails/activesupport/test/dependencies/cross_site_depender.rb +3 -0
  1435. data/rails/vendor/rails/activesupport/test/dependencies/mutual_one.rb +4 -0
  1436. data/rails/vendor/rails/activesupport/test/dependencies/mutual_two.rb +4 -0
  1437. data/rails/vendor/rails/activesupport/test/dependencies/raises_exception.rb +3 -0
  1438. data/rails/vendor/rails/activesupport/test/dependencies/requires_nonexistent0.rb +1 -0
  1439. data/rails/vendor/rails/activesupport/test/dependencies/requires_nonexistent1.rb +1 -0
  1440. data/rails/vendor/rails/activesupport/test/dependencies/service_one.rb +5 -0
  1441. data/rails/vendor/rails/activesupport/test/dependencies/service_two.rb +2 -0
  1442. data/rails/vendor/rails/activesupport/test/dependencies_test.rb +765 -0
  1443. data/rails/vendor/rails/activesupport/test/deprecation_test.rb +151 -0
  1444. data/rails/vendor/rails/activesupport/test/inflector_test.rb +242 -0
  1445. data/rails/vendor/rails/activesupport/test/inflector_test_cases.rb +211 -0
  1446. data/rails/vendor/rails/activesupport/test/json/decoding_test.rb +41 -0
  1447. data/rails/vendor/rails/activesupport/test/json/encoding_test.rb +140 -0
  1448. data/rails/vendor/rails/activesupport/test/multibyte_chars_test.rb +182 -0
  1449. data/rails/vendor/rails/activesupport/test/multibyte_conformance.rb +146 -0
  1450. data/rails/vendor/rails/activesupport/test/multibyte_handler_test.rb +372 -0
  1451. data/rails/vendor/rails/activesupport/test/option_merger_test.rb +50 -0
  1452. data/rails/vendor/rails/activesupport/test/ordered_hash_test.rb +45 -0
  1453. data/rails/vendor/rails/activesupport/test/ordered_options_test.rb +53 -0
  1454. data/rails/vendor/rails/activesupport/test/test_test.rb +120 -0
  1455. data/rails/vendor/rails/activesupport/test/time_zone_test.rb +288 -0
  1456. data/rails/vendor/rails/activesupport/test/whiny_nil_test.rb +38 -0
  1457. data/rails/vendor/rails/railties/CHANGELOG +2027 -0
  1458. data/rails/vendor/rails/railties/MIT-LICENSE +20 -0
  1459. data/rails/vendor/rails/railties/README +256 -0
  1460. data/rails/vendor/rails/railties/Rakefile +349 -0
  1461. data/rails/vendor/rails/railties/bin/about +3 -0
  1462. data/rails/vendor/rails/railties/bin/console +3 -0
  1463. data/rails/vendor/rails/railties/bin/dbconsole +3 -0
  1464. data/rails/vendor/rails/railties/bin/destroy +3 -0
  1465. data/rails/vendor/rails/railties/bin/generate +3 -0
  1466. data/rails/vendor/rails/railties/bin/performance/benchmarker +3 -0
  1467. data/rails/vendor/rails/railties/bin/performance/profiler +3 -0
  1468. data/rails/vendor/rails/railties/bin/performance/request +3 -0
  1469. data/rails/vendor/rails/railties/bin/plugin +3 -0
  1470. data/rails/vendor/rails/railties/bin/process/inspector +3 -0
  1471. data/rails/vendor/rails/railties/bin/process/reaper +3 -0
  1472. data/rails/vendor/rails/railties/bin/process/spawner +3 -0
  1473. data/rails/vendor/rails/railties/bin/rails +19 -0
  1474. data/rails/vendor/rails/railties/bin/runner +3 -0
  1475. data/rails/vendor/rails/railties/bin/server +3 -0
  1476. data/rails/vendor/rails/railties/builtin/rails_info/rails/info.rb +125 -0
  1477. data/rails/vendor/rails/railties/builtin/rails_info/rails/info_controller.rb +9 -0
  1478. data/rails/vendor/rails/railties/builtin/rails_info/rails/info_helper.rb +2 -0
  1479. data/rails/vendor/rails/railties/builtin/rails_info/rails_info_controller.rb +2 -0
  1480. data/rails/vendor/rails/railties/configs/apache.conf +40 -0
  1481. data/rails/vendor/rails/railties/configs/databases/frontbase.yml +28 -0
  1482. data/rails/vendor/rails/railties/configs/databases/mysql.yml +54 -0
  1483. data/rails/vendor/rails/railties/configs/databases/oracle.yml +39 -0
  1484. data/rails/vendor/rails/railties/configs/databases/postgresql.yml +48 -0
  1485. data/rails/vendor/rails/railties/configs/databases/sqlite2.yml +16 -0
  1486. data/rails/vendor/rails/railties/configs/databases/sqlite3.yml +19 -0
  1487. data/rails/vendor/rails/railties/configs/empty.log +0 -0
  1488. data/rails/vendor/rails/railties/configs/initializers/inflections.rb +10 -0
  1489. data/rails/vendor/rails/railties/configs/initializers/mime_types.rb +5 -0
  1490. data/rails/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +15 -0
  1491. data/rails/vendor/rails/railties/configs/lighttpd.conf +54 -0
  1492. data/rails/vendor/rails/railties/configs/routes.rb +41 -0
  1493. data/rails/vendor/rails/railties/dispatches/dispatch.fcgi +24 -0
  1494. data/rails/vendor/rails/railties/dispatches/dispatch.rb +10 -0
  1495. data/rails/vendor/rails/railties/dispatches/gateway.cgi +97 -0
  1496. data/rails/vendor/rails/railties/doc/README_FOR_APP +2 -0
  1497. data/rails/vendor/rails/railties/environments/boot.rb +109 -0
  1498. data/rails/vendor/rails/railties/environments/development.rb +17 -0
  1499. data/rails/vendor/rails/railties/environments/environment.rb +67 -0
  1500. data/rails/vendor/rails/railties/environments/production.rb +22 -0
  1501. data/rails/vendor/rails/railties/environments/test.rb +22 -0
  1502. data/rails/vendor/rails/railties/fresh_rakefile +10 -0
  1503. data/rails/vendor/rails/railties/helpers/application.rb +15 -0
  1504. data/rails/vendor/rails/railties/helpers/application_helper.rb +3 -0
  1505. data/rails/vendor/rails/railties/helpers/test_helper.rb +38 -0
  1506. data/rails/vendor/rails/railties/html/404.html +30 -0
  1507. data/rails/vendor/rails/railties/html/422.html +30 -0
  1508. data/rails/vendor/rails/railties/html/500.html +30 -0
  1509. data/rails/vendor/rails/railties/html/favicon.ico +0 -0
  1510. data/rails/vendor/rails/railties/html/images/rails.png +0 -0
  1511. data/rails/vendor/rails/railties/html/index.html +274 -0
  1512. data/rails/vendor/rails/railties/html/javascripts/application.js +2 -0
  1513. data/rails/vendor/rails/railties/html/javascripts/controls.js +963 -0
  1514. data/rails/vendor/rails/railties/html/javascripts/dragdrop.js +972 -0
  1515. data/rails/vendor/rails/railties/html/javascripts/effects.js +1120 -0
  1516. data/rails/vendor/rails/railties/html/javascripts/prototype.js +4225 -0
  1517. data/rails/vendor/rails/railties/html/robots.txt +5 -0
  1518. data/rails/vendor/rails/railties/lib/code_statistics.rb +107 -0
  1519. data/rails/vendor/rails/railties/lib/commands.rb +17 -0
  1520. data/rails/vendor/rails/railties/lib/commands/about.rb +2 -0
  1521. data/rails/vendor/rails/railties/lib/commands/console.rb +32 -0
  1522. data/rails/vendor/rails/railties/lib/commands/dbconsole.rb +65 -0
  1523. data/rails/vendor/rails/railties/lib/commands/destroy.rb +6 -0
  1524. data/rails/vendor/rails/railties/lib/commands/generate.rb +6 -0
  1525. data/rails/vendor/rails/railties/lib/commands/ncgi/listener +86 -0
  1526. data/rails/vendor/rails/railties/lib/commands/ncgi/tracker +69 -0
  1527. data/rails/vendor/rails/railties/lib/commands/performance/benchmarker.rb +24 -0
  1528. data/rails/vendor/rails/railties/lib/commands/performance/profiler.rb +50 -0
  1529. data/rails/vendor/rails/railties/lib/commands/performance/request.rb +6 -0
  1530. data/rails/vendor/rails/railties/lib/commands/plugin.rb +950 -0
  1531. data/rails/vendor/rails/railties/lib/commands/process/inspector.rb +68 -0
  1532. data/rails/vendor/rails/railties/lib/commands/process/reaper.rb +149 -0
  1533. data/rails/vendor/rails/railties/lib/commands/process/spawner.rb +219 -0
  1534. data/rails/vendor/rails/railties/lib/commands/process/spinner.rb +57 -0
  1535. data/rails/vendor/rails/railties/lib/commands/runner.rb +48 -0
  1536. data/rails/vendor/rails/railties/lib/commands/server.rb +39 -0
  1537. data/rails/vendor/rails/railties/lib/commands/servers/base.rb +31 -0
  1538. data/rails/vendor/rails/railties/lib/commands/servers/lighttpd.rb +94 -0
  1539. data/rails/vendor/rails/railties/lib/commands/servers/mongrel.rb +69 -0
  1540. data/rails/vendor/rails/railties/lib/commands/servers/new_mongrel.rb +16 -0
  1541. data/rails/vendor/rails/railties/lib/commands/servers/webrick.rb +66 -0
  1542. data/rails/vendor/rails/railties/lib/commands/update.rb +4 -0
  1543. data/rails/vendor/rails/railties/lib/console_app.rb +30 -0
  1544. data/rails/vendor/rails/railties/lib/console_sandbox.rb +6 -0
  1545. data/rails/vendor/rails/railties/lib/console_with_helpers.rb +26 -0
  1546. data/rails/vendor/rails/railties/lib/dispatcher.rb +24 -0
  1547. data/rails/vendor/rails/railties/lib/fcgi_handler.rb +239 -0
  1548. data/rails/vendor/rails/railties/lib/initializer.rb +900 -0
  1549. data/rails/vendor/rails/railties/lib/rails/gem_builder.rb +21 -0
  1550. data/rails/vendor/rails/railties/lib/rails/gem_dependency.rb +124 -0
  1551. data/rails/vendor/rails/railties/lib/rails/mongrel_server/commands.rb +342 -0
  1552. data/rails/vendor/rails/railties/lib/rails/mongrel_server/handler.rb +55 -0
  1553. data/rails/vendor/rails/railties/lib/rails/plugin.rb +115 -0
  1554. data/rails/vendor/rails/railties/lib/rails/plugin/loader.rb +152 -0
  1555. data/rails/vendor/rails/railties/lib/rails/plugin/locator.rb +99 -0
  1556. data/rails/vendor/rails/railties/lib/rails/version.rb +9 -0
  1557. data/rails/vendor/rails/railties/lib/rails_generator.rb +43 -0
  1558. data/rails/vendor/rails/railties/lib/rails_generator/base.rb +263 -0
  1559. data/rails/vendor/rails/railties/lib/rails_generator/commands.rb +607 -0
  1560. data/rails/vendor/rails/railties/lib/rails_generator/generated_attribute.rb +42 -0
  1561. data/rails/vendor/rails/railties/lib/rails_generator/generators/applications/app/USAGE +9 -0
  1562. data/rails/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +178 -0
  1563. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/USAGE +29 -0
  1564. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
  1565. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/controller.rb +7 -0
  1566. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/functional_test.rb +8 -0
  1567. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
  1568. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/controller/templates/view.html.erb +2 -0
  1569. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/USAGE +8 -0
  1570. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
  1571. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
  1572. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/USAGE +16 -0
  1573. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/mailer_generator.rb +30 -0
  1574. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.erb +3 -0
  1575. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -0
  1576. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/mailer.rb +15 -0
  1577. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +21 -0
  1578. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.erb +3 -0
  1579. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -0
  1580. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/USAGE +29 -0
  1581. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/migration_generator.rb +20 -0
  1582. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/migration/templates/migration.rb +11 -0
  1583. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/USAGE +27 -0
  1584. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +45 -0
  1585. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/fixtures.yml +19 -0
  1586. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/migration.rb +16 -0
  1587. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
  1588. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/model/templates/unit_test.rb +8 -0
  1589. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/USAGE +13 -0
  1590. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
  1591. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
  1592. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/observer/templates/unit_test.rb +8 -0
  1593. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/USAGE +25 -0
  1594. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/plugin_generator.rb +39 -0
  1595. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/MIT-LICENSE +20 -0
  1596. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/README +13 -0
  1597. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
  1598. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
  1599. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
  1600. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
  1601. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
  1602. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
  1603. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
  1604. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
  1605. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
  1606. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/USAGE +23 -0
  1607. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/resource_generator.rb +74 -0
  1608. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
  1609. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/functional_test.rb +8 -0
  1610. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
  1611. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/USAGE +25 -0
  1612. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +93 -0
  1613. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/controller.rb +85 -0
  1614. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +45 -0
  1615. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
  1616. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/layout.html.erb +17 -0
  1617. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/style.css +54 -0
  1618. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_edit.html.erb +18 -0
  1619. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_index.html.erb +24 -0
  1620. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_new.html.erb +17 -0
  1621. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/templates/view_show.html.erb +10 -0
  1622. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/USAGE +10 -0
  1623. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
  1624. data/rails/vendor/rails/railties/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
  1625. data/rails/vendor/rails/railties/lib/rails_generator/lookup.rb +248 -0
  1626. data/rails/vendor/rails/railties/lib/rails_generator/manifest.rb +53 -0
  1627. data/rails/vendor/rails/railties/lib/rails_generator/options.rb +150 -0
  1628. data/rails/vendor/rails/railties/lib/rails_generator/scripts.rb +89 -0
  1629. data/rails/vendor/rails/railties/lib/rails_generator/scripts/destroy.rb +30 -0
  1630. data/rails/vendor/rails/railties/lib/rails_generator/scripts/generate.rb +7 -0
  1631. data/rails/vendor/rails/railties/lib/rails_generator/scripts/update.rb +12 -0
  1632. data/rails/vendor/rails/railties/lib/rails_generator/secret_key_generator.rb +164 -0
  1633. data/rails/vendor/rails/railties/lib/rails_generator/simple_logger.rb +46 -0
  1634. data/rails/vendor/rails/railties/lib/rails_generator/spec.rb +44 -0
  1635. data/rails/vendor/rails/railties/lib/railties_path.rb +1 -0
  1636. data/rails/vendor/rails/railties/lib/ruby_version_check.rb +17 -0
  1637. data/rails/vendor/rails/railties/lib/rubyprof_ext.rb +35 -0
  1638. data/rails/vendor/rails/railties/lib/source_annotation_extractor.rb +102 -0
  1639. data/rails/vendor/rails/railties/lib/tasks/annotations.rake +23 -0
  1640. data/rails/vendor/rails/railties/lib/tasks/databases.rake +387 -0
  1641. data/rails/vendor/rails/railties/lib/tasks/documentation.rake +80 -0
  1642. data/rails/vendor/rails/railties/lib/tasks/framework.rake +114 -0
  1643. data/rails/vendor/rails/railties/lib/tasks/gems.rake +64 -0
  1644. data/rails/vendor/rails/railties/lib/tasks/log.rake +9 -0
  1645. data/rails/vendor/rails/railties/lib/tasks/misc.rake +57 -0
  1646. data/rails/vendor/rails/railties/lib/tasks/rails.rb +8 -0
  1647. data/rails/vendor/rails/railties/lib/tasks/routes.rake +17 -0
  1648. data/rails/vendor/rails/railties/lib/tasks/statistics.rake +18 -0
  1649. data/rails/vendor/rails/railties/lib/tasks/testing.rake +118 -0
  1650. data/rails/vendor/rails/railties/lib/tasks/tmp.rake +37 -0
  1651. data/rails/vendor/rails/railties/lib/test_help.rb +28 -0
  1652. data/rails/vendor/rails/railties/lib/webrick_server.rb +165 -0
  1653. data/rails/vendor/rails/railties/test/abstract_unit.rb +24 -0
  1654. data/rails/vendor/rails/railties/test/boot_test.rb +181 -0
  1655. data/rails/vendor/rails/railties/test/console_app_test.rb +32 -0
  1656. data/rails/vendor/rails/railties/test/fcgi_dispatcher_test.rb +299 -0
  1657. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/about.yml +1 -0
  1658. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/bad_about_yml/init.rb +1 -0
  1659. data/rails/vendor/rails/railties/test/fixtures/about_yml_plugins/plugin_without_about_yml/init.rb +1 -0
  1660. data/rails/vendor/rails/railties/test/fixtures/environment_with_constant.rb +1 -0
  1661. data/rails/vendor/rails/railties/test/fixtures/lib/generators/missing_class/missing_class_generator.rb +0 -0
  1662. data/rails/vendor/rails/railties/test/fixtures/lib/generators/working/working_generator.rb +2 -0
  1663. data/rails/vendor/rails/railties/test/fixtures/plugins/alternate/a/generators/a_generator/a_generator.rb +4 -0
  1664. data/rails/vendor/rails/railties/test/fixtures/plugins/default/plugin_with_no_lib_dir/init.rb +0 -0
  1665. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/about.yml +2 -0
  1666. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/generators/stubby_generator/stubby_generator.rb +4 -0
  1667. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/init.rb +7 -0
  1668. data/rails/vendor/rails/railties/test/fixtures/plugins/default/stubby/lib/stubby_mixin.rb +2 -0
  1669. data/rails/vendor/rails/railties/test/gem_dependency_test.rb +66 -0
  1670. data/rails/vendor/rails/railties/test/generator_lookup_test.rb +40 -0
  1671. data/rails/vendor/rails/railties/test/generators/generator_test_helper.rb +287 -0
  1672. data/rails/vendor/rails/railties/test/generators/rails_controller_generator_test.rb +20 -0
  1673. data/rails/vendor/rails/railties/test/generators/rails_mailer_generator_test.rb +29 -0
  1674. data/rails/vendor/rails/railties/test/generators/rails_model_generator_test.rb +32 -0
  1675. data/rails/vendor/rails/railties/test/generators/rails_resource_generator_test.rb +29 -0
  1676. data/rails/vendor/rails/railties/test/generators/rails_scaffold_generator_test.rb +107 -0
  1677. data/rails/vendor/rails/railties/test/initializer_test.rb +225 -0
  1678. data/rails/vendor/rails/railties/test/mocks/routes.rb +6 -0
  1679. data/rails/vendor/rails/railties/test/plugin_loader_test.rb +142 -0
  1680. data/rails/vendor/rails/railties/test/plugin_locator_test.rb +69 -0
  1681. data/rails/vendor/rails/railties/test/plugin_test.rb +159 -0
  1682. data/rails/vendor/rails/railties/test/plugin_test_helper.rb +29 -0
  1683. data/rails/vendor/rails/railties/test/rails_generator_test.rb +145 -0
  1684. data/rails/vendor/rails/railties/test/rails_info_controller_test.rb +48 -0
  1685. data/rails/vendor/rails/railties/test/rails_info_test.rb +99 -0
  1686. data/rails/vendor/rails/railties/test/secret_key_generation_test.rb +44 -0
  1687. data/templates/colors_template_file.xml +7 -0
  1688. data/templates/defaults_template_file.yml +2 -0
  1689. data/tmp/useless.txt +1 -0
  1690. metadata +2122 -0
@@ -0,0 +1,186 @@
1
+ module ActionView
2
+ module Helpers #:nodoc:
3
+ # Provides methods for converting numbers into formatted strings.
4
+ # Methods are provided for phone numbers, currency, percentage,
5
+ # precision, positional notation, and file size.
6
+ module NumberHelper
7
+ # Formats a +number+ into a US phone number (e.g., (555) 123-9876). You can customize the format
8
+ # in the +options+ hash.
9
+ #
10
+ # ==== Options
11
+ # * <tt>:area_code</tt> - Adds parentheses around the area code.
12
+ # * <tt>:delimiter</tt> - Specifies the delimiter to use (defaults to "-").
13
+ # * <tt>:extension</tt> - Specifies an extension to add to the end of the
14
+ # generated number.
15
+ # * <tt>:country_code</tt> - Sets the country code for the phone number.
16
+ #
17
+ # ==== Examples
18
+ # number_to_phone(1235551234) # => 123-555-1234
19
+ # number_to_phone(1235551234, :area_code => true) # => (123) 555-1234
20
+ # number_to_phone(1235551234, :delimiter => " ") # => 123 555 1234
21
+ # number_to_phone(1235551234, :area_code => true, :extension => 555) # => (123) 555-1234 x 555
22
+ # number_to_phone(1235551234, :country_code => 1) # => +1-123-555-1234
23
+ #
24
+ # number_to_phone(1235551234, :country_code => 1, :extension => 1343, :delimiter => ".")
25
+ # => +1.123.555.1234 x 1343
26
+ def number_to_phone(number, options = {})
27
+ number = number.to_s.strip unless number.nil?
28
+ options = options.stringify_keys
29
+ area_code = options["area_code"] || nil
30
+ delimiter = options["delimiter"] || "-"
31
+ extension = options["extension"].to_s.strip || nil
32
+ country_code = options["country_code"] || nil
33
+
34
+ begin
35
+ str = ""
36
+ str << "+#{country_code}#{delimiter}" unless country_code.blank?
37
+ str << if area_code
38
+ number.gsub!(/([0-9]{1,3})([0-9]{3})([0-9]{4}$)/,"(\\1) \\2#{delimiter}\\3")
39
+ else
40
+ number.gsub!(/([0-9]{1,3})([0-9]{3})([0-9]{4})$/,"\\1#{delimiter}\\2#{delimiter}\\3")
41
+ end
42
+ str << " x #{extension}" unless extension.blank?
43
+ str
44
+ rescue
45
+ number
46
+ end
47
+ end
48
+
49
+ # Formats a +number+ into a currency string (e.g., $13.65). You can customize the format
50
+ # in the +options+ hash.
51
+ #
52
+ # ==== Options
53
+ # * <tt>:precision</tt> - Sets the level of precision (defaults to 2).
54
+ # * <tt>:unit</tt> - Sets the denomination of the currency (defaults to "$").
55
+ # * <tt>:separator</tt> - Sets the separator between the units (defaults to ".").
56
+ # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults to ",").
57
+ # * <tt>:format</tt> - Sets the format of the output string (defaults to "%u%n"). The field types are:
58
+ #
59
+ # %u The currency unit
60
+ # %n The number
61
+ #
62
+ # ==== Examples
63
+ # number_to_currency(1234567890.50) # => $1,234,567,890.50
64
+ # number_to_currency(1234567890.506) # => $1,234,567,890.51
65
+ # number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
66
+ #
67
+ # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "")
68
+ # # => &pound;1234567890,50
69
+ # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "", :format => "%n %u")
70
+ # # => 1234567890,50 &pound;
71
+ def number_to_currency(number, options = {})
72
+ options = options.stringify_keys
73
+ precision = options["precision"] || 2
74
+ unit = options["unit"] || "$"
75
+ separator = precision > 0 ? options["separator"] || "." : ""
76
+ delimiter = options["delimiter"] || ","
77
+ format = options["format"] || "%u%n"
78
+
79
+ begin
80
+ parts = number_with_precision(number, precision).split('.')
81
+ format.gsub(/%n/, number_with_delimiter(parts[0], delimiter) + separator + parts[1].to_s).gsub(/%u/, unit)
82
+ rescue
83
+ number
84
+ end
85
+ end
86
+
87
+ # Formats a +number+ as a percentage string (e.g., 65%). You can customize the
88
+ # format in the +options+ hash.
89
+ #
90
+ # ==== Options
91
+ # * <tt>:precision</tt> - Sets the level of precision (defaults to 3).
92
+ # * <tt>:separator</tt> - Sets the separator between the units (defaults to ".").
93
+ #
94
+ # ==== Examples
95
+ # number_to_percentage(100) # => 100.000%
96
+ # number_to_percentage(100, :precision => 0) # => 100%
97
+ #
98
+ # number_to_percentage(302.24398923423, :precision => 5)
99
+ # # => 302.24399%
100
+ def number_to_percentage(number, options = {})
101
+ options = options.stringify_keys
102
+ precision = options["precision"] || 3
103
+ separator = options["separator"] || "."
104
+
105
+ begin
106
+ number = number_with_precision(number, precision)
107
+ parts = number.split('.')
108
+ if parts.at(1).nil?
109
+ parts[0] + "%"
110
+ else
111
+ parts[0] + separator + parts[1].to_s + "%"
112
+ end
113
+ rescue
114
+ number
115
+ end
116
+ end
117
+
118
+ # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You
119
+ # can customize the format using optional <em>delimiter</em> and <em>separator</em> parameters.
120
+ #
121
+ # ==== Options
122
+ # * <tt>delimiter</tt> - Sets the thousands delimiter (defaults to ",").
123
+ # * <tt>separator</tt> - Sets the separator between the units (defaults to ".").
124
+ #
125
+ # ==== Examples
126
+ # number_with_delimiter(12345678) # => 12,345,678
127
+ # number_with_delimiter(12345678.05) # => 12,345,678.05
128
+ # number_with_delimiter(12345678, ".") # => 12.345.678
129
+ #
130
+ # number_with_delimiter(98765432.98, " ", ",")
131
+ # # => 98 765 432,98
132
+ def number_with_delimiter(number, delimiter=",", separator=".")
133
+ begin
134
+ parts = number.to_s.split('.')
135
+ parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
136
+ parts.join separator
137
+ rescue
138
+ number
139
+ end
140
+ end
141
+
142
+ # Formats a +number+ with the specified level of +precision+ (e.g., 112.32 has a precision of 2). The default
143
+ # level of precision is 3.
144
+ #
145
+ # ==== Examples
146
+ # number_with_precision(111.2345) # => 111.235
147
+ # number_with_precision(111.2345, 2) # => 111.23
148
+ # number_with_precision(13, 5) # => 13.00000
149
+ # number_with_precision(389.32314, 0) # => 389
150
+ def number_with_precision(number, precision=3)
151
+ "%01.#{precision}f" % ((Float(number) * (10 ** precision)).round.to_f / 10 ** precision)
152
+ rescue
153
+ number
154
+ end
155
+
156
+ # Formats the bytes in +size+ into a more understandable representation
157
+ # (e.g., giving it 1500 yields 1.5 KB). This method is useful for
158
+ # reporting file sizes to users. This method returns nil if
159
+ # +size+ cannot be converted into a number. You can change the default
160
+ # precision of 1 using the precision parameter +precision+.
161
+ #
162
+ # ==== Examples
163
+ # number_to_human_size(123) # => 123 Bytes
164
+ # number_to_human_size(1234) # => 1.2 KB
165
+ # number_to_human_size(12345) # => 12.1 KB
166
+ # number_to_human_size(1234567) # => 1.2 MB
167
+ # number_to_human_size(1234567890) # => 1.1 GB
168
+ # number_to_human_size(1234567890123) # => 1.1 TB
169
+ # number_to_human_size(1234567, 2) # => 1.18 MB
170
+ # number_to_human_size(483989, 0) # => 4 MB
171
+ def number_to_human_size(size, precision=1)
172
+ size = Kernel.Float(size)
173
+ case
174
+ when size.to_i == 1; "1 Byte"
175
+ when size < 1.kilobyte; "%d Bytes" % size
176
+ when size < 1.megabyte; "%.#{precision}f KB" % (size / 1.0.kilobyte)
177
+ when size < 1.gigabyte; "%.#{precision}f MB" % (size / 1.0.megabyte)
178
+ when size < 1.terabyte; "%.#{precision}f GB" % (size / 1.0.gigabyte)
179
+ else "%.#{precision}f TB" % (size / 1.0.terabyte)
180
+ end.sub(/([0-9]\.\d*?)0+ /, '\1 ' ).sub(/\. /,' ')
181
+ rescue
182
+ nil
183
+ end
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,1300 @@
1
+ require 'set'
2
+
3
+ module ActionView
4
+ module Helpers
5
+ # Prototype[http://www.prototypejs.org/] is a JavaScript library that provides
6
+ # DOM[http://en.wikipedia.org/wiki/Document_Object_Model] manipulation,
7
+ # Ajax[http://www.adaptivepath.com/publications/essays/archives/000385.php]
8
+ # functionality, and more traditional object-oriented facilities for JavaScript.
9
+ # This module provides a set of helpers to make it more convenient to call
10
+ # functions from Prototype using Rails, including functionality to call remote
11
+ # Rails methods (that is, making a background request to a Rails action) using Ajax.
12
+ # This means that you can call actions in your controllers without
13
+ # reloading the page, but still update certain parts of it using
14
+ # injections into the DOM. A common use case is having a form that adds
15
+ # a new element to a list without reloading the page or updating a shopping
16
+ # cart total when a new item is added.
17
+ #
18
+ # == Usage
19
+ # To be able to use these helpers, you must first include the Prototype
20
+ # JavaScript framework in your pages.
21
+ #
22
+ # javascript_include_tag 'prototype'
23
+ #
24
+ # (See the documentation for
25
+ # ActionView::Helpers::JavaScriptHelper for more information on including
26
+ # this and other JavaScript files in your Rails templates.)
27
+ #
28
+ # Now you're ready to call a remote action either through a link...
29
+ #
30
+ # link_to_remote "Add to cart",
31
+ # :url => { :action => "add", :id => product.id },
32
+ # :update => { :success => "cart", :failure => "error" }
33
+ #
34
+ # ...through a form...
35
+ #
36
+ # <% form_remote_tag :url => '/shipping' do -%>
37
+ # <div><%= submit_tag 'Recalculate Shipping' %></div>
38
+ # <% end -%>
39
+ #
40
+ # ...periodically...
41
+ #
42
+ # periodically_call_remote(:url => 'update', :frequency => '5', :update => 'ticker')
43
+ #
44
+ # ...or through an observer (i.e., a form or field that is observed and calls a remote
45
+ # action when changed).
46
+ #
47
+ # <%= observe_field(:searchbox,
48
+ # :url => { :action => :live_search }),
49
+ # :frequency => 0.5,
50
+ # :update => :hits,
51
+ # :with => 'query'
52
+ # %>
53
+ #
54
+ # As you can see, there are numerous ways to use Prototype's Ajax functions (and actually more than
55
+ # are listed here); check out the documentation for each method to find out more about its usage and options.
56
+ #
57
+ # === Common Options
58
+ # See link_to_remote for documentation of options common to all Ajax
59
+ # helpers; any of the options specified by link_to_remote can be used
60
+ # by the other helpers.
61
+ #
62
+ # == Designing your Rails actions for Ajax
63
+ # When building your action handlers (that is, the Rails actions that receive your background requests), it's
64
+ # important to remember a few things. First, whatever your action would normall return to the browser, it will
65
+ # return to the Ajax call. As such, you typically don't want to render with a layout. This call will cause
66
+ # the layout to be transmitted back to your page, and, if you have a full HTML/CSS, will likely mess a lot of things up.
67
+ # You can turn the layout off on particular actions by doing the following:
68
+ #
69
+ # class SiteController < ActionController::Base
70
+ # layout "standard", :except => [:ajax_method, :more_ajax, :another_ajax]
71
+ # end
72
+ #
73
+ # Optionally, you could do this in the method you wish to lack a layout:
74
+ #
75
+ # render :layout => false
76
+ #
77
+ # You can tell the type of request from within your action using the <tt>request.xhr?</tt> (XmlHttpRequest, the
78
+ # method that Ajax uses to make background requests) method.
79
+ # def name
80
+ # # Is this an XmlHttpRequest request?
81
+ # if (request.xhr?)
82
+ # render :text => @name.to_s
83
+ # else
84
+ # # No? Then render an action.
85
+ # render :action => 'view_attribute', :attr => @name
86
+ # end
87
+ # end
88
+ #
89
+ # The else clause can be left off and the current action will render with full layout and template. An extension
90
+ # to this solution was posted to Ryan Heneise's blog at ArtOfMission["http://www.artofmission.com/"].
91
+ #
92
+ # layout proc{ |c| c.request.xhr? ? false : "application" }
93
+ #
94
+ # Dropping this in your ApplicationController turns the layout off for every request that is an "xhr" request.
95
+ #
96
+ # If you are just returning a little data or don't want to build a template for your output, you may opt to simply
97
+ # render text output, like this:
98
+ #
99
+ # render :text => 'Return this from my method!'
100
+ #
101
+ # Since whatever the method returns is injected into the DOM, this will simply inject some text (or HTML, if you
102
+ # tell it to). This is usually how small updates, such updating a cart total or a file count, are handled.
103
+ #
104
+ # == Updating multiple elements
105
+ # See JavaScriptGenerator for information on updating multiple elements
106
+ # on the page in an Ajax response.
107
+ module PrototypeHelper
108
+ unless const_defined? :CALLBACKS
109
+ CALLBACKS = Set.new([ :uninitialized, :loading, :loaded,
110
+ :interactive, :complete, :failure, :success ] +
111
+ (100..599).to_a)
112
+ AJAX_OPTIONS = Set.new([ :before, :after, :condition, :url,
113
+ :asynchronous, :method, :insertion, :position,
114
+ :form, :with, :update, :script ]).merge(CALLBACKS)
115
+ end
116
+
117
+ # Returns a link to a remote action defined by <tt>options[:url]</tt>
118
+ # (using the url_for format) that's called in the background using
119
+ # XMLHttpRequest. The result of that request can then be inserted into a
120
+ # DOM object whose id can be specified with <tt>options[:update]</tt>.
121
+ # Usually, the result would be a partial prepared by the controller with
122
+ # render :partial.
123
+ #
124
+ # Examples:
125
+ # # Generates: <a href="#" onclick="new Ajax.Updater('posts', '/blog/destroy/3', {asynchronous:true, evalScripts:true});
126
+ # # return false;">Delete this post</a>
127
+ # link_to_remote "Delete this post", :update => "posts",
128
+ # :url => { :action => "destroy", :id => post.id }
129
+ #
130
+ # # Generates: <a href="#" onclick="new Ajax.Updater('emails', '/mail/list_emails', {asynchronous:true, evalScripts:true});
131
+ # # return false;"><img alt="Refresh" src="/images/refresh.png?" /></a>
132
+ # link_to_remote(image_tag("refresh"), :update => "emails",
133
+ # :url => { :action => "list_emails" })
134
+ #
135
+ # You can override the generated HTML options by specifying a hash in
136
+ # <tt>options[:html]</tt>.
137
+ #
138
+ # link_to_remote "Delete this post", :update => "posts",
139
+ # :url => post_url(@post), :method => :delete,
140
+ # :html => { :class => "destructive" }
141
+ #
142
+ # You can also specify a hash for <tt>options[:update]</tt> to allow for
143
+ # easy redirection of output to an other DOM element if a server-side
144
+ # error occurs:
145
+ #
146
+ # Example:
147
+ # # Generates: <a href="#" onclick="new Ajax.Updater({success:'posts',failure:'error'}, '/blog/destroy/5',
148
+ # # {asynchronous:true, evalScripts:true}); return false;">Delete this post</a>
149
+ # link_to_remote "Delete this post",
150
+ # :url => { :action => "destroy", :id => post.id },
151
+ # :update => { :success => "posts", :failure => "error" }
152
+ #
153
+ # Optionally, you can use the <tt>options[:position]</tt> parameter to
154
+ # influence how the target DOM element is updated. It must be one of
155
+ # <tt>:before</tt>, <tt>:top</tt>, <tt>:bottom</tt>, or <tt>:after</tt>.
156
+ #
157
+ # The method used is by default POST. You can also specify GET or you
158
+ # can simulate PUT or DELETE over POST. All specified with <tt>options[:method]</tt>
159
+ #
160
+ # Example:
161
+ # # Generates: <a href="#" onclick="new Ajax.Request('/person/4', {asynchronous:true, evalScripts:true, method:'delete'});
162
+ # # return false;">Destroy</a>
163
+ # link_to_remote "Destroy", :url => person_url(:id => person), :method => :delete
164
+ #
165
+ # By default, these remote requests are processed asynchronous during
166
+ # which various JavaScript callbacks can be triggered (for progress
167
+ # indicators and the likes). All callbacks get access to the
168
+ # <tt>request</tt> object, which holds the underlying XMLHttpRequest.
169
+ #
170
+ # To access the server response, use <tt>request.responseText</tt>, to
171
+ # find out the HTTP status, use <tt>request.status</tt>.
172
+ #
173
+ # Example:
174
+ # # Generates: <a href="#" onclick="new Ajax.Request('/words/undo?n=33', {asynchronous:true, evalScripts:true,
175
+ # # onComplete:function(request){undoRequestCompleted(request)}}); return false;">hello</a>
176
+ # word = 'hello'
177
+ # link_to_remote word,
178
+ # :url => { :action => "undo", :n => word_counter },
179
+ # :complete => "undoRequestCompleted(request)"
180
+ #
181
+ # The callbacks that may be specified are (in order):
182
+ #
183
+ # <tt>:loading</tt>:: Called when the remote document is being
184
+ # loaded with data by the browser.
185
+ # <tt>:loaded</tt>:: Called when the browser has finished loading
186
+ # the remote document.
187
+ # <tt>:interactive</tt>:: Called when the user can interact with the
188
+ # remote document, even though it has not
189
+ # finished loading.
190
+ # <tt>:success</tt>:: Called when the XMLHttpRequest is completed,
191
+ # and the HTTP status code is in the 2XX range.
192
+ # <tt>:failure</tt>:: Called when the XMLHttpRequest is completed,
193
+ # and the HTTP status code is not in the 2XX
194
+ # range.
195
+ # <tt>:complete</tt>:: Called when the XMLHttpRequest is complete
196
+ # (fires after success/failure if they are
197
+ # present).
198
+ #
199
+ # You can further refine <tt>:success</tt> and <tt>:failure</tt> by
200
+ # adding additional callbacks for specific status codes.
201
+ #
202
+ # Example:
203
+ # # Generates: <a href="#" onclick="new Ajax.Request('/testing/action', {asynchronous:true, evalScripts:true,
204
+ # # on404:function(request){alert('Not found...? Wrong URL...?')},
205
+ # # onFailure:function(request){alert('HTTP Error ' + request.status + '!')}}); return false;">hello</a>
206
+ # link_to_remote word,
207
+ # :url => { :action => "action" },
208
+ # 404 => "alert('Not found...? Wrong URL...?')",
209
+ # :failure => "alert('HTTP Error ' + request.status + '!')"
210
+ #
211
+ # A status code callback overrides the success/failure handlers if
212
+ # present.
213
+ #
214
+ # If you for some reason or another need synchronous processing (that'll
215
+ # block the browser while the request is happening), you can specify
216
+ # <tt>options[:type] = :synchronous</tt>.
217
+ #
218
+ # You can customize further browser side call logic by passing in
219
+ # JavaScript code snippets via some optional parameters. In their order
220
+ # of use these are:
221
+ #
222
+ # <tt>:confirm</tt>:: Adds confirmation dialog.
223
+ # <tt>:condition</tt>:: Perform remote request conditionally
224
+ # by this expression. Use this to
225
+ # describe browser-side conditions when
226
+ # request should not be initiated.
227
+ # <tt>:before</tt>:: Called before request is initiated.
228
+ # <tt>:after</tt>:: Called immediately after request was
229
+ # initiated and before <tt>:loading</tt>.
230
+ # <tt>:submit</tt>:: Specifies the DOM element ID that's used
231
+ # as the parent of the form elements. By
232
+ # default this is the current form, but
233
+ # it could just as well be the ID of a
234
+ # table row or any other DOM element.
235
+ # <tt>:with</tt>:: A JavaScript expression specifying
236
+ # the parameters for the XMLHttpRequest.
237
+ # Any expressions should return a valid
238
+ # URL query string.
239
+ #
240
+ # Example:
241
+ #
242
+ # :with => "'name=' + $('name').value"
243
+ #
244
+ # You can generate a link that uses AJAX in the general case, while
245
+ # degrading gracefully to plain link behavior in the absence of
246
+ # JavaScript by setting <tt>html_options[:href]</tt> to an alternate URL.
247
+ # Note the extra curly braces around the <tt>options</tt> hash separate
248
+ # it as the second parameter from <tt>html_options</tt>, the third.
249
+ #
250
+ # Example:
251
+ # link_to_remote "Delete this post",
252
+ # { :update => "posts", :url => { :action => "destroy", :id => post.id } },
253
+ # :href => url_for(:action => "destroy", :id => post.id)
254
+ def link_to_remote(name, options = {}, html_options = nil)
255
+ link_to_function(name, remote_function(options), html_options || options.delete(:html))
256
+ end
257
+
258
+ # Periodically calls the specified url (<tt>options[:url]</tt>) every
259
+ # <tt>options[:frequency]</tt> seconds (default is 10). Usually used to
260
+ # update a specified div (<tt>options[:update]</tt>) with the results
261
+ # of the remote call. The options for specifying the target with <tt>:url</tt>
262
+ # and defining callbacks is the same as link_to_remote.
263
+ # Examples:
264
+ # # Call get_averages and put its results in 'avg' every 10 seconds
265
+ # # Generates:
266
+ # # new PeriodicalExecuter(function() {new Ajax.Updater('avg', '/grades/get_averages',
267
+ # # {asynchronous:true, evalScripts:true})}, 10)
268
+ # periodically_call_remote(:url => { :action => 'get_averages' }, :update => 'avg')
269
+ #
270
+ # # Call invoice every 10 seconds with the id of the customer
271
+ # # If it succeeds, update the invoice DIV; if it fails, update the error DIV
272
+ # # Generates:
273
+ # # new PeriodicalExecuter(function() {new Ajax.Updater({success:'invoice',failure:'error'},
274
+ # # '/testing/invoice/16', {asynchronous:true, evalScripts:true})}, 10)
275
+ # periodically_call_remote(:url => { :action => 'invoice', :id => customer.id },
276
+ # :update => { :success => "invoice", :failure => "error" }
277
+ #
278
+ # # Call update every 20 seconds and update the new_block DIV
279
+ # # Generates:
280
+ # # new PeriodicalExecuter(function() {new Ajax.Updater('news_block', 'update', {asynchronous:true, evalScripts:true})}, 20)
281
+ # periodically_call_remote(:url => 'update', :frequency => '20', :update => 'news_block')
282
+ #
283
+ def periodically_call_remote(options = {})
284
+ frequency = options[:frequency] || 10 # every ten seconds by default
285
+ code = "new PeriodicalExecuter(function() {#{remote_function(options)}}, #{frequency})"
286
+ javascript_tag(code)
287
+ end
288
+
289
+ # Returns a form tag that will submit using XMLHttpRequest in the
290
+ # background instead of the regular reloading POST arrangement. Even
291
+ # though it's using JavaScript to serialize the form elements, the form
292
+ # submission will work just like a regular submission as viewed by the
293
+ # receiving side (all elements available in <tt>params</tt>). The options for
294
+ # specifying the target with <tt>:url</tt> and defining callbacks is the same as
295
+ # +link_to_remote+.
296
+ #
297
+ # A "fall-through" target for browsers that doesn't do JavaScript can be
298
+ # specified with the <tt>:action</tt>/<tt>:method</tt> options on <tt>:html</tt>.
299
+ #
300
+ # Example:
301
+ # # Generates:
302
+ # # <form action="/some/place" method="post" onsubmit="new Ajax.Request('',
303
+ # # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;">
304
+ # form_remote_tag :html => { :action =>
305
+ # url_for(:controller => "some", :action => "place") }
306
+ #
307
+ # The Hash passed to the <tt>:html</tt> key is equivalent to the options (2nd)
308
+ # argument in the FormTagHelper.form_tag method.
309
+ #
310
+ # By default the fall-through action is the same as the one specified in
311
+ # the <tt>:url</tt> (and the default method is <tt>:post</tt>).
312
+ #
313
+ # form_remote_tag also takes a block, like form_tag:
314
+ # # Generates:
315
+ # # <form action="/" method="post" onsubmit="new Ajax.Request('/',
316
+ # # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)});
317
+ # # return false;"> <div><input name="commit" type="submit" value="Save" /></div>
318
+ # # </form>
319
+ # <% form_remote_tag :url => '/posts' do -%>
320
+ # <div><%= submit_tag 'Save' %></div>
321
+ # <% end -%>
322
+ def form_remote_tag(options = {}, &block)
323
+ options[:form] = true
324
+
325
+ options[:html] ||= {}
326
+ options[:html][:onsubmit] =
327
+ (options[:html][:onsubmit] ? options[:html][:onsubmit] + "; " : "") +
328
+ "#{remote_function(options)}; return false;"
329
+
330
+ form_tag(options[:html].delete(:action) || url_for(options[:url]), options[:html], &block)
331
+ end
332
+
333
+ # Creates a form that will submit using XMLHttpRequest in the background
334
+ # instead of the regular reloading POST arrangement and a scope around a
335
+ # specific resource that is used as a base for questioning about
336
+ # values for the fields.
337
+ #
338
+ # === Resource
339
+ #
340
+ # Example:
341
+ # <% remote_form_for(@post) do |f| %>
342
+ # ...
343
+ # <% end %>
344
+ #
345
+ # This will expand to be the same as:
346
+ #
347
+ # <% remote_form_for :post, @post, :url => post_path(@post), :html => { :method => :put, :class => "edit_post", :id => "edit_post_45" } do |f| %>
348
+ # ...
349
+ # <% end %>
350
+ #
351
+ # === Nested Resource
352
+ #
353
+ # Example:
354
+ # <% remote_form_for([@post, @comment]) do |f| %>
355
+ # ...
356
+ # <% end %>
357
+ #
358
+ # This will expand to be the same as:
359
+ #
360
+ # <% remote_form_for :comment, @comment, :url => post_comment_path(@post, @comment), :html => { :method => :put, :class => "edit_comment", :id => "edit_comment_45" } do |f| %>
361
+ # ...
362
+ # <% end %>
363
+ #
364
+ # If you don't need to attach a form to a resource, then check out form_remote_tag.
365
+ #
366
+ # See FormHelper#form_for for additional semantics.
367
+ def remote_form_for(record_or_name_or_array, *args, &proc)
368
+ options = args.extract_options!
369
+
370
+ case record_or_name_or_array
371
+ when String, Symbol
372
+ object_name = record_or_name_or_array
373
+ when Array
374
+ object = record_or_name_or_array.last
375
+ object_name = ActionController::RecordIdentifier.singular_class_name(object)
376
+ apply_form_for_options!(record_or_name_or_array, options)
377
+ args.unshift object
378
+ else
379
+ object = record_or_name_or_array
380
+ object_name = ActionController::RecordIdentifier.singular_class_name(record_or_name_or_array)
381
+ apply_form_for_options!(object, options)
382
+ args.unshift object
383
+ end
384
+
385
+ concat(form_remote_tag(options), proc.binding)
386
+ fields_for(object_name, *(args << options), &proc)
387
+ concat('</form>', proc.binding)
388
+ end
389
+ alias_method :form_remote_for, :remote_form_for
390
+
391
+ # Returns a button input tag with the element name of +name+ and a value (i.e., display text) of +value+
392
+ # that will submit form using XMLHttpRequest in the background instead of a regular POST request that
393
+ # reloads the page.
394
+ #
395
+ # # Create a button that submits to the create action
396
+ # #
397
+ # # Generates: <input name="create_btn" onclick="new Ajax.Request('/testing/create',
398
+ # # {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form)});
399
+ # # return false;" type="button" value="Create" />
400
+ # <%= submit_to_remote 'create_btn', 'Create', :url => { :action => 'create' } %>
401
+ #
402
+ # # Submit to the remote action update and update the DIV succeed or fail based
403
+ # # on the success or failure of the request
404
+ # #
405
+ # # Generates: <input name="update_btn" onclick="new Ajax.Updater({success:'succeed',failure:'fail'},
406
+ # # '/testing/update', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this.form)});
407
+ # # return false;" type="button" value="Update" />
408
+ # <%= submit_to_remote 'update_btn', 'Update', :url => { :action => 'update' },
409
+ # :update => { :success => "succeed", :failure => "fail" }
410
+ #
411
+ # <tt>options</tt> argument is the same as in form_remote_tag.
412
+ def submit_to_remote(name, value, options = {})
413
+ options[:with] ||= 'Form.serialize(this.form)'
414
+
415
+ options[:html] ||= {}
416
+ options[:html][:type] = 'button'
417
+ options[:html][:onclick] = "#{remote_function(options)}; return false;"
418
+ options[:html][:name] = name
419
+ options[:html][:value] = value
420
+
421
+ tag("input", options[:html], false)
422
+ end
423
+
424
+ # Returns '<tt>eval(request.responseText)</tt>' which is the JavaScript function
425
+ # that +form_remote_tag+ can call in <tt>:complete</tt> to evaluate a multiple
426
+ # update return document using +update_element_function+ calls.
427
+ def evaluate_remote_response
428
+ "eval(request.responseText)"
429
+ end
430
+
431
+ # Returns the JavaScript needed for a remote function.
432
+ # Takes the same arguments as link_to_remote.
433
+ #
434
+ # Example:
435
+ # # Generates: <select id="options" onchange="new Ajax.Updater('options',
436
+ # # '/testing/update_options', {asynchronous:true, evalScripts:true})">
437
+ # <select id="options" onchange="<%= remote_function(:update => "options",
438
+ # :url => { :action => :update_options }) %>">
439
+ # <option value="0">Hello</option>
440
+ # <option value="1">World</option>
441
+ # </select>
442
+ def remote_function(options)
443
+ javascript_options = options_for_ajax(options)
444
+
445
+ update = ''
446
+ if options[:update] && options[:update].is_a?(Hash)
447
+ update = []
448
+ update << "success:'#{options[:update][:success]}'" if options[:update][:success]
449
+ update << "failure:'#{options[:update][:failure]}'" if options[:update][:failure]
450
+ update = '{' + update.join(',') + '}'
451
+ elsif options[:update]
452
+ update << "'#{options[:update]}'"
453
+ end
454
+
455
+ function = update.empty? ?
456
+ "new Ajax.Request(" :
457
+ "new Ajax.Updater(#{update}, "
458
+
459
+ url_options = options[:url]
460
+ url_options = url_options.merge(:escape => false) if url_options.is_a?(Hash)
461
+ function << "'#{escape_javascript(url_for(url_options))}'"
462
+ function << ", #{javascript_options})"
463
+
464
+ function = "#{options[:before]}; #{function}" if options[:before]
465
+ function = "#{function}; #{options[:after]}" if options[:after]
466
+ function = "if (#{options[:condition]}) { #{function}; }" if options[:condition]
467
+ function = "if (confirm('#{escape_javascript(options[:confirm])}')) { #{function}; }" if options[:confirm]
468
+
469
+ return function
470
+ end
471
+
472
+ # Observes the field with the DOM ID specified by +field_id+ and calls a
473
+ # callback when its contents have changed. The default callback is an
474
+ # Ajax call. By default the value of the observed field is sent as a
475
+ # parameter with the Ajax call.
476
+ #
477
+ # Example:
478
+ # # Generates: new Form.Element.Observer('suggest', 0.25, function(element, value) {new Ajax.Updater('suggest',
479
+ # # '/testing/find_suggestion', {asynchronous:true, evalScripts:true, parameters:'q=' + value})})
480
+ # <%= observe_field :suggest, :url => { :action => :find_suggestion },
481
+ # :frequency => 0.25,
482
+ # :update => :suggest,
483
+ # :with => 'q'
484
+ # %>
485
+ #
486
+ # Required +options+ are either of:
487
+ # <tt>:url</tt>:: +url_for+-style options for the action to call
488
+ # when the field has changed.
489
+ # <tt>:function</tt>:: Instead of making a remote call to a URL, you
490
+ # can specify javascript code to be called instead.
491
+ # Note that the value of this option is used as the
492
+ # *body* of the javascript function, a function definition
493
+ # with parameters named element and value will be generated for you
494
+ # for example:
495
+ # observe_field("glass", :frequency => 1, :function => "alert('Element changed')")
496
+ # will generate:
497
+ # new Form.Element.Observer('glass', 1, function(element, value) {alert('Element changed')})
498
+ # The element parameter is the DOM element being observed, and the value is its value at the
499
+ # time the observer is triggered.
500
+ #
501
+ # Additional options are:
502
+ # <tt>:frequency</tt>:: The frequency (in seconds) at which changes to
503
+ # this field will be detected. Not setting this
504
+ # option at all or to a value equal to or less than
505
+ # zero will use event based observation instead of
506
+ # time based observation.
507
+ # <tt>:update</tt>:: Specifies the DOM ID of the element whose
508
+ # innerHTML should be updated with the
509
+ # XMLHttpRequest response text.
510
+ # <tt>:with</tt>:: A JavaScript expression specifying the parameters
511
+ # for the XMLHttpRequest. The default is to send the
512
+ # key and value of the observed field. Any custom
513
+ # expressions should return a valid URL query string.
514
+ # The value of the field is stored in the JavaScript
515
+ # variable +value+.
516
+ #
517
+ # Examples
518
+ #
519
+ # :with => "'my_custom_key=' + value"
520
+ # :with => "'person[name]=' + prompt('New name')"
521
+ # :with => "Form.Element.serialize('other-field')"
522
+ #
523
+ # Finally
524
+ # :with => 'name'
525
+ # is shorthand for
526
+ # :with => "'name=' + value"
527
+ # This essentially just changes the key of the parameter.
528
+ # <tt>:on</tt>:: Specifies which event handler to observe. By default,
529
+ # it's set to "changed" for text fields and areas and
530
+ # "click" for radio buttons and checkboxes. With this,
531
+ # you can specify it instead to be "blur" or "focus" or
532
+ # any other event.
533
+ #
534
+ # Additionally, you may specify any of the options documented in the
535
+ # <em>Common options</em> section at the top of this document.
536
+ #
537
+ # Example:
538
+ #
539
+ # # Sends params: {:title => 'Title of the book'} when the book_title input
540
+ # # field is changed.
541
+ # observe_field 'book_title',
542
+ # :url => 'http://example.com/books/edit/1',
543
+ # :with => 'title'
544
+ #
545
+ # # Sends params: {:book_title => 'Title of the book'} when the focus leaves
546
+ # # the input field.
547
+ # observe_field 'book_title',
548
+ # :url => 'http://example.com/books/edit/1',
549
+ # :on => 'blur'
550
+ #
551
+ def observe_field(field_id, options = {})
552
+ if options[:frequency] && options[:frequency] > 0
553
+ build_observer('Form.Element.Observer', field_id, options)
554
+ else
555
+ build_observer('Form.Element.EventObserver', field_id, options)
556
+ end
557
+ end
558
+
559
+ # Observes the form with the DOM ID specified by +form_id+ and calls a
560
+ # callback when its contents have changed. The default callback is an
561
+ # Ajax call. By default all fields of the observed field are sent as
562
+ # parameters with the Ajax call.
563
+ #
564
+ # The +options+ for +observe_form+ are the same as the options for
565
+ # +observe_field+. The JavaScript variable +value+ available to the
566
+ # <tt>:with</tt> option is set to the serialized form by default.
567
+ def observe_form(form_id, options = {})
568
+ if options[:frequency]
569
+ build_observer('Form.Observer', form_id, options)
570
+ else
571
+ build_observer('Form.EventObserver', form_id, options)
572
+ end
573
+ end
574
+
575
+ # All the methods were moved to GeneratorMethods so that
576
+ # #include_helpers_from_context has nothing to overwrite.
577
+ class JavaScriptGenerator #:nodoc:
578
+ def initialize(context, &block) #:nodoc:
579
+ @context, @lines = context, []
580
+ include_helpers_from_context
581
+ @context.instance_exec(self, &block)
582
+ end
583
+
584
+ private
585
+ def include_helpers_from_context
586
+ @context.extended_by.each do |mod|
587
+ extend mod unless mod.name =~ /^ActionView::Helpers/
588
+ end
589
+ extend GeneratorMethods
590
+ end
591
+
592
+ # JavaScriptGenerator generates blocks of JavaScript code that allow you
593
+ # to change the content and presentation of multiple DOM elements. Use
594
+ # this in your Ajax response bodies, either in a <script> tag or as plain
595
+ # JavaScript sent with a Content-type of "text/javascript".
596
+ #
597
+ # Create new instances with PrototypeHelper#update_page or with
598
+ # ActionController::Base#render, then call +insert_html+, +replace_html+,
599
+ # +remove+, +show+, +hide+, +visual_effect+, or any other of the built-in
600
+ # methods on the yielded generator in any order you like to modify the
601
+ # content and appearance of the current page.
602
+ #
603
+ # Example:
604
+ #
605
+ # # Generates:
606
+ # # new Insertion.Bottom("list", "<li>Some item</li>");
607
+ # # new Effect.Highlight("list");
608
+ # # ["status-indicator", "cancel-link"].each(Element.hide);
609
+ # update_page do |page|
610
+ # page.insert_html :bottom, 'list', "<li>#{@item.name}</li>"
611
+ # page.visual_effect :highlight, 'list'
612
+ # page.hide 'status-indicator', 'cancel-link'
613
+ # end
614
+ #
615
+ #
616
+ # Helper methods can be used in conjunction with JavaScriptGenerator.
617
+ # When a helper method is called inside an update block on the +page+
618
+ # object, that method will also have access to a +page+ object.
619
+ #
620
+ # Example:
621
+ #
622
+ # module ApplicationHelper
623
+ # def update_time
624
+ # page.replace_html 'time', Time.now.to_s(:db)
625
+ # page.visual_effect :highlight, 'time'
626
+ # end
627
+ # end
628
+ #
629
+ # # Controller action
630
+ # def poll
631
+ # render(:update) { |page| page.update_time }
632
+ # end
633
+ #
634
+ # Calls to JavaScriptGenerator not matching a helper method below
635
+ # generate a proxy to the JavaScript Class named by the method called.
636
+ #
637
+ # Examples:
638
+ #
639
+ # # Generates:
640
+ # # Foo.init();
641
+ # update_page do |page|
642
+ # page.foo.init
643
+ # end
644
+ #
645
+ # # Generates:
646
+ # # Event.observe('one', 'click', function () {
647
+ # # $('two').show();
648
+ # # });
649
+ # update_page do |page|
650
+ # page.event.observe('one', 'click') do |p|
651
+ # p[:two].show
652
+ # end
653
+ # end
654
+ #
655
+ # You can also use PrototypeHelper#update_page_tag instead of
656
+ # PrototypeHelper#update_page to wrap the generated JavaScript in a
657
+ # <script> tag.
658
+ module GeneratorMethods
659
+ def to_s #:nodoc:
660
+ returning javascript = @lines * $/ do
661
+ if ActionView::Base.debug_rjs
662
+ source = javascript.dup
663
+ javascript.replace "try {\n#{source}\n} catch (e) "
664
+ javascript << "{ alert('RJS error:\\n\\n' + e.toString()); alert('#{source.gsub('\\','\0\0').gsub(/\r\n|\n|\r/, "\\n").gsub(/["']/) { |m| "\\#{m}" }}'); throw e }"
665
+ end
666
+ end
667
+ end
668
+
669
+ # Returns a element reference by finding it through +id+ in the DOM. This element can then be
670
+ # used for further method calls. Examples:
671
+ #
672
+ # page['blank_slate'] # => $('blank_slate');
673
+ # page['blank_slate'].show # => $('blank_slate').show();
674
+ # page['blank_slate'].show('first').up # => $('blank_slate').show('first').up();
675
+ #
676
+ # You can also pass in a record, which will use ActionController::RecordIdentifier.dom_id to lookup
677
+ # the correct id:
678
+ #
679
+ # page[@post] # => $('post_45')
680
+ # page[Post.new] # => $('new_post')
681
+ def [](id)
682
+ case id
683
+ when String, Symbol, NilClass
684
+ JavaScriptElementProxy.new(self, id)
685
+ else
686
+ JavaScriptElementProxy.new(self, ActionController::RecordIdentifier.dom_id(id))
687
+ end
688
+ end
689
+
690
+ # Returns an object whose <tt>to_json</tt> evaluates to +code+. Use this to pass a literal JavaScript
691
+ # expression as an argument to another JavaScriptGenerator method.
692
+ def literal(code)
693
+ ActiveSupport::JSON::Variable.new(code.to_s)
694
+ end
695
+
696
+ # Returns a collection reference by finding it through a CSS +pattern+ in the DOM. This collection can then be
697
+ # used for further method calls. Examples:
698
+ #
699
+ # page.select('p') # => $$('p');
700
+ # page.select('p.welcome b').first # => $$('p.welcome b').first();
701
+ # page.select('p.welcome b').first.hide # => $$('p.welcome b').first().hide();
702
+ #
703
+ # You can also use prototype enumerations with the collection. Observe:
704
+ #
705
+ # # Generates: $$('#items li').each(function(value) { value.hide(); });
706
+ # page.select('#items li').each do |value|
707
+ # value.hide
708
+ # end
709
+ #
710
+ # Though you can call the block param anything you want, they are always rendered in the
711
+ # javascript as 'value, index.' Other enumerations, like collect() return the last statement:
712
+ #
713
+ # # Generates: var hidden = $$('#items li').collect(function(value, index) { return value.hide(); });
714
+ # page.select('#items li').collect('hidden') do |item|
715
+ # item.hide
716
+ # end
717
+ #
718
+ def select(pattern)
719
+ JavaScriptElementCollectionProxy.new(self, pattern)
720
+ end
721
+
722
+ # Inserts HTML at the specified +position+ relative to the DOM element
723
+ # identified by the given +id+.
724
+ #
725
+ # +position+ may be one of:
726
+ #
727
+ # <tt>:top</tt>:: HTML is inserted inside the element, before the
728
+ # element's existing content.
729
+ # <tt>:bottom</tt>:: HTML is inserted inside the element, after the
730
+ # element's existing content.
731
+ # <tt>:before</tt>:: HTML is inserted immediately preceding the element.
732
+ # <tt>:after</tt>:: HTML is inserted immediately following the element.
733
+ #
734
+ # +options_for_render+ may be either a string of HTML to insert, or a hash
735
+ # of options to be passed to ActionView::Base#render. For example:
736
+ #
737
+ # # Insert the rendered 'navigation' partial just before the DOM
738
+ # # element with ID 'content'.
739
+ # # Generates: new Insertion.Before("content", "-- Contents of 'navigation' partial --");
740
+ # page.insert_html :before, 'content', :partial => 'navigation'
741
+ #
742
+ # # Add a list item to the bottom of the <ul> with ID 'list'.
743
+ # # Generates: new Insertion.Bottom("list", "<li>Last item</li>");
744
+ # page.insert_html :bottom, 'list', '<li>Last item</li>'
745
+ #
746
+ def insert_html(position, id, *options_for_render)
747
+ insertion = position.to_s.camelize
748
+ call "new Insertion.#{insertion}", id, render(*options_for_render)
749
+ end
750
+
751
+ # Replaces the inner HTML of the DOM element with the given +id+.
752
+ #
753
+ # +options_for_render+ may be either a string of HTML to insert, or a hash
754
+ # of options to be passed to ActionView::Base#render. For example:
755
+ #
756
+ # # Replace the HTML of the DOM element having ID 'person-45' with the
757
+ # # 'person' partial for the appropriate object.
758
+ # # Generates: Element.update("person-45", "-- Contents of 'person' partial --");
759
+ # page.replace_html 'person-45', :partial => 'person', :object => @person
760
+ #
761
+ def replace_html(id, *options_for_render)
762
+ call 'Element.update', id, render(*options_for_render)
763
+ end
764
+
765
+ # Replaces the "outer HTML" (i.e., the entire element, not just its
766
+ # contents) of the DOM element with the given +id+.
767
+ #
768
+ # +options_for_render+ may be either a string of HTML to insert, or a hash
769
+ # of options to be passed to ActionView::Base#render. For example:
770
+ #
771
+ # # Replace the DOM element having ID 'person-45' with the
772
+ # # 'person' partial for the appropriate object.
773
+ # page.replace 'person-45', :partial => 'person', :object => @person
774
+ #
775
+ # This allows the same partial that is used for the +insert_html+ to
776
+ # be also used for the input to +replace+ without resorting to
777
+ # the use of wrapper elements.
778
+ #
779
+ # Examples:
780
+ #
781
+ # <div id="people">
782
+ # <%= render :partial => 'person', :collection => @people %>
783
+ # </div>
784
+ #
785
+ # # Insert a new person
786
+ # #
787
+ # # Generates: new Insertion.Bottom({object: "Matz", partial: "person"}, "");
788
+ # page.insert_html :bottom, :partial => 'person', :object => @person
789
+ #
790
+ # # Replace an existing person
791
+ #
792
+ # # Generates: Element.replace("person_45", "-- Contents of partial --");
793
+ # page.replace 'person_45', :partial => 'person', :object => @person
794
+ #
795
+ def replace(id, *options_for_render)
796
+ call 'Element.replace', id, render(*options_for_render)
797
+ end
798
+
799
+ # Removes the DOM elements with the given +ids+ from the page.
800
+ #
801
+ # Example:
802
+ #
803
+ # # Remove a few people
804
+ # # Generates: ["person_23", "person_9", "person_2"].each(Element.remove);
805
+ # page.remove 'person_23', 'person_9', 'person_2'
806
+ #
807
+ def remove(*ids)
808
+ loop_on_multiple_args 'Element.remove', ids
809
+ end
810
+
811
+ # Shows hidden DOM elements with the given +ids+.
812
+ #
813
+ # Example:
814
+ #
815
+ # # Show a few people
816
+ # # Generates: ["person_6", "person_13", "person_223"].each(Element.show);
817
+ # page.show 'person_6', 'person_13', 'person_223'
818
+ #
819
+ def show(*ids)
820
+ loop_on_multiple_args 'Element.show', ids
821
+ end
822
+
823
+ # Hides the visible DOM elements with the given +ids+.
824
+ #
825
+ # Example:
826
+ #
827
+ # # Hide a few people
828
+ # # Generates: ["person_29", "person_9", "person_0"].each(Element.hide);
829
+ # page.hide 'person_29', 'person_9', 'person_0'
830
+ #
831
+ def hide(*ids)
832
+ loop_on_multiple_args 'Element.hide', ids
833
+ end
834
+
835
+ # Toggles the visibility of the DOM elements with the given +ids+.
836
+ # Example:
837
+ #
838
+ # # Show a few people
839
+ # # Generates: ["person_14", "person_12", "person_23"].each(Element.toggle);
840
+ # page.toggle 'person_14', 'person_12', 'person_23' # Hides the elements
841
+ # page.toggle 'person_14', 'person_12', 'person_23' # Shows the previously hidden elements
842
+ #
843
+ def toggle(*ids)
844
+ loop_on_multiple_args 'Element.toggle', ids
845
+ end
846
+
847
+ # Displays an alert dialog with the given +message+.
848
+ #
849
+ # Example:
850
+ #
851
+ # # Generates: alert('This message is from Rails!')
852
+ # page.alert('This message is from Rails!')
853
+ def alert(message)
854
+ call 'alert', message
855
+ end
856
+
857
+ # Redirects the browser to the given +location+ using JavaScript, in the same form as +url_for+.
858
+ #
859
+ # Examples:
860
+ #
861
+ # # Generates: window.location.href = "/mycontroller";
862
+ # page.redirect_to(:action => 'index')
863
+ #
864
+ # # Generates: window.location.href = "/account/signup";
865
+ # page.redirect_to(:controller => 'account', :action => 'signup')
866
+ def redirect_to(location)
867
+ url = location.is_a?(String) ? location : @context.url_for(location)
868
+ record "window.location.href = #{url.inspect}"
869
+ end
870
+
871
+ # Calls the JavaScript +function+, optionally with the given +arguments+.
872
+ #
873
+ # If a block is given, the block will be passed to a new JavaScriptGenerator;
874
+ # the resulting JavaScript code will then be wrapped inside <tt>function() { ... }</tt>
875
+ # and passed as the called function's final argument.
876
+ #
877
+ # Examples:
878
+ #
879
+ # # Generates: Element.replace(my_element, "My content to replace with.")
880
+ # page.call 'Element.replace', 'my_element', "My content to replace with."
881
+ #
882
+ # # Generates: alert('My message!')
883
+ # page.call 'alert', 'My message!'
884
+ #
885
+ # # Generates:
886
+ # # my_method(function() {
887
+ # # $("one").show();
888
+ # # $("two").hide();
889
+ # # });
890
+ # page.call(:my_method) do |p|
891
+ # p[:one].show
892
+ # p[:two].hide
893
+ # end
894
+ def call(function, *arguments, &block)
895
+ record "#{function}(#{arguments_for_call(arguments, block)})"
896
+ end
897
+
898
+ # Assigns the JavaScript +variable+ the given +value+.
899
+ #
900
+ # Examples:
901
+ #
902
+ # # Generates: my_string = "This is mine!";
903
+ # page.assign 'my_string', 'This is mine!'
904
+ #
905
+ # # Generates: record_count = 33;
906
+ # page.assign 'record_count', 33
907
+ #
908
+ # # Generates: tabulated_total = 47
909
+ # page.assign 'tabulated_total', @total_from_cart
910
+ #
911
+ def assign(variable, value)
912
+ record "#{variable} = #{javascript_object_for(value)}"
913
+ end
914
+
915
+ # Writes raw JavaScript to the page.
916
+ #
917
+ # Example:
918
+ #
919
+ # page << "alert('JavaScript with Prototype.');"
920
+ def <<(javascript)
921
+ @lines << javascript
922
+ end
923
+
924
+ # Executes the content of the block after a delay of +seconds+. Example:
925
+ #
926
+ # # Generates:
927
+ # # setTimeout(function() {
928
+ # # ;
929
+ # # new Effect.Fade("notice",{});
930
+ # # }, 20000);
931
+ # page.delay(20) do
932
+ # page.visual_effect :fade, 'notice'
933
+ # end
934
+ def delay(seconds = 1)
935
+ record "setTimeout(function() {\n\n"
936
+ yield
937
+ record "}, #{(seconds * 1000).to_i})"
938
+ end
939
+
940
+ # Starts a script.aculo.us visual effect. See
941
+ # ActionView::Helpers::ScriptaculousHelper for more information.
942
+ def visual_effect(name, id = nil, options = {})
943
+ record @context.send(:visual_effect, name, id, options)
944
+ end
945
+
946
+ # Creates a script.aculo.us sortable element. Useful
947
+ # to recreate sortable elements after items get added
948
+ # or deleted.
949
+ # See ActionView::Helpers::ScriptaculousHelper for more information.
950
+ def sortable(id, options = {})
951
+ record @context.send(:sortable_element_js, id, options)
952
+ end
953
+
954
+ # Creates a script.aculo.us draggable element.
955
+ # See ActionView::Helpers::ScriptaculousHelper for more information.
956
+ def draggable(id, options = {})
957
+ record @context.send(:draggable_element_js, id, options)
958
+ end
959
+
960
+ # Creates a script.aculo.us drop receiving element.
961
+ # See ActionView::Helpers::ScriptaculousHelper for more information.
962
+ def drop_receiving(id, options = {})
963
+ record @context.send(:drop_receiving_element_js, id, options)
964
+ end
965
+
966
+ private
967
+ def loop_on_multiple_args(method, ids)
968
+ record(ids.size>1 ?
969
+ "#{javascript_object_for(ids)}.each(#{method})" :
970
+ "#{method}(#{ids.first.to_json})")
971
+ end
972
+
973
+ def page
974
+ self
975
+ end
976
+
977
+ def record(line)
978
+ returning line = "#{line.to_s.chomp.gsub(/\;\z/, '')};" do
979
+ self << line
980
+ end
981
+ end
982
+
983
+ def render(*options_for_render)
984
+ old_format = @context && @context.template_format
985
+ @context.template_format = :html if @context
986
+ Hash === options_for_render.first ?
987
+ @context.render(*options_for_render) :
988
+ options_for_render.first.to_s
989
+ ensure
990
+ @context.template_format = old_format if @context
991
+ end
992
+
993
+ def javascript_object_for(object)
994
+ object.respond_to?(:to_json) ? object.to_json : object.inspect
995
+ end
996
+
997
+ def arguments_for_call(arguments, block = nil)
998
+ arguments << block_to_function(block) if block
999
+ arguments.map { |argument| javascript_object_for(argument) }.join ', '
1000
+ end
1001
+
1002
+ def block_to_function(block)
1003
+ generator = self.class.new(@context, &block)
1004
+ literal("function() { #{generator.to_s} }")
1005
+ end
1006
+
1007
+ def method_missing(method, *arguments)
1008
+ JavaScriptProxy.new(self, method.to_s.camelize)
1009
+ end
1010
+ end
1011
+ end
1012
+
1013
+ # Yields a JavaScriptGenerator and returns the generated JavaScript code.
1014
+ # Use this to update multiple elements on a page in an Ajax response.
1015
+ # See JavaScriptGenerator for more information.
1016
+ #
1017
+ # Example:
1018
+ #
1019
+ # update_page do |page|
1020
+ # page.hide 'spinner'
1021
+ # end
1022
+ def update_page(&block)
1023
+ JavaScriptGenerator.new(@template, &block).to_s
1024
+ end
1025
+
1026
+ # Works like update_page but wraps the generated JavaScript in a <script>
1027
+ # tag. Use this to include generated JavaScript in an ERb template.
1028
+ # See JavaScriptGenerator for more information.
1029
+ #
1030
+ # +html_options+ may be a hash of <script> attributes to be passed
1031
+ # to ActionView::Helpers::JavaScriptHelper#javascript_tag.
1032
+ def update_page_tag(html_options = {}, &block)
1033
+ javascript_tag update_page(&block), html_options
1034
+ end
1035
+
1036
+ protected
1037
+ def options_for_ajax(options)
1038
+ js_options = build_callbacks(options)
1039
+
1040
+ js_options['asynchronous'] = options[:type] != :synchronous
1041
+ js_options['method'] = method_option_to_s(options[:method]) if options[:method]
1042
+ js_options['insertion'] = "Insertion.#{options[:position].to_s.camelize}" if options[:position]
1043
+ js_options['evalScripts'] = options[:script].nil? || options[:script]
1044
+
1045
+ if options[:form]
1046
+ js_options['parameters'] = 'Form.serialize(this)'
1047
+ elsif options[:submit]
1048
+ js_options['parameters'] = "Form.serialize('#{options[:submit]}')"
1049
+ elsif options[:with]
1050
+ js_options['parameters'] = options[:with]
1051
+ end
1052
+
1053
+ if protect_against_forgery? && !options[:form]
1054
+ if js_options['parameters']
1055
+ js_options['parameters'] << " + '&"
1056
+ else
1057
+ js_options['parameters'] = "'"
1058
+ end
1059
+ js_options['parameters'] << "#{request_forgery_protection_token}=' + encodeURIComponent('#{escape_javascript form_authenticity_token}')"
1060
+ end
1061
+
1062
+ options_for_javascript(js_options)
1063
+ end
1064
+
1065
+ def method_option_to_s(method)
1066
+ (method.is_a?(String) and !method.index("'").nil?) ? method : "'#{method}'"
1067
+ end
1068
+
1069
+ def build_observer(klass, name, options = {})
1070
+ if options[:with] && (options[:with] !~ /[\{=(.]/)
1071
+ options[:with] = "'#{options[:with]}=' + encodeURIComponent(value)"
1072
+ else
1073
+ options[:with] ||= 'value' unless options[:function]
1074
+ end
1075
+
1076
+ callback = options[:function] || remote_function(options)
1077
+ javascript = "new #{klass}('#{name}', "
1078
+ javascript << "#{options[:frequency]}, " if options[:frequency]
1079
+ javascript << "function(element, value) {"
1080
+ javascript << "#{callback}}"
1081
+ javascript << ", '#{options[:on]}'" if options[:on]
1082
+ javascript << ")"
1083
+ javascript_tag(javascript)
1084
+ end
1085
+
1086
+ def build_callbacks(options)
1087
+ callbacks = {}
1088
+ options.each do |callback, code|
1089
+ if CALLBACKS.include?(callback)
1090
+ name = 'on' + callback.to_s.capitalize
1091
+ callbacks[name] = "function(request){#{code}}"
1092
+ end
1093
+ end
1094
+ callbacks
1095
+ end
1096
+ end
1097
+
1098
+ # Converts chained method calls on DOM proxy elements into JavaScript chains
1099
+ class JavaScriptProxy < ActiveSupport::BasicObject #:nodoc:
1100
+
1101
+ def initialize(generator, root = nil)
1102
+ @generator = generator
1103
+ @generator << root if root
1104
+ end
1105
+
1106
+ private
1107
+ def method_missing(method, *arguments, &block)
1108
+ if method.to_s =~ /(.*)=$/
1109
+ assign($1, arguments.first)
1110
+ else
1111
+ call("#{method.to_s.camelize(:lower)}", *arguments, &block)
1112
+ end
1113
+ end
1114
+
1115
+ def call(function, *arguments, &block)
1116
+ append_to_function_chain!("#{function}(#{@generator.send(:arguments_for_call, arguments, block)})")
1117
+ self
1118
+ end
1119
+
1120
+ def assign(variable, value)
1121
+ append_to_function_chain!("#{variable} = #{@generator.send(:javascript_object_for, value)}")
1122
+ end
1123
+
1124
+ def function_chain
1125
+ @function_chain ||= @generator.instance_variable_get(:@lines)
1126
+ end
1127
+
1128
+ def append_to_function_chain!(call)
1129
+ function_chain[-1].chomp!(';')
1130
+ function_chain[-1] += ".#{call};"
1131
+ end
1132
+ end
1133
+
1134
+ class JavaScriptElementProxy < JavaScriptProxy #:nodoc:
1135
+ def initialize(generator, id)
1136
+ @id = id
1137
+ super(generator, "$(#{id.to_json})")
1138
+ end
1139
+
1140
+ # Allows access of element attributes through +attribute+. Examples:
1141
+ #
1142
+ # page['foo']['style'] # => $('foo').style;
1143
+ # page['foo']['style']['color'] # => $('blank_slate').style.color;
1144
+ # page['foo']['style']['color'] = 'red' # => $('blank_slate').style.color = 'red';
1145
+ # page['foo']['style'].color = 'red' # => $('blank_slate').style.color = 'red';
1146
+ def [](attribute)
1147
+ append_to_function_chain!(attribute)
1148
+ self
1149
+ end
1150
+
1151
+ def []=(variable, value)
1152
+ assign(variable, value)
1153
+ end
1154
+
1155
+ def replace_html(*options_for_render)
1156
+ call 'update', @generator.send(:render, *options_for_render)
1157
+ end
1158
+
1159
+ def replace(*options_for_render)
1160
+ call 'replace', @generator.send(:render, *options_for_render)
1161
+ end
1162
+
1163
+ def reload(options_for_replace = {})
1164
+ replace(options_for_replace.merge({ :partial => @id.to_s }))
1165
+ end
1166
+
1167
+ end
1168
+
1169
+ class JavaScriptVariableProxy < JavaScriptProxy #:nodoc:
1170
+ def initialize(generator, variable)
1171
+ @variable = variable
1172
+ @empty = true # only record lines if we have to. gets rid of unnecessary linebreaks
1173
+ super(generator)
1174
+ end
1175
+
1176
+ # The JSON Encoder calls this to check for the +to_json+ method
1177
+ # Since it's a blank slate object, I suppose it responds to anything.
1178
+ def respond_to?(method)
1179
+ true
1180
+ end
1181
+
1182
+ def to_json(options = nil)
1183
+ @variable
1184
+ end
1185
+
1186
+ private
1187
+ def append_to_function_chain!(call)
1188
+ @generator << @variable if @empty
1189
+ @empty = false
1190
+ super
1191
+ end
1192
+ end
1193
+
1194
+ class JavaScriptCollectionProxy < JavaScriptProxy #:nodoc:
1195
+ ENUMERABLE_METHODS_WITH_RETURN = [:all, :any, :collect, :map, :detect, :find, :find_all, :select, :max, :min, :partition, :reject, :sort_by, :in_groups_of, :each_slice] unless defined? ENUMERABLE_METHODS_WITH_RETURN
1196
+ ENUMERABLE_METHODS = ENUMERABLE_METHODS_WITH_RETURN + [:each] unless defined? ENUMERABLE_METHODS
1197
+ attr_reader :generator
1198
+ delegate :arguments_for_call, :to => :generator
1199
+
1200
+ def initialize(generator, pattern)
1201
+ super(generator, @pattern = pattern)
1202
+ end
1203
+
1204
+ def each_slice(variable, number, &block)
1205
+ if block
1206
+ enumerate :eachSlice, :variable => variable, :method_args => [number], :yield_args => %w(value index), :return => true, &block
1207
+ else
1208
+ add_variable_assignment!(variable)
1209
+ append_enumerable_function!("eachSlice(#{number.to_json});")
1210
+ end
1211
+ end
1212
+
1213
+ def grep(variable, pattern, &block)
1214
+ enumerate :grep, :variable => variable, :return => true, :method_args => [pattern], :yield_args => %w(value index), &block
1215
+ end
1216
+
1217
+ def in_groups_of(variable, number, fill_with = nil)
1218
+ arguments = [number]
1219
+ arguments << fill_with unless fill_with.nil?
1220
+ add_variable_assignment!(variable)
1221
+ append_enumerable_function!("inGroupsOf(#{arguments_for_call arguments});")
1222
+ end
1223
+
1224
+ def inject(variable, memo, &block)
1225
+ enumerate :inject, :variable => variable, :method_args => [memo], :yield_args => %w(memo value index), :return => true, &block
1226
+ end
1227
+
1228
+ def pluck(variable, property)
1229
+ add_variable_assignment!(variable)
1230
+ append_enumerable_function!("pluck(#{property.to_json});")
1231
+ end
1232
+
1233
+ def zip(variable, *arguments, &block)
1234
+ add_variable_assignment!(variable)
1235
+ append_enumerable_function!("zip(#{arguments_for_call arguments}")
1236
+ if block
1237
+ function_chain[-1] += ", function(array) {"
1238
+ yield ::ActiveSupport::JSON::Variable.new('array')
1239
+ add_return_statement!
1240
+ @generator << '});'
1241
+ else
1242
+ function_chain[-1] += ');'
1243
+ end
1244
+ end
1245
+
1246
+ private
1247
+ def method_missing(method, *arguments, &block)
1248
+ if ENUMERABLE_METHODS.include?(method)
1249
+ returnable = ENUMERABLE_METHODS_WITH_RETURN.include?(method)
1250
+ variable = arguments.first if returnable
1251
+ enumerate(method, {:variable => (arguments.first if returnable), :return => returnable, :yield_args => %w(value index)}, &block)
1252
+ else
1253
+ super
1254
+ end
1255
+ end
1256
+
1257
+ # Options
1258
+ # * variable - name of the variable to set the result of the enumeration to
1259
+ # * method_args - array of the javascript enumeration method args that occur before the function
1260
+ # * yield_args - array of the javascript yield args
1261
+ # * return - true if the enumeration should return the last statement
1262
+ def enumerate(enumerable, options = {}, &block)
1263
+ options[:method_args] ||= []
1264
+ options[:yield_args] ||= []
1265
+ yield_args = options[:yield_args] * ', '
1266
+ method_args = arguments_for_call options[:method_args] # foo, bar, function
1267
+ method_args << ', ' unless method_args.blank?
1268
+ add_variable_assignment!(options[:variable]) if options[:variable]
1269
+ append_enumerable_function!("#{enumerable.to_s.camelize(:lower)}(#{method_args}function(#{yield_args}) {")
1270
+ # only yield as many params as were passed in the block
1271
+ yield(*options[:yield_args].collect { |p| JavaScriptVariableProxy.new(@generator, p) }[0..block.arity-1])
1272
+ add_return_statement! if options[:return]
1273
+ @generator << '});'
1274
+ end
1275
+
1276
+ def add_variable_assignment!(variable)
1277
+ function_chain.push("var #{variable} = #{function_chain.pop}")
1278
+ end
1279
+
1280
+ def add_return_statement!
1281
+ unless function_chain.last =~ /return/
1282
+ function_chain.push("return #{function_chain.pop.chomp(';')};")
1283
+ end
1284
+ end
1285
+
1286
+ def append_enumerable_function!(call)
1287
+ function_chain[-1].chomp!(';')
1288
+ function_chain[-1] += ".#{call}"
1289
+ end
1290
+ end
1291
+
1292
+ class JavaScriptElementCollectionProxy < JavaScriptCollectionProxy #:nodoc:\
1293
+ def initialize(generator, pattern)
1294
+ super(generator, "$$(#{pattern.to_json})")
1295
+ end
1296
+ end
1297
+ end
1298
+ end
1299
+
1300
+ require 'action_view/helpers/javascript_helper'