closure 1.2.701 → 1.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 (1566) hide show
  1. data/README.md +9 -8
  2. data/closure-compiler/README +1 -1
  3. data/closure-compiler/compiler.jar +0 -0
  4. data/docs/SCRIPT.md +142 -0
  5. data/docs/closure/Closure/BeanShell.html +335 -0
  6. data/docs/closure/Closure/Compiler/Compilation.html +636 -0
  7. data/docs/closure/Closure/Compiler/Error.html +116 -0
  8. data/docs/closure/Closure/Compiler.html +387 -0
  9. data/docs/closure/Closure/FileResponse.html +622 -0
  10. data/docs/closure/Closure/Goog.html +1251 -0
  11. data/docs/closure/Closure/Middleware.html +304 -0
  12. data/docs/closure/Closure/Script/NotFound.html +116 -0
  13. data/docs/closure/Closure/Script/RenderStackOverflow.html +116 -0
  14. data/docs/closure/Closure/Script.html +1083 -0
  15. data/docs/closure/Closure/Server.html +439 -0
  16. data/docs/closure/Closure/ShowExceptions.html +266 -0
  17. data/docs/closure/Closure/Sources.html +1272 -0
  18. data/docs/closure/Closure/Templates/Error.html +116 -0
  19. data/docs/closure/Closure/Templates.html +361 -0
  20. data/docs/closure/Closure.html +715 -0
  21. data/docs/closure/_index.html +289 -0
  22. data/docs/closure/class_list.html +47 -0
  23. data/docs/closure/css/common.css +1 -0
  24. data/docs/closure/css/full_list.css +53 -0
  25. data/docs/closure/css/style.css +320 -0
  26. data/{closure-library/LICENSE → docs/closure/file.LICENSE.html} +106 -16
  27. data/docs/closure/file.README.html +79 -0
  28. data/docs/closure/file_list.html +52 -0
  29. data/docs/closure/frames.html +13 -0
  30. data/docs/closure/index.html +79 -0
  31. data/docs/closure/js/app.js +205 -0
  32. data/docs/closure/js/full_list.js +150 -0
  33. data/docs/closure/js/jquery.js +16 -0
  34. data/docs/closure/method_list.html +486 -0
  35. data/docs/closure/top-level-namespace.html +103 -0
  36. data/docs/index.erb +26 -0
  37. data/externs/chrome_extensions.externs +968 -0
  38. data/{scripts/externs/jquery_1_4_2.externs → externs/jquery-1.3.2.externs} +39 -170
  39. data/externs/jquery-1.4.3.externs +1289 -0
  40. data/externs/jquery-1.4.4.externs +1302 -0
  41. data/externs/jquery-1.5.externs +1697 -0
  42. data/externs/jquery.externs +4 -0
  43. data/lib/closure/beanshell.rb +9 -21
  44. data/lib/closure/compiler.rb +247 -102
  45. data/lib/closure/engines.rb +50 -0
  46. data/lib/closure/goog.rb +122 -68
  47. data/lib/closure/script.rb +68 -54
  48. data/lib/closure/server.rb +10 -1
  49. data/lib/closure/show_exceptions.rb +30 -3
  50. data/lib/closure/sources.rb +26 -25
  51. data/lib/closure/templates.rb +79 -124
  52. data/lib/closure/version.rb +1 -1
  53. data/lib/closure.rb +64 -43
  54. data/lib/shim.jar +0 -0
  55. data/scripts/config.ru +25 -0
  56. data/scripts/hello/compiler.js.erb +48 -0
  57. data/scripts/hello/compiler_build.js +5 -0
  58. data/scripts/hello/compiler_build.map +752 -0
  59. data/scripts/hello/compiler_debug.js +125 -0
  60. data/scripts/hello/hello.js +11 -0
  61. data/scripts/hello/index.erb +11 -0
  62. data/scripts/hello/legume.js +20 -0
  63. data/scripts/hello/legume.soy +9 -0
  64. data/scripts/index.erb +45 -5
  65. data/scripts/jquery/compiler.js.erb +7 -0
  66. data/scripts/jquery/compiler_out.js +1 -0
  67. data/scripts/jquery/index.erb +25 -0
  68. data/scripts/jquery/jquery_test.js +8 -0
  69. data/scripts/modules/api.js +11 -0
  70. data/scripts/modules/api_init.js +8 -0
  71. data/scripts/modules/app.js +102 -0
  72. data/scripts/modules/app_init.js +33 -0
  73. data/scripts/modules/compiler.js.erb +34 -0
  74. data/scripts/modules/compiler_build.js +6 -0
  75. data/scripts/modules/compiler_build.map +12077 -0
  76. data/scripts/modules/compiler_build_api.js +1 -0
  77. data/scripts/modules/compiler_build_app.js +74 -0
  78. data/scripts/modules/compiler_build_settings.js +2 -0
  79. data/scripts/modules/compiler_debug.js +6 -0
  80. data/scripts/modules/compiler_debug_api.js +11 -0
  81. data/scripts/modules/compiler_debug_app.js +2870 -0
  82. data/scripts/modules/compiler_debug_settings.js +42 -0
  83. data/scripts/modules/index.erb +18 -0
  84. data/scripts/modules/settings.js +19 -0
  85. data/scripts/modules/settings_init.js +14 -0
  86. data/scripts/{demos/rails_ujs.erb → rails/index.erb} +14 -6
  87. data/scripts/{demos → rails}/rails_ujs.js +0 -40
  88. data/scripts/svn.erb +228 -0
  89. data/scripts/welcome.erb +78 -0
  90. metadata +101 -1507
  91. data/.gitignore +0 -6
  92. data/.yardopts +0 -3
  93. data/closure-library/AUTHORS +0 -12
  94. data/closure-library/README +0 -6
  95. data/closure-library/all_tests.html +0 -113
  96. data/closure-library/alltests.js +0 -16
  97. data/closure-library/closure/bin/build/closurebuilder.py +0 -257
  98. data/closure-library/closure/bin/build/depstree.py +0 -186
  99. data/closure-library/closure/bin/build/depstree_test.py +0 -127
  100. data/closure-library/closure/bin/build/depswriter.py +0 -197
  101. data/closure-library/closure/bin/build/jscompiler.py +0 -69
  102. data/closure-library/closure/bin/build/source.py +0 -86
  103. data/closure-library/closure/bin/build/source_test.py +0 -57
  104. data/closure-library/closure/bin/build/treescan.py +0 -78
  105. data/closure-library/closure/bin/calcdeps.py +0 -570
  106. data/closure-library/closure/bin/scopify.py +0 -211
  107. data/closure-library/closure/css/inlay/g-base.css +0 -82
  108. data/closure-library/closure/css/inlay/g-fixed.css +0 -158
  109. data/closure-library/closure/css/inlay/g-ratio.css +0 -253
  110. data/closure-library/closure/goog/array/array.js +0 -1300
  111. data/closure-library/closure/goog/array/array_test.html +0 -1524
  112. data/closure-library/closure/goog/asserts/asserts.js +0 -277
  113. data/closure-library/closure/goog/asserts/asserts_test.html +0 -163
  114. data/closure-library/closure/goog/async/conditionaldelay.js +0 -238
  115. data/closure-library/closure/goog/async/conditionaldelay_test.html +0 -227
  116. data/closure-library/closure/goog/async/delay.js +0 -174
  117. data/closure-library/closure/goog/async/delay_test.html +0 -148
  118. data/closure-library/closure/goog/async/throttle.js +0 -189
  119. data/closure-library/closure/goog/async/throttle_test.html +0 -102
  120. data/closure-library/closure/goog/base.js +0 -1471
  121. data/closure-library/closure/goog/base_test.html +0 -1166
  122. data/closure-library/closure/goog/bootstrap/webworkers.js +0 -37
  123. data/closure-library/closure/goog/color/alpha.js +0 -436
  124. data/closure-library/closure/goog/color/alpha_test.html +0 -234
  125. data/closure-library/closure/goog/color/color.js +0 -757
  126. data/closure-library/closure/goog/color/color_test.html +0 -645
  127. data/closure-library/closure/goog/color/names.js +0 -176
  128. data/closure-library/closure/goog/crypt/arc4.js +0 -141
  129. data/closure-library/closure/goog/crypt/arc4_test.html +0 -42
  130. data/closure-library/closure/goog/crypt/base64.js +0 -267
  131. data/closure-library/closure/goog/crypt/base64_test.html +0 -106
  132. data/closure-library/closure/goog/crypt/basen.js +0 -242
  133. data/closure-library/closure/goog/crypt/basen_test.html +0 -167
  134. data/closure-library/closure/goog/crypt/crypt.js +0 -103
  135. data/closure-library/closure/goog/crypt/crypt_test.html +0 -68
  136. data/closure-library/closure/goog/crypt/hash32.js +0 -184
  137. data/closure-library/closure/goog/crypt/hash32_test.html +0 -287
  138. data/closure-library/closure/goog/crypt/sha1.js +0 -238
  139. data/closure-library/closure/goog/crypt/sha1_test.html +0 -47
  140. data/closure-library/closure/goog/css/autocomplete.css +0 -43
  141. data/closure-library/closure/goog/css/bubble.css +0 -84
  142. data/closure-library/closure/goog/css/button.css +0 -38
  143. data/closure-library/closure/goog/css/charpicker.css +0 -201
  144. data/closure-library/closure/goog/css/checkbox.css +0 -38
  145. data/closure-library/closure/goog/css/colormenubutton.css +0 -25
  146. data/closure-library/closure/goog/css/colorpalette.css +0 -54
  147. data/closure-library/closure/goog/css/colorpicker-simplegrid.css +0 -50
  148. data/closure-library/closure/goog/css/combobox.css +0 -57
  149. data/closure-library/closure/goog/css/common.css +0 -41
  150. data/closure-library/closure/goog/css/css3button.css +0 -77
  151. data/closure-library/closure/goog/css/css3menubutton.css +0 -23
  152. data/closure-library/closure/goog/css/custombutton.css +0 -164
  153. data/closure-library/closure/goog/css/datepicker.css +0 -148
  154. data/closure-library/closure/goog/css/dialog.css +0 -72
  155. data/closure-library/closure/goog/css/dimensionpicker.css +0 -47
  156. data/closure-library/closure/goog/css/dragdropdetector.css +0 -48
  157. data/closure-library/closure/goog/css/editor/bubble.css +0 -73
  158. data/closure-library/closure/goog/css/editor/dialog.css +0 -66
  159. data/closure-library/closure/goog/css/editor/linkdialog.css +0 -36
  160. data/closure-library/closure/goog/css/editortoolbar.css +0 -225
  161. data/closure-library/closure/goog/css/filteredmenu.css +0 -30
  162. data/closure-library/closure/goog/css/filterobservingmenuitem.css +0 -25
  163. data/closure-library/closure/goog/css/flatbutton.css +0 -65
  164. data/closure-library/closure/goog/css/flatmenubutton.css +0 -63
  165. data/closure-library/closure/goog/css/hovercard.css +0 -51
  166. data/closure-library/closure/goog/css/hsvapalette.css +0 -231
  167. data/closure-library/closure/goog/css/hsvpalette.css +0 -179
  168. data/closure-library/closure/goog/css/imagelessbutton.css +0 -160
  169. data/closure-library/closure/goog/css/imagelessmenubutton.css +0 -23
  170. data/closure-library/closure/goog/css/inputdatepicker.css +0 -12
  171. data/closure-library/closure/goog/css/linkbutton.css +0 -26
  172. data/closure-library/closure/goog/css/menu.css +0 -27
  173. data/closure-library/closure/goog/css/menubutton.css +0 -169
  174. data/closure-library/closure/goog/css/menuitem.css +0 -96
  175. data/closure-library/closure/goog/css/menuseparator.css +0 -19
  176. data/closure-library/closure/goog/css/multitestrunner.css +0 -121
  177. data/closure-library/closure/goog/css/offline.css +0 -147
  178. data/closure-library/closure/goog/css/palette.css +0 -36
  179. data/closure-library/closure/goog/css/popupdatepicker.css +0 -17
  180. data/closure-library/closure/goog/css/roundedpanel.css +0 -29
  181. data/closure-library/closure/goog/css/roundedtab.css +0 -158
  182. data/closure-library/closure/goog/css/submenu.css +0 -28
  183. data/closure-library/closure/goog/css/tab.css +0 -91
  184. data/closure-library/closure/goog/css/tabbar.css +0 -52
  185. data/closure-library/closure/goog/css/tablesorter.css +0 -14
  186. data/closure-library/closure/goog/css/toolbar.css +0 -400
  187. data/closure-library/closure/goog/css/tooltip.css +0 -14
  188. data/closure-library/closure/goog/css/tree.css +0 -147
  189. data/closure-library/closure/goog/css/tristatemenuitem.css +0 -43
  190. data/closure-library/closure/goog/cssom/cssom.js +0 -447
  191. data/closure-library/closure/goog/cssom/cssom_test.html +0 -343
  192. data/closure-library/closure/goog/cssom/cssom_test_import_1.css +0 -11
  193. data/closure-library/closure/goog/cssom/cssom_test_import_2.css +0 -10
  194. data/closure-library/closure/goog/cssom/cssom_test_link_1.css +0 -10
  195. data/closure-library/closure/goog/cssom/iframe/style.js +0 -1020
  196. data/closure-library/closure/goog/cssom/iframe/style_test.html +0 -391
  197. data/closure-library/closure/goog/cssom/iframe/style_test_import.css +0 -10
  198. data/closure-library/closure/goog/datasource/datamanager.js +0 -566
  199. data/closure-library/closure/goog/datasource/datasource.js +0 -646
  200. data/closure-library/closure/goog/datasource/datasource_test.html +0 -265
  201. data/closure-library/closure/goog/datasource/expr.js +0 -544
  202. data/closure-library/closure/goog/datasource/expr_test.html +0 -97
  203. data/closure-library/closure/goog/datasource/fastdatanode.js +0 -792
  204. data/closure-library/closure/goog/datasource/fastdatanode_test.html +0 -254
  205. data/closure-library/closure/goog/datasource/jsdatasource.js +0 -460
  206. data/closure-library/closure/goog/datasource/jsondatasource.js +0 -146
  207. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js +0 -191
  208. data/closure-library/closure/goog/datasource/jsxmlhttpdatasource_test.html +0 -94
  209. data/closure-library/closure/goog/datasource/xmldatasource.js +0 -407
  210. data/closure-library/closure/goog/date/date.js +0 -1642
  211. data/closure-library/closure/goog/date/date_test.html +0 -1293
  212. data/closure-library/closure/goog/date/datelike.js +0 -27
  213. data/closure-library/closure/goog/date/daterange.js +0 -398
  214. data/closure-library/closure/goog/date/daterange_test.html +0 -213
  215. data/closure-library/closure/goog/date/relative.js +0 -425
  216. data/closure-library/closure/goog/date/relative_test.html +0 -124
  217. data/closure-library/closure/goog/date/utcdatetime.js +0 -178
  218. data/closure-library/closure/goog/date/utcdatetime_test.html +0 -119
  219. data/closure-library/closure/goog/debug/console.js +0 -138
  220. data/closure-library/closure/goog/debug/debug.js +0 -452
  221. data/closure-library/closure/goog/debug/debug_test.html +0 -32
  222. data/closure-library/closure/goog/debug/debugwindow.js +0 -582
  223. data/closure-library/closure/goog/debug/devcss/devcss.js +0 -435
  224. data/closure-library/closure/goog/debug/devcss/devcss_test.html +0 -365
  225. data/closure-library/closure/goog/debug/devcss/devcssrunner.js +0 -26
  226. data/closure-library/closure/goog/debug/divconsole.js +0 -141
  227. data/closure-library/closure/goog/debug/enhanceerror_test.html +0 -138
  228. data/closure-library/closure/goog/debug/entrypointregistry.js +0 -111
  229. data/closure-library/closure/goog/debug/entrypointregistry_test.html +0 -63
  230. data/closure-library/closure/goog/debug/error.js +0 -47
  231. data/closure-library/closure/goog/debug/error_test.html +0 -85
  232. data/closure-library/closure/goog/debug/errorhandler.js +0 -234
  233. data/closure-library/closure/goog/debug/errorhandler_async_test.html +0 -112
  234. data/closure-library/closure/goog/debug/errorhandler_test.html +0 -186
  235. data/closure-library/closure/goog/debug/errorhandlerweakdep.js +0 -38
  236. data/closure-library/closure/goog/debug/errorreporter.js +0 -324
  237. data/closure-library/closure/goog/debug/errorreporter_test.html +0 -289
  238. data/closure-library/closure/goog/debug/fancywindow.js +0 -265
  239. data/closure-library/closure/goog/debug/formatter.js +0 -314
  240. data/closure-library/closure/goog/debug/gcdiagnostics.js +0 -143
  241. data/closure-library/closure/goog/debug/logbuffer.js +0 -147
  242. data/closure-library/closure/goog/debug/logbuffer_test.html +0 -105
  243. data/closure-library/closure/goog/debug/logger.js +0 -809
  244. data/closure-library/closure/goog/debug/logger_test.html +0 -208
  245. data/closure-library/closure/goog/debug/logrecord.js +0 -271
  246. data/closure-library/closure/goog/debug/reflect.js +0 -163
  247. data/closure-library/closure/goog/debug/reflect_test.html +0 -81
  248. data/closure-library/closure/goog/debug/relativetimeprovider.js +0 -83
  249. data/closure-library/closure/goog/debug/tracer.js +0 -750
  250. data/closure-library/closure/goog/debug/tracer_test.html +0 -57
  251. data/closure-library/closure/goog/demos/advancedtooltip.html +0 -78
  252. data/closure-library/closure/goog/demos/animationqueue.html +0 -149
  253. data/closure-library/closure/goog/demos/autocomplete-basic.html +0 -56
  254. data/closure-library/closure/goog/demos/autocompleteremote.html +0 -40
  255. data/closure-library/closure/goog/demos/autocompleteremotedata.js +0 -18
  256. data/closure-library/closure/goog/demos/autocompleterichremote.html +0 -137
  257. data/closure-library/closure/goog/demos/autocompleterichremotedata.js +0 -33
  258. data/closure-library/closure/goog/demos/bidiinput.html +0 -72
  259. data/closure-library/closure/goog/demos/bubble.html +0 -250
  260. data/closure-library/closure/goog/demos/button.html +0 -395
  261. data/closure-library/closure/goog/demos/charcounter.html +0 -57
  262. data/closure-library/closure/goog/demos/charpicker.html +0 -64
  263. data/closure-library/closure/goog/demos/checkbox.html +0 -122
  264. data/closure-library/closure/goog/demos/color-contrast.html +0 -60
  265. data/closure-library/closure/goog/demos/colormenubutton.html +0 -213
  266. data/closure-library/closure/goog/demos/colorpicker.html +0 -43
  267. data/closure-library/closure/goog/demos/combobox.html +0 -125
  268. data/closure-library/closure/goog/demos/container.html +0 -670
  269. data/closure-library/closure/goog/demos/control.html +0 -477
  270. data/closure-library/closure/goog/demos/css/demo.css +0 -75
  271. data/closure-library/closure/goog/demos/css/emojipicker.css +0 -36
  272. data/closure-library/closure/goog/demos/css/emojisprite.css +0 -92
  273. data/closure-library/closure/goog/demos/css3button.html +0 -166
  274. data/closure-library/closure/goog/demos/css3menubutton.html +0 -285
  275. data/closure-library/closure/goog/demos/cssspriteanimation.html +0 -80
  276. data/closure-library/closure/goog/demos/datepicker.html +0 -183
  277. data/closure-library/closure/goog/demos/debug.html +0 -119
  278. data/closure-library/closure/goog/demos/depsgraph.html +0 -221
  279. data/closure-library/closure/goog/demos/dialog.html +0 -156
  280. data/closure-library/closure/goog/demos/dimensionpicker.html +0 -108
  281. data/closure-library/closure/goog/demos/dimensionpicker_rtl.html +0 -123
  282. data/closure-library/closure/goog/demos/dom_selection.html +0 -88
  283. data/closure-library/closure/goog/demos/drag.html +0 -191
  284. data/closure-library/closure/goog/demos/dragdrop.html +0 -263
  285. data/closure-library/closure/goog/demos/dragdropdetector.html +0 -46
  286. data/closure-library/closure/goog/demos/dragdropdetector_target.html +0 -17
  287. data/closure-library/closure/goog/demos/dragger.html +0 -83
  288. data/closure-library/closure/goog/demos/draglistgroup.html +0 -261
  289. data/closure-library/closure/goog/demos/drilldownrow.html +0 -78
  290. data/closure-library/closure/goog/demos/editor/deps.js +0 -20
  291. data/closure-library/closure/goog/demos/editor/editor.html +0 -139
  292. data/closure-library/closure/goog/demos/editor/field_basic.html +0 -74
  293. data/closure-library/closure/goog/demos/editor/helloworld.html +0 -91
  294. data/closure-library/closure/goog/demos/editor/helloworld.js +0 -81
  295. data/closure-library/closure/goog/demos/editor/helloworld_test.html +0 -75
  296. data/closure-library/closure/goog/demos/editor/helloworlddialog.js +0 -163
  297. data/closure-library/closure/goog/demos/editor/helloworlddialog_test.html +0 -100
  298. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin.js +0 -110
  299. data/closure-library/closure/goog/demos/editor/helloworlddialogplugin_test.html +0 -198
  300. data/closure-library/closure/goog/demos/editor/seamlessfield.html +0 -106
  301. data/closure-library/closure/goog/demos/effects.html +0 -142
  302. data/closure-library/closure/goog/demos/emoji/200.gif +0 -0
  303. data/closure-library/closure/goog/demos/emoji/201.gif +0 -0
  304. data/closure-library/closure/goog/demos/emoji/202.gif +0 -0
  305. data/closure-library/closure/goog/demos/emoji/203.gif +0 -0
  306. data/closure-library/closure/goog/demos/emoji/204.gif +0 -0
  307. data/closure-library/closure/goog/demos/emoji/205.gif +0 -0
  308. data/closure-library/closure/goog/demos/emoji/206.gif +0 -0
  309. data/closure-library/closure/goog/demos/emoji/2BC.gif +0 -0
  310. data/closure-library/closure/goog/demos/emoji/2BD.gif +0 -0
  311. data/closure-library/closure/goog/demos/emoji/2BE.gif +0 -0
  312. data/closure-library/closure/goog/demos/emoji/2BF.gif +0 -0
  313. data/closure-library/closure/goog/demos/emoji/2C0.gif +0 -0
  314. data/closure-library/closure/goog/demos/emoji/2C1.gif +0 -0
  315. data/closure-library/closure/goog/demos/emoji/2C2.gif +0 -0
  316. data/closure-library/closure/goog/demos/emoji/2C3.gif +0 -0
  317. data/closure-library/closure/goog/demos/emoji/2C4.gif +0 -0
  318. data/closure-library/closure/goog/demos/emoji/2C5.gif +0 -0
  319. data/closure-library/closure/goog/demos/emoji/2C6.gif +0 -0
  320. data/closure-library/closure/goog/demos/emoji/2C7.gif +0 -0
  321. data/closure-library/closure/goog/demos/emoji/2C8.gif +0 -0
  322. data/closure-library/closure/goog/demos/emoji/2C9.gif +0 -0
  323. data/closure-library/closure/goog/demos/emoji/2CA.gif +0 -0
  324. data/closure-library/closure/goog/demos/emoji/2CB.gif +0 -0
  325. data/closure-library/closure/goog/demos/emoji/2CC.gif +0 -0
  326. data/closure-library/closure/goog/demos/emoji/2CD.gif +0 -0
  327. data/closure-library/closure/goog/demos/emoji/2CE.gif +0 -0
  328. data/closure-library/closure/goog/demos/emoji/2CF.gif +0 -0
  329. data/closure-library/closure/goog/demos/emoji/2D0.gif +0 -0
  330. data/closure-library/closure/goog/demos/emoji/2D1.gif +0 -0
  331. data/closure-library/closure/goog/demos/emoji/2D2.gif +0 -0
  332. data/closure-library/closure/goog/demos/emoji/2D3.gif +0 -0
  333. data/closure-library/closure/goog/demos/emoji/2D4.gif +0 -0
  334. data/closure-library/closure/goog/demos/emoji/2D5.gif +0 -0
  335. data/closure-library/closure/goog/demos/emoji/2D6.gif +0 -0
  336. data/closure-library/closure/goog/demos/emoji/2D7.gif +0 -0
  337. data/closure-library/closure/goog/demos/emoji/2D8.gif +0 -0
  338. data/closure-library/closure/goog/demos/emoji/2D9.gif +0 -0
  339. data/closure-library/closure/goog/demos/emoji/2DA.gif +0 -0
  340. data/closure-library/closure/goog/demos/emoji/2DB.gif +0 -0
  341. data/closure-library/closure/goog/demos/emoji/2DC.gif +0 -0
  342. data/closure-library/closure/goog/demos/emoji/2DD.gif +0 -0
  343. data/closure-library/closure/goog/demos/emoji/2DE.gif +0 -0
  344. data/closure-library/closure/goog/demos/emoji/2DF.gif +0 -0
  345. data/closure-library/closure/goog/demos/emoji/2E0.gif +0 -0
  346. data/closure-library/closure/goog/demos/emoji/2E1.gif +0 -0
  347. data/closure-library/closure/goog/demos/emoji/2E2.gif +0 -0
  348. data/closure-library/closure/goog/demos/emoji/2E3.gif +0 -0
  349. data/closure-library/closure/goog/demos/emoji/2E4.gif +0 -0
  350. data/closure-library/closure/goog/demos/emoji/2E5.gif +0 -0
  351. data/closure-library/closure/goog/demos/emoji/2E6.gif +0 -0
  352. data/closure-library/closure/goog/demos/emoji/2E7.gif +0 -0
  353. data/closure-library/closure/goog/demos/emoji/2E8.gif +0 -0
  354. data/closure-library/closure/goog/demos/emoji/2E9.gif +0 -0
  355. data/closure-library/closure/goog/demos/emoji/2EA.gif +0 -0
  356. data/closure-library/closure/goog/demos/emoji/2EB.gif +0 -0
  357. data/closure-library/closure/goog/demos/emoji/2EC.gif +0 -0
  358. data/closure-library/closure/goog/demos/emoji/2ED.gif +0 -0
  359. data/closure-library/closure/goog/demos/emoji/2EE.gif +0 -0
  360. data/closure-library/closure/goog/demos/emoji/2EF.gif +0 -0
  361. data/closure-library/closure/goog/demos/emoji/2F0.gif +0 -0
  362. data/closure-library/closure/goog/demos/emoji/2F1.gif +0 -0
  363. data/closure-library/closure/goog/demos/emoji/2F2.gif +0 -0
  364. data/closure-library/closure/goog/demos/emoji/2F3.gif +0 -0
  365. data/closure-library/closure/goog/demos/emoji/2F4.gif +0 -0
  366. data/closure-library/closure/goog/demos/emoji/2F5.gif +0 -0
  367. data/closure-library/closure/goog/demos/emoji/2F6.gif +0 -0
  368. data/closure-library/closure/goog/demos/emoji/2F7.gif +0 -0
  369. data/closure-library/closure/goog/demos/emoji/2F8.gif +0 -0
  370. data/closure-library/closure/goog/demos/emoji/2F9.gif +0 -0
  371. data/closure-library/closure/goog/demos/emoji/2FA.gif +0 -0
  372. data/closure-library/closure/goog/demos/emoji/2FB.gif +0 -0
  373. data/closure-library/closure/goog/demos/emoji/2FC.gif +0 -0
  374. data/closure-library/closure/goog/demos/emoji/2FD.gif +0 -0
  375. data/closure-library/closure/goog/demos/emoji/2FE.gif +0 -0
  376. data/closure-library/closure/goog/demos/emoji/2FF.gif +0 -0
  377. data/closure-library/closure/goog/demos/emoji/none.gif +0 -0
  378. data/closure-library/closure/goog/demos/emoji/sprite.png +0 -0
  379. data/closure-library/closure/goog/demos/emoji/sprite2.png +0 -0
  380. data/closure-library/closure/goog/demos/emoji/unknown.gif +0 -0
  381. data/closure-library/closure/goog/demos/event-propagation.html +0 -192
  382. data/closure-library/closure/goog/demos/events.html +0 -99
  383. data/closure-library/closure/goog/demos/eventtarget.html +0 -70
  384. data/closure-library/closure/goog/demos/filedrophandler.html +0 -63
  385. data/closure-library/closure/goog/demos/filteredmenu.html +0 -118
  386. data/closure-library/closure/goog/demos/focushandler.html +0 -58
  387. data/closure-library/closure/goog/demos/gauge.html +0 -158
  388. data/closure-library/closure/goog/demos/graphics/advancedcoordinates.html +0 -141
  389. data/closure-library/closure/goog/demos/graphics/advancedcoordinates2.html +0 -130
  390. data/closure-library/closure/goog/demos/graphics/basicelements.html +0 -264
  391. data/closure-library/closure/goog/demos/graphics/events.html +0 -113
  392. data/closure-library/closure/goog/demos/graphics/modifyelements.html +0 -195
  393. data/closure-library/closure/goog/demos/graphics/subpixel.html +0 -80
  394. data/closure-library/closure/goog/demos/graphics/tiger.html +0 -105
  395. data/closure-library/closure/goog/demos/graphics/tigerdata.js +0 -2840
  396. data/closure-library/closure/goog/demos/history1.html +0 -132
  397. data/closure-library/closure/goog/demos/history2.html +0 -100
  398. data/closure-library/closure/goog/demos/history3.html +0 -106
  399. data/closure-library/closure/goog/demos/history3js.html +0 -36
  400. data/closure-library/closure/goog/demos/history_blank.html +0 -25
  401. data/closure-library/closure/goog/demos/hovercard.html +0 -177
  402. data/closure-library/closure/goog/demos/hsvapalette.html +0 -55
  403. data/closure-library/closure/goog/demos/hsvpalette.html +0 -56
  404. data/closure-library/closure/goog/demos/html5history.html +0 -87
  405. data/closure-library/closure/goog/demos/imagelessbutton.html +0 -221
  406. data/closure-library/closure/goog/demos/imagelessmenubutton.html +0 -285
  407. data/closure-library/closure/goog/demos/imagelessroundedcorner.html +0 -231
  408. data/closure-library/closure/goog/demos/index.html +0 -19
  409. data/closure-library/closure/goog/demos/index_nav.html +0 -253
  410. data/closure-library/closure/goog/demos/index_splash.html +0 -22
  411. data/closure-library/closure/goog/demos/inline_block_quirks.html +0 -125
  412. data/closure-library/closure/goog/demos/inline_block_standards.html +0 -126
  413. data/closure-library/closure/goog/demos/inputdatepicker.html +0 -60
  414. data/closure-library/closure/goog/demos/inputhandler.html +0 -72
  415. data/closure-library/closure/goog/demos/jsonprettyprinter.html +0 -80
  416. data/closure-library/closure/goog/demos/keyboardshortcuts.html +0 -112
  417. data/closure-library/closure/goog/demos/keyhandler.html +0 -127
  418. data/closure-library/closure/goog/demos/labelinput.html +0 -42
  419. data/closure-library/closure/goog/demos/menu.html +0 -220
  420. data/closure-library/closure/goog/demos/menubutton.html +0 -318
  421. data/closure-library/closure/goog/demos/mousewheelhandler.html +0 -109
  422. data/closure-library/closure/goog/demos/offline.html +0 -268
  423. data/closure-library/closure/goog/demos/onlinehandler.html +0 -77
  424. data/closure-library/closure/goog/demos/palette.html +0 -302
  425. data/closure-library/closure/goog/demos/pastehandler.html +0 -54
  426. data/closure-library/closure/goog/demos/plaintextspellchecker.html +0 -106
  427. data/closure-library/closure/goog/demos/popup.html +0 -200
  428. data/closure-library/closure/goog/demos/popupcolorpicker.html +0 -49
  429. data/closure-library/closure/goog/demos/popupdatepicker.html +0 -53
  430. data/closure-library/closure/goog/demos/popupemojipicker.html +0 -407
  431. data/closure-library/closure/goog/demos/popupmenu.html +0 -89
  432. data/closure-library/closure/goog/demos/progressbar.html +0 -97
  433. data/closure-library/closure/goog/demos/prompt.html +0 -92
  434. data/closure-library/closure/goog/demos/quadtree.html +0 -107
  435. data/closure-library/closure/goog/demos/ratings.html +0 -120
  436. data/closure-library/closure/goog/demos/richtextspellchecker.html +0 -92
  437. data/closure-library/closure/goog/demos/roundedpanel.html +0 -139
  438. data/closure-library/closure/goog/demos/samplecomponent.html +0 -75
  439. data/closure-library/closure/goog/demos/samplecomponent.js +0 -206
  440. data/closure-library/closure/goog/demos/scrollfloater.html +0 -117
  441. data/closure-library/closure/goog/demos/select.html +0 -324
  442. data/closure-library/closure/goog/demos/selectionmenubutton.html +0 -186
  443. data/closure-library/closure/goog/demos/serverchart.html +0 -122
  444. data/closure-library/closure/goog/demos/silverlightclipboardbutton.html +0 -71
  445. data/closure-library/closure/goog/demos/slider.html +0 -110
  446. data/closure-library/closure/goog/demos/splitbehavior.html +0 -164
  447. data/closure-library/closure/goog/demos/splitpane.html +0 -243
  448. data/closure-library/closure/goog/demos/stopevent.html +0 -171
  449. data/closure-library/closure/goog/demos/submenus.html +0 -130
  450. data/closure-library/closure/goog/demos/submenus2.html +0 -150
  451. data/closure-library/closure/goog/demos/tabbar.html +0 -289
  452. data/closure-library/closure/goog/demos/tablesorter.html +0 -116
  453. data/closure-library/closure/goog/demos/tabpane.html +0 -302
  454. data/closure-library/closure/goog/demos/textarea.html +0 -128
  455. data/closure-library/closure/goog/demos/timers.html +0 -291
  456. data/closure-library/closure/goog/demos/toolbar.html +0 -703
  457. data/closure-library/closure/goog/demos/tooltip.html +0 -91
  458. data/closure-library/closure/goog/demos/tracer.html +0 -92
  459. data/closure-library/closure/goog/demos/tree/demo.html +0 -126
  460. data/closure-library/closure/goog/demos/tree/testdata.js +0 -260
  461. data/closure-library/closure/goog/demos/tweakui.html +0 -121
  462. data/closure-library/closure/goog/demos/twothumbslider.html +0 -121
  463. data/closure-library/closure/goog/demos/useragent.html +0 -173
  464. data/closure-library/closure/goog/demos/viewportsizemonitor.html +0 -71
  465. data/closure-library/closure/goog/demos/xpc/blank.html +0 -7
  466. data/closure-library/closure/goog/demos/xpc/index.html +0 -89
  467. data/closure-library/closure/goog/demos/xpc/inner.html +0 -58
  468. data/closure-library/closure/goog/demos/xpc/minimal/blank.html +0 -7
  469. data/closure-library/closure/goog/demos/xpc/minimal/index.html +0 -105
  470. data/closure-library/closure/goog/demos/xpc/minimal/inner.html +0 -75
  471. data/closure-library/closure/goog/demos/xpc/minimal/relay.html +0 -7
  472. data/closure-library/closure/goog/demos/xpc/relay.html +0 -7
  473. data/closure-library/closure/goog/demos/xpc/xpcdemo.js +0 -304
  474. data/closure-library/closure/goog/demos/zippy.html +0 -127
  475. data/closure-library/closure/goog/deps.js +0 -679
  476. data/closure-library/closure/goog/disposable/disposable.js +0 -167
  477. data/closure-library/closure/goog/disposable/disposable_test.html +0 -202
  478. data/closure-library/closure/goog/dom/a11y.js +0 -438
  479. data/closure-library/closure/goog/dom/a11y_test.html +0 -86
  480. data/closure-library/closure/goog/dom/abstractmultirange.js +0 -77
  481. data/closure-library/closure/goog/dom/abstractrange.js +0 -514
  482. data/closure-library/closure/goog/dom/abstractrange_test.html +0 -73
  483. data/closure-library/closure/goog/dom/annotate.js +0 -352
  484. data/closure-library/closure/goog/dom/annotate_test.html +0 -187
  485. data/closure-library/closure/goog/dom/browserfeature.js +0 -50
  486. data/closure-library/closure/goog/dom/browserrange/abstractrange.js +0 -316
  487. data/closure-library/closure/goog/dom/browserrange/browserrange.js +0 -149
  488. data/closure-library/closure/goog/dom/browserrange/browserrange_test.html +0 -562
  489. data/closure-library/closure/goog/dom/browserrange/geckorange.js +0 -82
  490. data/closure-library/closure/goog/dom/browserrange/ierange.js +0 -970
  491. data/closure-library/closure/goog/dom/browserrange/operarange.js +0 -83
  492. data/closure-library/closure/goog/dom/browserrange/w3crange.js +0 -364
  493. data/closure-library/closure/goog/dom/browserrange/webkitrange.js +0 -112
  494. data/closure-library/closure/goog/dom/classes.js +0 -233
  495. data/closure-library/closure/goog/dom/classes_test.html +0 -228
  496. data/closure-library/closure/goog/dom/controlrange.js +0 -511
  497. data/closure-library/closure/goog/dom/controlrange_test.html +0 -246
  498. data/closure-library/closure/goog/dom/dataset.js +0 -90
  499. data/closure-library/closure/goog/dom/dataset_test.html +0 -104
  500. data/closure-library/closure/goog/dom/dom.js +0 -2424
  501. data/closure-library/closure/goog/dom/dom_quirks_test.html +0 -104
  502. data/closure-library/closure/goog/dom/dom_test.html +0 -103
  503. data/closure-library/closure/goog/dom/dom_test.js +0 -1129
  504. data/closure-library/closure/goog/dom/fontsizemonitor.js +0 -159
  505. data/closure-library/closure/goog/dom/fontsizemonitor_test.html +0 -283
  506. data/closure-library/closure/goog/dom/forms.js +0 -403
  507. data/closure-library/closure/goog/dom/forms_test.html +0 -483
  508. data/closure-library/closure/goog/dom/iframe.js +0 -128
  509. data/closure-library/closure/goog/dom/iframe_test.html +0 -87
  510. data/closure-library/closure/goog/dom/iter.js +0 -127
  511. data/closure-library/closure/goog/dom/iter_test.html +0 -97
  512. data/closure-library/closure/goog/dom/multirange.js +0 -519
  513. data/closure-library/closure/goog/dom/multirange_test.html +0 -67
  514. data/closure-library/closure/goog/dom/nodeiterator.js +0 -85
  515. data/closure-library/closure/goog/dom/nodeiterator_test.html +0 -49
  516. data/closure-library/closure/goog/dom/nodeoffset.js +0 -111
  517. data/closure-library/closure/goog/dom/nodeoffset_test.html +0 -88
  518. data/closure-library/closure/goog/dom/pattern/abstractpattern.js +0 -60
  519. data/closure-library/closure/goog/dom/pattern/allchildren.js +0 -73
  520. data/closure-library/closure/goog/dom/pattern/callback/callback.js +0 -82
  521. data/closure-library/closure/goog/dom/pattern/callback/counter.js +0 -72
  522. data/closure-library/closure/goog/dom/pattern/callback/test.js +0 -77
  523. data/closure-library/closure/goog/dom/pattern/childmatches.js +0 -152
  524. data/closure-library/closure/goog/dom/pattern/endtag.js +0 -53
  525. data/closure-library/closure/goog/dom/pattern/fulltag.js +0 -92
  526. data/closure-library/closure/goog/dom/pattern/matcher.js +0 -150
  527. data/closure-library/closure/goog/dom/pattern/matcher_test.html +0 -204
  528. data/closure-library/closure/goog/dom/pattern/nodetype.js +0 -57
  529. data/closure-library/closure/goog/dom/pattern/pattern.js +0 -93
  530. data/closure-library/closure/goog/dom/pattern/pattern_test.html +0 -614
  531. data/closure-library/closure/goog/dom/pattern/repeat.js +0 -188
  532. data/closure-library/closure/goog/dom/pattern/sequence.js +0 -139
  533. data/closure-library/closure/goog/dom/pattern/starttag.js +0 -53
  534. data/closure-library/closure/goog/dom/pattern/tag.js +0 -149
  535. data/closure-library/closure/goog/dom/pattern/text.js +0 -69
  536. data/closure-library/closure/goog/dom/range.js +0 -220
  537. data/closure-library/closure/goog/dom/range_test.html +0 -702
  538. data/closure-library/closure/goog/dom/rangeendpoint.js +0 -32
  539. data/closure-library/closure/goog/dom/savedcaretrange.js +0 -203
  540. data/closure-library/closure/goog/dom/savedcaretrange_test.html +0 -235
  541. data/closure-library/closure/goog/dom/savedrange.js +0 -74
  542. data/closure-library/closure/goog/dom/savedrange_test.html +0 -61
  543. data/closure-library/closure/goog/dom/selection.js +0 -470
  544. data/closure-library/closure/goog/dom/selection_test.html +0 -329
  545. data/closure-library/closure/goog/dom/tagiterator.js +0 -365
  546. data/closure-library/closure/goog/dom/tagiterator_test.html +0 -589
  547. data/closure-library/closure/goog/dom/tagname.js +0 -121
  548. data/closure-library/closure/goog/dom/tagname_test.html +0 -37
  549. data/closure-library/closure/goog/dom/textrange.js +0 -611
  550. data/closure-library/closure/goog/dom/textrange_test.html +0 -127
  551. data/closure-library/closure/goog/dom/textrangeiterator.js +0 -246
  552. data/closure-library/closure/goog/dom/textrangeiterator_test.html +0 -142
  553. data/closure-library/closure/goog/dom/viewportsizemonitor.js +0 -220
  554. data/closure-library/closure/goog/dom/viewportsizemonitor_test.html +0 -166
  555. data/closure-library/closure/goog/dom/xml.js +0 -187
  556. data/closure-library/closure/goog/dom/xml_test.html +0 -77
  557. data/closure-library/closure/goog/editor/browserfeature.js +0 -251
  558. data/closure-library/closure/goog/editor/browserfeature_test.html +0 -124
  559. data/closure-library/closure/goog/editor/clicktoeditwrapper.js +0 -438
  560. data/closure-library/closure/goog/editor/clicktoeditwrapper_test.html +0 -137
  561. data/closure-library/closure/goog/editor/command.js +0 -74
  562. data/closure-library/closure/goog/editor/defines.js +0 -34
  563. data/closure-library/closure/goog/editor/field.js +0 -2594
  564. data/closure-library/closure/goog/editor/field_test.html +0 -1000
  565. data/closure-library/closure/goog/editor/focus.js +0 -32
  566. data/closure-library/closure/goog/editor/focus_test.html +0 -66
  567. data/closure-library/closure/goog/editor/icontent.js +0 -296
  568. data/closure-library/closure/goog/editor/icontent_test.html +0 -209
  569. data/closure-library/closure/goog/editor/link.js +0 -279
  570. data/closure-library/closure/goog/editor/link_test.html +0 -234
  571. data/closure-library/closure/goog/editor/node.js +0 -435
  572. data/closure-library/closure/goog/editor/node_test.html +0 -590
  573. data/closure-library/closure/goog/editor/plugin.js +0 -444
  574. data/closure-library/closure/goog/editor/plugin_test.html +0 -187
  575. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin.js +0 -535
  576. data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin_test.html +0 -227
  577. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin.js +0 -336
  578. data/closure-library/closure/goog/editor/plugins/abstractdialogplugin_test.html +0 -399
  579. data/closure-library/closure/goog/editor/plugins/abstracttabhandler.js +0 -78
  580. data/closure-library/closure/goog/editor/plugins/abstracttabhandler_test.html +0 -91
  581. data/closure-library/closure/goog/editor/plugins/basictextformatter.js +0 -1740
  582. data/closure-library/closure/goog/editor/plugins/basictextformatter_test.html +0 -1171
  583. data/closure-library/closure/goog/editor/plugins/blockquote.js +0 -422
  584. data/closure-library/closure/goog/editor/plugins/blockquote_test.html +0 -149
  585. data/closure-library/closure/goog/editor/plugins/emoticons.js +0 -83
  586. data/closure-library/closure/goog/editor/plugins/emoticons_test.html +0 -67
  587. data/closure-library/closure/goog/editor/plugins/enterhandler.js +0 -730
  588. data/closure-library/closure/goog/editor/plugins/enterhandler_test.html +0 -739
  589. data/closure-library/closure/goog/editor/plugins/headerformatter.js +0 -95
  590. data/closure-library/closure/goog/editor/plugins/headerformatter_test.html +0 -100
  591. data/closure-library/closure/goog/editor/plugins/linkbubble.js +0 -458
  592. data/closure-library/closure/goog/editor/plugins/linkbubble_test.html +0 -309
  593. data/closure-library/closure/goog/editor/plugins/linkdialogplugin.js +0 -222
  594. data/closure-library/closure/goog/editor/plugins/linkdialogplugin_test.html +0 -370
  595. data/closure-library/closure/goog/editor/plugins/listtabhandler.js +0 -66
  596. data/closure-library/closure/goog/editor/plugins/listtabhandler_test.html +0 -177
  597. data/closure-library/closure/goog/editor/plugins/loremipsum.js +0 -186
  598. data/closure-library/closure/goog/editor/plugins/loremipsum_test.html +0 -169
  599. data/closure-library/closure/goog/editor/plugins/removeformatting.js +0 -772
  600. data/closure-library/closure/goog/editor/plugins/removeformatting_test.html +0 -920
  601. data/closure-library/closure/goog/editor/plugins/spacestabhandler.js +0 -93
  602. data/closure-library/closure/goog/editor/plugins/spacestabhandler_test.html +0 -186
  603. data/closure-library/closure/goog/editor/plugins/tableeditor.js +0 -496
  604. data/closure-library/closure/goog/editor/plugins/tableeditor_test.html +0 -299
  605. data/closure-library/closure/goog/editor/plugins/tagonenterhandler.js +0 -741
  606. data/closure-library/closure/goog/editor/plugins/tagonenterhandler_test.html +0 -481
  607. data/closure-library/closure/goog/editor/plugins/undoredo.js +0 -1014
  608. data/closure-library/closure/goog/editor/plugins/undoredo_test.html +0 -525
  609. data/closure-library/closure/goog/editor/plugins/undoredomanager.js +0 -337
  610. data/closure-library/closure/goog/editor/plugins/undoredomanager_test.html +0 -394
  611. data/closure-library/closure/goog/editor/plugins/undoredostate.js +0 -84
  612. data/closure-library/closure/goog/editor/plugins/undoredostate_test.html +0 -44
  613. data/closure-library/closure/goog/editor/range.js +0 -602
  614. data/closure-library/closure/goog/editor/range_test.html +0 -880
  615. data/closure-library/closure/goog/editor/seamlessfield.js +0 -720
  616. data/closure-library/closure/goog/editor/seamlessfield_quirks_test.html +0 -30
  617. data/closure-library/closure/goog/editor/seamlessfield_test.html +0 -33
  618. data/closure-library/closure/goog/editor/seamlessfield_test.js +0 -392
  619. data/closure-library/closure/goog/editor/style.js +0 -222
  620. data/closure-library/closure/goog/editor/style_test.html +0 -177
  621. data/closure-library/closure/goog/editor/table.js +0 -566
  622. data/closure-library/closure/goog/editor/table_test.html +0 -522
  623. data/closure-library/closure/goog/events/actioneventwrapper.js +0 -131
  624. data/closure-library/closure/goog/events/actioneventwrapper_test.html +0 -176
  625. data/closure-library/closure/goog/events/actionhandler.js +0 -189
  626. data/closure-library/closure/goog/events/actionhandler_test.html +0 -82
  627. data/closure-library/closure/goog/events/browserevent.js +0 -412
  628. data/closure-library/closure/goog/events/browserevent_test.html +0 -145
  629. data/closure-library/closure/goog/events/browserfeature.js +0 -43
  630. data/closure-library/closure/goog/events/event.js +0 -123
  631. data/closure-library/closure/goog/events/event_test.html +0 -70
  632. data/closure-library/closure/goog/events/eventhandler.js +0 -348
  633. data/closure-library/closure/goog/events/eventhandler_test.html +0 -230
  634. data/closure-library/closure/goog/events/events.js +0 -1101
  635. data/closure-library/closure/goog/events/events_test.html +0 -362
  636. data/closure-library/closure/goog/events/eventtarget.js +0 -197
  637. data/closure-library/closure/goog/events/eventtarget_test.html +0 -423
  638. data/closure-library/closure/goog/events/eventtype.js +0 -107
  639. data/closure-library/closure/goog/events/eventwrapper.js +0 -67
  640. data/closure-library/closure/goog/events/filedrophandler.js +0 -224
  641. data/closure-library/closure/goog/events/filedrophandler_test.html +0 -258
  642. data/closure-library/closure/goog/events/focushandler.js +0 -111
  643. data/closure-library/closure/goog/events/imehandler.js +0 -365
  644. data/closure-library/closure/goog/events/imehandler_test.html +0 -271
  645. data/closure-library/closure/goog/events/inputhandler.js +0 -218
  646. data/closure-library/closure/goog/events/keycodes.js +0 -314
  647. data/closure-library/closure/goog/events/keycodes_test.html +0 -72
  648. data/closure-library/closure/goog/events/keyhandler.js +0 -522
  649. data/closure-library/closure/goog/events/keyhandler_test.html +0 -621
  650. data/closure-library/closure/goog/events/keynames.js +0 -124
  651. data/closure-library/closure/goog/events/listener.js +0 -160
  652. data/closure-library/closure/goog/events/mousewheelhandler.js +0 -280
  653. data/closure-library/closure/goog/events/mousewheelhandler_test.html +0 -331
  654. data/closure-library/closure/goog/events/onlinehandler.js +0 -176
  655. data/closure-library/closure/goog/events/onlinelistener_test.html +0 -214
  656. data/closure-library/closure/goog/events/pastehandler.js +0 -444
  657. data/closure-library/closure/goog/events/pastehandler_test.html +0 -354
  658. data/closure-library/closure/goog/events/pools.js +0 -342
  659. data/closure-library/closure/goog/format/emailaddress.js +0 -329
  660. data/closure-library/closure/goog/format/emailaddress_test.html +0 -179
  661. data/closure-library/closure/goog/format/format.js +0 -451
  662. data/closure-library/closure/goog/format/format_test.html +0 -257
  663. data/closure-library/closure/goog/format/htmlprettyprinter.js +0 -406
  664. data/closure-library/closure/goog/format/htmlprettyprinter_test.html +0 -205
  665. data/closure-library/closure/goog/format/jsonprettyprinter.js +0 -405
  666. data/closure-library/closure/goog/format/jsonprettyprinter_test.html +0 -111
  667. data/closure-library/closure/goog/fs/entry.js +0 -406
  668. data/closure-library/closure/goog/fs/error.js +0 -103
  669. data/closure-library/closure/goog/fs/filesaver.js +0 -214
  670. data/closure-library/closure/goog/fs/filesystem.js +0 -59
  671. data/closure-library/closure/goog/fs/filewriter.js +0 -106
  672. data/closure-library/closure/goog/fs/fs.js +0 -183
  673. data/closure-library/closure/goog/fs/fs_test.html +0 -270
  674. data/closure-library/closure/goog/functions/functions.js +0 -219
  675. data/closure-library/closure/goog/functions/functions_test.html +0 -198
  676. data/closure-library/closure/goog/fx/abstractdragdrop.js +0 -1451
  677. data/closure-library/closure/goog/fx/abstractdragdrop_test.html +0 -430
  678. data/closure-library/closure/goog/fx/animation.js +0 -621
  679. data/closure-library/closure/goog/fx/animationqueue.js +0 -348
  680. data/closure-library/closure/goog/fx/cssspriteanimation.js +0 -112
  681. data/closure-library/closure/goog/fx/cssspriteanimation_test.html +0 -125
  682. data/closure-library/closure/goog/fx/dom.js +0 -610
  683. data/closure-library/closure/goog/fx/dragdrop.js +0 -49
  684. data/closure-library/closure/goog/fx/dragdropgroup.js +0 -107
  685. data/closure-library/closure/goog/fx/dragdropgroup_test.html +0 -234
  686. data/closure-library/closure/goog/fx/dragger.js +0 -731
  687. data/closure-library/closure/goog/fx/dragger_test.html +0 -415
  688. data/closure-library/closure/goog/fx/draglistgroup.js +0 -1159
  689. data/closure-library/closure/goog/fx/draglistgroup_test.html +0 -231
  690. data/closure-library/closure/goog/fx/dragscrollsupport.js +0 -274
  691. data/closure-library/closure/goog/fx/dragscrollsupport_test.html +0 -253
  692. data/closure-library/closure/goog/fx/easing.js +0 -50
  693. data/closure-library/closure/goog/fx/fx.js +0 -30
  694. data/closure-library/closure/goog/fx/fx_test.html +0 -157
  695. data/closure-library/closure/goog/gears/basestore.js +0 -523
  696. data/closure-library/closure/goog/gears/basestore_test.html +0 -247
  697. data/closure-library/closure/goog/gears/database.js +0 -935
  698. data/closure-library/closure/goog/gears/database_test.html +0 -699
  699. data/closure-library/closure/goog/gears/fakeworkerpool.js +0 -252
  700. data/closure-library/closure/goog/gears/fakeworkerpool_test.html +0 -188
  701. data/closure-library/closure/goog/gears/gears.js +0 -228
  702. data/closure-library/closure/goog/gears/gears_test.html +0 -78
  703. data/closure-library/closure/goog/gears/httprequest.js +0 -77
  704. data/closure-library/closure/goog/gears/loggerclient.js +0 -131
  705. data/closure-library/closure/goog/gears/loggerclient_test.html +0 -171
  706. data/closure-library/closure/goog/gears/loggerserver.js +0 -158
  707. data/closure-library/closure/goog/gears/loggerserver_test.html +0 -118
  708. data/closure-library/closure/goog/gears/logstore.js +0 -479
  709. data/closure-library/closure/goog/gears/logstore_test.html +0 -600
  710. data/closure-library/closure/goog/gears/managedresourcestore.js +0 -553
  711. data/closure-library/closure/goog/gears/managedresourcestore_test.html +0 -453
  712. data/closure-library/closure/goog/gears/multipartformdata.js +0 -203
  713. data/closure-library/closure/goog/gears/multipartformdata_test.html +0 -220
  714. data/closure-library/closure/goog/gears/statustype.js +0 -37
  715. data/closure-library/closure/goog/gears/urlcapture.js +0 -370
  716. data/closure-library/closure/goog/gears/urlcapture_test.html +0 -392
  717. data/closure-library/closure/goog/gears/worker.js +0 -201
  718. data/closure-library/closure/goog/gears/workerchannel.js +0 -205
  719. data/closure-library/closure/goog/gears/workerchannel_test.html +0 -207
  720. data/closure-library/closure/goog/gears/workerpool.js +0 -241
  721. data/closure-library/closure/goog/gears/workerpool_test.html +0 -203
  722. data/closure-library/closure/goog/graphics/abstractgraphics.js +0 -439
  723. data/closure-library/closure/goog/graphics/affinetransform.js +0 -497
  724. data/closure-library/closure/goog/graphics/affinetransform_test.html +0 -316
  725. data/closure-library/closure/goog/graphics/canvaselement.js +0 -776
  726. data/closure-library/closure/goog/graphics/canvasgraphics.js +0 -632
  727. data/closure-library/closure/goog/graphics/element.js +0 -145
  728. data/closure-library/closure/goog/graphics/ellipseelement.js +0 -59
  729. data/closure-library/closure/goog/graphics/ext/coordinates.js +0 -158
  730. data/closure-library/closure/goog/graphics/ext/coordinates_test.html +0 -74
  731. data/closure-library/closure/goog/graphics/ext/element.js +0 -970
  732. data/closure-library/closure/goog/graphics/ext/element_test.html +0 -144
  733. data/closure-library/closure/goog/graphics/ext/ellipse.js +0 -58
  734. data/closure-library/closure/goog/graphics/ext/ext.js +0 -29
  735. data/closure-library/closure/goog/graphics/ext/graphics.js +0 -209
  736. data/closure-library/closure/goog/graphics/ext/group.js +0 -213
  737. data/closure-library/closure/goog/graphics/ext/image.js +0 -62
  738. data/closure-library/closure/goog/graphics/ext/path.js +0 -140
  739. data/closure-library/closure/goog/graphics/ext/path_test.html +0 -46
  740. data/closure-library/closure/goog/graphics/ext/rectangle.js +0 -53
  741. data/closure-library/closure/goog/graphics/ext/shape.js +0 -144
  742. data/closure-library/closure/goog/graphics/ext/strokeandfillelement.js +0 -69
  743. data/closure-library/closure/goog/graphics/fill.js +0 -29
  744. data/closure-library/closure/goog/graphics/font.js +0 -59
  745. data/closure-library/closure/goog/graphics/graphics.js +0 -124
  746. data/closure-library/closure/goog/graphics/groupelement.js +0 -54
  747. data/closure-library/closure/goog/graphics/imageelement.js +0 -67
  748. data/closure-library/closure/goog/graphics/lineargradient.js +0 -131
  749. data/closure-library/closure/goog/graphics/path.js +0 -508
  750. data/closure-library/closure/goog/graphics/path_test.html +0 -359
  751. data/closure-library/closure/goog/graphics/pathelement.js +0 -50
  752. data/closure-library/closure/goog/graphics/paths.js +0 -86
  753. data/closure-library/closure/goog/graphics/paths_test.html +0 -97
  754. data/closure-library/closure/goog/graphics/rectelement.js +0 -59
  755. data/closure-library/closure/goog/graphics/solidfill.js +0 -70
  756. data/closure-library/closure/goog/graphics/stroke.js +0 -63
  757. data/closure-library/closure/goog/graphics/strokeandfillelement.js +0 -110
  758. data/closure-library/closure/goog/graphics/svgelement.js +0 -262
  759. data/closure-library/closure/goog/graphics/svggraphics.js +0 -813
  760. data/closure-library/closure/goog/graphics/textelement.js +0 -51
  761. data/closure-library/closure/goog/graphics/vmlelement.js +0 -380
  762. data/closure-library/closure/goog/graphics/vmlgraphics.js +0 -863
  763. data/closure-library/closure/goog/history/event.js +0 -54
  764. data/closure-library/closure/goog/history/eventtype.js +0 -30
  765. data/closure-library/closure/goog/history/history.js +0 -979
  766. data/closure-library/closure/goog/history/html5history.js +0 -303
  767. data/closure-library/closure/goog/history/html5history_test.html +0 -163
  768. data/closure-library/closure/goog/i18n/bidi.js +0 -772
  769. data/closure-library/closure/goog/i18n/bidi_test.html +0 -414
  770. data/closure-library/closure/goog/i18n/bidiformatter.js +0 -488
  771. data/closure-library/closure/goog/i18n/bidiformatter_test.html +0 -343
  772. data/closure-library/closure/goog/i18n/charlistdecompressor.js +0 -157
  773. data/closure-library/closure/goog/i18n/charlistdecompressor_test.html +0 -65
  774. data/closure-library/closure/goog/i18n/charpickerdata.js +0 -3185
  775. data/closure-library/closure/goog/i18n/currency.js +0 -385
  776. data/closure-library/closure/goog/i18n/currency_test.html +0 -202
  777. data/closure-library/closure/goog/i18n/currencycodemap.js +0 -210
  778. data/closure-library/closure/goog/i18n/datetimeformat.js +0 -636
  779. data/closure-library/closure/goog/i18n/datetimeformat_test.html +0 -436
  780. data/closure-library/closure/goog/i18n/datetimeparse.js +0 -1111
  781. data/closure-library/closure/goog/i18n/datetimeparse_test.html +0 -796
  782. data/closure-library/closure/goog/i18n/datetimepatterns.js +0 -1586
  783. data/closure-library/closure/goog/i18n/datetimepatternsext.js +0 -7386
  784. data/closure-library/closure/goog/i18n/datetimesymbols.js +0 -3350
  785. data/closure-library/closure/goog/i18n/datetimesymbolsext.js +0 -12938
  786. data/closure-library/closure/goog/i18n/graphemebreak.js +0 -181
  787. data/closure-library/closure/goog/i18n/graphemebreak_test.html +0 -72
  788. data/closure-library/closure/goog/i18n/messageformat.js +0 -556
  789. data/closure-library/closure/goog/i18n/messageformat_test.html +0 -334
  790. data/closure-library/closure/goog/i18n/mime.js +0 -100
  791. data/closure-library/closure/goog/i18n/mime_test.html +0 -51
  792. data/closure-library/closure/goog/i18n/numberformat.js +0 -763
  793. data/closure-library/closure/goog/i18n/numberformat_test.html +0 -605
  794. data/closure-library/closure/goog/i18n/numberformatsymbols.js +0 -10358
  795. data/closure-library/closure/goog/i18n/pluralrules.js +0 -695
  796. data/closure-library/closure/goog/i18n/timezone.js +0 -341
  797. data/closure-library/closure/goog/i18n/timezone_test.html +0 -163
  798. data/closure-library/closure/goog/i18n/uchar.js +0 -1160
  799. data/closure-library/closure/goog/i18n/uchar_test.html +0 -72
  800. data/closure-library/closure/goog/images/blank.gif +0 -0
  801. data/closure-library/closure/goog/images/bubble_close.jpg +0 -0
  802. data/closure-library/closure/goog/images/bubble_left.gif +0 -0
  803. data/closure-library/closure/goog/images/bubble_right.gif +0 -0
  804. data/closure-library/closure/goog/images/button-bg.gif +0 -0
  805. data/closure-library/closure/goog/images/check-outline.gif +0 -0
  806. data/closure-library/closure/goog/images/check-sprite.gif +0 -0
  807. data/closure-library/closure/goog/images/check.gif +0 -0
  808. data/closure-library/closure/goog/images/close_box.gif +0 -0
  809. data/closure-library/closure/goog/images/color-swatch-tick.gif +0 -0
  810. data/closure-library/closure/goog/images/dialog_close_box.gif +0 -0
  811. data/closure-library/closure/goog/images/dimension-highlighted.png +0 -0
  812. data/closure-library/closure/goog/images/dimension-unhighlighted.png +0 -0
  813. data/closure-library/closure/goog/images/dropdn.gif +0 -0
  814. data/closure-library/closure/goog/images/dropdn_disabled.gif +0 -0
  815. data/closure-library/closure/goog/images/dropdown.gif +0 -0
  816. data/closure-library/closure/goog/images/gears_bluedot.gif +0 -0
  817. data/closure-library/closure/goog/images/gears_offline.gif +0 -0
  818. data/closure-library/closure/goog/images/gears_online.gif +0 -0
  819. data/closure-library/closure/goog/images/gears_paused.gif +0 -0
  820. data/closure-library/closure/goog/images/gears_syncing.gif +0 -0
  821. data/closure-library/closure/goog/images/hsv-sprite-sm.gif +0 -0
  822. data/closure-library/closure/goog/images/hsv-sprite-sm.png +0 -0
  823. data/closure-library/closure/goog/images/hsv-sprite.gif +0 -0
  824. data/closure-library/closure/goog/images/hsv-sprite.png +0 -0
  825. data/closure-library/closure/goog/images/hsva-sprite-sm.gif +0 -0
  826. data/closure-library/closure/goog/images/hsva-sprite-sm.png +0 -0
  827. data/closure-library/closure/goog/images/hsva-sprite.gif +0 -0
  828. data/closure-library/closure/goog/images/hsva-sprite.png +0 -0
  829. data/closure-library/closure/goog/images/left_anchor_bubble_bot.gif +0 -0
  830. data/closure-library/closure/goog/images/left_anchor_bubble_top.gif +0 -0
  831. data/closure-library/closure/goog/images/menu-arrows.gif +0 -0
  832. data/closure-library/closure/goog/images/minus.png +0 -0
  833. data/closure-library/closure/goog/images/no_anchor_bubble_bot.gif +0 -0
  834. data/closure-library/closure/goog/images/no_anchor_bubble_top.gif +0 -0
  835. data/closure-library/closure/goog/images/offlineicons.png +0 -0
  836. data/closure-library/closure/goog/images/plus.png +0 -0
  837. data/closure-library/closure/goog/images/ratingstars.gif +0 -0
  838. data/closure-library/closure/goog/images/right_anchor_bubble_bot.gif +0 -0
  839. data/closure-library/closure/goog/images/right_anchor_bubble_top.gif +0 -0
  840. data/closure-library/closure/goog/images/toolbar-bg.png +0 -0
  841. data/closure-library/closure/goog/images/toolbar-separator.gif +0 -0
  842. data/closure-library/closure/goog/images/toolbar_icons.gif +0 -0
  843. data/closure-library/closure/goog/images/tree/I.png +0 -0
  844. data/closure-library/closure/goog/images/tree/cleardot.gif +0 -0
  845. data/closure-library/closure/goog/images/tree/tree.gif +0 -0
  846. data/closure-library/closure/goog/images/tree/tree.png +0 -0
  847. data/closure-library/closure/goog/images/ui_controls.jpg +0 -0
  848. data/closure-library/closure/goog/iter/iter.js +0 -627
  849. data/closure-library/closure/goog/iter/iter_test.html +0 -443
  850. data/closure-library/closure/goog/json/json.js +0 -302
  851. data/closure-library/closure/goog/json/json_test.html +0 -501
  852. data/closure-library/closure/goog/locale/countries.js +0 -288
  853. data/closure-library/closure/goog/locale/countrylanguagenames_test.html +0 -233
  854. data/closure-library/closure/goog/locale/defaultlocalenameconstants.js +0 -847
  855. data/closure-library/closure/goog/locale/genericfontnames.js +0 -73
  856. data/closure-library/closure/goog/locale/genericfontnames_test.html +0 -97
  857. data/closure-library/closure/goog/locale/genericfontnamesdata.js +0 -328
  858. data/closure-library/closure/goog/locale/locale.js +0 -397
  859. data/closure-library/closure/goog/locale/nativenameconstants.js +0 -1354
  860. data/closure-library/closure/goog/locale/scriptToLanguages.js +0 -482
  861. data/closure-library/closure/goog/locale/timezonedetection.js +0 -117
  862. data/closure-library/closure/goog/locale/timezonedetection_test.html +0 -130
  863. data/closure-library/closure/goog/locale/timezonefingerprint.js +0 -250
  864. data/closure-library/closure/goog/locale/timezonelist.js +0 -129
  865. data/closure-library/closure/goog/locale/timezonelist_test.html +0 -165
  866. data/closure-library/closure/goog/math/bezier.js +0 -244
  867. data/closure-library/closure/goog/math/bezier_test.html +0 -70
  868. data/closure-library/closure/goog/math/box.js +0 -236
  869. data/closure-library/closure/goog/math/box_test.html +0 -139
  870. data/closure-library/closure/goog/math/coordinate.js +0 -136
  871. data/closure-library/closure/goog/math/coordinate3.js +0 -168
  872. data/closure-library/closure/goog/math/coordinate3_test.html +0 -208
  873. data/closure-library/closure/goog/math/coordinate_test.html +0 -92
  874. data/closure-library/closure/goog/math/integer.js +0 -736
  875. data/closure-library/closure/goog/math/integer_test.html +0 -1653
  876. data/closure-library/closure/goog/math/line.js +0 -177
  877. data/closure-library/closure/goog/math/line_test.html +0 -62
  878. data/closure-library/closure/goog/math/long.js +0 -801
  879. data/closure-library/closure/goog/math/long_test.html +0 -1571
  880. data/closure-library/closure/goog/math/math.js +0 -355
  881. data/closure-library/closure/goog/math/math_test.html +0 -254
  882. data/closure-library/closure/goog/math/matrix.js +0 -669
  883. data/closure-library/closure/goog/math/matrix_test.html +0 -427
  884. data/closure-library/closure/goog/math/range.js +0 -146
  885. data/closure-library/closure/goog/math/range_test.html +0 -103
  886. data/closure-library/closure/goog/math/rangeset.js +0 -368
  887. data/closure-library/closure/goog/math/rangeset_test.html +0 -619
  888. data/closure-library/closure/goog/math/rect.js +0 -340
  889. data/closure-library/closure/goog/math/rect_test.html +0 -315
  890. data/closure-library/closure/goog/math/size.js +0 -201
  891. data/closure-library/closure/goog/math/size_test.html +0 -174
  892. data/closure-library/closure/goog/math/vec2.js +0 -255
  893. data/closure-library/closure/goog/math/vec2_test.html +0 -203
  894. data/closure-library/closure/goog/math/vec3.js +0 -308
  895. data/closure-library/closure/goog/math/vec3_test.html +0 -231
  896. data/closure-library/closure/goog/memoize/memoize.js +0 -98
  897. data/closure-library/closure/goog/memoize/memoize_test.html +0 -157
  898. data/closure-library/closure/goog/messaging/abstractchannel.js +0 -209
  899. data/closure-library/closure/goog/messaging/abstractchannel_test.html +0 -90
  900. data/closure-library/closure/goog/messaging/bufferedchannel.js +0 -277
  901. data/closure-library/closure/goog/messaging/bufferedchannel_test.html +0 -205
  902. data/closure-library/closure/goog/messaging/deferredchannel.js +0 -79
  903. data/closure-library/closure/goog/messaging/deferredchannel_test.html +0 -107
  904. data/closure-library/closure/goog/messaging/loggerclient.js +0 -131
  905. data/closure-library/closure/goog/messaging/loggerclient_test.html +0 -102
  906. data/closure-library/closure/goog/messaging/loggerserver.js +0 -94
  907. data/closure-library/closure/goog/messaging/loggerserver_test.html +0 -101
  908. data/closure-library/closure/goog/messaging/messagechannel.js +0 -115
  909. data/closure-library/closure/goog/messaging/messaging.js +0 -34
  910. data/closure-library/closure/goog/messaging/messaging_test.html +0 -42
  911. data/closure-library/closure/goog/messaging/multichannel.js +0 -303
  912. data/closure-library/closure/goog/messaging/multichannel_test.html +0 -122
  913. data/closure-library/closure/goog/messaging/portcaller.js +0 -150
  914. data/closure-library/closure/goog/messaging/portcaller_test.html +0 -66
  915. data/closure-library/closure/goog/messaging/portchannel.js +0 -341
  916. data/closure-library/closure/goog/messaging/portchannel_test.html +0 -359
  917. data/closure-library/closure/goog/messaging/portnetwork.js +0 -78
  918. data/closure-library/closure/goog/messaging/portnetwork_test.html +0 -64
  919. data/closure-library/closure/goog/messaging/portoperator.js +0 -196
  920. data/closure-library/closure/goog/messaging/portoperator_test.html +0 -112
  921. data/closure-library/closure/goog/messaging/testdata/portchannel_inner.html +0 -28
  922. data/closure-library/closure/goog/messaging/testdata/portchannel_worker.js +0 -37
  923. data/closure-library/closure/goog/messaging/testdata/portnetwork_inner.html +0 -35
  924. data/closure-library/closure/goog/messaging/testdata/portnetwork_worker1.js +0 -33
  925. data/closure-library/closure/goog/messaging/testdata/portnetwork_worker2.js +0 -33
  926. data/closure-library/closure/goog/module/abstractmoduleloader.js +0 -46
  927. data/closure-library/closure/goog/module/basemodule.js +0 -45
  928. data/closure-library/closure/goog/module/basemoduleloader.js +0 -210
  929. data/closure-library/closure/goog/module/loader.js +0 -269
  930. data/closure-library/closure/goog/module/module.js +0 -166
  931. data/closure-library/closure/goog/module/moduleinfo.js +0 -336
  932. data/closure-library/closure/goog/module/moduleinfo_test.html +0 -109
  933. data/closure-library/closure/goog/module/moduleloadcallback.js +0 -84
  934. data/closure-library/closure/goog/module/moduleloadcallback_test.html +0 -57
  935. data/closure-library/closure/goog/module/moduleloader.js +0 -250
  936. data/closure-library/closure/goog/module/moduleloader_test.html +0 -244
  937. data/closure-library/closure/goog/module/modulemanager.js +0 -1008
  938. data/closure-library/closure/goog/module/modulemanager_test.html +0 -1240
  939. data/closure-library/closure/goog/module/testdata/modA_1.js +0 -22
  940. data/closure-library/closure/goog/module/testdata/modA_2.js +0 -24
  941. data/closure-library/closure/goog/module/testdata/modB_1.js +0 -24
  942. data/closure-library/closure/goog/net/browserchannel.js +0 -2441
  943. data/closure-library/closure/goog/net/browserchannel_test.html +0 -1176
  944. data/closure-library/closure/goog/net/browsertestchannel.js +0 -552
  945. data/closure-library/closure/goog/net/bulkloader.js +0 -174
  946. data/closure-library/closure/goog/net/bulkloader_test.html +0 -232
  947. data/closure-library/closure/goog/net/bulkloaderhelper.js +0 -129
  948. data/closure-library/closure/goog/net/channeldebug.js +0 -288
  949. data/closure-library/closure/goog/net/channelrequest.js +0 -1125
  950. data/closure-library/closure/goog/net/channelrequest_test.html +0 -158
  951. data/closure-library/closure/goog/net/cookies.js +0 -401
  952. data/closure-library/closure/goog/net/cookies_test.html +0 -255
  953. data/closure-library/closure/goog/net/crossdomainrpc.js +0 -848
  954. data/closure-library/closure/goog/net/crossdomainrpc_test.gif +0 -0
  955. data/closure-library/closure/goog/net/crossdomainrpc_test.html +0 -120
  956. data/closure-library/closure/goog/net/crossdomainrpc_test_response.html +0 -59
  957. data/closure-library/closure/goog/net/errorcode.js +0 -130
  958. data/closure-library/closure/goog/net/eventtype.js +0 -37
  959. data/closure-library/closure/goog/net/iframe_xhr_test.html +0 -142
  960. data/closure-library/closure/goog/net/iframe_xhr_test_response.html +0 -17
  961. data/closure-library/closure/goog/net/iframeio.js +0 -1342
  962. data/closure-library/closure/goog/net/iframeio_different_base_test.data +0 -2
  963. data/closure-library/closure/goog/net/iframeio_different_base_test.html +0 -42
  964. data/closure-library/closure/goog/net/iframeio_test.html +0 -368
  965. data/closure-library/closure/goog/net/iframeloadmonitor.js +0 -199
  966. data/closure-library/closure/goog/net/iframeloadmonitor_test.html +0 -113
  967. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame.html +0 -12
  968. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame2.html +0 -12
  969. data/closure-library/closure/goog/net/iframeloadmonitor_test_frame3.html +0 -12
  970. data/closure-library/closure/goog/net/imageloader.js +0 -237
  971. data/closure-library/closure/goog/net/imageloader_test.html +0 -200
  972. data/closure-library/closure/goog/net/imageloader_testimg1.gif +0 -0
  973. data/closure-library/closure/goog/net/imageloader_testimg2.gif +0 -0
  974. data/closure-library/closure/goog/net/imageloader_testimg3.gif +0 -0
  975. data/closure-library/closure/goog/net/jsonp.js +0 -379
  976. data/closure-library/closure/goog/net/jsonp_test.html +0 -328
  977. data/closure-library/closure/goog/net/mockiframeio.js +0 -318
  978. data/closure-library/closure/goog/net/mockxhrlite.js +0 -34
  979. data/closure-library/closure/goog/net/mockxhrlite_test.html +0 -109
  980. data/closure-library/closure/goog/net/multiiframeloadmonitor.js +0 -116
  981. data/closure-library/closure/goog/net/multiiframeloadmonitor_test.html +0 -172
  982. data/closure-library/closure/goog/net/networktester.js +0 -383
  983. data/closure-library/closure/goog/net/networktester_test.html +0 -227
  984. data/closure-library/closure/goog/net/tmpnetwork.js +0 -168
  985. data/closure-library/closure/goog/net/wrapperxmlhttpfactory.js +0 -68
  986. data/closure-library/closure/goog/net/xhrio.js +0 -1093
  987. data/closure-library/closure/goog/net/xhrio_test.html +0 -603
  988. data/closure-library/closure/goog/net/xhriopool.js +0 -87
  989. data/closure-library/closure/goog/net/xhrlite.js +0 -119
  990. data/closure-library/closure/goog/net/xhrlite_test.html +0 -156
  991. data/closure-library/closure/goog/net/xhrlitepool.js +0 -37
  992. data/closure-library/closure/goog/net/xhrmanager.js +0 -763
  993. data/closure-library/closure/goog/net/xhrmonitor.js +0 -254
  994. data/closure-library/closure/goog/net/xhrmonitor_test.html +0 -199
  995. data/closure-library/closure/goog/net/xmlhttp.js +0 -215
  996. data/closure-library/closure/goog/net/xmlhttpfactory.js +0 -64
  997. data/closure-library/closure/goog/net/xpc/crosspagechannel.js +0 -624
  998. data/closure-library/closure/goog/net/xpc/crosspagechannel_test.html +0 -422
  999. data/closure-library/closure/goog/net/xpc/frameelementmethodtransport.js +0 -251
  1000. data/closure-library/closure/goog/net/xpc/iframepollingtransport.js +0 -822
  1001. data/closure-library/closure/goog/net/xpc/iframerelaytransport.js +0 -288
  1002. data/closure-library/closure/goog/net/xpc/nativemessagingtransport.js +0 -280
  1003. data/closure-library/closure/goog/net/xpc/nativemessagingtransport_test.html +0 -164
  1004. data/closure-library/closure/goog/net/xpc/nixtransport.js +0 -454
  1005. data/closure-library/closure/goog/net/xpc/relay.js +0 -72
  1006. data/closure-library/closure/goog/net/xpc/testdata/inner_peer.html +0 -106
  1007. data/closure-library/closure/goog/net/xpc/transport.js +0 -104
  1008. data/closure-library/closure/goog/net/xpc/xpc.js +0 -238
  1009. data/closure-library/closure/goog/object/object.js +0 -553
  1010. data/closure-library/closure/goog/object/object_test.html +0 -376
  1011. data/closure-library/closure/goog/positioning/absoluteposition.js +0 -73
  1012. data/closure-library/closure/goog/positioning/abstractposition.js +0 -47
  1013. data/closure-library/closure/goog/positioning/anchoredposition.js +0 -78
  1014. data/closure-library/closure/goog/positioning/anchoredviewportposition.js +0 -126
  1015. data/closure-library/closure/goog/positioning/anchoredviewportposition_test.html +0 -117
  1016. data/closure-library/closure/goog/positioning/anchoredviewportposition_test_iframe.html +0 -35
  1017. data/closure-library/closure/goog/positioning/clientposition.js +0 -75
  1018. data/closure-library/closure/goog/positioning/menuanchoredposition.js +0 -97
  1019. data/closure-library/closure/goog/positioning/positioning.js +0 -476
  1020. data/closure-library/closure/goog/positioning/positioning_test.html +0 -877
  1021. data/closure-library/closure/goog/positioning/positioning_test_iframe1.html +0 -16
  1022. data/closure-library/closure/goog/positioning/positioning_test_iframe2.html +0 -13
  1023. data/closure-library/closure/goog/positioning/positioning_test_quirk.html +0 -9
  1024. data/closure-library/closure/goog/positioning/positioning_test_standard.html +0 -13
  1025. data/closure-library/closure/goog/positioning/viewportclientposition.js +0 -102
  1026. data/closure-library/closure/goog/positioning/viewportclientposition_test.html +0 -172
  1027. data/closure-library/closure/goog/positioning/viewportposition.js +0 -63
  1028. data/closure-library/closure/goog/proto/proto.js +0 -43
  1029. data/closure-library/closure/goog/proto/serializer.js +0 -68
  1030. data/closure-library/closure/goog/proto/serializer_test.html +0 -43
  1031. data/closure-library/closure/goog/proto2/descriptor.js +0 -198
  1032. data/closure-library/closure/goog/proto2/descriptor_test.html +0 -60
  1033. data/closure-library/closure/goog/proto2/fielddescriptor.js +0 -288
  1034. data/closure-library/closure/goog/proto2/fielddescriptor_test.html +0 -124
  1035. data/closure-library/closure/goog/proto2/lazydeserializer.js +0 -69
  1036. data/closure-library/closure/goog/proto2/message.js +0 -726
  1037. data/closure-library/closure/goog/proto2/message_test.html +0 -356
  1038. data/closure-library/closure/goog/proto2/objectserializer.js +0 -159
  1039. data/closure-library/closure/goog/proto2/objectserializer_test.html +0 -423
  1040. data/closure-library/closure/goog/proto2/package_test.pb.js +0 -164
  1041. data/closure-library/closure/goog/proto2/pbliteserializer.js +0 -150
  1042. data/closure-library/closure/goog/proto2/pbliteserializer_test.html +0 -267
  1043. data/closure-library/closure/goog/proto2/proto_test.html +0 -693
  1044. data/closure-library/closure/goog/proto2/serializer.js +0 -148
  1045. data/closure-library/closure/goog/proto2/test.pb.js +0 -2820
  1046. data/closure-library/closure/goog/proto2/util.js +0 -54
  1047. data/closure-library/closure/goog/pubsub/pubsub.js +0 -326
  1048. data/closure-library/closure/goog/pubsub/pubsub_test.html +0 -635
  1049. data/closure-library/closure/goog/reflect/reflect.js +0 -50
  1050. data/closure-library/closure/goog/spell/spellcheck.js +0 -474
  1051. data/closure-library/closure/goog/spell/spellcheck_test.html +0 -112
  1052. data/closure-library/closure/goog/string/path.js +0 -100
  1053. data/closure-library/closure/goog/string/path_test.html +0 -59
  1054. data/closure-library/closure/goog/string/string.js +0 -1207
  1055. data/closure-library/closure/goog/string/string_test.html +0 -877
  1056. data/closure-library/closure/goog/string/stringbuffer.js +0 -167
  1057. data/closure-library/closure/goog/string/stringbuffer_test.html +0 -101
  1058. data/closure-library/closure/goog/string/stringformat.js +0 -247
  1059. data/closure-library/closure/goog/string/stringformat_test.html +0 -211
  1060. data/closure-library/closure/goog/structs/avltree.js +0 -769
  1061. data/closure-library/closure/goog/structs/avltree_test.html +0 -241
  1062. data/closure-library/closure/goog/structs/circularbuffer.js +0 -219
  1063. data/closure-library/closure/goog/structs/circularbuffer_test.html +0 -105
  1064. data/closure-library/closure/goog/structs/heap.js +0 -332
  1065. data/closure-library/closure/goog/structs/heap_test.html +0 -220
  1066. data/closure-library/closure/goog/structs/inversionmap.js +0 -159
  1067. data/closure-library/closure/goog/structs/inversionmap_test.html +0 -157
  1068. data/closure-library/closure/goog/structs/linkedmap.js +0 -472
  1069. data/closure-library/closure/goog/structs/linkedmap_test.html +0 -300
  1070. data/closure-library/closure/goog/structs/map.js +0 -446
  1071. data/closure-library/closure/goog/structs/map_test.html +0 -430
  1072. data/closure-library/closure/goog/structs/node.js +0 -74
  1073. data/closure-library/closure/goog/structs/pool.js +0 -344
  1074. data/closure-library/closure/goog/structs/pool_test.html +0 -265
  1075. data/closure-library/closure/goog/structs/prioritypool.js +0 -147
  1076. data/closure-library/closure/goog/structs/prioritypool_test.html +0 -478
  1077. data/closure-library/closure/goog/structs/priorityqueue.js +0 -64
  1078. data/closure-library/closure/goog/structs/priorityqueue_test.html +0 -179
  1079. data/closure-library/closure/goog/structs/quadtree.js +0 -571
  1080. data/closure-library/closure/goog/structs/quadtree_test.html +0 -179
  1081. data/closure-library/closure/goog/structs/queue.js +0 -157
  1082. data/closure-library/closure/goog/structs/queue_test.html +0 -140
  1083. data/closure-library/closure/goog/structs/set.js +0 -251
  1084. data/closure-library/closure/goog/structs/set_test.html +0 -551
  1085. data/closure-library/closure/goog/structs/simplepool.js +0 -203
  1086. data/closure-library/closure/goog/structs/stringset.js +0 -404
  1087. data/closure-library/closure/goog/structs/stringset_test.html +0 -251
  1088. data/closure-library/closure/goog/structs/structs.js +0 -341
  1089. data/closure-library/closure/goog/structs/structs_test.html +0 -1050
  1090. data/closure-library/closure/goog/structs/treenode.js +0 -312
  1091. data/closure-library/closure/goog/structs/treenode_test.html +0 -285
  1092. data/closure-library/closure/goog/structs/trie.js +0 -368
  1093. data/closure-library/closure/goog/structs/trie_test.html +0 -378
  1094. data/closure-library/closure/goog/style/cursor.js +0 -125
  1095. data/closure-library/closure/goog/style/cursor_test.html +0 -131
  1096. data/closure-library/closure/goog/style/style.js +0 -1804
  1097. data/closure-library/closure/goog/style/style_quirks_test.html +0 -1928
  1098. data/closure-library/closure/goog/style/style_test.html +0 -2073
  1099. data/closure-library/closure/goog/style/style_test_iframe_quirk.html +0 -29
  1100. data/closure-library/closure/goog/style/style_test_iframe_standard.html +0 -30
  1101. data/closure-library/closure/goog/style/style_test_quirk.html +0 -9
  1102. data/closure-library/closure/goog/style/style_test_standard.html +0 -11
  1103. data/closure-library/closure/goog/testing/asserts.js +0 -970
  1104. data/closure-library/closure/goog/testing/asserts_test.html +0 -966
  1105. data/closure-library/closure/goog/testing/async/mockcontrol.js +0 -174
  1106. data/closure-library/closure/goog/testing/async/mockcontrol_test.html +0 -224
  1107. data/closure-library/closure/goog/testing/asynctestcase.js +0 -812
  1108. data/closure-library/closure/goog/testing/asynctestcase_async_test.html +0 -102
  1109. data/closure-library/closure/goog/testing/asynctestcase_noasync_test.html +0 -98
  1110. data/closure-library/closure/goog/testing/benchmark.js +0 -87
  1111. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton.js +0 -64
  1112. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton_test.html +0 -58
  1113. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar.js +0 -66
  1114. data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html +0 -49
  1115. data/closure-library/closure/goog/testing/continuationtestcase.js +0 -682
  1116. data/closure-library/closure/goog/testing/continuationtestcase_test.html +0 -349
  1117. data/closure-library/closure/goog/testing/deferredtestcase.js +0 -157
  1118. data/closure-library/closure/goog/testing/deferredtestcase_test.html +0 -152
  1119. data/closure-library/closure/goog/testing/dom.js +0 -596
  1120. data/closure-library/closure/goog/testing/dom_test.html +0 -438
  1121. data/closure-library/closure/goog/testing/editor/dom.js +0 -293
  1122. data/closure-library/closure/goog/testing/editor/dom_test.html +0 -295
  1123. data/closure-library/closure/goog/testing/editor/fieldmock.js +0 -90
  1124. data/closure-library/closure/goog/testing/editor/testhelper.js +0 -168
  1125. data/closure-library/closure/goog/testing/editor/testhelper_test.html +0 -176
  1126. data/closure-library/closure/goog/testing/events/eventobserver.js +0 -85
  1127. data/closure-library/closure/goog/testing/events/eventobserver_test.html +0 -70
  1128. data/closure-library/closure/goog/testing/events/events.js +0 -540
  1129. data/closure-library/closure/goog/testing/events/events_test.html +0 -434
  1130. data/closure-library/closure/goog/testing/events/matchers.js +0 -41
  1131. data/closure-library/closure/goog/testing/events/matchers_test.html +0 -40
  1132. data/closure-library/closure/goog/testing/expectedfailures.js +0 -236
  1133. data/closure-library/closure/goog/testing/expectedfailures_test.html +0 -122
  1134. data/closure-library/closure/goog/testing/fs/blob.js +0 -74
  1135. data/closure-library/closure/goog/testing/fs/blob_test.html +0 -53
  1136. data/closure-library/closure/goog/testing/fs/directoryentry_test.html +0 -185
  1137. data/closure-library/closure/goog/testing/fs/entry.js +0 -511
  1138. data/closure-library/closure/goog/testing/fs/entry_test.html +0 -153
  1139. data/closure-library/closure/goog/testing/fs/file.js +0 -51
  1140. data/closure-library/closure/goog/testing/fs/fileentry_test.html +0 -54
  1141. data/closure-library/closure/goog/testing/fs/filesystem.js +0 -64
  1142. data/closure-library/closure/goog/testing/fs/filewriter.js +0 -314
  1143. data/closure-library/closure/goog/testing/fs/filewriter_test.html +0 -248
  1144. data/closure-library/closure/goog/testing/fs/fs.js +0 -146
  1145. data/closure-library/closure/goog/testing/fs/fs_test.html +0 -54
  1146. data/closure-library/closure/goog/testing/fs/integration_test.html +0 -219
  1147. data/closure-library/closure/goog/testing/functionmock.js +0 -157
  1148. data/closure-library/closure/goog/testing/functionmock_test.html +0 -357
  1149. data/closure-library/closure/goog/testing/graphics.js +0 -64
  1150. data/closure-library/closure/goog/testing/jsunit.js +0 -144
  1151. data/closure-library/closure/goog/testing/loosemock.js +0 -240
  1152. data/closure-library/closure/goog/testing/loosemock_test.html +0 -343
  1153. data/closure-library/closure/goog/testing/messaging/mockmessagechannel.js +0 -77
  1154. data/closure-library/closure/goog/testing/messaging/mockmessageevent.js +0 -100
  1155. data/closure-library/closure/goog/testing/messaging/mockmessageport.js +0 -85
  1156. data/closure-library/closure/goog/testing/messaging/mockportnetwork.js +0 -64
  1157. data/closure-library/closure/goog/testing/mock.js +0 -556
  1158. data/closure-library/closure/goog/testing/mock_test.html +0 -208
  1159. data/closure-library/closure/goog/testing/mockclassfactory.js +0 -580
  1160. data/closure-library/closure/goog/testing/mockclassfactory_test.html +0 -241
  1161. data/closure-library/closure/goog/testing/mockclock.js +0 -395
  1162. data/closure-library/closure/goog/testing/mockclock_test.html +0 -413
  1163. data/closure-library/closure/goog/testing/mockcontrol.js +0 -210
  1164. data/closure-library/closure/goog/testing/mockcontrol_test.html +0 -127
  1165. data/closure-library/closure/goog/testing/mockinterface.js +0 -45
  1166. data/closure-library/closure/goog/testing/mockmatchers.js +0 -395
  1167. data/closure-library/closure/goog/testing/mockmatchers_test.html +0 -388
  1168. data/closure-library/closure/goog/testing/mockrandom.js +0 -128
  1169. data/closure-library/closure/goog/testing/mockrandom_test.html +0 -56
  1170. data/closure-library/closure/goog/testing/mockrange.js +0 -65
  1171. data/closure-library/closure/goog/testing/mockrange_test.html +0 -41
  1172. data/closure-library/closure/goog/testing/mockuseragent.js +0 -143
  1173. data/closure-library/closure/goog/testing/mockuseragent_test.html +0 -59
  1174. data/closure-library/closure/goog/testing/multitestrunner.js +0 -1442
  1175. data/closure-library/closure/goog/testing/net/xhrio.js +0 -595
  1176. data/closure-library/closure/goog/testing/net/xhrio_test.html +0 -321
  1177. data/closure-library/closure/goog/testing/objectpropertystring.js +0 -67
  1178. data/closure-library/closure/goog/testing/performancetable.css +0 -46
  1179. data/closure-library/closure/goog/testing/performancetable.js +0 -162
  1180. data/closure-library/closure/goog/testing/performancetimer.js +0 -166
  1181. data/closure-library/closure/goog/testing/performancetimer_test.html +0 -107
  1182. data/closure-library/closure/goog/testing/propertyreplacer.js +0 -243
  1183. data/closure-library/closure/goog/testing/propertyreplacer_test.html +0 -368
  1184. data/closure-library/closure/goog/testing/pseudorandom.js +0 -162
  1185. data/closure-library/closure/goog/testing/pseudorandom_test.html +0 -98
  1186. data/closure-library/closure/goog/testing/recordfunction.js +0 -194
  1187. data/closure-library/closure/goog/testing/recordfunction_test.html +0 -147
  1188. data/closure-library/closure/goog/testing/singleton.js +0 -82
  1189. data/closure-library/closure/goog/testing/singleton_test.html +0 -39
  1190. data/closure-library/closure/goog/testing/stacktrace.js +0 -470
  1191. data/closure-library/closure/goog/testing/stacktrace_test.html +0 -229
  1192. data/closure-library/closure/goog/testing/strictmock.js +0 -124
  1193. data/closure-library/closure/goog/testing/strictmock_test.html +0 -368
  1194. data/closure-library/closure/goog/testing/style/layoutasserts.js +0 -368
  1195. data/closure-library/closure/goog/testing/style/layoutasserts_test.html +0 -269
  1196. data/closure-library/closure/goog/testing/testcase.js +0 -1053
  1197. data/closure-library/closure/goog/testing/testqueue.js +0 -66
  1198. data/closure-library/closure/goog/testing/testrunner.js +0 -391
  1199. data/closure-library/closure/goog/testing/ui/rendererasserts.js +0 -50
  1200. data/closure-library/closure/goog/testing/ui/rendererasserts_test.html +0 -51
  1201. data/closure-library/closure/goog/testing/ui/rendererharness.js +0 -175
  1202. data/closure-library/closure/goog/testing/ui/style.js +0 -137
  1203. data/closure-library/closure/goog/testing/ui/style_reference.html +0 -27
  1204. data/closure-library/closure/goog/testing/ui/style_test.html +0 -130
  1205. data/closure-library/closure/goog/timer/timer.js +0 -285
  1206. data/closure-library/closure/goog/timer/timer_test.html +0 -118
  1207. data/closure-library/closure/goog/tweak/entries.js +0 -990
  1208. data/closure-library/closure/goog/tweak/entries_test.html +0 -94
  1209. data/closure-library/closure/goog/tweak/registry.js +0 -310
  1210. data/closure-library/closure/goog/tweak/registry_test.html +0 -144
  1211. data/closure-library/closure/goog/tweak/testhelpers.js +0 -111
  1212. data/closure-library/closure/goog/tweak/tweak.js +0 -318
  1213. data/closure-library/closure/goog/tweak/tweakui.js +0 -817
  1214. data/closure-library/closure/goog/tweak/tweakui_test.html +0 -280
  1215. data/closure-library/closure/goog/ui/abstractspellchecker.js +0 -1069
  1216. data/closure-library/closure/goog/ui/activitymonitor.js +0 -286
  1217. data/closure-library/closure/goog/ui/activitymonitor_test.html +0 -44
  1218. data/closure-library/closure/goog/ui/advancedtooltip.js +0 -368
  1219. data/closure-library/closure/goog/ui/advancedtooltip_test.html +0 -274
  1220. data/closure-library/closure/goog/ui/animatedzippy.js +0 -190
  1221. data/closure-library/closure/goog/ui/attachablemenu.js +0 -464
  1222. data/closure-library/closure/goog/ui/autocomplete/arraymatcher.js +0 -156
  1223. data/closure-library/closure/goog/ui/autocomplete/arraymatcher_test.html +0 -130
  1224. data/closure-library/closure/goog/ui/autocomplete/autocomplete.js +0 -627
  1225. data/closure-library/closure/goog/ui/autocomplete/autocomplete_test.html +0 -537
  1226. data/closure-library/closure/goog/ui/autocomplete/basic.js +0 -53
  1227. data/closure-library/closure/goog/ui/autocomplete/basic_test.html +0 -204
  1228. data/closure-library/closure/goog/ui/autocomplete/inputhandler.js +0 -1209
  1229. data/closure-library/closure/goog/ui/autocomplete/inputhandler_test.html +0 -555
  1230. data/closure-library/closure/goog/ui/autocomplete/remote.js +0 -117
  1231. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher.js +0 -273
  1232. data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher_test.html +0 -73
  1233. data/closure-library/closure/goog/ui/autocomplete/renderer.js +0 -852
  1234. data/closure-library/closure/goog/ui/autocomplete/renderer_test.html +0 -386
  1235. data/closure-library/closure/goog/ui/autocomplete/richinputhandler.js +0 -59
  1236. data/closure-library/closure/goog/ui/autocomplete/richremote.js +0 -108
  1237. data/closure-library/closure/goog/ui/autocomplete/richremotearraymatcher.js +0 -126
  1238. data/closure-library/closure/goog/ui/basicmenu.js +0 -930
  1239. data/closure-library/closure/goog/ui/bidiinput.js +0 -164
  1240. data/closure-library/closure/goog/ui/bubble.js +0 -475
  1241. data/closure-library/closure/goog/ui/button.js +0 -208
  1242. data/closure-library/closure/goog/ui/button_test.html +0 -257
  1243. data/closure-library/closure/goog/ui/buttonrenderer.js +0 -205
  1244. data/closure-library/closure/goog/ui/buttonrenderer_test.html +0 -190
  1245. data/closure-library/closure/goog/ui/buttonside.js +0 -40
  1246. data/closure-library/closure/goog/ui/cccbutton.js +0 -281
  1247. data/closure-library/closure/goog/ui/charcounter.js +0 -200
  1248. data/closure-library/closure/goog/ui/charpicker.js +0 -807
  1249. data/closure-library/closure/goog/ui/checkbox.js +0 -303
  1250. data/closure-library/closure/goog/ui/checkbox_test.html +0 -224
  1251. data/closure-library/closure/goog/ui/checkboxmenuitem.js +0 -53
  1252. data/closure-library/closure/goog/ui/colorbutton.js +0 -58
  1253. data/closure-library/closure/goog/ui/colorbutton_test.html +0 -70
  1254. data/closure-library/closure/goog/ui/colorbuttonrenderer.js +0 -72
  1255. data/closure-library/closure/goog/ui/colormenubutton.js +0 -213
  1256. data/closure-library/closure/goog/ui/colormenubuttonrenderer.js +0 -144
  1257. data/closure-library/closure/goog/ui/colormenubuttonrenderer_test.html +0 -88
  1258. data/closure-library/closure/goog/ui/colorpalette.js +0 -162
  1259. data/closure-library/closure/goog/ui/colorpalette_test.html +0 -169
  1260. data/closure-library/closure/goog/ui/colorpicker.js +0 -344
  1261. data/closure-library/closure/goog/ui/colorsplitbehavior.js +0 -61
  1262. data/closure-library/closure/goog/ui/combobox.js +0 -894
  1263. data/closure-library/closure/goog/ui/combobox_test.html +0 -208
  1264. data/closure-library/closure/goog/ui/component.js +0 -1187
  1265. data/closure-library/closure/goog/ui/component_test.html +0 -723
  1266. data/closure-library/closure/goog/ui/container.js +0 -1296
  1267. data/closure-library/closure/goog/ui/container_test.html +0 -450
  1268. data/closure-library/closure/goog/ui/containerrenderer.js +0 -370
  1269. data/closure-library/closure/goog/ui/containerrenderer_test.html +0 -227
  1270. data/closure-library/closure/goog/ui/containerscroller.js +0 -221
  1271. data/closure-library/closure/goog/ui/containerscroller_test.html +0 -213
  1272. data/closure-library/closure/goog/ui/control.js +0 -1348
  1273. data/closure-library/closure/goog/ui/control_test.html +0 -2128
  1274. data/closure-library/closure/goog/ui/controlcontent.js +0 -28
  1275. data/closure-library/closure/goog/ui/controlrenderer.js +0 -808
  1276. data/closure-library/closure/goog/ui/controlrenderer_test.html +0 -840
  1277. data/closure-library/closure/goog/ui/cookieeditor.js +0 -182
  1278. data/closure-library/closure/goog/ui/cookieeditor_test.html +0 -102
  1279. data/closure-library/closure/goog/ui/css3buttonrenderer.js +0 -147
  1280. data/closure-library/closure/goog/ui/css3menubuttonrenderer.js +0 -144
  1281. data/closure-library/closure/goog/ui/cssnames.js +0 -28
  1282. data/closure-library/closure/goog/ui/custombutton.js +0 -58
  1283. data/closure-library/closure/goog/ui/custombuttonrenderer.js +0 -254
  1284. data/closure-library/closure/goog/ui/customcolorpalette.js +0 -137
  1285. data/closure-library/closure/goog/ui/customcolorpalette_test.html +0 -60
  1286. data/closure-library/closure/goog/ui/datepicker.js +0 -1339
  1287. data/closure-library/closure/goog/ui/datepicker_test.html +0 -190
  1288. data/closure-library/closure/goog/ui/decorate.js +0 -37
  1289. data/closure-library/closure/goog/ui/decorate_test.html +0 -113
  1290. data/closure-library/closure/goog/ui/deprecatedbutton.js +0 -381
  1291. data/closure-library/closure/goog/ui/dialog.js +0 -1776
  1292. data/closure-library/closure/goog/ui/dialog_test.html +0 -493
  1293. data/closure-library/closure/goog/ui/dimensionpicker.js +0 -289
  1294. data/closure-library/closure/goog/ui/dimensionpicker_test.html +0 -128
  1295. data/closure-library/closure/goog/ui/dimensionpickerrenderer.js +0 -387
  1296. data/closure-library/closure/goog/ui/dragdropdetector.js +0 -642
  1297. data/closure-library/closure/goog/ui/drilldownrow.js +0 -494
  1298. data/closure-library/closure/goog/ui/editor/abstractdialog.js +0 -443
  1299. data/closure-library/closure/goog/ui/editor/abstractdialog_test.html +0 -467
  1300. data/closure-library/closure/goog/ui/editor/bubble.js +0 -520
  1301. data/closure-library/closure/goog/ui/editor/bubble_test.html +0 -264
  1302. data/closure-library/closure/goog/ui/editor/defaulttoolbar.js +0 -1062
  1303. data/closure-library/closure/goog/ui/editor/linkdialog.js +0 -833
  1304. data/closure-library/closure/goog/ui/editor/linkdialog_test.html +0 -449
  1305. data/closure-library/closure/goog/ui/editor/messages.js +0 -115
  1306. data/closure-library/closure/goog/ui/editor/tabpane.js +0 -183
  1307. data/closure-library/closure/goog/ui/editor/toolbarcontroller.js +0 -293
  1308. data/closure-library/closure/goog/ui/editor/toolbarfactory.js +0 -437
  1309. data/closure-library/closure/goog/ui/editor/toolbarfactory_test.html +0 -73
  1310. data/closure-library/closure/goog/ui/emoji/emoji.js +0 -72
  1311. data/closure-library/closure/goog/ui/emoji/emojipalette.js +0 -298
  1312. data/closure-library/closure/goog/ui/emoji/emojipaletterenderer.js +0 -206
  1313. data/closure-library/closure/goog/ui/emoji/emojipicker.js +0 -797
  1314. data/closure-library/closure/goog/ui/emoji/emojipicker_test.html +0 -840
  1315. data/closure-library/closure/goog/ui/emoji/fast_nonprogressive_emojipicker_test.html +0 -256
  1316. data/closure-library/closure/goog/ui/emoji/fast_progressive_emojipicker_test.html +0 -256
  1317. data/closure-library/closure/goog/ui/emoji/popupemojipicker.js +0 -410
  1318. data/closure-library/closure/goog/ui/emoji/popupemojipicker_test.html +0 -80
  1319. data/closure-library/closure/goog/ui/emoji/progressiveemojipaletterenderer.js +0 -97
  1320. data/closure-library/closure/goog/ui/emoji/spriteinfo.js +0 -212
  1321. data/closure-library/closure/goog/ui/emoji/spriteinfo_test.html +0 -51
  1322. data/closure-library/closure/goog/ui/filteredmenu.js +0 -562
  1323. data/closure-library/closure/goog/ui/filteredmenu_test.html +0 -299
  1324. data/closure-library/closure/goog/ui/filterobservingmenuitem.js +0 -97
  1325. data/closure-library/closure/goog/ui/filterobservingmenuitemrenderer.js +0 -60
  1326. data/closure-library/closure/goog/ui/flatbuttonrenderer.js +0 -138
  1327. data/closure-library/closure/goog/ui/flatmenubuttonrenderer.js +0 -199
  1328. data/closure-library/closure/goog/ui/formpost.js +0 -109
  1329. data/closure-library/closure/goog/ui/formpost_test.html +0 -109
  1330. data/closure-library/closure/goog/ui/gauge.js +0 -999
  1331. data/closure-library/closure/goog/ui/gaugetheme.js +0 -169
  1332. data/closure-library/closure/goog/ui/hovercard.js +0 -447
  1333. data/closure-library/closure/goog/ui/hovercard_test.html +0 -343
  1334. data/closure-library/closure/goog/ui/hsvapalette.js +0 -311
  1335. data/closure-library/closure/goog/ui/hsvapalette_test.html +0 -152
  1336. data/closure-library/closure/goog/ui/hsvpalette.js +0 -470
  1337. data/closure-library/closure/goog/ui/hsvpalette_test.html +0 -202
  1338. data/closure-library/closure/goog/ui/idgenerator.js +0 -57
  1339. data/closure-library/closure/goog/ui/idletimer.js +0 -299
  1340. data/closure-library/closure/goog/ui/idletimer_test.html +0 -100
  1341. data/closure-library/closure/goog/ui/iframemask.js +0 -256
  1342. data/closure-library/closure/goog/ui/iframemask_test.html +0 -230
  1343. data/closure-library/closure/goog/ui/imagelessbuttonrenderer.js +0 -204
  1344. data/closure-library/closure/goog/ui/imagelessmenubuttonrenderer.js +0 -202
  1345. data/closure-library/closure/goog/ui/imagelessroundedcorner.js +0 -971
  1346. data/closure-library/closure/goog/ui/inputdatepicker.js +0 -306
  1347. data/closure-library/closure/goog/ui/inputdatepicker_test.html +0 -109
  1348. data/closure-library/closure/goog/ui/itemevent.js +0 -50
  1349. data/closure-library/closure/goog/ui/keyboardshortcuthandler.js +0 -981
  1350. data/closure-library/closure/goog/ui/keyboardshortcuthandler_test.html +0 -671
  1351. data/closure-library/closure/goog/ui/labelinput.js +0 -439
  1352. data/closure-library/closure/goog/ui/linkbuttonrenderer.js +0 -67
  1353. data/closure-library/closure/goog/ui/media/flashobject.js +0 -629
  1354. data/closure-library/closure/goog/ui/media/flashobject_test.html +0 -236
  1355. data/closure-library/closure/goog/ui/media/flickr.js +0 -309
  1356. data/closure-library/closure/goog/ui/media/flickr_test.html +0 -90
  1357. data/closure-library/closure/goog/ui/media/media.js +0 -284
  1358. data/closure-library/closure/goog/ui/media/media_test.html +0 -161
  1359. data/closure-library/closure/goog/ui/media/mediamodel.js +0 -840
  1360. data/closure-library/closure/goog/ui/media/mp3.js +0 -225
  1361. data/closure-library/closure/goog/ui/media/mp3_test.html +0 -78
  1362. data/closure-library/closure/goog/ui/media/photo.js +0 -139
  1363. data/closure-library/closure/goog/ui/media/photo_test.html +0 -62
  1364. data/closure-library/closure/goog/ui/media/picasa.js +0 -317
  1365. data/closure-library/closure/goog/ui/media/picasa_test.html +0 -131
  1366. data/closure-library/closure/goog/ui/media/vimeo.js +0 -264
  1367. data/closure-library/closure/goog/ui/media/vimeo_test.html +0 -79
  1368. data/closure-library/closure/goog/ui/media/youtube.js +0 -328
  1369. data/closure-library/closure/goog/ui/media/youtube_test.html +0 -185
  1370. data/closure-library/closure/goog/ui/menu.js +0 -435
  1371. data/closure-library/closure/goog/ui/menu_test.html +0 -129
  1372. data/closure-library/closure/goog/ui/menubase.js +0 -191
  1373. data/closure-library/closure/goog/ui/menubutton.js +0 -815
  1374. data/closure-library/closure/goog/ui/menubutton_test.html +0 -440
  1375. data/closure-library/closure/goog/ui/menubutton_test_frame.html +0 -41
  1376. data/closure-library/closure/goog/ui/menubuttonrenderer.js +0 -226
  1377. data/closure-library/closure/goog/ui/menubuttonrenderer_test.html +0 -161
  1378. data/closure-library/closure/goog/ui/menuheader.js +0 -62
  1379. data/closure-library/closure/goog/ui/menuheaderrenderer.js +0 -55
  1380. data/closure-library/closure/goog/ui/menuitem.js +0 -154
  1381. data/closure-library/closure/goog/ui/menuitem_test.html +0 -506
  1382. data/closure-library/closure/goog/ui/menuitemrenderer.js +0 -353
  1383. data/closure-library/closure/goog/ui/menuitemrenderer_test.html +0 -190
  1384. data/closure-library/closure/goog/ui/menurenderer.js +0 -118
  1385. data/closure-library/closure/goog/ui/menuseparator.js +0 -51
  1386. data/closure-library/closure/goog/ui/menuseparatorrenderer.js +0 -102
  1387. data/closure-library/closure/goog/ui/mockactivitymonitor.js +0 -54
  1388. data/closure-library/closure/goog/ui/nativebuttonrenderer.js +0 -205
  1389. data/closure-library/closure/goog/ui/nativebuttonrenderer_test.html +0 -213
  1390. data/closure-library/closure/goog/ui/offlineinstalldialog.js +0 -1086
  1391. data/closure-library/closure/goog/ui/offlinestatuscard.js +0 -580
  1392. data/closure-library/closure/goog/ui/offlinestatuscomponent.js +0 -545
  1393. data/closure-library/closure/goog/ui/option.js +0 -67
  1394. data/closure-library/closure/goog/ui/palette.js +0 -528
  1395. data/closure-library/closure/goog/ui/paletterenderer.js +0 -318
  1396. data/closure-library/closure/goog/ui/plaintextspellchecker.js +0 -668
  1397. data/closure-library/closure/goog/ui/plaintextspellchecker_test.html +0 -240
  1398. data/closure-library/closure/goog/ui/popup.js +0 -410
  1399. data/closure-library/closure/goog/ui/popup_test.html +0 -137
  1400. data/closure-library/closure/goog/ui/popupbase.js +0 -721
  1401. data/closure-library/closure/goog/ui/popupbase_test.html +0 -186
  1402. data/closure-library/closure/goog/ui/popupcolorpicker.js +0 -441
  1403. data/closure-library/closure/goog/ui/popupcolorpicker_test.html +0 -71
  1404. data/closure-library/closure/goog/ui/popupdatepicker.js +0 -273
  1405. data/closure-library/closure/goog/ui/popupmenu.js +0 -539
  1406. data/closure-library/closure/goog/ui/popupmenu_test.html +0 -197
  1407. data/closure-library/closure/goog/ui/progressbar.js +0 -390
  1408. data/closure-library/closure/goog/ui/prompt.js +0 -307
  1409. data/closure-library/closure/goog/ui/prompt_test.html +0 -65
  1410. data/closure-library/closure/goog/ui/rangemodel.js +0 -301
  1411. data/closure-library/closure/goog/ui/rangemodel_test.html +0 -270
  1412. data/closure-library/closure/goog/ui/ratings.js +0 -441
  1413. data/closure-library/closure/goog/ui/registry.js +0 -166
  1414. data/closure-library/closure/goog/ui/registry_test.html +0 -236
  1415. data/closure-library/closure/goog/ui/richtextspellchecker.js +0 -600
  1416. data/closure-library/closure/goog/ui/richtextspellchecker_test.html +0 -224
  1417. data/closure-library/closure/goog/ui/roundedcorners.js +0 -694
  1418. data/closure-library/closure/goog/ui/roundedpanel.js +0 -609
  1419. data/closure-library/closure/goog/ui/roundedpanel_test.html +0 -57
  1420. data/closure-library/closure/goog/ui/roundedtabrenderer.js +0 -196
  1421. data/closure-library/closure/goog/ui/scrollfloater.js +0 -394
  1422. data/closure-library/closure/goog/ui/scrollfloater_test.html +0 -46
  1423. data/closure-library/closure/goog/ui/select.js +0 -397
  1424. data/closure-library/closure/goog/ui/select_test.html +0 -152
  1425. data/closure-library/closure/goog/ui/selectionmenubutton.js +0 -277
  1426. data/closure-library/closure/goog/ui/selectionmenubutton_test.html +0 -237
  1427. data/closure-library/closure/goog/ui/selectionmodel.js +0 -291
  1428. data/closure-library/closure/goog/ui/separator.js +0 -74
  1429. data/closure-library/closure/goog/ui/serverchart.js +0 -1791
  1430. data/closure-library/closure/goog/ui/serverchart_test.html +0 -598
  1431. data/closure-library/closure/goog/ui/slider.js +0 -125
  1432. data/closure-library/closure/goog/ui/sliderbase.js +0 -1087
  1433. data/closure-library/closure/goog/ui/sliderbase_test.html +0 -198
  1434. data/closure-library/closure/goog/ui/splitbehavior.js +0 -348
  1435. data/closure-library/closure/goog/ui/splitbehavior_test.html +0 -161
  1436. data/closure-library/closure/goog/ui/splitpane.js +0 -844
  1437. data/closure-library/closure/goog/ui/splitpane_test.html +0 -143
  1438. data/closure-library/closure/goog/ui/style/app/buttonrenderer.js +0 -204
  1439. data/closure-library/closure/goog/ui/style/app/buttonrenderer_test.html +0 -155
  1440. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer.js +0 -227
  1441. data/closure-library/closure/goog/ui/style/app/menubuttonrenderer_test.html +0 -167
  1442. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer.js +0 -88
  1443. data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html +0 -76
  1444. data/closure-library/closure/goog/ui/submenu.js +0 -660
  1445. data/closure-library/closure/goog/ui/submenu_test.html +0 -446
  1446. data/closure-library/closure/goog/ui/submenurenderer.js +0 -188
  1447. data/closure-library/closure/goog/ui/tab.js +0 -102
  1448. data/closure-library/closure/goog/ui/tab_test.html +0 -61
  1449. data/closure-library/closure/goog/ui/tabbar.js +0 -393
  1450. data/closure-library/closure/goog/ui/tabbar_test.html +0 -611
  1451. data/closure-library/closure/goog/ui/tabbarrenderer.js +0 -173
  1452. data/closure-library/closure/goog/ui/tabbarrenderer_test.html +0 -137
  1453. data/closure-library/closure/goog/ui/tablesorter.js +0 -304
  1454. data/closure-library/closure/goog/ui/tablesorter_test.html +0 -127
  1455. data/closure-library/closure/goog/ui/tabpane.js +0 -674
  1456. data/closure-library/closure/goog/ui/tabpane_test.html +0 -107
  1457. data/closure-library/closure/goog/ui/tabrenderer.js +0 -152
  1458. data/closure-library/closure/goog/ui/tabrenderer_test.html +0 -132
  1459. data/closure-library/closure/goog/ui/textarea.js +0 -573
  1460. data/closure-library/closure/goog/ui/textarea_test.html +0 -305
  1461. data/closure-library/closure/goog/ui/textarearenderer.js +0 -167
  1462. data/closure-library/closure/goog/ui/togglebutton.js +0 -58
  1463. data/closure-library/closure/goog/ui/toolbar.js +0 -45
  1464. data/closure-library/closure/goog/ui/toolbarbutton.js +0 -54
  1465. data/closure-library/closure/goog/ui/toolbarbuttonrenderer.js +0 -55
  1466. data/closure-library/closure/goog/ui/toolbarcolormenubutton.js +0 -57
  1467. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer.js +0 -95
  1468. data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer_test.html +0 -66
  1469. data/closure-library/closure/goog/ui/toolbarmenubutton.js +0 -56
  1470. data/closure-library/closure/goog/ui/toolbarmenubuttonrenderer.js +0 -55
  1471. data/closure-library/closure/goog/ui/toolbarrenderer.js +0 -95
  1472. data/closure-library/closure/goog/ui/toolbarselect.js +0 -55
  1473. data/closure-library/closure/goog/ui/toolbarseparator.js +0 -51
  1474. data/closure-library/closure/goog/ui/toolbarseparatorrenderer.js +0 -87
  1475. data/closure-library/closure/goog/ui/toolbartogglebutton.js +0 -53
  1476. data/closure-library/closure/goog/ui/tooltip.js +0 -975
  1477. data/closure-library/closure/goog/ui/tooltip_test.html +0 -351
  1478. data/closure-library/closure/goog/ui/tree/basenode.js +0 -1457
  1479. data/closure-library/closure/goog/ui/tree/basenode_test.html +0 -218
  1480. data/closure-library/closure/goog/ui/tree/treecontrol.js +0 -656
  1481. data/closure-library/closure/goog/ui/tree/treecontrol_test.html +0 -113
  1482. data/closure-library/closure/goog/ui/tree/treenode.js +0 -102
  1483. data/closure-library/closure/goog/ui/tree/typeahead.js +0 -332
  1484. data/closure-library/closure/goog/ui/tree/typeahead_test.html +0 -133
  1485. data/closure-library/closure/goog/ui/tristatemenuitem.js +0 -185
  1486. data/closure-library/closure/goog/ui/tristatemenuitemrenderer.js +0 -86
  1487. data/closure-library/closure/goog/ui/twothumbslider.js +0 -134
  1488. data/closure-library/closure/goog/ui/zippy.js +0 -277
  1489. data/closure-library/closure/goog/ui/zippy_test.html +0 -223
  1490. data/closure-library/closure/goog/uri/uri.js +0 -1595
  1491. data/closure-library/closure/goog/uri/uri_test.html +0 -837
  1492. data/closure-library/closure/goog/uri/utils.js +0 -972
  1493. data/closure-library/closure/goog/uri/utils_test.html +0 -521
  1494. data/closure-library/closure/goog/useragent/adobereader.js +0 -90
  1495. data/closure-library/closure/goog/useragent/adobereader_test.html +0 -34
  1496. data/closure-library/closure/goog/useragent/flash.js +0 -113
  1497. data/closure-library/closure/goog/useragent/flash_test.html +0 -34
  1498. data/closure-library/closure/goog/useragent/iphoto.js +0 -86
  1499. data/closure-library/closure/goog/useragent/jscript.js +0 -94
  1500. data/closure-library/closure/goog/useragent/jscript_test.html +0 -65
  1501. data/closure-library/closure/goog/useragent/picasa.js +0 -111
  1502. data/closure-library/closure/goog/useragent/platform.js +0 -70
  1503. data/closure-library/closure/goog/useragent/platform_test.html +0 -108
  1504. data/closure-library/closure/goog/useragent/product.js +0 -253
  1505. data/closure-library/closure/goog/useragent/product_isversion.js +0 -99
  1506. data/closure-library/closure/goog/useragent/product_test.html +0 -322
  1507. data/closure-library/closure/goog/useragent/useragent.js +0 -464
  1508. data/closure-library/closure/goog/useragent/useragent_test.html +0 -290
  1509. data/closure-library/closure/goog/window/window.js +0 -206
  1510. data/closure-library/closure/goog/window/window_test.html +0 -185
  1511. data/closure-library/third_party/closure/goog/base.js +0 -2
  1512. data/closure-library/third_party/closure/goog/caja/string/html/htmlparser.js +0 -611
  1513. data/closure-library/third_party/closure/goog/caja/string/html/htmlsanitizer.js +0 -605
  1514. data/closure-library/third_party/closure/goog/deps.js +0 -26
  1515. data/closure-library/third_party/closure/goog/dojo/dom/query.js +0 -1537
  1516. data/closure-library/third_party/closure/goog/dojo/dom/query_test.html +0 -63
  1517. data/closure-library/third_party/closure/goog/dojo/dom/query_test.js +0 -160
  1518. data/closure-library/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js +0 -751
  1519. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum.js +0 -712
  1520. data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum_test.html +0 -61
  1521. data/closure-library/third_party/closure/goog/mochikit/async/deferred.js +0 -530
  1522. data/closure-library/third_party/closure/goog/mochikit/async/deferred_test.html +0 -627
  1523. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist.js +0 -199
  1524. data/closure-library/third_party/closure/goog/mochikit/async/deferredlist_test.html +0 -426
  1525. data/closure-library/third_party/closure/goog/osapi/osapi.js +0 -91
  1526. data/closure-library/third_party/closure/goog/silverlight/AppManifest.xml +0 -6
  1527. data/closure-library/third_party/closure/goog/silverlight/AssemblyInfo.cs +0 -35
  1528. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml +0 -9
  1529. data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml.cs +0 -74
  1530. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml +0 -8
  1531. data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml.cs +0 -75
  1532. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj +0 -108
  1533. data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj.user +0 -29
  1534. data/closure-library/third_party/closure/goog/silverlight/clipboardbutton.js +0 -279
  1535. data/closure-library/third_party/closure/goog/silverlight/silverlight.js +0 -758
  1536. data/closure-library/third_party/closure/goog/silverlight/supporteduseragent.js +0 -138
  1537. data/closure-library/third_party/closure/goog/silverlight/xap_files +0 -0
  1538. data/closure.gemspec +0 -19
  1539. data/config.ru +0 -40
  1540. data/java_src/ClosureScript.java +0 -89
  1541. data/java_src/make.rb +0 -19
  1542. data/lib/closure/sass.rb +0 -56
  1543. data/lib/closure.jar +0 -0
  1544. data/scripts/demos/compiler.build +0 -1
  1545. data/scripts/demos/compiler.debug +0 -24
  1546. data/scripts/demos/compiler.js.erb +0 -22
  1547. data/scripts/demos/compiler.map +0 -114
  1548. data/scripts/demos/deps.js.erb +0 -1
  1549. data/scripts/demos/googly.erb +0 -19
  1550. data/scripts/demos/googly.js +0 -24
  1551. data/scripts/demos/helloworld.erb +0 -24
  1552. data/scripts/demos/helloworld.js +0 -58
  1553. data/scripts/demos/helloworld.soy +0 -45
  1554. data/scripts/demos/index.erb +0 -29
  1555. data/scripts/externs/jquery.externs +0 -4
  1556. data/scripts/fixtures/_partial.haml +0 -2
  1557. data/scripts/fixtures/erb.html.erb +0 -8
  1558. data/scripts/fixtures/haml.haml +0 -6
  1559. data/scripts/fixtures/html.html +0 -9
  1560. data/scripts/fixtures/route_js.js.erb +0 -1
  1561. data/test/beanshell_test.rb +0 -22
  1562. data/test/server_test.rb +0 -67
  1563. data/test/sources_test.rb +0 -41
  1564. data/test/test_helper.rb +0 -12
  1565. /data/{scripts/externs → externs}/jquery-ui.externs +0 -0
  1566. /data/scripts/{demos/jquery.js → jquery/jquery_1.4.4.js} +0 -0
