javascriptmvc 3.0.0.pre15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (550) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/README.markdown +15 -0
  4. data/Rakefile +17 -0
  5. data/VERSION +1 -0
  6. data/bin/jmvc-build +4 -0
  7. data/bin/jmvc-gen +4 -0
  8. data/bin/jmvc-get +4 -0
  9. data/bin/jmvc-init +4 -0
  10. data/bin/jmvc-update +4 -0
  11. data/lib/javascriptmvc.rb +97 -0
  12. data/lib/javascriptmvc/documentjs/README +0 -0
  13. data/lib/javascriptmvc/documentjs/add.js +76 -0
  14. data/lib/javascriptmvc/documentjs/application.js +285 -0
  15. data/lib/javascriptmvc/documentjs/attribute.js +61 -0
  16. data/lib/javascriptmvc/documentjs/baseclass.js +537 -0
  17. data/lib/javascriptmvc/documentjs/class.js +141 -0
  18. data/lib/javascriptmvc/documentjs/constructor.js +145 -0
  19. data/lib/javascriptmvc/documentjs/directives.js +394 -0
  20. data/lib/javascriptmvc/documentjs/distance.js +49 -0
  21. data/lib/javascriptmvc/documentjs/document +21 -0
  22. data/lib/javascriptmvc/documentjs/documentjs.js +76 -0
  23. data/lib/javascriptmvc/documentjs/file.js +55 -0
  24. data/lib/javascriptmvc/documentjs/function.js +112 -0
  25. data/lib/javascriptmvc/documentjs/jmvcdoc/images/close.png +0 -0
  26. data/lib/javascriptmvc/documentjs/jmvcdoc/images/download.png +0 -0
  27. data/lib/javascriptmvc/documentjs/jmvcdoc/images/fav-off.png +0 -0
  28. data/lib/javascriptmvc/documentjs/jmvcdoc/images/fav-on.png +0 -0
  29. data/lib/javascriptmvc/documentjs/jmvcdoc/images/favicon.ico +0 -0
  30. data/lib/javascriptmvc/documentjs/jmvcdoc/images/logo.png +0 -0
  31. data/lib/javascriptmvc/documentjs/jmvcdoc/images/pre.png +0 -0
  32. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  33. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  34. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  35. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  36. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  37. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  38. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  39. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  40. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-icons_222222_256x240.png +0 -0
  41. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-icons_2e83ff_256x240.png +0 -0
  42. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-icons_454545_256x240.png +0 -0
  43. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-icons_888888_256x240.png +0 -0
  44. data/lib/javascriptmvc/documentjs/jmvcdoc/images/ui-icons_cd0a0a_256x240.png +0 -0
  45. data/lib/javascriptmvc/documentjs/jmvcdoc/images/video.png +0 -0
  46. data/lib/javascriptmvc/documentjs/jmvcdoc/production.js +552 -0
  47. data/lib/javascriptmvc/documentjs/jmvcdoc/style.css +354 -0
  48. data/lib/javascriptmvc/documentjs/jmvcdoc/summary.ejs +134 -0
  49. data/lib/javascriptmvc/documentjs/json.js +172 -0
  50. data/lib/javascriptmvc/documentjs/page.js +107 -0
  51. data/lib/javascriptmvc/documentjs/pair.js +302 -0
  52. data/lib/javascriptmvc/documentjs/prototype.js +13 -0
  53. data/lib/javascriptmvc/documentjs/scripts/build.js +6 -0
  54. data/lib/javascriptmvc/documentjs/static.js +25 -0
  55. data/lib/javascriptmvc/documentjs/test/docs/Something.json +1 -0
  56. data/lib/javascriptmvc/documentjs/test/docs/searchData.json +1 -0
  57. data/lib/javascriptmvc/documentjs/test/something.js +8 -0
  58. data/lib/javascriptmvc/documentjs/test/test.html +6 -0
  59. data/lib/javascriptmvc/documentjs/test_doc.html +1 -0
  60. data/lib/javascriptmvc/documentjs/update +5 -0
  61. data/lib/javascriptmvc/funcunit/README +17 -0
  62. data/lib/javascriptmvc/funcunit/autosuggest/auto_suggest.js +495 -0
  63. data/lib/javascriptmvc/funcunit/autosuggest/autosuggest.css +24 -0
  64. data/lib/javascriptmvc/funcunit/autosuggest/autosuggest.html +26 -0
  65. data/lib/javascriptmvc/funcunit/autosuggest/autosuggest.js +17 -0
  66. data/lib/javascriptmvc/funcunit/autosuggest/autosuggest_test.js +14 -0
  67. data/lib/javascriptmvc/funcunit/autosuggest/funcunit.html +15 -0
  68. data/lib/javascriptmvc/funcunit/build.js +54 -0
  69. data/lib/javascriptmvc/funcunit/drivers/selenium.js +129 -0
  70. data/lib/javascriptmvc/funcunit/drivers/standard.js +169 -0
  71. data/lib/javascriptmvc/funcunit/envjs +13 -0
  72. data/lib/javascriptmvc/funcunit/envjs.bat +28 -0
  73. data/lib/javascriptmvc/funcunit/funcunit.html +20 -0
  74. data/lib/javascriptmvc/funcunit/funcunit.js +1509 -0
  75. data/lib/javascriptmvc/funcunit/java/selenium-java-client-driver.jar +0 -0
  76. data/lib/javascriptmvc/funcunit/java/selenium-server.jar +0 -0
  77. data/lib/javascriptmvc/funcunit/qunit.html +22 -0
  78. data/lib/javascriptmvc/funcunit/qunit/qunit.css +119 -0
  79. data/lib/javascriptmvc/funcunit/qunit/qunit.js +1124 -0
  80. data/lib/javascriptmvc/funcunit/qunit/rhino/rhino.js +24 -0
  81. data/lib/javascriptmvc/funcunit/qunit/test/qunit.html +18 -0
  82. data/lib/javascriptmvc/funcunit/qunit/test/test.js +7 -0
  83. data/lib/javascriptmvc/funcunit/resources/funcunit.js +31 -0
  84. data/lib/javascriptmvc/funcunit/resources/jquery.js +6378 -0
  85. data/lib/javascriptmvc/funcunit/resources/json.js +201 -0
  86. data/lib/javascriptmvc/funcunit/resources/selenium_start.js +43 -0
  87. data/lib/javascriptmvc/funcunit/scripts/run.js +36 -0
  88. data/lib/javascriptmvc/funcunit/scripts/test.js +55 -0
  89. data/lib/javascriptmvc/funcunit/settings.js +10 -0
  90. data/lib/javascriptmvc/funcunit/synthetic/browsers.js +151 -0
  91. data/lib/javascriptmvc/funcunit/synthetic/demo.html +150 -0
  92. data/lib/javascriptmvc/funcunit/synthetic/demo/record.js +254 -0
  93. data/lib/javascriptmvc/funcunit/synthetic/drag/drag.html +41 -0
  94. data/lib/javascriptmvc/funcunit/synthetic/drag/drag.js +268 -0
  95. data/lib/javascriptmvc/funcunit/synthetic/drag/qunit.html +20 -0
  96. data/lib/javascriptmvc/funcunit/synthetic/drag/test/qunit/drag_test.js +195 -0
  97. data/lib/javascriptmvc/funcunit/synthetic/drag/test/qunit/qunit.js +7 -0
  98. data/lib/javascriptmvc/funcunit/synthetic/key.js +832 -0
  99. data/lib/javascriptmvc/funcunit/synthetic/mouse.js +291 -0
  100. data/lib/javascriptmvc/funcunit/synthetic/qunit.html +22 -0
  101. data/lib/javascriptmvc/funcunit/synthetic/recorder.html +303 -0
  102. data/lib/javascriptmvc/funcunit/synthetic/synthetic.html +85 -0
  103. data/lib/javascriptmvc/funcunit/synthetic/synthetic.js +796 -0
  104. data/lib/javascriptmvc/funcunit/synthetic/test/qunit/key_test.js +391 -0
  105. data/lib/javascriptmvc/funcunit/synthetic/test/qunit/mouse_test.js +233 -0
  106. data/lib/javascriptmvc/funcunit/synthetic/test/qunit/qunit.js +6 -0
  107. data/lib/javascriptmvc/funcunit/synthetic/test/qunit/synthetic_test.js +91 -0
  108. data/lib/javascriptmvc/funcunit/synthetic/test/submit.html +29 -0
  109. data/lib/javascriptmvc/funcunit/synthetic/test/submitted.html +3 -0
  110. data/lib/javascriptmvc/funcunit/template.html +18 -0
  111. data/lib/javascriptmvc/funcunit/test/drag.html +63 -0
  112. data/lib/javascriptmvc/funcunit/test/funcunit/funcunit.js +3 -0
  113. data/lib/javascriptmvc/funcunit/test/funcunit/funcunit_test.js +87 -0
  114. data/lib/javascriptmvc/funcunit/test/funcunit/open_test.js +28 -0
  115. data/lib/javascriptmvc/funcunit/test/funcunit/protodrag_test.js +13 -0
  116. data/lib/javascriptmvc/funcunit/test/funcunit/syn_test.js +41 -0
  117. data/lib/javascriptmvc/funcunit/test/jquery.event.drag.js +801 -0
  118. data/lib/javascriptmvc/funcunit/test/jquery.event.drop.js +439 -0
  119. data/lib/javascriptmvc/funcunit/test/jquery.js +6360 -0
  120. data/lib/javascriptmvc/funcunit/test/myapp.html +103 -0
  121. data/lib/javascriptmvc/funcunit/test/myotherapp.html +15 -0
  122. data/lib/javascriptmvc/funcunit/test/protodrag/dragdrop.js +974 -0
  123. data/lib/javascriptmvc/funcunit/test/protodrag/effects.js +1123 -0
  124. data/lib/javascriptmvc/funcunit/test/protodrag/funcunit_test.js +20 -0
  125. data/lib/javascriptmvc/funcunit/test/protodrag/myapp.html +63 -0
  126. data/lib/javascriptmvc/funcunit/test/protodrag/prototype.js +4874 -0
  127. data/lib/javascriptmvc/funcunit/test/protodrag/scriptaculous.js +68 -0
  128. data/lib/javascriptmvc/funcunit/update +5 -0
  129. data/lib/javascriptmvc/jquery/README +24 -0
  130. data/lib/javascriptmvc/jquery/build.js +73 -0
  131. data/lib/javascriptmvc/jquery/class/class.html +109 -0
  132. data/lib/javascriptmvc/jquery/class/class.js +627 -0
  133. data/lib/javascriptmvc/jquery/class/qunit.html +15 -0
  134. data/lib/javascriptmvc/jquery/class/test/qunit/class_test.js +146 -0
  135. data/lib/javascriptmvc/jquery/class/test/qunit/qunit.js +5 -0
  136. data/lib/javascriptmvc/jquery/class/test/qunit/test.html +20 -0
  137. data/lib/javascriptmvc/jquery/controller/controller.html +89 -0
  138. data/lib/javascriptmvc/jquery/controller/controller.js +735 -0
  139. data/lib/javascriptmvc/jquery/controller/history/history.html +44 -0
  140. data/lib/javascriptmvc/jquery/controller/history/history.js +177 -0
  141. data/lib/javascriptmvc/jquery/controller/qunit.html +21 -0
  142. data/lib/javascriptmvc/jquery/controller/subscribe/funcunit.html +21 -0
  143. data/lib/javascriptmvc/jquery/controller/subscribe/scripts/compress.js +6 -0
  144. data/lib/javascriptmvc/jquery/controller/subscribe/scripts/docs.js +6 -0
  145. data/lib/javascriptmvc/jquery/controller/subscribe/subscribe.html +56 -0
  146. data/lib/javascriptmvc/jquery/controller/subscribe/subscribe.js +27 -0
  147. data/lib/javascriptmvc/jquery/controller/subscribe/test/funcunit/funcunit.js +3 -0
  148. data/lib/javascriptmvc/jquery/controller/subscribe/test/funcunit/run.js +10 -0
  149. data/lib/javascriptmvc/jquery/controller/subscribe/test/funcunit/subscribe_test.js +11 -0
  150. data/lib/javascriptmvc/jquery/controller/subscribe/test/qunit/qunit.html +21 -0
  151. data/lib/javascriptmvc/jquery/controller/subscribe/test/qunit/qunit.js +9 -0
  152. data/lib/javascriptmvc/jquery/controller/subscribe/test/qunit/run.js +2 -0
  153. data/lib/javascriptmvc/jquery/controller/subscribe/test/qunit/subscribe_test.js +4 -0
  154. data/lib/javascriptmvc/jquery/controller/test/qunit/controller_test.js +170 -0
  155. data/lib/javascriptmvc/jquery/controller/test/qunit/qunit.js +9 -0
  156. data/lib/javascriptmvc/jquery/controller/view/qunit.html +21 -0
  157. data/lib/javascriptmvc/jquery/controller/view/test/qunit/controller_view_test.js +15 -0
  158. data/lib/javascriptmvc/jquery/controller/view/test/qunit/qunit.js +6 -0
  159. data/lib/javascriptmvc/jquery/controller/view/test/qunit/views/init.micro +1 -0
  160. data/lib/javascriptmvc/jquery/controller/view/view.js +102 -0
  161. data/lib/javascriptmvc/jquery/dom/closest/closest.html +23 -0
  162. data/lib/javascriptmvc/jquery/dom/closest/closest.js +47 -0
  163. data/lib/javascriptmvc/jquery/dom/closest/funcunit.html +20 -0
  164. data/lib/javascriptmvc/jquery/dom/closest/qunit.html +22 -0
  165. data/lib/javascriptmvc/jquery/dom/closest/scripts/compress.js +3 -0
  166. data/lib/javascriptmvc/jquery/dom/closest/scripts/doc.js +4 -0
  167. data/lib/javascriptmvc/jquery/dom/closest/scripts/test.js +55 -0
  168. data/lib/javascriptmvc/jquery/dom/closest/settings.js +40 -0
  169. data/lib/javascriptmvc/jquery/dom/closest/test/funcunit/funcunit.js +3 -0
  170. data/lib/javascriptmvc/jquery/dom/closest/test/funcunit/tests/basic.js +11 -0
  171. data/lib/javascriptmvc/jquery/dom/closest/test/qunit/qunit.js +4 -0
  172. data/lib/javascriptmvc/jquery/dom/closest/test/qunit/tests/basic.js +4 -0
  173. data/lib/javascriptmvc/jquery/dom/compare/compare.html +88 -0
  174. data/lib/javascriptmvc/jquery/dom/compare/compare.js +67 -0
  175. data/lib/javascriptmvc/jquery/dom/compare/qunit.html +20 -0
  176. data/lib/javascriptmvc/jquery/dom/compare/test/qunit/compare_test.js +19 -0
  177. data/lib/javascriptmvc/jquery/dom/compare/test/qunit/qunit.js +5 -0
  178. data/lib/javascriptmvc/jquery/dom/cookie/cookie.html +25 -0
  179. data/lib/javascriptmvc/jquery/dom/cookie/cookie.js +119 -0
  180. data/lib/javascriptmvc/jquery/dom/cookie/scripts/compress.js +6 -0
  181. data/lib/javascriptmvc/jquery/dom/cookie/scripts/doc.js +6 -0
  182. data/lib/javascriptmvc/jquery/dom/cookie/test/funcunit/cookie_test.js +11 -0
  183. data/lib/javascriptmvc/jquery/dom/cookie/test/funcunit/funcunit.html +21 -0
  184. data/lib/javascriptmvc/jquery/dom/cookie/test/funcunit/funcunit.js +3 -0
  185. data/lib/javascriptmvc/jquery/dom/cookie/test/funcunit/run.js +10 -0
  186. data/lib/javascriptmvc/jquery/dom/cookie/test/qunit/cookie_test.js +4 -0
  187. data/lib/javascriptmvc/jquery/dom/cookie/test/qunit/qunit.html +21 -0
  188. data/lib/javascriptmvc/jquery/dom/cookie/test/qunit/qunit.js +9 -0
  189. data/lib/javascriptmvc/jquery/dom/cookie/test/qunit/run.js +2 -0
  190. data/lib/javascriptmvc/jquery/dom/cur_styles/cur_styles.html +71 -0
  191. data/lib/javascriptmvc/jquery/dom/cur_styles/cur_styles.js +120 -0
  192. data/lib/javascriptmvc/jquery/dom/cur_styles/qunit.html +22 -0
  193. data/lib/javascriptmvc/jquery/dom/cur_styles/test/qunit/curStyles.micro +3 -0
  194. data/lib/javascriptmvc/jquery/dom/cur_styles/test/qunit/cur_styles_test.js +22 -0
  195. data/lib/javascriptmvc/jquery/dom/cur_styles/test/qunit/outer.micro +0 -0
  196. data/lib/javascriptmvc/jquery/dom/cur_styles/test/qunit/qunit.js +4 -0
  197. data/lib/javascriptmvc/jquery/dom/dimensions/curstyles.html +22 -0
  198. data/lib/javascriptmvc/jquery/dom/dimensions/dimensions.html +132 -0
  199. data/lib/javascriptmvc/jquery/dom/dimensions/dimensions.js +140 -0
  200. data/lib/javascriptmvc/jquery/dom/dimensions/qunit.html +22 -0
  201. data/lib/javascriptmvc/jquery/dom/dimensions/test/qunit/curStyles.micro +3 -0
  202. data/lib/javascriptmvc/jquery/dom/dimensions/test/qunit/dimensions_test.js +8 -0
  203. data/lib/javascriptmvc/jquery/dom/dimensions/test/qunit/outer.micro +0 -0
  204. data/lib/javascriptmvc/jquery/dom/dimensions/test/qunit/qunit.js +4 -0
  205. data/lib/javascriptmvc/jquery/dom/dom.js +7 -0
  206. data/lib/javascriptmvc/jquery/dom/fixture/fixture.html +143 -0
  207. data/lib/javascriptmvc/jquery/dom/fixture/fixture.js +521 -0
  208. data/lib/javascriptmvc/jquery/dom/fixture/fixtures/messages.html +31 -0
  209. data/lib/javascriptmvc/jquery/dom/fixture/fixtures/test.json +3 -0
  210. data/lib/javascriptmvc/jquery/dom/fixture/qunit.html +22 -0
  211. data/lib/javascriptmvc/jquery/dom/fixture/test/qunit/fixture_test.js +50 -0
  212. data/lib/javascriptmvc/jquery/dom/fixture/test/qunit/qunit.js +4 -0
  213. data/lib/javascriptmvc/jquery/dom/form_params/form_params.html +57 -0
  214. data/lib/javascriptmvc/jquery/dom/form_params/form_params.js +106 -0
  215. data/lib/javascriptmvc/jquery/dom/form_params/qunit.html +22 -0
  216. data/lib/javascriptmvc/jquery/dom/form_params/test/qunit/basics.micro +27 -0
  217. data/lib/javascriptmvc/jquery/dom/form_params/test/qunit/checkbox.micro +20 -0
  218. data/lib/javascriptmvc/jquery/dom/form_params/test/qunit/form_params_test.js +43 -0
  219. data/lib/javascriptmvc/jquery/dom/form_params/test/qunit/qunit.js +4 -0
  220. data/lib/javascriptmvc/jquery/dom/form_params/test/qunit/truthy.micro +8 -0
  221. data/lib/javascriptmvc/jquery/dom/within/within.js +67 -0
  222. data/lib/javascriptmvc/jquery/error/background.png +0 -0
  223. data/lib/javascriptmvc/jquery/error/error.html +31 -0
  224. data/lib/javascriptmvc/jquery/error/error.js +227 -0
  225. data/lib/javascriptmvc/jquery/error/setup.js +4 -0
  226. data/lib/javascriptmvc/jquery/error/test/test.html +23 -0
  227. data/lib/javascriptmvc/jquery/error/test/test.js +4 -0
  228. data/lib/javascriptmvc/jquery/event/default/compress.js +7 -0
  229. data/lib/javascriptmvc/jquery/event/default/default.html +85 -0
  230. data/lib/javascriptmvc/jquery/event/default/default.js +193 -0
  231. data/lib/javascriptmvc/jquery/event/default/defaultjquery.html +117 -0
  232. data/lib/javascriptmvc/jquery/event/default/qunit.html +22 -0
  233. data/lib/javascriptmvc/jquery/event/default/test/qunit/default_test.js +104 -0
  234. data/lib/javascriptmvc/jquery/event/default/test/qunit/html.micro +8 -0
  235. data/lib/javascriptmvc/jquery/event/default/test/qunit/qunit.js +6 -0
  236. data/lib/javascriptmvc/jquery/event/default/test/qunit/run.js +2 -0
  237. data/lib/javascriptmvc/jquery/event/destroyed/destroyed.html +24 -0
  238. data/lib/javascriptmvc/jquery/event/destroyed/destroyed.js +40 -0
  239. data/lib/javascriptmvc/jquery/event/destroyed/destroyed_menu.html +96 -0
  240. data/lib/javascriptmvc/jquery/event/destroyed/qunit.html +21 -0
  241. data/lib/javascriptmvc/jquery/event/destroyed/test/qunit/destroyed_test.js +12 -0
  242. data/lib/javascriptmvc/jquery/event/destroyed/test/qunit/qunit.js +6 -0
  243. data/lib/javascriptmvc/jquery/event/drag/drag.html +105 -0
  244. data/lib/javascriptmvc/jquery/event/drag/drag.js +466 -0
  245. data/lib/javascriptmvc/jquery/event/drag/limit/limit.html +74 -0
  246. data/lib/javascriptmvc/jquery/event/drag/limit/limit.js +56 -0
  247. data/lib/javascriptmvc/jquery/event/drag/limit/scripts/compress.js +6 -0
  248. data/lib/javascriptmvc/jquery/event/drag/limit/scripts/doc.js +6 -0
  249. data/lib/javascriptmvc/jquery/event/drag/limit/test/funcunit/funcunit.html +21 -0
  250. data/lib/javascriptmvc/jquery/event/drag/limit/test/funcunit/funcunit.js +3 -0
  251. data/lib/javascriptmvc/jquery/event/drag/limit/test/funcunit/limit_test.js +11 -0
  252. data/lib/javascriptmvc/jquery/event/drag/limit/test/funcunit/run.js +10 -0
  253. data/lib/javascriptmvc/jquery/event/drag/limit/test/qunit/limit_test.js +4 -0
  254. data/lib/javascriptmvc/jquery/event/drag/limit/test/qunit/qunit.html +21 -0
  255. data/lib/javascriptmvc/jquery/event/drag/limit/test/qunit/qunit.js +9 -0
  256. data/lib/javascriptmvc/jquery/event/drag/limit/test/qunit/run.js +2 -0
  257. data/lib/javascriptmvc/jquery/event/drag/qunit.html +16 -0
  258. data/lib/javascriptmvc/jquery/event/drag/scroll/scroll.js +120 -0
  259. data/lib/javascriptmvc/jquery/event/drag/test/qunit/drag_test.js +130 -0
  260. data/lib/javascriptmvc/jquery/event/drag/test/qunit/qunit.js +4 -0
  261. data/lib/javascriptmvc/jquery/event/drop/drop.html +74 -0
  262. data/lib/javascriptmvc/jquery/event/drop/drop.js +301 -0
  263. data/lib/javascriptmvc/jquery/event/event.js +6 -0
  264. data/lib/javascriptmvc/jquery/event/hashchange/hashchange.js +245 -0
  265. data/lib/javascriptmvc/jquery/event/hover/compress.js +7 -0
  266. data/lib/javascriptmvc/jquery/event/hover/hover.html +56 -0
  267. data/lib/javascriptmvc/jquery/event/hover/hover.js +219 -0
  268. data/lib/javascriptmvc/jquery/event/hover/qunit.html +16 -0
  269. data/lib/javascriptmvc/jquery/event/hover/test/qunit/hover_test.js +55 -0
  270. data/lib/javascriptmvc/jquery/event/hover/test/qunit/qunit.js +4 -0
  271. data/lib/javascriptmvc/jquery/event/livehack/compress.js +7 -0
  272. data/lib/javascriptmvc/jquery/event/livehack/funcunit.html +21 -0
  273. data/lib/javascriptmvc/jquery/event/livehack/livehack.html +25 -0
  274. data/lib/javascriptmvc/jquery/event/livehack/livehack.js +167 -0
  275. data/lib/javascriptmvc/jquery/event/offline/funcunit.html +20 -0
  276. data/lib/javascriptmvc/jquery/event/offline/offline.html +26 -0
  277. data/lib/javascriptmvc/jquery/event/offline/offline.js +36 -0
  278. data/lib/javascriptmvc/jquery/event/offline/qunit.html +22 -0
  279. data/lib/javascriptmvc/jquery/event/offline/scripts/compress.js +3 -0
  280. data/lib/javascriptmvc/jquery/event/offline/scripts/doc.js +4 -0
  281. data/lib/javascriptmvc/jquery/event/offline/settings.js +41 -0
  282. data/lib/javascriptmvc/jquery/event/offline/test/funcunit/funcunit.js +3 -0
  283. data/lib/javascriptmvc/jquery/event/offline/test/funcunit/tests/basic.js +11 -0
  284. data/lib/javascriptmvc/jquery/event/offline/test/qunit/qunit.js +4 -0
  285. data/lib/javascriptmvc/jquery/event/offline/test/qunit/tests/basic.js +4 -0
  286. data/lib/javascriptmvc/jquery/event/resize/funcunit.html +20 -0
  287. data/lib/javascriptmvc/jquery/event/resize/qunit.html +22 -0
  288. data/lib/javascriptmvc/jquery/event/resize/resize.html +23 -0
  289. data/lib/javascriptmvc/jquery/event/resize/resize.js +50 -0
  290. data/lib/javascriptmvc/jquery/event/resize/scripts/compress.js +3 -0
  291. data/lib/javascriptmvc/jquery/event/resize/scripts/doc.js +4 -0
  292. data/lib/javascriptmvc/jquery/event/resize/scripts/test.js +55 -0
  293. data/lib/javascriptmvc/jquery/event/resize/settings.js +40 -0
  294. data/lib/javascriptmvc/jquery/event/resize/test/funcunit/funcunit.js +3 -0
  295. data/lib/javascriptmvc/jquery/event/resize/test/funcunit/tests/basic.js +11 -0
  296. data/lib/javascriptmvc/jquery/event/resize/test/qunit/qunit.js +4 -0
  297. data/lib/javascriptmvc/jquery/event/resize/test/qunit/tests/basic.js +4 -0
  298. data/lib/javascriptmvc/jquery/event/select/scripts/compress.js +6 -0
  299. data/lib/javascriptmvc/jquery/event/select/scripts/doc.js +6 -0
  300. data/lib/javascriptmvc/jquery/event/select/select.html +63 -0
  301. data/lib/javascriptmvc/jquery/event/select/select.js +65 -0
  302. data/lib/javascriptmvc/jquery/event/select/test/funcunit/funcunit.html +21 -0
  303. data/lib/javascriptmvc/jquery/event/select/test/funcunit/funcunit.js +3 -0
  304. data/lib/javascriptmvc/jquery/event/select/test/funcunit/run.js +10 -0
  305. data/lib/javascriptmvc/jquery/event/select/test/funcunit/select_test.js +11 -0
  306. data/lib/javascriptmvc/jquery/event/select/test/qunit/qunit.html +21 -0
  307. data/lib/javascriptmvc/jquery/event/select/test/qunit/qunit.js +5 -0
  308. data/lib/javascriptmvc/jquery/event/select/test/qunit/run.js +2 -0
  309. data/lib/javascriptmvc/jquery/event/select/test/qunit/select_test.js +4 -0
  310. data/lib/javascriptmvc/jquery/generate/app +23 -0
  311. data/lib/javascriptmvc/jquery/generate/controller +21 -0
  312. data/lib/javascriptmvc/jquery/generate/model +26 -0
  313. data/lib/javascriptmvc/jquery/generate/page +20 -0
  314. data/lib/javascriptmvc/jquery/generate/plugin +20 -0
  315. data/lib/javascriptmvc/jquery/generate/scaffold +23 -0
  316. data/lib/javascriptmvc/jquery/generate/templates/app/(application_name).css.ejs +4 -0
  317. data/lib/javascriptmvc/jquery/generate/templates/app/(application_name).html.ejs +23 -0
  318. data/lib/javascriptmvc/jquery/generate/templates/app/(application_name).js.ejs +21 -0
  319. data/lib/javascriptmvc/jquery/generate/templates/app/controllers/.ignore +0 -0
  320. data/lib/javascriptmvc/jquery/generate/templates/app/docs/.ignore +0 -0
  321. data/lib/javascriptmvc/jquery/generate/templates/app/fixtures/.ignore +0 -0
  322. data/lib/javascriptmvc/jquery/generate/templates/app/funcunit.html.ejs +15 -0
  323. data/lib/javascriptmvc/jquery/generate/templates/app/models/.ignore +0 -0
  324. data/lib/javascriptmvc/jquery/generate/templates/app/qunit.html.ejs +20 -0
  325. data/lib/javascriptmvc/jquery/generate/templates/app/resources/.ignore +0 -0
  326. data/lib/javascriptmvc/jquery/generate/templates/app/scripts/build.js.ejs +6 -0
  327. data/lib/javascriptmvc/jquery/generate/templates/app/scripts/clean.js.ejs +6 -0
  328. data/lib/javascriptmvc/jquery/generate/templates/app/scripts/docs.js.ejs +4 -0
  329. data/lib/javascriptmvc/jquery/generate/templates/app/test/funcunit/(application_name)_test.js.ejs +9 -0
  330. data/lib/javascriptmvc/jquery/generate/templates/app/test/funcunit/funcunit.js.ejs +3 -0
  331. data/lib/javascriptmvc/jquery/generate/templates/app/test/qunit/(application_name)_test.js.ejs +5 -0
  332. data/lib/javascriptmvc/jquery/generate/templates/app/test/qunit/qunit.js.ejs +3 -0
  333. data/lib/javascriptmvc/jquery/generate/templates/app/views/.ignore +0 -0
  334. data/lib/javascriptmvc/jquery/generate/templates/controller/controllers/(underscore)_controller.js.ejs +12 -0
  335. data/lib/javascriptmvc/jquery/generate/templates/model/fixtures.link +1 -0
  336. data/lib/javascriptmvc/jquery/generate/templates/model/models.link +1 -0
  337. data/lib/javascriptmvc/jquery/generate/templates/model/test/qunit.link +1 -0
  338. data/lib/javascriptmvc/jquery/generate/templates/page.ejs +23 -0
  339. data/lib/javascriptmvc/jquery/generate/templates/plugin/(application_name).html.ejs +23 -0
  340. data/lib/javascriptmvc/jquery/generate/templates/plugin/(application_name).js.ejs +3 -0
  341. data/lib/javascriptmvc/jquery/generate/templates/plugin/fixtures/.ignore +0 -0
  342. data/lib/javascriptmvc/jquery/generate/templates/plugin/funcunit.html.ejs +15 -0
  343. data/lib/javascriptmvc/jquery/generate/templates/plugin/qunit.html.ejs +20 -0
  344. data/lib/javascriptmvc/jquery/generate/templates/plugin/resources/.ignore +0 -0
  345. data/lib/javascriptmvc/jquery/generate/templates/plugin/scripts.link +1 -0
  346. data/lib/javascriptmvc/jquery/generate/templates/plugin/test.link +1 -0
  347. data/lib/javascriptmvc/jquery/generate/templates/plugin/views/.ignore +0 -0
  348. data/lib/javascriptmvc/jquery/generate/templates/scaffold/controllers/(underscore)_controller.js.ejs +96 -0
  349. data/lib/javascriptmvc/jquery/generate/templates/scaffold/fixtures/(plural).json.get.ejs +3 -0
  350. data/lib/javascriptmvc/jquery/generate/templates/scaffold/models/(underscore).js.ejs +83 -0
  351. data/lib/javascriptmvc/jquery/generate/templates/scaffold/test/funcunit/(underscore)_controller_test.js.ejs +63 -0
  352. data/lib/javascriptmvc/jquery/generate/templates/scaffold/test/qunit/(underscore)_test.js.ejs +45 -0
  353. data/lib/javascriptmvc/jquery/generate/templates/scaffold/views/(underscore)/edit.ejs.ejs +10 -0
  354. data/lib/javascriptmvc/jquery/generate/templates/scaffold/views/(underscore)/init.ejs.ejs +26 -0
  355. data/lib/javascriptmvc/jquery/generate/templates/scaffold/views/(underscore)/list.ejs.ejs +5 -0
  356. data/lib/javascriptmvc/jquery/generate/templates/scaffold/views/(underscore)/show.ejs.ejs +10 -0
  357. data/lib/javascriptmvc/jquery/jquery.js +6360 -0
  358. data/lib/javascriptmvc/jquery/lang/json/json.html +25 -0
  359. data/lib/javascriptmvc/jquery/lang/json/json.js +201 -0
  360. data/lib/javascriptmvc/jquery/lang/json/scripts/compress.js +6 -0
  361. data/lib/javascriptmvc/jquery/lang/json/scripts/doc.js +6 -0
  362. data/lib/javascriptmvc/jquery/lang/json/test/funcunit/funcunit.html +21 -0
  363. data/lib/javascriptmvc/jquery/lang/json/test/funcunit/funcunit.js +3 -0
  364. data/lib/javascriptmvc/jquery/lang/json/test/funcunit/json_test.js +11 -0
  365. data/lib/javascriptmvc/jquery/lang/json/test/funcunit/run.js +10 -0
  366. data/lib/javascriptmvc/jquery/lang/json/test/qunit/json_test.js +4 -0
  367. data/lib/javascriptmvc/jquery/lang/json/test/qunit/qunit.html +21 -0
  368. data/lib/javascriptmvc/jquery/lang/json/test/qunit/qunit.js +9 -0
  369. data/lib/javascriptmvc/jquery/lang/json/test/qunit/run.js +2 -0
  370. data/lib/javascriptmvc/jquery/lang/lang.html +27 -0
  371. data/lib/javascriptmvc/jquery/lang/lang.js +104 -0
  372. data/lib/javascriptmvc/jquery/lang/openajax/openajax.js +202 -0
  373. data/lib/javascriptmvc/jquery/lang/rsplit/rsplit.js +31 -0
  374. data/lib/javascriptmvc/jquery/lang/vector/vector.js +167 -0
  375. data/lib/javascriptmvc/jquery/model/associations/associations.html +25 -0
  376. data/lib/javascriptmvc/jquery/model/associations/associations.js +46 -0
  377. data/lib/javascriptmvc/jquery/model/associations/qunit.html +21 -0
  378. data/lib/javascriptmvc/jquery/model/associations/test/qunit/associations_test.js +51 -0
  379. data/lib/javascriptmvc/jquery/model/associations/test/qunit/qunit.js +9 -0
  380. data/lib/javascriptmvc/jquery/model/associations/test/qunit/run.js +2 -0
  381. data/lib/javascriptmvc/jquery/model/backup/backup.js +82 -0
  382. data/lib/javascriptmvc/jquery/model/json_rest/json_rest.js +91 -0
  383. data/lib/javascriptmvc/jquery/model/list/list.js +148 -0
  384. data/lib/javascriptmvc/jquery/model/list/qunit.html +16 -0
  385. data/lib/javascriptmvc/jquery/model/list/test/qunit/list_test.js +58 -0
  386. data/lib/javascriptmvc/jquery/model/list/test/qunit/qunit.js +6 -0
  387. data/lib/javascriptmvc/jquery/model/list/test/qunit/run.js +0 -0
  388. data/lib/javascriptmvc/jquery/model/model.js +537 -0
  389. data/lib/javascriptmvc/jquery/model/qunit.html +17 -0
  390. data/lib/javascriptmvc/jquery/model/store/store.js +66 -0
  391. data/lib/javascriptmvc/jquery/model/test/qunit/model_test.js +71 -0
  392. data/lib/javascriptmvc/jquery/model/test/qunit/qunit.js +5 -0
  393. data/lib/javascriptmvc/jquery/qunit.html +15 -0
  394. data/lib/javascriptmvc/jquery/test/funcunit/funcunit.html +21 -0
  395. data/lib/javascriptmvc/jquery/test/funcunit/funcunit.js +3 -0
  396. data/lib/javascriptmvc/jquery/test/funcunit/jquerytest_test.js +11 -0
  397. data/lib/javascriptmvc/jquery/test/funcunit/run.js +10 -0
  398. data/lib/javascriptmvc/jquery/test/qunit/qunit.js +22 -0
  399. data/lib/javascriptmvc/jquery/update +5 -0
  400. data/lib/javascriptmvc/jquery/view/compress.js +7 -0
  401. data/lib/javascriptmvc/jquery/view/ejs/ejs.html +25 -0
  402. data/lib/javascriptmvc/jquery/view/ejs/ejs.js +489 -0
  403. data/lib/javascriptmvc/jquery/view/ejs/funcunit.html +21 -0
  404. data/lib/javascriptmvc/jquery/view/ejs/test/funcunit/ejs_test.js +11 -0
  405. data/lib/javascriptmvc/jquery/view/ejs/test/funcunit/funcunit.js +3 -0
  406. data/lib/javascriptmvc/jquery/view/ejs/test/funcunit/run.js +10 -0
  407. data/lib/javascriptmvc/jquery/view/ejs/test/qunit/ejs_test.js +4 -0
  408. data/lib/javascriptmvc/jquery/view/ejs/test/qunit/qunit.html +21 -0
  409. data/lib/javascriptmvc/jquery/view/ejs/test/qunit/qunit.js +9 -0
  410. data/lib/javascriptmvc/jquery/view/ejs/test/qunit/run.js +2 -0
  411. data/lib/javascriptmvc/jquery/view/fulljslint.js +3774 -0
  412. data/lib/javascriptmvc/jquery/view/helpers/helpers.js +338 -0
  413. data/lib/javascriptmvc/jquery/view/jaml/compress.js +7 -0
  414. data/lib/javascriptmvc/jquery/view/jaml/funcunit.html +21 -0
  415. data/lib/javascriptmvc/jquery/view/jaml/jaml.html +25 -0
  416. data/lib/javascriptmvc/jquery/view/jaml/jaml.js +73 -0
  417. data/lib/javascriptmvc/jquery/view/jaml/node.js +149 -0
  418. data/lib/javascriptmvc/jquery/view/jaml/template.js +131 -0
  419. data/lib/javascriptmvc/jquery/view/jaml/test/funcunit/funcunit.js +3 -0
  420. data/lib/javascriptmvc/jquery/view/jaml/test/funcunit/jaml_test.js +11 -0
  421. data/lib/javascriptmvc/jquery/view/jaml/test/funcunit/run.js +10 -0
  422. data/lib/javascriptmvc/jquery/view/jaml/test/qunit/jaml_test.js +4 -0
  423. data/lib/javascriptmvc/jquery/view/jaml/test/qunit/qunit.html +21 -0
  424. data/lib/javascriptmvc/jquery/view/jaml/test/qunit/qunit.js +9 -0
  425. data/lib/javascriptmvc/jquery/view/jaml/test/qunit/run.js +2 -0
  426. data/lib/javascriptmvc/jquery/view/micro/compress.js +7 -0
  427. data/lib/javascriptmvc/jquery/view/micro/funcunit.html +21 -0
  428. data/lib/javascriptmvc/jquery/view/micro/micro.html +25 -0
  429. data/lib/javascriptmvc/jquery/view/micro/micro.js +57 -0
  430. data/lib/javascriptmvc/jquery/view/micro/test/funcunit/funcunit.js +3 -0
  431. data/lib/javascriptmvc/jquery/view/micro/test/funcunit/micro_test.js +11 -0
  432. data/lib/javascriptmvc/jquery/view/micro/test/funcunit/run.js +10 -0
  433. data/lib/javascriptmvc/jquery/view/micro/test/qunit/micro_test.js +4 -0
  434. data/lib/javascriptmvc/jquery/view/micro/test/qunit/qunit.html +21 -0
  435. data/lib/javascriptmvc/jquery/view/micro/test/qunit/qunit.js +9 -0
  436. data/lib/javascriptmvc/jquery/view/micro/test/qunit/run.js +2 -0
  437. data/lib/javascriptmvc/jquery/view/qunit.html +16 -0
  438. data/lib/javascriptmvc/jquery/view/test/compression/compression.html +12 -0
  439. data/lib/javascriptmvc/jquery/view/test/compression/compression.js +11 -0
  440. data/lib/javascriptmvc/jquery/view/test/compression/run.js +36 -0
  441. data/lib/javascriptmvc/jquery/view/test/funcunit/funcunit.js +3 -0
  442. data/lib/javascriptmvc/jquery/view/test/funcunit/run.js +10 -0
  443. data/lib/javascriptmvc/jquery/view/test/funcunit/view_test.js +11 -0
  444. data/lib/javascriptmvc/jquery/view/test/qunit/nested_plugin.ejs +1 -0
  445. data/lib/javascriptmvc/jquery/view/test/qunit/plugin.ejs +1 -0
  446. data/lib/javascriptmvc/jquery/view/test/qunit/qunit.js +9 -0
  447. data/lib/javascriptmvc/jquery/view/test/qunit/template.ejs +1 -0
  448. data/lib/javascriptmvc/jquery/view/test/qunit/template.jaml +3 -0
  449. data/lib/javascriptmvc/jquery/view/test/qunit/template.micro +1 -0
  450. data/lib/javascriptmvc/jquery/view/test/qunit/template.tmpl +1 -0
  451. data/lib/javascriptmvc/jquery/view/test/qunit/view_test.js +24 -0
  452. data/lib/javascriptmvc/jquery/view/tmpl/tmpl.js +150 -0
  453. data/lib/javascriptmvc/jquery/view/view.html +65 -0
  454. data/lib/javascriptmvc/jquery/view/view.js +296 -0
  455. data/lib/javascriptmvc/js +56 -0
  456. data/lib/javascriptmvc/js.bat +57 -0
  457. data/lib/javascriptmvc/steal/README +26 -0
  458. data/lib/javascriptmvc/steal/build/apps/apps.js +208 -0
  459. data/lib/javascriptmvc/steal/build/apps/test.js +4 -0
  460. data/lib/javascriptmvc/steal/build/build.js +281 -0
  461. data/lib/javascriptmvc/steal/build/pluginify.js +73 -0
  462. data/lib/javascriptmvc/steal/build/scripts/compiler.jar +0 -0
  463. data/lib/javascriptmvc/steal/build/scripts/scripts.js +155 -0
  464. data/lib/javascriptmvc/steal/build/styles/cssmin.js +17 -0
  465. data/lib/javascriptmvc/steal/build/styles/styles.js +84 -0
  466. data/lib/javascriptmvc/steal/build/test/basicpage.html +6 -0
  467. data/lib/javascriptmvc/steal/build/test/basicproduction.js +1 -0
  468. data/lib/javascriptmvc/steal/build/test/basicsource.js +6 -0
  469. data/lib/javascriptmvc/steal/build/test/css/css/css1.css +1 -0
  470. data/lib/javascriptmvc/steal/build/test/css/css/justin.png +0 -0
  471. data/lib/javascriptmvc/steal/build/test/css/css2.css +5 -0
  472. data/lib/javascriptmvc/steal/build/test/css/page.html +9 -0
  473. data/lib/javascriptmvc/steal/build/test/css/production.css +1 -0
  474. data/lib/javascriptmvc/steal/build/test/css/test.js +7 -0
  475. data/lib/javascriptmvc/steal/build/test/css/upload.PNG +0 -0
  476. data/lib/javascriptmvc/steal/build/test/foreign.html +6 -0
  477. data/lib/javascriptmvc/steal/build/test/foreign.js +2 -0
  478. data/lib/javascriptmvc/steal/build/test/removecode.js +11 -0
  479. data/lib/javascriptmvc/steal/build/test/run.js +57 -0
  480. data/lib/javascriptmvc/steal/build/test/stealpage.html +10 -0
  481. data/lib/javascriptmvc/steal/build/test/stealprodpage.html +10 -0
  482. data/lib/javascriptmvc/steal/build/test/test.js +3 -0
  483. data/lib/javascriptmvc/steal/buildjs +21 -0
  484. data/lib/javascriptmvc/steal/clean/beautify.js +1108 -0
  485. data/lib/javascriptmvc/steal/clean/clean.js +179 -0
  486. data/lib/javascriptmvc/steal/clean/jslint.js +5662 -0
  487. data/lib/javascriptmvc/steal/clean/test.js +7 -0
  488. data/lib/javascriptmvc/steal/cleanjs +5 -0
  489. data/lib/javascriptmvc/steal/coffee/coffee-script.js +9 -0
  490. data/lib/javascriptmvc/steal/coffee/coffee.js +56 -0
  491. data/lib/javascriptmvc/steal/dev/dev.js +83 -0
  492. data/lib/javascriptmvc/steal/end.js +1 -0
  493. data/lib/javascriptmvc/steal/generate/app +23 -0
  494. data/lib/javascriptmvc/steal/generate/ejs.js +470 -0
  495. data/lib/javascriptmvc/steal/generate/generate.js +211 -0
  496. data/lib/javascriptmvc/steal/generate/inflector.js +117 -0
  497. data/lib/javascriptmvc/steal/generate/system.js +33 -0
  498. data/lib/javascriptmvc/steal/generate/templates/app/(application_name).css.ejs +10 -0
  499. data/lib/javascriptmvc/steal/generate/templates/app/(application_name).html.ejs +18 -0
  500. data/lib/javascriptmvc/steal/generate/templates/app/(application_name).js.ejs +10 -0
  501. data/lib/javascriptmvc/steal/generate/templates/app/docs/.ignore +0 -0
  502. data/lib/javascriptmvc/steal/generate/templates/app/resources/.ignore +0 -0
  503. data/lib/javascriptmvc/steal/generate/templates/app/resources/example.coffee.ejs +5 -0
  504. data/lib/javascriptmvc/steal/generate/templates/app/resources/example.js.ejs +13 -0
  505. data/lib/javascriptmvc/steal/generate/templates/app/resources/example.less.ejs +9 -0
  506. data/lib/javascriptmvc/steal/generate/templates/app/scripts/build.js.ejs +6 -0
  507. data/lib/javascriptmvc/steal/generate/templates/app/scripts/clean.js.ejs +6 -0
  508. data/lib/javascriptmvc/steal/generate/templates/app/test/.ignore +0 -0
  509. data/lib/javascriptmvc/steal/generate/templates/page.ejs +23 -0
  510. data/lib/javascriptmvc/steal/generate/test/test.js +92 -0
  511. data/lib/javascriptmvc/steal/get/get.js +163 -0
  512. data/lib/javascriptmvc/steal/get/gets.json +10 -0
  513. data/lib/javascriptmvc/steal/get/getter.js +115 -0
  514. data/lib/javascriptmvc/steal/get/github.js +134 -0
  515. data/lib/javascriptmvc/steal/get/json.js +172 -0
  516. data/lib/javascriptmvc/steal/getjs +5 -0
  517. data/lib/javascriptmvc/steal/js +56 -0
  518. data/lib/javascriptmvc/steal/js.bat +57 -0
  519. data/lib/javascriptmvc/steal/less/less.js +117 -0
  520. data/lib/javascriptmvc/steal/less/less_engine.js +2529 -0
  521. data/lib/javascriptmvc/steal/rhino/blank.html +6 -0
  522. data/lib/javascriptmvc/steal/rhino/build.js +31 -0
  523. data/lib/javascriptmvc/steal/rhino/docs.js +68 -0
  524. data/lib/javascriptmvc/steal/rhino/empty.html +12 -0
  525. data/lib/javascriptmvc/steal/rhino/env.js +11537 -0
  526. data/lib/javascriptmvc/steal/rhino/file.js +299 -0
  527. data/lib/javascriptmvc/steal/rhino/js.jar +0 -0
  528. data/lib/javascriptmvc/steal/rhino/loader.js +8 -0
  529. data/lib/javascriptmvc/steal/rhino/prompt.js +49 -0
  530. data/lib/javascriptmvc/steal/rhino/steal.js +122 -0
  531. data/lib/javascriptmvc/steal/rhino/test.js +16 -0
  532. data/lib/javascriptmvc/steal/steal.js +1317 -0
  533. data/lib/javascriptmvc/steal/steal.production.js +23 -0
  534. data/lib/javascriptmvc/steal/test/absoluteurl.html +7 -0
  535. data/lib/javascriptmvc/steal/test/absoluteurl/absoluteurl.js +1 -0
  536. data/lib/javascriptmvc/steal/test/absoluteurl/alert.js +1 -0
  537. data/lib/javascriptmvc/steal/test/another/two.js +2 -0
  538. data/lib/javascriptmvc/steal/test/one/four.js +1 -0
  539. data/lib/javascriptmvc/steal/test/one/one.js +6 -0
  540. data/lib/javascriptmvc/steal/test/qunit/qunit.html +22 -0
  541. data/lib/javascriptmvc/steal/test/qunit/qunit.js +3 -0
  542. data/lib/javascriptmvc/steal/test/qunit/steal_test.js +197 -0
  543. data/lib/javascriptmvc/steal/test/run.js +12 -0
  544. data/lib/javascriptmvc/steal/test/steal.html +37 -0
  545. data/lib/javascriptmvc/steal/test/test.js +82 -0
  546. data/lib/javascriptmvc/steal/test/three.js +3 -0
  547. data/lib/javascriptmvc/steal/testing/test.html +20 -0
  548. data/lib/javascriptmvc/steal/testing/testing.js +48 -0
  549. data/lib/javascriptmvc/steal/update +5 -0
  550. metadata +622 -0
@@ -0,0 +1,22 @@
1
+ <html>
2
+ <head>
3
+ <link rel="stylesheet" type="text/css" href="../funcunit/qunit/qunit.css" />
4
+ <title>QUnit Test</title>
5
+ <style>
6
+ body {
7
+ margin: 0px; padding: 0px;
8
+ }
9
+ </style>
10
+ <script type='text/javascript' src='../steal/steal.js?steal[app]=funcunit/test/qunit'></script>
11
+ </head>
12
+ <body>
13
+
14
+ <h1 id="qunit-header">funcunit Test Suite</h1>
15
+ <h2 id="qunit-banner"></h2>
16
+ <div id="qunit-testrunner-toolbar"></div>
17
+ <h2 id="qunit-userAgent"></h2>
18
+ <div id="test-content"></div>
19
+ <ol id="qunit-tests"></ol>
20
+ <div id="qunit-test-area"></div>
21
+ </body>
22
+ </html>
@@ -0,0 +1,119 @@
1
+
2
+ ol#qunit-tests {
3
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
4
+ margin:0;
5
+ padding:0;
6
+ list-style-position:inside;
7
+
8
+ font-size: smaller;
9
+ }
10
+ ol#qunit-tests li{
11
+ padding:0.4em 0.5em 0.4em 2.5em;
12
+ border-bottom:1px solid #fff;
13
+ font-size:small;
14
+ list-style-position:inside;
15
+ }
16
+ ol#qunit-tests li ol{
17
+ box-shadow: inset 0px 2px 13px #999;
18
+ -moz-box-shadow: inset 0px 2px 13px #999;
19
+ -webkit-box-shadow: inset 0px 2px 13px #999;
20
+ margin-top:0.5em;
21
+ margin-left:0;
22
+ padding:0.5em;
23
+ background-color:#fff;
24
+ border-radius:15px;
25
+ -moz-border-radius: 15px;
26
+ -webkit-border-radius: 15px;
27
+ }
28
+ ol#qunit-tests li li{
29
+ border-bottom:none;
30
+ margin:0.5em;
31
+ background-color:#fff;
32
+ list-style-position: inside;
33
+ padding:0.4em 0.5em 0.4em 0.5em;
34
+ }
35
+
36
+ ol#qunit-tests li li.pass{
37
+ border-left:26px solid #C6E746;
38
+ background-color:#fff;
39
+ color:#5E740B;
40
+ }
41
+ ol#qunit-tests li li.fail{
42
+ border-left:26px solid #EE5757;
43
+ background-color:#fff;
44
+ color:#710909;
45
+ }
46
+ ol#qunit-tests li.pass{
47
+ background-color:#D2E0E6;
48
+ color:#528CE0;
49
+ }
50
+ ol#qunit-tests li.fail{
51
+ background-color:#EE5757;
52
+ color:#000;
53
+ }
54
+ ol#qunit-tests li strong {
55
+ cursor:pointer;
56
+ }
57
+ h1#qunit-header{
58
+ background-color:#0d3349;
59
+ margin:0;
60
+ padding:0.5em 0 0.5em 1em;
61
+ color:#fff;
62
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
63
+ border-top-right-radius:15px;
64
+ border-top-left-radius:15px;
65
+ -moz-border-radius-topright:15px;
66
+ -moz-border-radius-topleft:15px;
67
+ -webkit-border-top-right-radius:15px;
68
+ -webkit-border-top-left-radius:15px;
69
+ text-shadow: rgba(0, 0, 0, 0.5) 4px 4px 1px;
70
+ }
71
+ h2#qunit-banner{
72
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
73
+ height:5px;
74
+ margin:0;
75
+ padding:0;
76
+ }
77
+ h2#qunit-banner.qunit-pass{
78
+ background-color:#C6E746;
79
+ }
80
+ h2#qunit-banner.qunit-fail, #qunit-testrunner-toolbar {
81
+ background-color:#EE5757;
82
+ }
83
+ #qunit-testrunner-toolbar {
84
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
85
+ padding:0;
86
+ /*width:80%;*/
87
+ padding:0em 0 0.5em 2em;
88
+ font-size: small;
89
+ }
90
+ h2#qunit-userAgent {
91
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
92
+ background-color:#2b81af;
93
+ margin:0;
94
+ padding:0;
95
+ color:#fff;
96
+ font-size: small;
97
+ padding:0.5em 0 0.5em 2.5em;
98
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
99
+ }
100
+ p#qunit-testresult{
101
+ font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
102
+ margin:0;
103
+ font-size: small;
104
+ color:#2b81af;
105
+ border-bottom-right-radius:15px;
106
+ border-bottom-left-radius:15px;
107
+ -moz-border-radius-bottomright:15px;
108
+ -moz-border-radius-bottomleft:15px;
109
+ -webkit-border-bottom-right-radius:15px;
110
+ -webkit-border-bottom-left-radius:15px;
111
+ background-color:#D2E0E6;
112
+ padding:0.5em 0.5em 0.5em 2.5em;
113
+ }
114
+ strong b.fail{
115
+ color:#710909;
116
+ }
117
+ strong b.pass{
118
+ color:#5E740B;
119
+ }
@@ -0,0 +1,1124 @@
1
+ /* @documentjs-ignore
2
+ * QUnit - A JavaScript Unit Testing Framework
3
+ *
4
+ * http://docs.jquery.com/QUnit
5
+ *
6
+ * Copyright (c) 2009 John Resig, J�rn Zaefferer
7
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
8
+ * and GPL (GPL-LICENSE.txt) licenses.
9
+ */
10
+ steal.then(function(){
11
+ (function(window) {
12
+
13
+ /*
14
+ * QUnit - A JavaScript Unit Testing Framework
15
+ *
16
+ * http://docs.jquery.com/QUnit
17
+ *
18
+ * Copyright (c) 2009 John Resig, Jörn Zaefferer
19
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
20
+ * and GPL (GPL-LICENSE.txt) licenses.
21
+ */
22
+
23
+ (function(window) {
24
+
25
+ var QUnit = {
26
+
27
+ // Initialize the configuration options
28
+ init: function() {
29
+ extend(config, {
30
+ stats: { all: 0, bad: 0 },
31
+ moduleStats: { all: 0, bad: 0 },
32
+ started: +new Date,
33
+ updateRate: 1000,
34
+ blocking: false,
35
+ autostart: true,
36
+ autorun: false,
37
+ assertions: [],
38
+ filters: [],
39
+ queue: []
40
+ });
41
+
42
+ var tests = id("qunit-tests"),
43
+ banner = id("qunit-banner"),
44
+ result = id("qunit-testresult");
45
+
46
+ if ( tests ) {
47
+ tests.innerHTML = "";
48
+ }
49
+
50
+ if ( banner ) {
51
+ banner.className = "";
52
+ }
53
+
54
+ if ( result ) {
55
+ result.parentNode.removeChild( result );
56
+ }
57
+ },
58
+
59
+ // call on start of module test to prepend name to all tests
60
+ module: function(name, testEnvironment) {
61
+ config.currentModule = name;
62
+
63
+ synchronize(function() {
64
+ if ( config.currentModule ) {
65
+ QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
66
+ }
67
+
68
+ config.currentModule = name;
69
+ config.moduleTestEnvironment = testEnvironment;
70
+ config.moduleStats = { all: 0, bad: 0 };
71
+
72
+ QUnit.moduleStart( name, testEnvironment );
73
+ }, true);
74
+ },
75
+
76
+ asyncTest: function(testName, expected, callback) {
77
+ if ( arguments.length === 2 ) {
78
+ callback = expected;
79
+ expected = 0;
80
+ }
81
+
82
+ QUnit.test(testName, expected, callback, true);
83
+ },
84
+
85
+ test: function(testName, expected, callback, async) {
86
+ var name = testName, testEnvironment, testEnvironmentArg;
87
+
88
+ if ( arguments.length === 2 ) {
89
+ callback = expected;
90
+ expected = null;
91
+ }
92
+ // is 2nd argument a testEnvironment?
93
+ if ( expected && typeof expected === 'object') {
94
+ testEnvironmentArg = expected;
95
+ expected = null;
96
+ }
97
+
98
+ if ( config.currentModule ) {
99
+ name = config.currentModule + " module: " + name;
100
+ }
101
+
102
+ if ( !validTest(name) ) {
103
+ return;
104
+ }
105
+
106
+ synchronize(function() {
107
+
108
+ testEnvironment = extend({
109
+ setup: function() {},
110
+ teardown: function() {}
111
+ }, config.moduleTestEnvironment);
112
+ if (testEnvironmentArg) {
113
+ extend(testEnvironment,testEnvironmentArg);
114
+ }
115
+
116
+ QUnit.testStart( testName, testEnvironment );
117
+
118
+ // allow utility functions to access the current test environment
119
+ QUnit.current_testEnvironment = testEnvironment;
120
+
121
+ config.assertions = [];
122
+ config.expected = expected;
123
+
124
+ var tests = id("qunit-tests");
125
+ if (tests) {
126
+ var b = document.createElement("strong");
127
+ b.innerHTML = "Running " + name;
128
+ var li = document.createElement("li");
129
+ li.appendChild( b );
130
+ li.id = "current-test-output";
131
+ tests.appendChild( li )
132
+ }
133
+
134
+ try {
135
+ if ( !config.pollution ) {
136
+ saveGlobal();
137
+ }
138
+
139
+ testEnvironment.setup.call(testEnvironment);
140
+ } catch(e) {
141
+ QUnit.ok( false, "Setup failed on " + name + ": " + e.message );
142
+ }
143
+ }, true);
144
+
145
+ synchronize(function() {
146
+ if ( async ) {
147
+ QUnit.stop();
148
+ }
149
+
150
+ try {
151
+ callback.call(testEnvironment);
152
+ } catch(e) {
153
+ fail("Test " + name + " died, exception and test follows", e, callback);
154
+ QUnit.ok( false, "Died on test #" + (config.assertions.length + 1) + ": " + e.message );
155
+ // else next test will carry the responsibility
156
+ saveGlobal();
157
+
158
+ // Restart the tests if they're blocking
159
+ if ( config.blocking ) {
160
+ start();
161
+ }
162
+ }
163
+ }, true);
164
+
165
+ synchronize(function() {
166
+ try {
167
+ checkPollution();
168
+ testEnvironment.teardown.call(testEnvironment);
169
+ } catch(e) {
170
+ QUnit.ok( false, "Teardown failed on " + name + ": " + e.message );
171
+ }
172
+ }, true);
173
+
174
+ synchronize(function() {
175
+ try {
176
+ QUnit.reset();
177
+ } catch(e) {
178
+ fail("reset() failed, following Test " + name + ", exception and reset fn follows", e, reset);
179
+ }
180
+
181
+ if ( config.expected && config.expected != config.assertions.length ) {
182
+ QUnit.ok( false, "Expected " + config.expected + " assertions, but " + config.assertions.length + " were run" );
183
+ }
184
+
185
+ var good = 0, bad = 0,
186
+ tests = id("qunit-tests");
187
+
188
+ config.stats.all += config.assertions.length;
189
+ config.moduleStats.all += config.assertions.length;
190
+
191
+ if ( tests ) {
192
+ var ol = document.createElement("ol");
193
+ ol.style.display = "none";
194
+
195
+ for ( var i = 0; i < config.assertions.length; i++ ) {
196
+ var assertion = config.assertions[i];
197
+
198
+ var li = document.createElement("li");
199
+ li.className = assertion.result ? "pass" : "fail";
200
+ li.appendChild(document.createTextNode(assertion.message || "(no message)"));
201
+ ol.appendChild( li );
202
+
203
+ if ( assertion.result ) {
204
+ good++;
205
+ } else {
206
+ bad++;
207
+ config.stats.bad++;
208
+ config.moduleStats.bad++;
209
+ }
210
+ }
211
+
212
+ var b = document.createElement("strong");
213
+ b.innerHTML = name + " <b style='color:black;'>(<b class='fail'>" + bad + "</b>, <b class='pass'>" + good + "</b>, " + config.assertions.length + ")</b>";
214
+
215
+ addEvent(b, "click", function() {
216
+ var next = b.nextSibling, display = next.style.display;
217
+ next.style.display = display === "none" ? "block" : "none";
218
+ });
219
+
220
+ addEvent(b, "dblclick", function(e) {
221
+ var target = e && e.target ? e.target : window.event.srcElement;
222
+ if ( target.nodeName.toLowerCase() === "strong" ) {
223
+ var text = "", node = target.firstChild;
224
+
225
+ while ( node.nodeType === 3 ) {
226
+ text += node.nodeValue;
227
+ node = node.nextSibling;
228
+ }
229
+
230
+ text = text.replace(/(^\s*|\s*$)/g, "");
231
+
232
+ if ( window.location ) {
233
+ window.location.href = window.location.href.match(/^(.+?)(\?.*)?$/)[1] + "?" + encodeURIComponent(text);
234
+ }
235
+ }
236
+ });
237
+
238
+ var li = id("current-test-output");
239
+ li.id = "";
240
+ li.className = bad ? "fail" : "pass";
241
+ li.removeChild( li.firstChild );
242
+ li.appendChild( b );
243
+ li.appendChild( ol );
244
+
245
+ if ( bad ) {
246
+ var toolbar = id("qunit-testrunner-toolbar");
247
+ if ( toolbar ) {
248
+ toolbar.style.display = "block";
249
+ id("qunit-filter-pass").disabled = null;
250
+ id("qunit-filter-missing").disabled = null;
251
+ }
252
+ }
253
+
254
+ } else {
255
+ for ( var i = 0; i < config.assertions.length; i++ ) {
256
+ if ( !config.assertions[i].result ) {
257
+ bad++;
258
+ config.stats.bad++;
259
+ config.moduleStats.bad++;
260
+ }
261
+ }
262
+ }
263
+
264
+ QUnit.testDone( testName, bad, config.assertions.length );
265
+
266
+ if ( !window.setTimeout && !config.queue.length ) {
267
+ done();
268
+ }
269
+ }, true);
270
+
271
+ if ( window.setTimeout && !config.doneTimer ) {
272
+ config.doneTimer = window.setTimeout(function(){
273
+ if ( !config.queue.length ) {
274
+ done();
275
+ } else {
276
+ synchronize( done );
277
+ }
278
+ }, 13);
279
+ }
280
+ },
281
+
282
+ /**
283
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
284
+ */
285
+ expect: function(asserts) {
286
+ config.expected = asserts;
287
+ },
288
+
289
+ /**
290
+ * Asserts true.
291
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
292
+ */
293
+ ok: function(a, msg) {
294
+ QUnit.log(a, msg);
295
+
296
+ config.assertions.push({
297
+ result: !!a,
298
+ message: msg
299
+ });
300
+ },
301
+
302
+ /**
303
+ * Checks that the first two arguments are equal, with an optional message.
304
+ * Prints out both actual and expected values.
305
+ *
306
+ * Prefered to ok( actual == expected, message )
307
+ *
308
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
309
+ *
310
+ * @param Object actual
311
+ * @param Object expected
312
+ * @param String message (optional)
313
+ */
314
+ equal: function(actual, expected, message) {
315
+ push(expected == actual, actual, expected, message);
316
+ },
317
+
318
+ notEqual: function(actual, expected, message) {
319
+ push(expected != actual, actual, expected, message);
320
+ },
321
+
322
+ deepEqual: function(actual, expected, message) {
323
+ push(QUnit.equiv(actual, expected), actual, expected, message);
324
+ },
325
+
326
+ notDeepEqual: function(actual, expected, message) {
327
+ push(!QUnit.equiv(actual, expected), actual, expected, message);
328
+ },
329
+
330
+ strictEqual: function(actual, expected, message) {
331
+ push(expected === actual, actual, expected, message);
332
+ },
333
+
334
+ notStrictEqual: function(actual, expected, message) {
335
+ push(expected !== actual, actual, expected, message);
336
+ },
337
+
338
+ start: function() {
339
+ // A slight delay, to avoid any current callbacks
340
+ if ( window.setTimeout ) {
341
+ window.setTimeout(function() {
342
+ if ( config.timeout ) {
343
+ clearTimeout(config.timeout);
344
+ }
345
+
346
+ config.blocking = false;
347
+ process();
348
+ }, 13);
349
+ } else {
350
+ config.blocking = false;
351
+ process();
352
+ }
353
+ },
354
+
355
+ stop: function(timeout) {
356
+ config.blocking = true;
357
+
358
+ if ( timeout && window.setTimeout ) {
359
+ config.timeout = window.setTimeout(function() {
360
+ QUnit.ok( false, "Test timed out" );
361
+ QUnit.start();
362
+ }, timeout);
363
+ }
364
+ },
365
+
366
+ /**
367
+ * Resets the test setup. Useful for tests that modify the DOM.
368
+ */
369
+ reset: function() {
370
+ if ( window.jQuery ) {
371
+ jQuery("#main").html( config.fixture );
372
+ jQuery.event.global = {};
373
+ jQuery.ajaxSettings = extend({}, config.ajaxSettings);
374
+ }
375
+ },
376
+ restart : function(){
377
+ this.init();
378
+ for(var i =0; i < config.cachelist.length; i++){
379
+ synchronize(config.cachelist[i]);
380
+ }
381
+ if (window.setTimeout && !config.doneTimer) {
382
+ config.doneTimer = window.setTimeout(function(){
383
+ if (!config.queue.length) {
384
+ done();
385
+ }
386
+ else {
387
+ synchronize(done);
388
+ }
389
+ }, 13);
390
+ }
391
+ },
392
+ /**
393
+ * Trigger an event on an element.
394
+ *
395
+ * @example triggerEvent( document.body, "click" );
396
+ *
397
+ * @param DOMElement elem
398
+ * @param String type
399
+ */
400
+ triggerEvent: function( elem, type, event ) {
401
+ if ( document.createEvent ) {
402
+ event = document.createEvent("MouseEvents");
403
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
404
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
405
+ elem.dispatchEvent( event );
406
+
407
+ } else if ( elem.fireEvent ) {
408
+ elem.fireEvent("on"+type);
409
+ }
410
+ },
411
+
412
+ // Safe object type checking
413
+ is: function( type, obj ) {
414
+ return Object.prototype.toString.call( obj ) === "[object "+ type +"]";
415
+ },
416
+
417
+ // Logging callbacks
418
+ done: function(failures, total) {},
419
+ log: function(result, message) {},
420
+ testStart: function(name, testEnvironment) {},
421
+ testDone: function(name, failures, total) {},
422
+ moduleStart: function(name, testEnvironment) {},
423
+ moduleDone: function(name, failures, total) {}
424
+ };
425
+
426
+ // Backwards compatibility, deprecated
427
+ QUnit.equals = QUnit.equal;
428
+ QUnit.same = QUnit.deepEqual;
429
+
430
+ // Maintain internal state
431
+ var config = {
432
+ // The queue of tests to run
433
+ queue: [],
434
+
435
+ // block until document ready
436
+ blocking: true,
437
+ //a list of everything to run
438
+ cachelist : []
439
+ };
440
+
441
+ // Load paramaters
442
+ (function() {
443
+ var location = window.location || { search: "", protocol: "file:" },
444
+ GETParams = location.search.slice(1).split('&');
445
+
446
+ for ( var i = 0; i < GETParams.length; i++ ) {
447
+ GETParams[i] = decodeURIComponent( GETParams[i] );
448
+ if ( GETParams[i] === "noglobals" ) {
449
+ GETParams.splice( i, 1 );
450
+ i--;
451
+ config.noglobals = true;
452
+ } else if ( GETParams[i].search('=') > -1 ) {
453
+ GETParams.splice( i, 1 );
454
+ i--;
455
+ }
456
+ }
457
+
458
+ // restrict modules/tests by get parameters
459
+ config.filters = GETParams;
460
+
461
+ // Figure out if we're running the tests from a server or not
462
+ QUnit.isLocal = !!(location.protocol === 'file:');
463
+ })();
464
+
465
+ // Expose the API as global variables, unless an 'exports'
466
+ // object exists, in that case we assume we're in CommonJS
467
+ if ( typeof exports === "undefined" || typeof require === "undefined" ) {
468
+ extend(window, QUnit);
469
+ window.QUnit = QUnit;
470
+ } else {
471
+ extend(exports, QUnit);
472
+ exports.QUnit = QUnit;
473
+ }
474
+
475
+ QUnit.config = config;
476
+
477
+ if ( typeof document === "undefined" || document.readyState === "complete" ) {
478
+ config.autorun = true;
479
+ }
480
+
481
+ addEvent(window, "load", function() {
482
+ // Initialize the config, saving the execution queue
483
+ var oldconfig = extend({}, config);
484
+ QUnit.init();
485
+ extend(config, oldconfig);
486
+
487
+ config.blocking = false;
488
+
489
+ var userAgent = id("qunit-userAgent");
490
+ if ( userAgent ) {
491
+ userAgent.innerHTML = navigator.userAgent;
492
+ }
493
+
494
+ var toolbar = id("qunit-testrunner-toolbar");
495
+ if ( toolbar ) {
496
+ toolbar.style.display = "none";
497
+
498
+ var filter = document.createElement("input");
499
+ filter.type = "checkbox";
500
+ filter.id = "qunit-filter-pass";
501
+ filter.disabled = true;
502
+ addEvent( filter, "click", function() {
503
+ var li = document.getElementsByTagName("li");
504
+ for ( var i = 0; i < li.length; i++ ) {
505
+ if ( li[i].className.indexOf("pass") > -1 ) {
506
+ li[i].style.display = filter.checked ? "none" : "";
507
+ }
508
+ }
509
+ });
510
+ toolbar.appendChild( filter );
511
+
512
+ var label = document.createElement("label");
513
+ label.setAttribute("for", "qunit-filter-pass");
514
+ label.innerHTML = "Hide passed tests";
515
+ toolbar.appendChild( label );
516
+
517
+ var missing = document.createElement("input");
518
+ missing.type = "checkbox";
519
+ missing.id = "qunit-filter-missing";
520
+ missing.disabled = true;
521
+ addEvent( missing, "click", function() {
522
+ var li = document.getElementsByTagName("li");
523
+ for ( var i = 0; i < li.length; i++ ) {
524
+ if ( li[i].className.indexOf("fail") > -1 && li[i].innerHTML.indexOf('missing test - untested code is broken code') > - 1 ) {
525
+ li[i].parentNode.parentNode.style.display = missing.checked ? "none" : "block";
526
+ }
527
+ }
528
+ });
529
+ toolbar.appendChild( missing );
530
+
531
+ label = document.createElement("label");
532
+ label.setAttribute("for", "qunit-filter-missing");
533
+ label.innerHTML = "Hide missing tests (untested code is broken code)";
534
+ toolbar.appendChild( label );
535
+ }
536
+
537
+ var main = id('main');
538
+ if ( main ) {
539
+ config.fixture = main.innerHTML;
540
+ }
541
+
542
+ if ( window.jQuery ) {
543
+ config.ajaxSettings = window.jQuery.ajaxSettings;
544
+ }
545
+
546
+ if (config.autostart) {
547
+ QUnit.start();
548
+ }
549
+ });
550
+
551
+ function done() {
552
+ if ( config.doneTimer && window.clearTimeout ) {
553
+ window.clearTimeout( config.doneTimer );
554
+ config.doneTimer = null;
555
+ }
556
+
557
+ if ( config.queue.length ) {
558
+ config.doneTimer = window.setTimeout(function(){
559
+ if ( !config.queue.length ) {
560
+ done();
561
+ } else {
562
+ synchronize( done );
563
+ }
564
+ }, 13);
565
+
566
+ return;
567
+ }
568
+
569
+ config.autorun = true;
570
+
571
+ // Log the last module results
572
+ if ( config.currentModule ) {
573
+ QUnit.moduleDone( config.currentModule, config.moduleStats.bad, config.moduleStats.all );
574
+ }
575
+
576
+ var banner = id("qunit-banner"),
577
+ tests = id("qunit-tests"),
578
+ html = ['Tests completed in ',
579
+ +new Date - config.started, ' milliseconds.<br/>',
580
+ '<span class="passed">', config.stats.all - config.stats.bad, '</span> tests of <span class="total">', config.stats.all, '</span> passed, <span class="failed">', config.stats.bad,'</span> failed.'].join('');
581
+
582
+ if ( banner ) {
583
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
584
+ }
585
+
586
+ if ( tests ) {
587
+ var result = id("qunit-testresult");
588
+
589
+ if ( !result ) {
590
+ result = document.createElement("p");
591
+ result.id = "qunit-testresult";
592
+ result.className = "result";
593
+ tests.parentNode.insertBefore( result, tests.nextSibling );
594
+ }
595
+
596
+ result.innerHTML = html;
597
+ }
598
+
599
+ QUnit.done( config.stats.bad, config.stats.all );
600
+ }
601
+
602
+ function validTest( name ) {
603
+ var i = config.filters.length,
604
+ run = false;
605
+
606
+ if ( !i ) {
607
+ return true;
608
+ }
609
+
610
+ while ( i-- ) {
611
+ var filter = config.filters[i],
612
+ not = filter.charAt(0) == '!';
613
+
614
+ if ( not ) {
615
+ filter = filter.slice(1);
616
+ }
617
+
618
+ if ( name.indexOf(filter) !== -1 ) {
619
+ return !not;
620
+ }
621
+
622
+ if ( not ) {
623
+ run = true;
624
+ }
625
+ }
626
+
627
+ return run;
628
+ }
629
+
630
+ function push(result, actual, expected, message) {
631
+ message = message || (result ? "okay" : "failed");
632
+ QUnit.ok( result, message + ", expected: " + QUnit.jsDump.parse(expected) + " result: " + QUnit.jsDump.parse(actual) );
633
+ }
634
+
635
+ function synchronize( callback , save) {
636
+ config.queue.push( callback );
637
+ if(save){
638
+ config.cachelist.push( callback )
639
+ }
640
+ if ( config.autorun && !config.blocking ) {
641
+ process();
642
+ }
643
+ }
644
+ function process() {
645
+ var start = (new Date()).getTime();
646
+
647
+ while ( config.queue.length && !config.blocking ) {
648
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
649
+ config.queue.shift()();
650
+
651
+ } else {
652
+ setTimeout( process, 13 );
653
+ break;
654
+ }
655
+ }
656
+ }
657
+
658
+ function saveGlobal() {
659
+ config.pollution = [];
660
+
661
+ if ( config.noglobals ) {
662
+ for ( var key in window ) {
663
+ config.pollution.push( key );
664
+ }
665
+ }
666
+ }
667
+
668
+ function checkPollution( name ) {
669
+ var old = config.pollution;
670
+ saveGlobal();
671
+
672
+ var newGlobals = diff( old, config.pollution );
673
+ if ( newGlobals.length > 0 ) {
674
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
675
+ config.expected++;
676
+ }
677
+
678
+ var deletedGlobals = diff( config.pollution, old );
679
+ if ( deletedGlobals.length > 0 ) {
680
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
681
+ config.expected++;
682
+ }
683
+ }
684
+
685
+ // returns a new Array with the elements that are in a but not in b
686
+ function diff( a, b ) {
687
+ var result = a.slice();
688
+ for ( var i = 0; i < result.length; i++ ) {
689
+ for ( var j = 0; j < b.length; j++ ) {
690
+ if ( result[i] === b[j] ) {
691
+ result.splice(i, 1);
692
+ i--;
693
+ break;
694
+ }
695
+ }
696
+ }
697
+ return result;
698
+ }
699
+
700
+ function fail(message, exception, callback) {
701
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
702
+ console.error(message);
703
+ console.error(exception);
704
+ console.warn(callback.toString());
705
+
706
+ } else if ( window.opera && opera.postError ) {
707
+ opera.postError(message, exception, callback.toString);
708
+ }
709
+ }
710
+
711
+ function extend(a, b) {
712
+ for ( var prop in b ) {
713
+ a[prop] = b[prop];
714
+ }
715
+
716
+ return a;
717
+ }
718
+
719
+ function addEvent(elem, type, fn) {
720
+ if ( elem.addEventListener ) {
721
+ elem.addEventListener( type, fn, false );
722
+ } else if ( elem.attachEvent ) {
723
+ elem.attachEvent( "on" + type, fn );
724
+ } else {
725
+ fn();
726
+ }
727
+ }
728
+
729
+ function id(name) {
730
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
731
+ document.getElementById( name );
732
+ }
733
+
734
+ // Test for equality any JavaScript type.
735
+ // Discussions and reference: http://philrathe.com/articles/equiv
736
+ // Test suites: http://philrathe.com/tests/equiv
737
+ // Author: Philippe Rathé <prathe@gmail.com>
738
+ QUnit.equiv = function () {
739
+
740
+ var innerEquiv; // the real equiv function
741
+ var callers = []; // stack to decide between skip/abort functions
742
+ var parents = []; // stack to avoiding loops from circular referencing
743
+
744
+
745
+ // Determine what is o.
746
+ function hoozit(o) {
747
+ if (QUnit.is("String", o)) {
748
+ return "string";
749
+
750
+ } else if (QUnit.is("Boolean", o)) {
751
+ return "boolean";
752
+
753
+ } else if (QUnit.is("Number", o)) {
754
+
755
+ if (isNaN(o)) {
756
+ return "nan";
757
+ } else {
758
+ return "number";
759
+ }
760
+
761
+ } else if (typeof o === "undefined") {
762
+ return "undefined";
763
+
764
+ // consider: typeof null === object
765
+ } else if (o === null) {
766
+ return "null";
767
+
768
+ // consider: typeof [] === object
769
+ } else if (QUnit.is( "Array", o)) {
770
+ return "array";
771
+
772
+ // consider: typeof new Date() === object
773
+ } else if (QUnit.is( "Date", o)) {
774
+ return "date";
775
+
776
+ // consider: /./ instanceof Object;
777
+ // /./ instanceof RegExp;
778
+ // typeof /./ === "function"; // => false in IE and Opera,
779
+ // true in FF and Safari
780
+ } else if (QUnit.is( "RegExp", o)) {
781
+ return "regexp";
782
+
783
+ } else if (typeof o === "object") {
784
+ return "object";
785
+
786
+ } else if (QUnit.is( "Function", o)) {
787
+ return "function";
788
+ } else {
789
+ return undefined;
790
+ }
791
+ }
792
+
793
+ // Call the o related callback with the given arguments.
794
+ function bindCallbacks(o, callbacks, args) {
795
+ var prop = hoozit(o);
796
+ if (prop) {
797
+ if (hoozit(callbacks[prop]) === "function") {
798
+ return callbacks[prop].apply(callbacks, args);
799
+ } else {
800
+ return callbacks[prop]; // or undefined
801
+ }
802
+ }
803
+ }
804
+
805
+ var callbacks = function () {
806
+
807
+ // for string, boolean, number and null
808
+ function useStrictEquality(b, a) {
809
+ if (b instanceof a.constructor || a instanceof b.constructor) {
810
+ // to catch short annotaion VS 'new' annotation of a declaration
811
+ // e.g. var i = 1;
812
+ // var j = new Number(1);
813
+ return a == b;
814
+ } else {
815
+ return a === b;
816
+ }
817
+ }
818
+
819
+ return {
820
+ "string": useStrictEquality,
821
+ "boolean": useStrictEquality,
822
+ "number": useStrictEquality,
823
+ "null": useStrictEquality,
824
+ "undefined": useStrictEquality,
825
+
826
+ "nan": function (b) {
827
+ return isNaN(b);
828
+ },
829
+
830
+ "date": function (b, a) {
831
+ return hoozit(b) === "date" && a.valueOf() === b.valueOf();
832
+ },
833
+
834
+ "regexp": function (b, a) {
835
+ return hoozit(b) === "regexp" &&
836
+ a.source === b.source && // the regex itself
837
+ a.global === b.global && // and its modifers (gmi) ...
838
+ a.ignoreCase === b.ignoreCase &&
839
+ a.multiline === b.multiline;
840
+ },
841
+
842
+ // - skip when the property is a method of an instance (OOP)
843
+ // - abort otherwise,
844
+ // initial === would have catch identical references anyway
845
+ "function": function () {
846
+ var caller = callers[callers.length - 1];
847
+ return caller !== Object &&
848
+ typeof caller !== "undefined";
849
+ },
850
+
851
+ "array": function (b, a) {
852
+ var i, j, loop;
853
+ var len;
854
+
855
+ // b could be an object literal here
856
+ if ( ! (hoozit(b) === "array")) {
857
+ return false;
858
+ }
859
+
860
+ len = a.length;
861
+ if (len !== b.length) { // safe and faster
862
+ return false;
863
+ }
864
+
865
+ //track reference to avoid circular references
866
+ parents.push(a);
867
+ for (i = 0; i < len; i++) {
868
+ loop = false;
869
+ for(j=0;j<parents.length;j++){
870
+ if(parents[j] === a[i]){
871
+ loop = true;//dont rewalk array
872
+ }
873
+ }
874
+ if (!loop && ! innerEquiv(a[i], b[i])) {
875
+ parents.pop();
876
+ return false;
877
+ }
878
+ }
879
+ parents.pop();
880
+ return true;
881
+ },
882
+
883
+ "object": function (b, a) {
884
+ var i, j, loop;
885
+ var eq = true; // unless we can proove it
886
+ var aProperties = [], bProperties = []; // collection of strings
887
+
888
+ // comparing constructors is more strict than using instanceof
889
+ if ( a.constructor !== b.constructor) {
890
+ return false;
891
+ }
892
+
893
+ // stack constructor before traversing properties
894
+ callers.push(a.constructor);
895
+ //track reference to avoid circular references
896
+ parents.push(a);
897
+
898
+ for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
899
+ loop = false;
900
+ for(j=0;j<parents.length;j++){
901
+ if(parents[j] === a[i])
902
+ loop = true; //don't go down the same path twice
903
+ }
904
+ aProperties.push(i); // collect a's properties
905
+
906
+ if (!loop && ! innerEquiv(a[i], b[i])) {
907
+ eq = false;
908
+ break;
909
+ }
910
+ }
911
+
912
+ callers.pop(); // unstack, we are done
913
+ parents.pop();
914
+
915
+ for (i in b) {
916
+ bProperties.push(i); // collect b's properties
917
+ }
918
+
919
+ // Ensures identical properties name
920
+ return eq && innerEquiv(aProperties.sort(), bProperties.sort());
921
+ }
922
+ };
923
+ }();
924
+
925
+ innerEquiv = function () { // can take multiple arguments
926
+ var args = Array.prototype.slice.apply(arguments);
927
+ if (args.length < 2) {
928
+ return true; // end transition
929
+ }
930
+
931
+ return (function (a, b) {
932
+ if (a === b) {
933
+ return true; // catch the most you can
934
+ } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || hoozit(a) !== hoozit(b)) {
935
+ return false; // don't lose time with error prone cases
936
+ } else {
937
+ return bindCallbacks(a, callbacks, [b, a]);
938
+ }
939
+
940
+ // apply transition with (1..n) arguments
941
+ })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
942
+ };
943
+
944
+ return innerEquiv;
945
+
946
+ }();
947
+
948
+ /**
949
+ * jsDump
950
+ * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
951
+ * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
952
+ * Date: 5/15/2008
953
+ * @projectDescription Advanced and extensible data dumping for Javascript.
954
+ * @version 1.0.0
955
+ * @author Ariel Flesler
956
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
957
+ */
958
+ QUnit.jsDump = (function() {
959
+ function quote( str ) {
960
+ return '"' + str.toString().replace(/"/g, '\\"') + '"';
961
+ };
962
+ function literal( o ) {
963
+ return o + '';
964
+ };
965
+ function join( pre, arr, post ) {
966
+ var s = jsDump.separator(),
967
+ base = jsDump.indent(),
968
+ inner = jsDump.indent(1);
969
+ if ( arr.join )
970
+ arr = arr.join( ',' + s + inner );
971
+ if ( !arr )
972
+ return pre + post;
973
+ return [ pre, inner + arr, base + post ].join(s);
974
+ };
975
+ function array( arr ) {
976
+ var i = arr.length, ret = Array(i);
977
+ this.up();
978
+ while ( i-- )
979
+ ret[i] = this.parse( arr[i] );
980
+ this.down();
981
+ return join( '[', ret, ']' );
982
+ };
983
+
984
+ var reName = /^function (\w+)/;
985
+
986
+ var jsDump = {
987
+ parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
988
+ var parser = this.parsers[ type || this.typeOf(obj) ];
989
+ type = typeof parser;
990
+
991
+ return type == 'function' ? parser.call( this, obj ) :
992
+ type == 'string' ? parser :
993
+ this.parsers.error;
994
+ },
995
+ typeOf:function( obj ) {
996
+ var type;
997
+ if ( obj === null ) {
998
+ type = "null";
999
+ } else if (typeof obj === "undefined") {
1000
+ type = "undefined";
1001
+ } else if (QUnit.is("RegExp", obj)) {
1002
+ type = "regexp";
1003
+ } else if (QUnit.is("Date", obj)) {
1004
+ type = "date";
1005
+ } else if (QUnit.is("Function", obj)) {
1006
+ type = "function";
1007
+ } else if (obj.setInterval && obj.document && !obj.nodeType) {
1008
+ type = "window";
1009
+ } else if (obj.nodeType === 9) {
1010
+ type = "document";
1011
+ } else if (obj.nodeType) {
1012
+ type = "node";
1013
+ } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
1014
+ type = "array";
1015
+ } else {
1016
+ type = typeof obj;
1017
+ }
1018
+ return type;
1019
+ },
1020
+ separator:function() {
1021
+ return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
1022
+ },
1023
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
1024
+ if ( !this.multiline )
1025
+ return '';
1026
+ var chr = this.indentChar;
1027
+ if ( this.HTML )
1028
+ chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
1029
+ return Array( this._depth_ + (extra||0) ).join(chr);
1030
+ },
1031
+ up:function( a ) {
1032
+ this._depth_ += a || 1;
1033
+ },
1034
+ down:function( a ) {
1035
+ this._depth_ -= a || 1;
1036
+ },
1037
+ setParser:function( name, parser ) {
1038
+ this.parsers[name] = parser;
1039
+ },
1040
+ // The next 3 are exposed so you can use them
1041
+ quote:quote,
1042
+ literal:literal,
1043
+ join:join,
1044
+ //
1045
+ _depth_: 1,
1046
+ // This is the list of parsers, to modify them, use jsDump.setParser
1047
+ parsers:{
1048
+ window: '[Window]',
1049
+ document: '[Document]',
1050
+ error:'[ERROR]', //when no parser is found, shouldn't happen
1051
+ unknown: '[Unknown]',
1052
+ 'null':'null',
1053
+ undefined:'undefined',
1054
+ 'function':function( fn ) {
1055
+ var ret = 'function',
1056
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
1057
+ if ( name )
1058
+ ret += ' ' + name;
1059
+ ret += '(';
1060
+
1061
+ ret = [ ret, this.parse( fn, 'functionArgs' ), '){'].join('');
1062
+ return join( ret, this.parse(fn,'functionCode'), '}' );
1063
+ },
1064
+ array: array,
1065
+ nodelist: array,
1066
+ arguments: array,
1067
+ object:function( map ) {
1068
+ var ret = [ ];
1069
+ this.up();
1070
+ for ( var key in map )
1071
+ ret.push( this.parse(key,'key') + ': ' + this.parse(map[key]) );
1072
+ this.down();
1073
+ return join( '{', ret, '}' );
1074
+ },
1075
+ node:function( node ) {
1076
+ var open = this.HTML ? '&lt;' : '<',
1077
+ close = this.HTML ? '&gt;' : '>';
1078
+
1079
+ var tag = node.nodeName.toLowerCase(),
1080
+ ret = open + tag;
1081
+
1082
+ for ( var a in this.DOMAttrs ) {
1083
+ var val = node[this.DOMAttrs[a]];
1084
+ if ( val )
1085
+ ret += ' ' + a + '=' + this.parse( val, 'attribute' );
1086
+ }
1087
+ return ret + close + open + '/' + tag + close;
1088
+ },
1089
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
1090
+ var l = fn.length;
1091
+ if ( !l ) return '';
1092
+
1093
+ var args = Array(l);
1094
+ while ( l-- )
1095
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
1096
+ return ' ' + args.join(', ') + ' ';
1097
+ },
1098
+ key:quote, //object calls it internally, the key part of an item in a map
1099
+ functionCode:'[code]', //function calls it internally, it's the content of the function
1100
+ attribute:quote, //node calls it internally, it's an html attribute value
1101
+ string:quote,
1102
+ date:quote,
1103
+ regexp:literal, //regex
1104
+ number:literal,
1105
+ 'boolean':literal
1106
+ },
1107
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
1108
+ id:'id',
1109
+ name:'name',
1110
+ 'class':'className'
1111
+ },
1112
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
1113
+ indentChar:' ',//indentation unit
1114
+ multiline:false //if true, items in a collection, are separated by a \n, else just a space.
1115
+ };
1116
+
1117
+ return jsDump;
1118
+ })();
1119
+
1120
+ })(this);
1121
+
1122
+
1123
+ })(this);
1124
+ }).plugins("funcunit/qunit/rhino");