@@ -1,1537 +0,0 @@
1
- // Copyright 2005-2009, The Dojo Foundation
2
- // Modifications Copyright 2008 The Closure Library Authors.
3
- // All Rights Reserved.
4
-
5
- /**
6
- * @license Portions of this code are from the Dojo Toolkit, received by
7
- * The Closure Library Authors under the BSD license. All other code is
8
- * Copyright 2005-2009 The Closure Library Authors. All Rights Reserved.
9
-
10
- The "New" BSD License:
11
-
12
- Copyright (c) 2005-2009, The Dojo Foundation
13
- All rights reserved.
14
-
15
- Redistribution and use in source and binary forms, with or without
16
- modification, are permitted provided that the following conditions are met:
17
-
18
- * Redistributions of source code must retain the above copyright notice, this
19
- list of conditions and the following disclaimer.
20
- * Redistributions in binary form must reproduce the above copyright notice,
21
- this list of conditions and the following disclaimer in the documentation
22
- and/or other materials provided with the distribution.
23
- * Neither the name of the Dojo Foundation nor the names of its contributors
24
- may be used to endorse or promote products derived from this software
25
- without specific prior written permission.
26
-
27
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
28
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
31
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
- */
38
-
39
- /**
40
- * @fileoverview This code was ported from the Dojo Toolkit
41
- http://dojotoolkit.org and modified slightly for Closure.
42
- *
43
- * goog.dom.query is a relatively full-featured CSS3 query function. It is
44
- * designed to take any valid CSS3 selector and return the nodes matching
45
- * the selector. To do this quickly, it processes queries in several
46
- * steps, applying caching where profitable.
47
- * The steps (roughly in reverse order of the way they appear in the code):
48
- * 1.) check to see if we already have a "query dispatcher"
49
- * - if so, use that with the given parameterization. Skip to step 4.
50
- * 2.) attempt to determine which branch to dispatch the query to:
51
- * - JS (optimized DOM iteration)
52
- * - native (FF3.1, Safari 3.2+, Chrome, some IE 8 doctypes). If native,
53
- * skip to step 4, using a stub dispatcher for QSA queries.
54
- * 3.) tokenize and convert to executable "query dispatcher"
55
- * assembled as a chain of "yes/no" test functions pertaining to
56
- * a section of a simple query statement (".blah:nth-child(odd)"
57
- * but not "div div", which is 2 simple statements).
58
- * 4.) the resulting query dispatcher is called in the passed scope
59
- * (by default the top-level document)
60
- * - for DOM queries, this results in a recursive, top-down
61
- * evaluation of nodes based on each simple query section
62
- * - querySelectorAll is used instead of DOM where possible. If a query
63
- * fails in this mode, it is re-run against the DOM evaluator and all
64
- * future queries using the same selector evaluate against the DOM branch
65
- * too.
66
- * 5.) matched nodes are pruned to ensure they are unique
67
- */
68
-
69
- goog.provide('goog.dom.query');
70
-
71
- goog.require('goog.array');
72
- goog.require('goog.dom');
73
- goog.require('goog.functions');
74
- goog.require('goog.string');
75
- goog.require('goog.userAgent');
76
-
77
- /**
78
- * Returns nodes which match the given CSS3 selector, searching the
79
- * entire document by default but optionally taking a node to scope
80
- * the search by.
81
- *
82
- * dojo.query() is the swiss army knife of DOM node manipulation in
83
- * Dojo. Much like Prototype's "$$" (bling-bling) function or JQuery's
84
- * "$" function, dojo.query provides robust, high-performance
85
- * CSS-based node selector support with the option of scoping searches
86
- * to a particular sub-tree of a document.
87
- *
88
- * Supported Selectors:
89
- * --------------------
90
- *
91
- * dojo.query() supports a rich set of CSS3 selectors, including:
92
- *
93
- * * class selectors (e.g., `.foo`)
94
- * * node type selectors like `span`
95
- * * ` ` descendant selectors
96
- * * `>` child element selectors
97
- * * `#foo` style ID selectors
98
- * * `*` universal selector
99
- * * `~`, the immediately preceeded-by sibling selector
100
- * * `+`, the preceeded-by sibling selector
101
- * * attribute queries:
102
- * | * `[foo]` attribute presence selector
103
- * | * `[foo='bar']` attribute value exact match
104
- * | * `[foo~='bar']` attribute value list item match
105
- * | * `[foo^='bar']` attribute start match
106
- * | * `[foo$='bar']` attribute end match
107
- * | * `[foo*='bar']` attribute substring match
108
- * * `:first-child`, `:last-child` positional selectors
109
- * * `:empty` content emtpy selector
110
- * * `:empty` content emtpy selector
111
- * * `:nth-child(n)`, `:nth-child(2n+1)` style positional calculations
112
- * * `:nth-child(even)`, `:nth-child(odd)` positional selectors
113
- * * `:not(...)` negation pseudo selectors
114
- *
115
- * Any legal combination of these selectors will work with
116
- * `dojo.query()`, including compound selectors ("," delimited).
117
- * Very complex and useful searches can be constructed with this
118
- * palette of selectors and when combined with functions for
119
- * maniplation presented by dojo.NodeList, many types of DOM
120
- * manipulation operations become very straightforward.
121
- *
122
- * Unsupported Selectors:
123
- * ----------------------
124
- *
125
- * While dojo.query handles many CSS3 selectors, some fall outside of
126
- * what's resaonable for a programmatic node querying engine to
127
- * handle. Currently unsupported selectors include:
128
- *
129
- * * namespace-differentiated selectors of any form
130
- * * all `::` pseduo-element selectors
131
- * * certain pseudo-selectors which don't get a lot of day-to-day use:
132
- * | * `:root`, `:lang()`, `:target`, `:focus`
133
- * * all visual and state selectors:
134
- * | * `:root`, `:active`, `:hover`, `:visisted`, `:link`,
135
- * `:enabled`, `:disabled`, `:checked`
136
- * * `:*-of-type` pseudo selectors
137
- *
138
- * dojo.query and XML Documents:
139
- * -----------------------------
140
- *
141
- * `dojo.query` currently only supports searching XML documents
142
- * whose tags and attributes are 100% lower-case. This is a known
143
- * limitation and will [be addressed soon]
144
- * (http://trac.dojotoolkit.org/ticket/3866)
145
- *
146
- * Non-selector Queries:
147
- * ---------------------
148
- *
149
- * If something other than a String is passed for the query,
150
- * `dojo.query` will return a new `dojo.NodeList` constructed from
151
- * that parameter alone and all further processing will stop. This
152
- * means that if you have a reference to a node or NodeList, you
153
- * can quickly construct a new NodeList from the original by
154
- * calling `dojo.query(node)` or `dojo.query(list)`.
155
- *
156
- * example:
157
- * search the entire document for elements with the class "foo":
158
- * | dojo.query(".foo");
159
- * these elements will match:
160
- * | <span class="foo"></span>
161
- * | <span class="foo bar"></span>
162
- * | <p class="thud foo"></p>
163
- * example:
164
- * search the entire document for elements with the classes "foo" *and*
165
- * "bar":
166
- * | dojo.query(".foo.bar");
167
- * these elements will match:
168
- * | <span class="foo bar"></span>
169
- * while these will not:
170
- * | <span class="foo"></span>
171
- * | <p class="thud foo"></p>
172
- * example:
173
- * find `<span>` elements which are descendants of paragraphs and
174
- * which have a "highlighted" class:
175
- * | dojo.query("p span.highlighted");
176
- * the innermost span in this fragment matches:
177
- * | <p class="foo">
178
- * | <span>...
179
- * | <span class="highlighted foo bar">...</span>
180
- * | </span>
181
- * | </p>
182
- * example:
183
- * find all odd table rows inside of the table
184
- * `#tabular_data`, using the `>` (direct child) selector to avoid
185
- * affecting any nested tables:
186
- * | dojo.query("#tabular_data > tbody > tr:nth-child(odd)");
187
- *
188
- * @param {string|Array} query The CSS3 expression to match against.
189
- * For details on the syntax of CSS3 selectors, see
190
- * http://www.w3.org/TR/css3-selectors/#selectors.
191
- * @param {(string|Node)=} opt_root A Node (or node id) to scope the search
192
- * from (optional).
193
- * @return { {length: number} } The elements that matched the query.
194
- */
195
- goog.dom.query = (function() {
196
- ////////////////////////////////////////////////////////////////////////
197
- // Global utilities
198
- ////////////////////////////////////////////////////////////////////////
199
-
200
- var cssCaseBug = (goog.userAgent.WEBKIT &&
201
- ((goog.dom.getDocument().compatMode) == 'BackCompat')
202
- );
203
-
204
- // On browsers that support the "children" collection we can avoid a lot of
205
- // iteration on chaff (non-element) nodes.
206
- var childNodesName = !!goog.dom.getDocument().firstChild['children'] ?
207
- 'children' :
208
- 'childNodes';
209
-
210
- var specials = '>~+';
211
-
212
- // Global thunk to determine whether we should treat the current query as
213
- // case sensitive or not. This switch is flipped by the query evaluator based
214
- // on the document passed as the context to search.
215
- var caseSensitive = false;
216
-
217
-
218
- ////////////////////////////////////////////////////////////////////////
219
- // Tokenizer
220
- ////////////////////////////////////////////////////////////////////////
221
-
222
- var getQueryParts = function(query) {
223
- // summary:
224
- // state machine for query tokenization
225
- // description:
226
- // instead of using a brittle and slow regex-based CSS parser,
227
- // dojo.query implements an AST-style query representation. This
228
- // representation is only generated once per query. For example,
229
- // the same query run multiple times or under different root nodes
230
- // does not re-parse the selector expression but instead uses the
231
- // cached data structure. The state machine implemented here
232
- // terminates on the last " " (space) charachter and returns an
233
- // ordered array of query component structures (or "parts"). Each
234
- // part represents an operator or a simple CSS filtering
235
- // expression. The structure for parts is documented in the code
236
- // below.
237
-
238
-
239
- // NOTE:
240
- // this code is designed to run fast and compress well. Sacrifices
241
- // to readibility and maintainability have been made.
242
- if (specials.indexOf(query.slice(-1)) >= 0) {
243
- // If we end with a ">", "+", or "~", that means we're implicitly
244
- // searching all children, so make it explicit.
245
- query += ' * '
246
- } else {
247
- // if you have not provided a terminator, one will be provided for
248
- // you...
249
- query += ' ';
250
- }
251
-
252
- var ts = function(/*Integer*/ s, /*Integer*/ e) {
253
- // trim and slice.
254
-
255
- // take an index to start a string slice from and an end position
256
- // and return a trimmed copy of that sub-string
257
- return goog.string.trim(query.slice(s, e));
258
- };
259
-
260
- // The overall data graph of the full query, as represented by queryPart
261
- // objects.
262
- var queryParts = [];
263
-
264
-
265
- // state keeping vars
266
- var inBrackets = -1,
267
- inParens = -1,
268
- inMatchFor = -1,
269
- inPseudo = -1,
270
- inClass = -1,
271
- inId = -1,
272
- inTag = -1,
273
- lc = '',
274
- cc = '',
275
- pStart;
276
-
277
- // iteration vars
278
- var x = 0, // index in the query
279
- ql = query.length,
280
- currentPart = null, // data structure representing the entire clause
281
- cp = null; // the current pseudo or attr matcher
282
-
283
- // several temporary variables are assigned to this structure durring a
284
- // potential sub-expression match:
285
- // attr:
286
- // a string representing the current full attribute match in a
287
- // bracket expression
288
- // type:
289
- // if there's an operator in a bracket expression, this is
290
- // used to keep track of it
291
- // value:
292
- // the internals of parenthetical expression for a pseudo. for
293
- // :nth-child(2n+1), value might be '2n+1'
294
-
295
- var endTag = function() {
296
- // called when the tokenizer hits the end of a particular tag name.
297
- // Re-sets state variables for tag matching and sets up the matcher
298
- // to handle the next type of token (tag or operator).
299
- if (inTag >= 0) {
300
- var tv = (inTag == x) ? null : ts(inTag, x);
301
- if (specials.indexOf(tv) < 0) {
302
- currentPart.tag = tv;
303
- } else {
304
- currentPart.oper = tv;
305
- }
306
- inTag = -1;
307
- }
308
- };
309
-
310
- var endId = function() {
311
- // Called when the tokenizer might be at the end of an ID portion of a
312
- // match.
313
- if (inId >= 0) {
314
- currentPart.id = ts(inId, x).replace(/\\/g, '');
315
- inId = -1;
316
- }
317
- };
318
-
319
- var endClass = function() {
320
- // Called when the tokenizer might be at the end of a class name
321
- // match. CSS allows for multiple classes, so we augment the
322
- // current item with another class in its list.
323
- if (inClass >= 0) {
324
- currentPart.classes.push(ts(inClass + 1, x).replace(/\\/g, ''));
325
- inClass = -1;
326
- }
327
- };
328
-
329
- var endAll = function() {
330
- // at the end of a simple fragment, so wall off the matches
331
- endId(); endTag(); endClass();
332
- };
333
-
334
- var endPart = function() {
335
- endAll();
336
- if (inPseudo >= 0) {
337
- currentPart.pseudos.push({ name: ts(inPseudo + 1, x) });
338
- }
339
- // Hint to the selector engine to tell it whether or not it
340
- // needs to do any iteration. Many simple selectors don't, and
341
- // we can avoid significant construction-time work by advising
342
- // the system to skip them.
343
- currentPart.loops = currentPart.pseudos.length ||
344
- currentPart.attrs.length ||
345
- currentPart.classes.length;
346
-
347
- // save the full expression as a string
348
- currentPart.oquery = currentPart.query = ts(pStart, x);
349
-
350
-
351
- // otag/tag are hints to suggest to the system whether or not
352
- // it's an operator or a tag. We save a copy of otag since the
353
- // tag name is cast to upper-case in regular HTML matches. The
354
- // system has a global switch to figure out if the current
355
- // expression needs to be case sensitive or not and it will use
356
- // otag or tag accordingly
357
- currentPart.otag = currentPart.tag = (currentPart.oper) ?
358
- null :
359
- (currentPart.tag || '*');
360
-
361
- if (currentPart.tag) {
362
- // if we're in a case-insensitive HTML doc, we likely want
363
- // the toUpperCase when matching on element.tagName. If we
364
- // do it here, we can skip the string op per node
365
- // comparison
366
- currentPart.tag = currentPart.tag.toUpperCase();
367
- }
368
-
369
- // add the part to the list
370
- if (queryParts.length && (queryParts[queryParts.length - 1].oper)) {
371
- // operators are always infix, so we remove them from the
372
- // list and attach them to the next match. The evaluator is
373
- // responsible for sorting out how to handle them.
374
- currentPart.infixOper = queryParts.pop();
375
- currentPart.query = currentPart.infixOper.query + ' ' +
376
- currentPart.query;
377
- }
378
- queryParts.push(currentPart);
379
-
380
- currentPart = null;
381
- }
382
-
383
- // iterate over the query, charachter by charachter, building up a
384
- // list of query part objects
385
- for (; lc = cc, cc = query.charAt(x), x < ql; x++) {
386
- // cc: the current character in the match
387
- // lc: the last charachter (if any)
388
-
389
- // someone is trying to escape something, so don't try to match any
390
- // fragments. We assume we're inside a literal.
391
- if (lc == '\\') {
392
- continue;
393
- }
394
- if (!currentPart) { // a part was just ended or none has yet been created
395
- // NOTE: I hate all this alloc, but it's shorter than writing tons of
396
- // if's
397
- pStart = x;
398
- // rules describe full CSS sub-expressions, like:
399
- // #someId
400
- // .className:first-child
401
- // but not:
402
- // thinger > div.howdy[type=thinger]
403
- // the indidual components of the previous query would be
404
- // split into 3 parts that would be represented a structure
405
- // like:
406
- // [
407
- // {
408
- // query: 'thinger',
409
- // tag: 'thinger',
410
- // },
411
- // {
412
- // query: 'div.howdy[type=thinger]',
413
- // classes: ['howdy'],
414
- // infixOper: {
415
- // query: '>',
416
- // oper: '>',
417
- // }
418
- // },
419
- // ]
420
- currentPart = {
421
- query: null, // the full text of the part's rule
422
- pseudos: [], // CSS supports multiple pseud-class matches in a single
423
- // rule
424
- attrs: [], // CSS supports multi-attribute match, so we need an array
425
- classes: [], // class matches may be additive,
426
- // e.g.: .thinger.blah.howdy
427
- tag: null, // only one tag...
428
- oper: null, // ...or operator per component. Note that these wind up
429
- // being exclusive.
430
- id: null, // the id component of a rule
431
- getTag: function() {
432
- return (caseSensitive) ? this.otag : this.tag;
433
- }
434
- };
435
-
436
- // if we don't have a part, we assume we're going to start at
437
- // the beginning of a match, which should be a tag name. This
438
- // might fault a little later on, but we detect that and this
439
- // iteration will still be fine.
440
- inTag = x;
441
- }
442
-
443
- if (inBrackets >= 0) {
444
- // look for a the close first
445
- if (cc == ']') { // if we're in a [...] clause and we end, do assignment
446
- if (!cp.attr) {
447
- // no attribute match was previously begun, so we
448
- // assume this is an attribute existance match in the
449
- // form of [someAttributeName]
450
- cp.attr = ts(inBrackets + 1, x);
451
- } else {
452
- // we had an attribute already, so we know that we're
453
- // matching some sort of value, as in [attrName=howdy]
454
- cp.matchFor = ts((inMatchFor || inBrackets + 1), x);
455
- }
456
- var cmf = cp.matchFor;
457
- if (cmf) {
458
- // try to strip quotes from the matchFor value. We want
459
- // [attrName=howdy] to match the same
460
- // as [attrName = 'howdy' ]
461
- if ((cmf.charAt(0) == '"') || (cmf.charAt(0) == "'")) {
462
- cp.matchFor = cmf.slice(1, -1);
463
- }
464
- }
465
- // end the attribute by adding it to the list of attributes.
466
- currentPart.attrs.push(cp);
467
- cp = null; // necessary?
468
- inBrackets = inMatchFor = -1;
469
- } else if (cc == '=') {
470
- // if the last char was an operator prefix, make sure we
471
- // record it along with the '=' operator.
472
- var addToCc = ('|~^$*'.indexOf(lc) >= 0) ? lc : '';
473
- cp.type = addToCc + cc;
474
- cp.attr = ts(inBrackets + 1, x - addToCc.length);
475
- inMatchFor = x + 1;
476
- }
477
- // now look for other clause parts
478
- } else if (inParens >= 0) {
479
- // if we're in a parenthetical expression, we need to figure
480
- // out if it's attached to a pseduo-selector rule like
481
- // :nth-child(1)
482
- if (cc == ')') {
483
- if (inPseudo >= 0) {
484
- cp.value = ts(inParens + 1, x);
485
- }
486
- inPseudo = inParens = -1;
487
- }
488
- } else if (cc == '#') {
489
- // start of an ID match
490
- endAll();
491
- inId = x + 1;
492
- } else if (cc == '.') {
493
- // start of a class match
494
- endAll();
495
- inClass = x;
496
- } else if (cc == ':') {
497
- // start of a pseudo-selector match
498
- endAll();
499
- inPseudo = x;
500
- } else if (cc == '[') {
501
- // start of an attribute match.
502
- endAll();
503
- inBrackets = x;
504
- // provide a new structure for the attribute match to fill-in
505
- cp = {
506
- /*=====
507
- attr: null, type: null, matchFor: null
508
- =====*/
509
- };
510
- } else if (cc == '(') {
511
- // we really only care if we've entered a parenthetical
512
- // expression if we're already inside a pseudo-selector match
513
- if (inPseudo >= 0) {
514
- // provide a new structure for the pseudo match to fill-in
515
- cp = {
516
- name: ts(inPseudo + 1, x),
517
- value: null
518
- }
519
- currentPart.pseudos.push(cp);
520
- }
521
- inParens = x;
522
- } else if (
523
- (cc == ' ') &&
524
- // if it's a space char and the last char is too, consume the
525
- // current one without doing more work
526
- (lc != cc)
527
- ) {
528
- endPart();
529
- }
530
- }
531
- return queryParts;
532
- };
533
-
534
-
535
- ////////////////////////////////////////////////////////////////////////
536
- // DOM query infrastructure
537
- ////////////////////////////////////////////////////////////////////////
538
-
539
- var agree = function(first, second) {
540
- // the basic building block of the yes/no chaining system. agree(f1,
541
- // f2) generates a new function which returns the boolean results of
542
- // both of the passed functions to a single logical-anded result. If
543
- // either are not possed, the other is used exclusively.
544
- if (!first) {
545
- return second;
546
- }
547
- if (!second) {
548
- return first;
549
- }
550
-
551
- return function() {
552
- return first.apply(window, arguments) && second.apply(window, arguments);
553
- }
554
- };
555
-
556
- /**
557
- * @param {Array=} opt_arr
558
- */
559
- function getArr(i, opt_arr) {
560
- // helps us avoid array alloc when we don't need it
561
- var r = opt_arr || [];
562
- if (i) {
563
- r.push(i);
564
- }
565
- return r;
566
- };
567
-
568
- var isElement = function(n) {
569
- return (1 == n.nodeType);
570
- };
571
-
572
- // FIXME: need to coalesce getAttr with defaultGetter
573
- var blank = '';
574
- var getAttr = function(elem, attr) {
575
- if (!elem) {
576
- return blank;
577
- }
578
- if (attr == 'class') {
579
- return elem.className || blank;
580
- }
581
- if (attr == 'for') {
582
- return elem.htmlFor || blank;
583
- }
584
- if (attr == 'style') {
585
- return elem.style.cssText || blank;
586
- }
587
- return (caseSensitive ? elem.getAttribute(attr) :
588
- elem.getAttribute(attr, 2)) || blank;
589
- };
590
-
591
- var attrs = {
592
- '*=': function(attr, value) {
593
- return function(elem) {
594
- // E[foo*="bar"]
595
- // an E element whose "foo" attribute value contains
596
- // the substring "bar"
597
- return (getAttr(elem, attr).indexOf(value) >= 0);
598
- }
599
- },
600
- '^=': function(attr, value) {
601
- // E[foo^="bar"]
602
- // an E element whose "foo" attribute value begins exactly
603
- // with the string "bar"
604
- return function(elem) {
605
- return (getAttr(elem, attr).indexOf(value) == 0);
606
- }
607
- },
608
- '$=': function(attr, value) {
609
- // E[foo$="bar"]
610
- // an E element whose "foo" attribute value ends exactly
611
- // with the string "bar"
612
- var tval = ' ' + value;
613
- return function(elem) {
614
- var ea = ' ' + getAttr(elem, attr);
615
- return (ea.lastIndexOf(value) == (ea.length - value.length));
616
- }
617
- },
618
- '~=': function(attr, value) {
619
- // E[foo~="bar"]
620
- // an E element whose "foo" attribute value is a list of
621
- // space-separated values, one of which is exactly equal
622
- // to "bar"
623
-
624
- var tval = ' ' + value + ' ';
625
- return function(elem) {
626
- var ea = ' ' + getAttr(elem, attr) + ' ';
627
- return (ea.indexOf(tval) >= 0);
628
- }
629
- },
630
- '|=': function(attr, value) {
631
- // E[hreflang|="en"]
632
- // an E element whose "hreflang" attribute has a
633
- // hyphen-separated list of values beginning (from the
634
- // left) with "en"
635
- value = ' ' + value;
636
- return function(elem) {
637
- var ea = ' ' + getAttr(elem, attr);
638
- return (
639
- (ea == value) ||
640
- (ea.indexOf(value + '-') == 0)
641
- );
642
- }
643
- },
644
- '=': function(attr, value) {
645
- return function(elem) {
646
- return (getAttr(elem, attr) == value);
647
- }
648
- }
649
- };
650
-
651
- // avoid testing for node type if we can. Defining this in the negative
652
- // here to avoid negation in the fast path.
653
- var noNextElementSibling = (
654
- typeof goog.dom.getDocument().firstChild.nextElementSibling == 'undefined'
655
- );
656
- var nSibling = !noNextElementSibling ? 'nextElementSibling' : 'nextSibling';
657
- var pSibling = !noNextElementSibling ?
658
- 'previousElementSibling' :
659
- 'previousSibling';
660
- var simpleNodeTest = (noNextElementSibling ? isElement : goog.functions.TRUE);
661
-
662
- var _lookLeft = function(node) {
663
- while (node = node[pSibling]) {
664
- if (simpleNodeTest(node)) {
665
- return false;
666
- }
667
- }
668
- return true;
669
- };
670
-
671
- var _lookRight = function(node) {
672
- while (node = node[nSibling]) {
673
- if (simpleNodeTest(node)) {
674
- return false;
675
- }
676
- }
677
- return true;
678
- };
679
-
680
- var getNodeIndex = function(node) {
681
- var root = node.parentNode;
682
- var i = 0,
683
- tret = root[childNodesName],
684
- ci = (node['_i'] || -1),
685
- cl = (root['_l'] || -1);
686
-
687
- if (!tret) {
688
- return -1;
689
- }
690
- var l = tret.length;
691
-
692
- // we calcuate the parent length as a cheap way to invalidate the
693
- // cache. It's not 100% accurate, but it's much more honest than what
694
- // other libraries do
695
- if (cl == l && ci >= 0 && cl >= 0) {
696
- // if it's legit, tag and release
697
- return ci;
698
- }
699
-
700
- // else re-key things
701
- root['_l'] = l;
702
- ci = -1;
703
- var te = root['firstElementChild'] || root['firstChild'];
704
- for (; te; te = te[nSibling]) {
705
- if (simpleNodeTest(te)) {
706
- te['_i'] = ++i;
707
- if (node === te) {
708
- // NOTE:
709
- // shortcuting the return at this step in indexing works
710
- // very well for benchmarking but we avoid it here since
711
- // it leads to potential O(n^2) behavior in sequential
712
- // getNodexIndex operations on a previously un-indexed
713
- // parent. We may revisit this at a later time, but for
714
- // now we just want to get the right answer more often
715
- // than not.
716
- ci = i;
717
- }
718
- }
719
- }
720
- return ci;
721
- };
722
-
723
- var isEven = function(elem) {
724
- return !((getNodeIndex(elem)) % 2);
725
- };
726
-
727
- var isOdd = function(elem) {
728
- return (getNodeIndex(elem)) % 2;
729
- };
730
-
731
- var pseudos = {
732
- 'checked': function(name, condition) {
733
- return function(elem) {
734
- return elem.checked || elem.attributes['checked'];
735
- }
736
- },
737
- 'first-child': function() {
738
- return _lookLeft;
739
- },
740
- 'last-child': function() {
741
- return _lookRight;
742
- },
743
- 'only-child': function(name, condition) {
744
- return function(node) {
745
- if (!_lookLeft(node)) {
746
- return false;
747
- }
748
- if (!_lookRight(node)) {
749
- return false;
750
- }
751
- return true;
752
- };
753
- },
754
- 'empty': function(name, condition) {
755
- return function(elem) {
756
- // DomQuery and jQuery get this wrong, oddly enough.
757
- // The CSS 3 selectors spec is pretty explicit about it, too.
758
- var cn = elem.childNodes;
759
- var cnl = elem.childNodes.length;
760
- // if(!cnl) { return true; }
761
- for (var x = cnl - 1; x >= 0; x--) {
762
- var nt = cn[x].nodeType;
763
- if ((nt === 1) || (nt == 3)) {
764
- return false;
765
- }
766
- }
767
- return true;
768
- }
769
- },
770
- 'contains': function(name, condition) {
771
- var cz = condition.charAt(0);
772
- if (cz == '"' || cz == "'") { // Remove quotes.
773
- condition = condition.slice(1, -1);
774
- }
775
- return function(elem) {
776
- return (elem.innerHTML.indexOf(condition) >= 0);
777
- }
778
- },
779
- 'not': function(name, condition) {
780
- var p = getQueryParts(condition)[0];
781
- var ignores = { el: 1 };
782
- if (p.tag != '*') {
783
- ignores.tag = 1;
784
- }
785
- if (!p.classes.length) {
786
- ignores.classes = 1;
787
- }
788
- var ntf = getSimpleFilterFunc(p, ignores);
789
- return function(elem) {
790
- return !ntf(elem);
791
- }
792
- },
793
- 'nth-child': function(name, condition) {
794
- function pi(n) {
795
- return parseInt(n, 10);
796
- }
797
- // avoid re-defining function objects if we can
798
- if (condition == 'odd') {
799
- return isOdd;
800
- } else if (condition == 'even') {
801
- return isEven;
802
- }
803
- // FIXME: can we shorten this?
804
- if (condition.indexOf('n') != -1) {
805
- var tparts = condition.split('n', 2);
806
- var pred = tparts[0] ? ((tparts[0] == '-') ? -1 : pi(tparts[0])) : 1;
807
- var idx = tparts[1] ? pi(tparts[1]) : 0;
808
- var lb = 0, ub = -1;
809
- if (pred > 0) {
810
- if (idx < 0) {
811
- idx = (idx % pred) && (pred + (idx % pred));
812
- } else if (idx > 0) {
813
- if (idx >= pred) {
814
- lb = idx - idx % pred;
815
- }
816
- idx = idx % pred;
817
- }
818
- } else if (pred < 0) {
819
- pred *= -1;
820
- // idx has to be greater than 0 when pred is negative;
821
- // shall we throw an error here?
822
- if (idx > 0) {
823
- ub = idx;
824
- idx = idx % pred;
825
- }
826
- }
827
- if (pred > 0) {
828
- return function(elem) {
829
- var i = getNodeIndex(elem);
830
- return (i >= lb) && (ub < 0 || i <= ub) && ((i % pred) == idx);
831
- }
832
- } else {
833
- condition = idx;
834
- }
835
- }
836
- var ncount = pi(condition);
837
- return function(elem) {
838
- return (getNodeIndex(elem) == ncount);
839
- }
840
- }
841
- };
842
-
843
- var defaultGetter = (goog.userAgent.IE) ? function(cond) {
844
- var clc = cond.toLowerCase();
845
- if (clc == 'class') {
846
- cond = 'className';
847
- }
848
- return function(elem) {
849
- return caseSensitive ? elem.getAttribute(cond) : elem[cond] || elem[clc];
850
- }
851
- } : function(cond) {
852
- return function(elem) {
853
- return elem && elem.getAttribute && elem.hasAttribute(cond);
854
- }
855
- };
856
-
857
- var getSimpleFilterFunc = function(query, ignores) {
858
- // Generates a node tester function based on the passed query part. The
859
- // query part is one of the structures generatd by the query parser when it
860
- // creates the query AST. The 'ignores' object specifies which (if any)
861
- // tests to skip, allowing the system to avoid duplicating work where it
862
- // may have already been taken into account by other factors such as how
863
- // the nodes to test were fetched in the first place.
864
- if (!query) {
865
- return goog.functions.TRUE;
866
- }
867
- ignores = ignores || {};
868
-
869
- var ff = null;
870
-
871
- if (!ignores.el) {
872
- ff = agree(ff, isElement);
873
- }
874
-
875
- if (!ignores.tag) {
876
- if (query.tag != '*') {
877
- ff = agree(ff, function(elem) {
878
- return (elem && (elem.tagName == query.getTag()));
879
- });
880
- }
881
- }
882
-
883
- if (!ignores.classes) {
884
- goog.array.forEach(query.classes, function(cname, idx, arr) {
885
- // Get the class name.
886
- var re = new RegExp('(?:^|\\s)' + cname + '(?:\\s|$)');
887
- ff = agree(ff, function(elem) {
888
- return re.test(elem.className);
889
- });
890
- ff.count = idx;
891
- });
892
- }
893
-
894
- if (!ignores.pseudos) {
895
- goog.array.forEach(query.pseudos, function(pseudo) {
896
- var pn = pseudo.name;
897
- if (pseudos[pn]) {
898
- ff = agree(ff, pseudos[pn](pn, pseudo.value));
899
- }
900
- });
901
- }
902
-
903
- if (!ignores.attrs) {
904
- goog.array.forEach(query.attrs, function(attr) {
905
- var matcher;
906
- var a = attr.attr;
907
- // type, attr, matchFor
908
- if (attr.type && attrs[attr.type]) {
909
- matcher = attrs[attr.type](a, attr.matchFor);
910
- } else if (a.length) {
911
- matcher = defaultGetter(a);
912
- }
913
- if (matcher) {
914
- ff = agree(ff, matcher);
915
- }
916
- });
917
- }
918
-
919
- if (!ignores.id) {
920
- if (query.id) {
921
- ff = agree(ff, function(elem) {
922
- return (!!elem && (elem.id == query.id));
923
- });
924
- }
925
- }
926
-
927
- if (!ff) {
928
- if (!('default' in ignores)) {
929
- ff = goog.functions.TRUE;
930
- }
931
- }
932
- return ff;
933
- };
934
-
935
- var nextSiblingIterator = function(filterFunc) {
936
- return function(node, ret, bag) {
937
- while (node = node[nSibling]) {
938
- if (noNextElementSibling && (!isElement(node))) {
939
- continue;
940
- }
941
- if (
942
- (!bag || _isUnique(node, bag)) &&
943
- filterFunc(node)
944
- ) {
945
- ret.push(node);
946
- }
947
- break;
948
- }
949
- return ret;
950
- };
951
- };
952
-
953
- var nextSiblingsIterator = function(filterFunc) {
954
- return function(root, ret, bag) {
955
- var te = root[nSibling];
956
- while (te) {
957
- if (simpleNodeTest(te)) {
958
- if (bag && !_isUnique(te, bag)) {
959
- break;
960
- }
961
- if (filterFunc(te)) {
962
- ret.push(te);
963
- }
964
- }
965
- te = te[nSibling];
966
- }
967
- return ret;
968
- };
969
- };
970
-
971
- // Get an array of child *elements*, skipping text and comment nodes
972
- var _childElements = function(filterFunc) {
973
- filterFunc = filterFunc || goog.functions.TRUE;
974
- return function(root, ret, bag) {
975
- var te, x = 0, tret = root[childNodesName];
976
- while (te = tret[x++]) {
977
- if (
978
- simpleNodeTest(te) &&
979
- (!bag || _isUnique(te, bag)) &&
980
- (filterFunc(te, x))
981
- ) {
982
- ret.push(te);
983
- }
984
- }
985
- return ret;
986
- };
987
- };
988
-
989
- // test to see if node is below root
990
- var _isDescendant = function(node, root) {
991
- var pn = node.parentNode;
992
- while (pn) {
993
- if (pn == root) {
994
- break;
995
- }
996
- pn = pn.parentNode;
997
- }
998
- return !!pn;
999
- };
1000
-
1001
- var _getElementsFuncCache = {};
1002
-
1003
- var getElementsFunc = function(query) {
1004
- var retFunc = _getElementsFuncCache[query.query];
1005
- // If we've got a cached dispatcher, just use that.
1006
- if (retFunc) {
1007
- return retFunc;
1008
- }
1009
- // Else, generate a new one.
1010
-
1011
- // NOTE:
1012
- // This function returns a function that searches for nodes and
1013
- // filters them. The search may be specialized by infix operators
1014
- // (">", "~", or "+") else it will default to searching all
1015
- // descendants (the " " selector). Once a group of children is
1016
- // founde, a test function is applied to weed out the ones we
1017
- // don't want. Many common cases can be fast-pathed. We spend a
1018
- // lot of cycles to create a dispatcher that doesn't do more work
1019
- // than necessary at any point since, unlike this function, the
1020
- // dispatchers will be called every time. The logic of generating
1021
- // efficient dispatchers looks like this in pseudo code:
1022
- //
1023
- // # if it's a purely descendant query (no ">", "+", or "~" modifiers)
1024
- // if infixOperator == " ":
1025
- // if only(id):
1026
- // return def(root):
1027
- // return d.byId(id, root);
1028
- //
1029
- // elif id:
1030
- // return def(root):
1031
- // return filter(d.byId(id, root));
1032
- //
1033
- // elif cssClass && getElementsByClassName:
1034
- // return def(root):
1035
- // return filter(root.getElementsByClassName(cssClass));
1036
- //
1037
- // elif only(tag):
1038
- // return def(root):
1039
- // return root.getElementsByTagName(tagName);
1040
- //
1041
- // else:
1042
- // # search by tag name, then filter
1043
- // return def(root):
1044
- // return filter(root.getElementsByTagName(tagName||"*"));
1045
- //
1046
- // elif infixOperator == ">":
1047
- // # search direct children
1048
- // return def(root):
1049
- // return filter(root.children);
1050
- //
1051
- // elif infixOperator == "+":
1052
- // # search next sibling
1053
- // return def(root):
1054
- // return filter(root.nextElementSibling);
1055
- //
1056
- // elif infixOperator == "~":
1057
- // # search rightward siblings
1058
- // return def(root):
1059
- // return filter(nextSiblings(root));
1060
-
1061
- var io = query.infixOper;
1062
- var oper = (io ? io.oper : '');
1063
- // The default filter func which tests for all conditions in the query
1064
- // part. This is potentially inefficient, so some optimized paths may
1065
- // re-define it to test fewer things.
1066
- var filterFunc = getSimpleFilterFunc(query, { el: 1 });
1067
- var qt = query.tag;
1068
- var wildcardTag = ('*' == qt);
1069
- var ecs = goog.dom.getDocument()['getElementsByClassName'];
1070
-
1071
- if (!oper) {
1072
- // If there's no infix operator, then it's a descendant query. ID
1073
- // and "elements by class name" variants can be accelerated so we
1074
- // call them out explicitly:
1075
- if (query.id) {
1076
- // Testing shows that the overhead of goog.functions.TRUE() is
1077
- // acceptable and can save us some bytes vs. re-defining the function
1078
- // everywhere.
1079
- filterFunc = (!query.loops && wildcardTag) ?
1080
- goog.functions.TRUE :
1081
- getSimpleFilterFunc(query, { el: 1, id: 1 });
1082
-
1083
- retFunc = function(root, arr) {
1084
- var te = goog.dom.getDomHelper(root).getElement(query.id);
1085
- if (!te || !filterFunc(te)) {
1086
- return;
1087
- }
1088
- if (9 == root.nodeType) { // If root's a doc, we just return directly.
1089
- return getArr(te, arr);
1090
- } else { // otherwise check ancestry
1091
- if (_isDescendant(te, root)) {
1092
- return getArr(te, arr);
1093
- }
1094
- }
1095
- }
1096
- } else if (
1097
- ecs &&
1098
- // isAlien check. Workaround for Prototype.js being totally evil/dumb.
1099
- /\{\s*\[native code\]\s*\}/.test(String(ecs)) &&
1100
- query.classes.length &&
1101
- // WebKit bug where quirks-mode docs select by class w/o case
1102
- // sensitivity.
1103
- !cssCaseBug
1104
- ) {
1105
- // it's a class-based query and we've got a fast way to run it.
1106
-
1107
- // ignore class and ID filters since we will have handled both
1108
- filterFunc = getSimpleFilterFunc(query, { el: 1, classes: 1, id: 1 });
1109
- var classesString = query.classes.join(' ');
1110
- retFunc = function(root, arr) {
1111
- var ret = getArr(0, arr), te, x = 0;
1112
- var tret = root.getElementsByClassName(classesString);
1113
- while ((te = tret[x++])) {
1114
- if (filterFunc(te, root)) {
1115
- ret.push(te);
1116
- }
1117
- }
1118
- return ret;
1119
- };
1120
-
1121
- } else if (!wildcardTag && !query.loops) {
1122
- // it's tag only. Fast-path it.
1123
- retFunc = function(root, arr) {
1124
- var ret = getArr(0, arr), te, x = 0;
1125
- var tret = root.getElementsByTagName(query.getTag());
1126
- while ((te = tret[x++])) {
1127
- ret.push(te);
1128
- }
1129
- return ret;
1130
- };
1131
- } else {
1132
- // the common case:
1133
- // a descendant selector without a fast path. By now it's got
1134
- // to have a tag selector, even if it's just "*" so we query
1135
- // by that and filter
1136
- filterFunc = getSimpleFilterFunc(query, { el: 1, tag: 1, id: 1 });
1137
- retFunc = function(root, arr) {
1138
- var ret = getArr(0, arr), te, x = 0;
1139
- // we use getTag() to avoid case sensitivity issues
1140
- var tret = root.getElementsByTagName(query.getTag());
1141
- while (te = tret[x++]) {
1142
- if (filterFunc(te, root)) {
1143
- ret.push(te);
1144
- }
1145
- }
1146
- return ret;
1147
- };
1148
- }
1149
- } else {
1150
- // the query is scoped in some way. Instead of querying by tag we
1151
- // use some other collection to find candidate nodes
1152
- var skipFilters = { el: 1 };
1153
- if (wildcardTag) {
1154
- skipFilters.tag = 1;
1155
- }
1156
- filterFunc = getSimpleFilterFunc(query, skipFilters);
1157
- if ('+' == oper) {
1158
- retFunc = nextSiblingIterator(filterFunc);
1159
- } else if ('~' == oper) {
1160
- retFunc = nextSiblingsIterator(filterFunc);
1161
- } else if ('>' == oper) {
1162
- retFunc = _childElements(filterFunc);
1163
- }
1164
- }
1165
- // cache it and return
1166
- return _getElementsFuncCache[query.query] = retFunc;
1167
- };
1168
-
1169
- var filterDown = function(root, queryParts) {
1170
- // NOTE:
1171
- // this is the guts of the DOM query system. It takes a list of
1172
- // parsed query parts and a root and finds children which match
1173
- // the selector represented by the parts
1174
- var candidates = getArr(root), qp, x, te, qpl = queryParts.length, bag, ret;
1175
-
1176
- for (var i = 0; i < qpl; i++) {
1177
- ret = [];
1178
- qp = queryParts[i];
1179
- x = candidates.length - 1;
1180
- if (x > 0) {
1181
- // if we have more than one root at this level, provide a new
1182
- // hash to use for checking group membership but tell the
1183
- // system not to post-filter us since we will already have been
1184
- // gauranteed to be unique
1185
- bag = {};
1186
- ret.nozip = true;
1187
- }
1188
- var gef = getElementsFunc(qp);
1189
- for (var j = 0; te = candidates[j]; j++) {
1190
- // for every root, get the elements that match the descendant
1191
- // selector, adding them to the 'ret' array and filtering them
1192
- // via membership in this level's bag. If there are more query
1193
- // parts, then this level's return will be used as the next
1194
- // level's candidates
1195
- gef(te, ret, bag);
1196
- }
1197
- if (!ret.length) { break; }
1198
- candidates = ret;
1199
- }
1200
- return ret;
1201
- };
1202
-
1203
- ////////////////////////////////////////////////////////////////////////
1204
- // the query runner
1205
- ////////////////////////////////////////////////////////////////////////
1206
-
1207
- // these are the primary caches for full-query results. The query
1208
- // dispatcher functions are generated then stored here for hash lookup in
1209
- // the future
1210
- var _queryFuncCacheDOM = {},
1211
- _queryFuncCacheQSA = {};
1212
-
1213
- // this is the second level of spliting, from full-length queries (e.g.,
1214
- // 'div.foo .bar') into simple query expressions (e.g., ['div.foo',
1215
- // '.bar'])
1216
- var getStepQueryFunc = function(query) {
1217
- var qparts = getQueryParts(goog.string.trim(query));
1218
-
1219
- // if it's trivial, avoid iteration and zipping costs
1220
- if (qparts.length == 1) {
1221
- // We optimize this case here to prevent dispatch further down the
1222
- // chain, potentially slowing things down. We could more elegantly
1223
- // handle this in filterDown(), but it's slower for simple things
1224
- // that need to be fast (e.g., '#someId').
1225
- var tef = getElementsFunc(qparts[0]);
1226
- return function(root) {
1227
- var r = tef(root, []);
1228
- if (r) { r.nozip = true; }
1229
- return r;
1230
- }
1231
- }
1232
-
1233
- // otherwise, break it up and return a runner that iterates over the parts
1234
- // recursively
1235
- return function(root) {
1236
- return filterDown(root, qparts);
1237
- }
1238
- };
1239
-
1240
- // NOTES:
1241
- // * we can't trust QSA for anything but document-rooted queries, so
1242
- // caching is split into DOM query evaluators and QSA query evaluators
1243
- // * caching query results is dirty and leak-prone (or, at a minimum,
1244
- // prone to unbounded growth). Other toolkits may go this route, but
1245
- // they totally destroy their own ability to manage their memory
1246
- // footprint. If we implement it, it should only ever be with a fixed
1247
- // total element reference # limit and an LRU-style algorithm since JS
1248
- // has no weakref support. Caching compiled query evaluators is also
1249
- // potentially problematic, but even on large documents the size of the
1250
- // query evaluators is often < 100 function objects per evaluator (and
1251
- // LRU can be applied if it's ever shown to be an issue).
1252
- // * since IE's QSA support is currently only for HTML documents and even
1253
- // then only in IE 8's 'standards mode', we have to detect our dispatch
1254
- // route at query time and keep 2 separate caches. Ugg.
1255
-
1256
- var qsa = 'querySelectorAll';
1257
-
1258
- // some versions of Safari provided QSA, but it was buggy and crash-prone.
1259
- // We need te detect the right 'internal' webkit version to make this work.
1260
- var qsaAvail = (
1261
- !!goog.dom.getDocument()[qsa] &&
1262
- // see #5832
1263
- (!goog.userAgent.WEBKIT || goog.userAgent.isVersion('526'))
1264
- );
1265
-
1266
- /** @param {boolean=} opt_forceDOM */
1267
- var getQueryFunc = function(query, opt_forceDOM) {
1268
-
1269
- if (qsaAvail) {
1270
- // if we've got a cached variant and we think we can do it, run it!
1271
- var qsaCached = _queryFuncCacheQSA[query];
1272
- if (qsaCached && !opt_forceDOM) {
1273
- return qsaCached;
1274
- }
1275
- }
1276
-
1277
- // else if we've got a DOM cached variant, assume that we already know
1278
- // all we need to and use it
1279
- var domCached = _queryFuncCacheDOM[query];
1280
- if (domCached) {
1281
- return domCached;
1282
- }
1283
-
1284
- // TODO:
1285
- // today we're caching DOM and QSA branches separately so we
1286
- // recalc useQSA every time. If we had a way to tag root+query
1287
- // efficiently, we'd be in good shape to do a global cache.
1288
-
1289
- var qcz = query.charAt(0);
1290
- var nospace = (-1 == query.indexOf(' '));
1291
-
1292
- // byId searches are wicked fast compared to QSA, even when filtering
1293
- // is required
1294
- if ((query.indexOf('#') >= 0) && (nospace)) {
1295
- opt_forceDOM = true;
1296
- }
1297
-
1298
- var useQSA = (
1299
- qsaAvail && (!opt_forceDOM) &&
1300
- // as per CSS 3, we can't currently start w/ combinator:
1301
- // http://www.w3.org/TR/css3-selectors/#w3cselgrammar
1302
- (specials.indexOf(qcz) == -1) &&
1303
- // IE's QSA impl sucks on pseudos
1304
- (!goog.userAgent.IE || (query.indexOf(':') == -1)) &&
1305
-
1306
- (!(cssCaseBug && (query.indexOf('.') >= 0))) &&
1307
-
1308
- // FIXME:
1309
- // need to tighten up browser rules on ':contains' and '|=' to
1310
- // figure out which aren't good
1311
- (query.indexOf(':contains') == -1) &&
1312
- (query.indexOf('|=') == -1)
1313
- );
1314
-
1315
- // TODO:
1316
- // if we've got a descendant query (e.g., '> .thinger' instead of
1317
- // just '.thinger') in a QSA-able doc, but are passed a child as a
1318
- // root, it should be possible to give the item a synthetic ID and
1319
- // trivially rewrite the query to the form '#synid > .thinger' to
1320
- // use the QSA branch
1321
-
1322
-
1323
- if (useQSA) {
1324
- var tq = (specials.indexOf(query.charAt(query.length - 1)) >= 0) ?
1325
- (query + ' *') : query;
1326
- return _queryFuncCacheQSA[query] = function(root) {
1327
- try {
1328
- // the QSA system contains an egregious spec bug which
1329
- // limits us, effectively, to only running QSA queries over
1330
- // entire documents. See:
1331
- // http://ejohn.org/blog/thoughts-on-queryselectorall/
1332
- // despite this, we can also handle QSA runs on simple
1333
- // selectors, but we don't want detection to be expensive
1334
- // so we're just checking for the presence of a space char
1335
- // right now. Not elegant, but it's cheaper than running
1336
- // the query parser when we might not need to
1337
- if (!((9 == root.nodeType) || nospace)) {
1338
- throw '';
1339
- }
1340
- var r = root[qsa](tq);
1341
- // IE QSA queries may incorrectly include comment nodes, so we throw
1342
- // the zipping function into 'remove' comments mode instead of the
1343
- // normal 'skip it' which every other QSA-clued browser enjoys
1344
- // skip expensive duplication checks and just wrap in a NodeList
1345
- if (goog.userAgent.IE) {
1346
- r.commentStrip = true;
1347
- } else {
1348
- r.nozip = true;
1349
- }
1350
- return r;
1351
- } catch (e) {
1352
- // else run the DOM branch on this query, ensuring that we
1353
- // default that way in the future
1354
- return getQueryFunc(query, true)(root);
1355
- }
1356
- }
1357
- } else {
1358
- // DOM branch
1359
- var parts = query.split(/\s*,\s*/);
1360
- return _queryFuncCacheDOM[query] = ((parts.length < 2) ?
1361
- // if not a compound query (e.g., '.foo, .bar'), cache and return a
1362
- // dispatcher
1363
- getStepQueryFunc(query) :
1364
- // if it *is* a complex query, break it up into its
1365
- // constituent parts and return a dispatcher that will
1366
- // merge the parts when run
1367
- function(root) {
1368
- var pindex = 0, // avoid array alloc for every invocation
1369
- ret = [],
1370
- tp;
1371
- while (tp = parts[pindex++]) {
1372
- ret = ret.concat(getStepQueryFunc(tp)(root));
1373
- }
1374
- return ret;
1375
- }
1376
- );
1377
- }
1378
- };
1379
-
1380
- var _zipIdx = 0;
1381
-
1382
- // NOTE:
1383
- // this function is Moo inspired, but our own impl to deal correctly
1384
- // with XML in IE
1385
- var _nodeUID = goog.userAgent.IE ? function(node) {
1386
- if (caseSensitive) {
1387
- // XML docs don't have uniqueID on their nodes
1388
- return node.getAttribute('_uid') ||
1389
- node.setAttribute('_uid', ++_zipIdx) || _zipIdx;
1390
-
1391
- } else {
1392
- return node.uniqueID;
1393
- }
1394
- } :
1395
- function(node) {
1396
- return (node['_uid'] || (node['_uid'] = ++_zipIdx));
1397
- };
1398
-
1399
- // determine if a node in is unique in a 'bag'. In this case we don't want
1400
- // to flatten a list of unique items, but rather just tell if the item in
1401
- // question is already in the bag. Normally we'd just use hash lookup to do
1402
- // this for us but IE's DOM is busted so we can't really count on that. On
1403
- // the upside, it gives us a built in unique ID function.
1404
- var _isUnique = function(node, bag) {
1405
- if (!bag) {
1406
- return 1;
1407
- }
1408
- var id = _nodeUID(node);
1409
- if (!bag[id]) {
1410
- return bag[id] = 1;
1411
- }
1412
- return 0;
1413
- };
1414
-
1415
- // attempt to efficiently determine if an item in a list is a dupe,
1416
- // returning a list of 'uniques', hopefully in doucment order
1417
- var _zipIdxName = '_zipIdx';
1418
- var _zip = function(arr) {
1419
- if (arr && arr.nozip) {
1420
- return arr;
1421
- }
1422
- var ret = [];
1423
- if (!arr || !arr.length) {
1424
- return ret;
1425
- }
1426
- if (arr[0]) {
1427
- ret.push(arr[0]);
1428
- }
1429
- if (arr.length < 2) {
1430
- return ret;
1431
- }
1432
-
1433
- _zipIdx++;
1434
-
1435
- // we have to fork here for IE and XML docs because we can't set
1436
- // expandos on their nodes (apparently). *sigh*
1437
- if (goog.userAgent.IE && caseSensitive) {
1438
- var szidx = _zipIdx + '';
1439
- arr[0].setAttribute(_zipIdxName, szidx);
1440
- for (var x = 1, te; te = arr[x]; x++) {
1441
- if (arr[x].getAttribute(_zipIdxName) != szidx) {
1442
- ret.push(te);
1443
- }
1444
- te.setAttribute(_zipIdxName, szidx);
1445
- }
1446
- } else if (goog.userAgent.IE && arr.commentStrip) {
1447
- try {
1448
- for (var x = 1, te; te = arr[x]; x++) {
1449
- if (isElement(te)) {
1450
- ret.push(te);
1451
- }
1452
- }
1453
- } catch (e) { /* squelch */ }
1454
- } else {
1455
- if (arr[0]) {
1456
- arr[0][_zipIdxName] = _zipIdx;
1457
- }
1458
- for (var x = 1, te; te = arr[x]; x++) {
1459
- if (arr[x][_zipIdxName] != _zipIdx) {
1460
- ret.push(te);
1461
- }
1462
- te[_zipIdxName] = _zipIdx;
1463
- }
1464
- }
1465
- return ret;
1466
- };
1467
-
1468
- /**
1469
- * The main executor. Type specification from above.
1470
- * @param {string|Array} query The query.
1471
- * @param {(string|Node)=} root The root.
1472
- * @return { {length: number} } The elements that matched the query.
1473
- */
1474
- var query = function(query, root) {
1475
- // NOTE: elementsById is not currently supported
1476
- // NOTE: ignores xpath-ish queries for now
1477
-
1478
- //Set list constructor to desired value. This can change
1479
- //between calls, so always re-assign here.
1480
-
1481
- if (!query) {
1482
- return [];
1483
- }
1484
-
1485
- if (query.constructor == Array) {
1486
- return /** @type {!Array} */ (query);
1487
- }
1488
-
1489
- if (!goog.isString(query)) {
1490
- return [query];
1491
- }
1492
-
1493
- if (goog.isString(root)) {
1494
- root = goog.dom.getElement(root);
1495
- if (!root) {
1496
- return [];
1497
- }
1498
- }
1499
-
1500
- root = root || goog.dom.getDocument();
1501
- var od = root.ownerDocument || root.documentElement;
1502
-
1503
- // throw the big case sensitivity switch
1504
-
1505
- // NOTE:
1506
- // Opera in XHTML mode doesn't detect case-sensitivity correctly
1507
- // and it's not clear that there's any way to test for it
1508
- caseSensitive =
1509
- root.contentType && root.contentType == 'application/xml' ||
1510
- goog.userAgent.OPERA &&
1511
- (root.doctype || od.toString() == '[object XMLDocument]') ||
1512
- !!od &&
1513
- (goog.userAgent.IE ? od.xml : (root.xmlVersion || od.xmlVersion));
1514
-
1515
- // NOTE:
1516
- // adding 'true' as the 2nd argument to getQueryFunc is useful for
1517
- // testing the DOM branch without worrying about the
1518
- // behavior/performance of the QSA branch.
1519
- var r = getQueryFunc(query)(root);
1520
-
1521
- // FIXME(slightlyoff):
1522
- // need to investigate this branch WRT dojo:#8074 and dojo:#8075
1523
- if (r && r.nozip) {
1524
- return r;
1525
- }
1526
- return _zip(r); // dojo.NodeList
1527
- }
1528
-
1529
- // FIXME: need to add infrastructure for post-filtering pseudos, ala :last
1530
- query.pseudos = pseudos;
1531
-
1532
- return query;
1533
- })();
1534
-
1535
- // TODO(user): Please don't export here since it clobbers dead code elimination.
1536
- goog.exportSymbol('goog.dom.query', goog.dom.query);
1537
- goog.exportSymbol('goog.dom.query.pseudos', goog.dom.query.pseudos);