TokiCLI 0.1.1 → 0.2.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 (368) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CHANGELOG.md +7 -0
  4. data/README.md +56 -10
  5. data/TokiCLI.gemspec +5 -2
  6. data/lib/API/dbapi.rb +104 -67
  7. data/lib/API/helpers.rb +47 -3
  8. data/lib/TokiCLI/app.rb +88 -12
  9. data/lib/TokiCLI/version.rb +1 -1
  10. data/lib/TokiCLI/view.rb +5 -1
  11. data/lib/TokiServer/Gemfile +6 -0
  12. data/lib/TokiServer/README.md +37 -0
  13. data/lib/TokiServer/bower.json +8 -0
  14. data/lib/TokiServer/bower_components/fastclick/.bower.json +23 -0
  15. data/lib/TokiServer/bower_components/fastclick/LICENSE +22 -0
  16. data/lib/TokiServer/bower_components/fastclick/README.md +133 -0
  17. data/lib/TokiServer/bower_components/fastclick/bower.json +13 -0
  18. data/lib/TokiServer/bower_components/fastclick/lib/fastclick.js +790 -0
  19. data/lib/TokiServer/bower_components/foundation/.bower.json +30 -0
  20. data/lib/TokiServer/bower_components/foundation/bower.json +20 -0
  21. data/lib/TokiServer/bower_components/foundation/css/foundation.css +4860 -0
  22. data/lib/TokiServer/bower_components/foundation/css/normalize.css +320 -0
  23. data/lib/TokiServer/bower_components/foundation/js/foundation.js +5543 -0
  24. data/lib/TokiServer/bower_components/foundation/js/foundation.min.js +3 -0
  25. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.abide.js +299 -0
  26. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.accordion.js +59 -0
  27. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.alert.js +43 -0
  28. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.clearing.js +534 -0
  29. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.dropdown.js +311 -0
  30. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.equalizer.js +74 -0
  31. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.interchange.js +331 -0
  32. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.joyride.js +843 -0
  33. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.js +611 -0
  34. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.magellan.js +178 -0
  35. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.offcanvas.js +108 -0
  36. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.orbit.js +610 -0
  37. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.reveal.js +437 -0
  38. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.slider.js +199 -0
  39. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.tab.js +167 -0
  40. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.tooltip.js +298 -0
  41. data/lib/TokiServer/bower_components/foundation/js/foundation/foundation.topbar.js +425 -0
  42. data/lib/TokiServer/bower_components/foundation/js/vendor/fastclick.js +9 -0
  43. data/lib/TokiServer/bower_components/foundation/js/vendor/jquery.cookie.js +8 -0
  44. data/lib/TokiServer/bower_components/foundation/js/vendor/jquery.js +26 -0
  45. data/lib/TokiServer/bower_components/foundation/js/vendor/modernizr.js +8 -0
  46. data/lib/TokiServer/bower_components/foundation/js/vendor/placeholder.js +2 -0
  47. data/lib/TokiServer/bower_components/foundation/scss/foundation.scss +45 -0
  48. data/lib/TokiServer/bower_components/foundation/scss/foundation/_functions.scss +101 -0
  49. data/lib/TokiServer/bower_components/foundation/scss/foundation/_settings.scss +1289 -0
  50. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_accordion.scss +53 -0
  51. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_alert-boxes.scss +126 -0
  52. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_block-grid.scss +132 -0
  53. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_breadcrumbs.scss +127 -0
  54. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_button-groups.scss +108 -0
  55. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_buttons.scss +222 -0
  56. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_clearing.scss +247 -0
  57. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_dropdown-buttons.scss +129 -0
  58. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_dropdown.scss +248 -0
  59. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_flex-video.scss +51 -0
  60. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_forms.scss +498 -0
  61. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_global.scss +429 -0
  62. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_grid.scss +260 -0
  63. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_inline-lists.scss +57 -0
  64. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_joyride.scss +220 -0
  65. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_keystrokes.scss +61 -0
  66. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_labels.scss +104 -0
  67. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_magellan.scss +34 -0
  68. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_offcanvas.scss +355 -0
  69. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_orbit.scss +423 -0
  70. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_pagination.scss +150 -0
  71. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_panels.scss +90 -0
  72. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_pricing-tables.scss +150 -0
  73. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_progress-bars.scss +79 -0
  74. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_range-slider.scss +148 -0
  75. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_reveal-new.scss +0 -0
  76. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_reveal.scss +216 -0
  77. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_side-nav.scss +115 -0
  78. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_split-buttons.scss +191 -0
  79. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_sub-nav.scss +125 -0
  80. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_switch.scss +294 -0
  81. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_tables.scss +129 -0
  82. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_tabs.scss +109 -0
  83. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_thumbs.scss +68 -0
  84. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_tooltips.scss +140 -0
  85. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_top-bar.scss +644 -0
  86. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_type.scss +511 -0
  87. data/lib/TokiServer/bower_components/foundation/scss/foundation/components/_visibility.scss +408 -0
  88. data/lib/TokiServer/bower_components/foundation/scss/normalize.scss +425 -0
  89. data/lib/TokiServer/bower_components/jquery-placeholder/.bower.json +17 -0
  90. data/lib/TokiServer/bower_components/jquery-placeholder/.gitattributes +1 -0
  91. data/lib/TokiServer/bower_components/jquery-placeholder/.gitignore +1 -0
  92. data/lib/TokiServer/bower_components/jquery-placeholder/LICENSE-MIT.txt +20 -0
  93. data/lib/TokiServer/bower_components/jquery-placeholder/README.md +76 -0
  94. data/lib/TokiServer/bower_components/jquery-placeholder/bower.json +5 -0
  95. data/lib/TokiServer/bower_components/jquery-placeholder/demo.html +55 -0
  96. data/lib/TokiServer/bower_components/jquery-placeholder/jquery.placeholder.js +185 -0
  97. data/lib/TokiServer/bower_components/jquery-placeholder/tests/index.html +32 -0
  98. data/lib/TokiServer/bower_components/jquery-placeholder/tests/tests.js +134 -0
  99. data/lib/TokiServer/bower_components/jquery.cookie/.bower.json +28 -0
  100. data/lib/TokiServer/bower_components/jquery.cookie/jquery.cookie.js +117 -0
  101. data/lib/TokiServer/bower_components/jquery/.bower.json +37 -0
  102. data/lib/TokiServer/bower_components/jquery/MIT-LICENSE.txt +21 -0
  103. data/lib/TokiServer/bower_components/jquery/bower.json +27 -0
  104. data/lib/TokiServer/bower_components/jquery/dist/jquery.js +9190 -0
  105. data/lib/TokiServer/bower_components/jquery/dist/jquery.min.js +5 -0
  106. data/lib/TokiServer/bower_components/jquery/dist/jquery.min.map +1 -0
  107. data/lib/TokiServer/bower_components/jquery/src/ajax.js +806 -0
  108. data/lib/TokiServer/bower_components/jquery/src/ajax/jsonp.js +89 -0
  109. data/lib/TokiServer/bower_components/jquery/src/ajax/load.js +75 -0
  110. data/lib/TokiServer/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  111. data/lib/TokiServer/bower_components/jquery/src/ajax/parseXML.js +28 -0
  112. data/lib/TokiServer/bower_components/jquery/src/ajax/script.js +64 -0
  113. data/lib/TokiServer/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  114. data/lib/TokiServer/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  115. data/lib/TokiServer/bower_components/jquery/src/ajax/xhr.js +135 -0
  116. data/lib/TokiServer/bower_components/jquery/src/attributes.js +11 -0
  117. data/lib/TokiServer/bower_components/jquery/src/attributes/attr.js +143 -0
  118. data/lib/TokiServer/bower_components/jquery/src/attributes/classes.js +158 -0
  119. data/lib/TokiServer/bower_components/jquery/src/attributes/prop.js +96 -0
  120. data/lib/TokiServer/bower_components/jquery/src/attributes/support.js +35 -0
  121. data/lib/TokiServer/bower_components/jquery/src/attributes/val.js +163 -0
  122. data/lib/TokiServer/bower_components/jquery/src/callbacks.js +205 -0
  123. data/lib/TokiServer/bower_components/jquery/src/core.js +498 -0
  124. data/lib/TokiServer/bower_components/jquery/src/core/access.js +60 -0
  125. data/lib/TokiServer/bower_components/jquery/src/core/init.js +123 -0
  126. data/lib/TokiServer/bower_components/jquery/src/core/parseHTML.js +39 -0
  127. data/lib/TokiServer/bower_components/jquery/src/core/ready.js +97 -0
  128. data/lib/TokiServer/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  129. data/lib/TokiServer/bower_components/jquery/src/css.js +451 -0
  130. data/lib/TokiServer/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  131. data/lib/TokiServer/bower_components/jquery/src/css/curCSS.js +57 -0
  132. data/lib/TokiServer/bower_components/jquery/src/css/defaultDisplay.js +70 -0
  133. data/lib/TokiServer/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  134. data/lib/TokiServer/bower_components/jquery/src/css/support.js +91 -0
  135. data/lib/TokiServer/bower_components/jquery/src/css/swap.js +28 -0
  136. data/lib/TokiServer/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  137. data/lib/TokiServer/bower_components/jquery/src/css/var/getStyles.js +5 -0
  138. data/lib/TokiServer/bower_components/jquery/src/css/var/isHidden.js +13 -0
  139. data/lib/TokiServer/bower_components/jquery/src/css/var/rmargin.js +3 -0
  140. data/lib/TokiServer/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  141. data/lib/TokiServer/bower_components/jquery/src/data.js +179 -0
  142. data/lib/TokiServer/bower_components/jquery/src/data/Data.js +181 -0
  143. data/lib/TokiServer/bower_components/jquery/src/data/accepts.js +20 -0
  144. data/lib/TokiServer/bower_components/jquery/src/data/var/data_priv.js +5 -0
  145. data/lib/TokiServer/bower_components/jquery/src/data/var/data_user.js +5 -0
  146. data/lib/TokiServer/bower_components/jquery/src/deferred.js +149 -0
  147. data/lib/TokiServer/bower_components/jquery/src/deprecated.js +13 -0
  148. data/lib/TokiServer/bower_components/jquery/src/dimensions.js +50 -0
  149. data/lib/TokiServer/bower_components/jquery/src/effects.js +649 -0
  150. data/lib/TokiServer/bower_components/jquery/src/effects/Tween.js +114 -0
  151. data/lib/TokiServer/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  152. data/lib/TokiServer/bower_components/jquery/src/event.js +868 -0
  153. data/lib/TokiServer/bower_components/jquery/src/event/alias.js +39 -0
  154. data/lib/TokiServer/bower_components/jquery/src/event/support.js +9 -0
  155. data/lib/TokiServer/bower_components/jquery/src/exports/amd.js +24 -0
  156. data/lib/TokiServer/bower_components/jquery/src/exports/global.js +32 -0
  157. data/lib/TokiServer/bower_components/jquery/src/intro.js +44 -0
  158. data/lib/TokiServer/bower_components/jquery/src/jquery.js +36 -0
  159. data/lib/TokiServer/bower_components/jquery/src/manipulation.js +582 -0
  160. data/lib/TokiServer/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  161. data/lib/TokiServer/bower_components/jquery/src/manipulation/support.js +31 -0
  162. data/lib/TokiServer/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  163. data/lib/TokiServer/bower_components/jquery/src/offset.js +204 -0
  164. data/lib/TokiServer/bower_components/jquery/src/outro.js +1 -0
  165. data/lib/TokiServer/bower_components/jquery/src/queue.js +142 -0
  166. data/lib/TokiServer/bower_components/jquery/src/queue/delay.js +22 -0
  167. data/lib/TokiServer/bower_components/jquery/src/selector-native.js +172 -0
  168. data/lib/TokiServer/bower_components/jquery/src/selector-sizzle.js +14 -0
  169. data/lib/TokiServer/bower_components/jquery/src/selector.js +1 -0
  170. data/lib/TokiServer/bower_components/jquery/src/serialize.js +111 -0
  171. data/lib/TokiServer/bower_components/jquery/src/sizzle/dist/sizzle.js +2044 -0
  172. data/lib/TokiServer/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  173. data/lib/TokiServer/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  174. data/lib/TokiServer/bower_components/jquery/src/traversing.js +200 -0
  175. data/lib/TokiServer/bower_components/jquery/src/traversing/findFilter.js +100 -0
  176. data/lib/TokiServer/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  177. data/lib/TokiServer/bower_components/jquery/src/var/arr.js +3 -0
  178. data/lib/TokiServer/bower_components/jquery/src/var/class2type.js +4 -0
  179. data/lib/TokiServer/bower_components/jquery/src/var/concat.js +5 -0
  180. data/lib/TokiServer/bower_components/jquery/src/var/hasOwn.js +5 -0
  181. data/lib/TokiServer/bower_components/jquery/src/var/indexOf.js +5 -0
  182. data/lib/TokiServer/bower_components/jquery/src/var/pnum.js +3 -0
  183. data/lib/TokiServer/bower_components/jquery/src/var/push.js +5 -0
  184. data/lib/TokiServer/bower_components/jquery/src/var/rnotwhite.js +3 -0
  185. data/lib/TokiServer/bower_components/jquery/src/var/slice.js +5 -0
  186. data/lib/TokiServer/bower_components/jquery/src/var/strundefined.js +3 -0
  187. data/lib/TokiServer/bower_components/jquery/src/var/support.js +4 -0
  188. data/lib/TokiServer/bower_components/jquery/src/var/toString.js +5 -0
  189. data/lib/TokiServer/bower_components/jquery/src/wrap.js +78 -0
  190. data/lib/TokiServer/bower_components/modernizr/.bower.json +14 -0
  191. data/lib/TokiServer/bower_components/modernizr/.editorconfig +10 -0
  192. data/lib/TokiServer/bower_components/modernizr/.gitignore +2 -0
  193. data/lib/TokiServer/bower_components/modernizr/.travis.yml +6 -0
  194. data/lib/TokiServer/bower_components/modernizr/feature-detects/a-download.js +8 -0
  195. data/lib/TokiServer/bower_components/modernizr/feature-detects/audio-audiodata-api.js +4 -0
  196. data/lib/TokiServer/bower_components/modernizr/feature-detects/audio-webaudio-api.js +4 -0
  197. data/lib/TokiServer/bower_components/modernizr/feature-detects/battery-api.js +8 -0
  198. data/lib/TokiServer/bower_components/modernizr/feature-detects/battery-level.js +11 -0
  199. data/lib/TokiServer/bower_components/modernizr/feature-detects/blob-constructor.js +10 -0
  200. data/lib/TokiServer/bower_components/modernizr/feature-detects/canvas-todataurl-type.js +28 -0
  201. data/lib/TokiServer/bower_components/modernizr/feature-detects/contenteditable.js +9 -0
  202. data/lib/TokiServer/bower_components/modernizr/feature-detects/contentsecuritypolicy.js +10 -0
  203. data/lib/TokiServer/bower_components/modernizr/feature-detects/contextmenu.js +11 -0
  204. data/lib/TokiServer/bower_components/modernizr/feature-detects/cookies.js +15 -0
  205. data/lib/TokiServer/bower_components/modernizr/feature-detects/cors.js +3 -0
  206. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-backgroundposition-shorthand.js +19 -0
  207. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-backgroundposition-xy.js +15 -0
  208. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-backgroundrepeat.js +31 -0
  209. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-backgroundsizecover.js +10 -0
  210. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-boxsizing.js +9 -0
  211. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-calc.js +12 -0
  212. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-cubicbezierrange.js +8 -0
  213. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-displayrunin.js +18 -0
  214. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-displaytable.js +27 -0
  215. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-filters.js +7 -0
  216. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-hyphens.js +205 -0
  217. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-lastchild.js +11 -0
  218. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-mask.js +12 -0
  219. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-mediaqueries.js +3 -0
  220. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-objectfit.js +6 -0
  221. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-overflow-scrolling.js +9 -0
  222. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-pointerevents.js +25 -0
  223. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-positionsticky.js +13 -0
  224. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-regions.js +55 -0
  225. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-remunit.js +19 -0
  226. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-resize.js +8 -0
  227. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-scrollbars.js +19 -0
  228. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-shapes.js +4 -0
  229. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-subpixelfont.js +23 -0
  230. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-supports.js +6 -0
  231. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-userselect.js +10 -0
  232. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-vhunit.js +14 -0
  233. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-vmaxunit.js +14 -0
  234. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-vminunit.js +14 -0
  235. data/lib/TokiServer/bower_components/modernizr/feature-detects/css-vwunit.js +14 -0
  236. data/lib/TokiServer/bower_components/modernizr/feature-detects/custom-protocol-handler.js +10 -0
  237. data/lib/TokiServer/bower_components/modernizr/feature-detects/dart.js +6 -0
  238. data/lib/TokiServer/bower_components/modernizr/feature-detects/dataview-api.js +4 -0
  239. data/lib/TokiServer/bower_components/modernizr/feature-detects/dom-classlist.js +4 -0
  240. data/lib/TokiServer/bower_components/modernizr/feature-detects/dom-createElement-attrs.js +11 -0
  241. data/lib/TokiServer/bower_components/modernizr/feature-detects/dom-dataset.js +9 -0
  242. data/lib/TokiServer/bower_components/modernizr/feature-detects/dom-microdata.js +4 -0
  243. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-datalist.js +12 -0
  244. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-details.js +25 -0
  245. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-output.js +4 -0
  246. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-progress-meter.js +11 -0
  247. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-ruby.js +53 -0
  248. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-time.js +4 -0
  249. data/lib/TokiServer/bower_components/modernizr/feature-detects/elem-track.js +11 -0
  250. data/lib/TokiServer/bower_components/modernizr/feature-detects/emoji.js +11 -0
  251. data/lib/TokiServer/bower_components/modernizr/feature-detects/es5-strictmode.js +7 -0
  252. data/lib/TokiServer/bower_components/modernizr/feature-detects/event-deviceorientation-motion.js +11 -0
  253. data/lib/TokiServer/bower_components/modernizr/feature-detects/exif-orientation.js +32 -0
  254. data/lib/TokiServer/bower_components/modernizr/feature-detects/file-api.js +12 -0
  255. data/lib/TokiServer/bower_components/modernizr/feature-detects/file-filesystem.js +9 -0
  256. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-fileinput.js +13 -0
  257. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-formattribute.js +29 -0
  258. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-inputnumber-l10n.js +32 -0
  259. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-placeholder.js +10 -0
  260. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-speechinput.js +19 -0
  261. data/lib/TokiServer/bower_components/modernizr/feature-detects/forms-validation.js +62 -0
  262. data/lib/TokiServer/bower_components/modernizr/feature-detects/fullscreen-api.js +10 -0
  263. data/lib/TokiServer/bower_components/modernizr/feature-detects/gamepad.js +12 -0
  264. data/lib/TokiServer/bower_components/modernizr/feature-detects/getusermedia.js +5 -0
  265. data/lib/TokiServer/bower_components/modernizr/feature-detects/ie8compat.js +12 -0
  266. data/lib/TokiServer/bower_components/modernizr/feature-detects/iframe-sandbox.js +5 -0
  267. data/lib/TokiServer/bower_components/modernizr/feature-detects/iframe-seamless.js +5 -0
  268. data/lib/TokiServer/bower_components/modernizr/feature-detects/iframe-srcdoc.js +5 -0
  269. data/lib/TokiServer/bower_components/modernizr/feature-detects/img-apng.js +26 -0
  270. data/lib/TokiServer/bower_components/modernizr/feature-detects/img-webp.js +20 -0
  271. data/lib/TokiServer/bower_components/modernizr/feature-detects/json.js +7 -0
  272. data/lib/TokiServer/bower_components/modernizr/feature-detects/lists-reversed.js +6 -0
  273. data/lib/TokiServer/bower_components/modernizr/feature-detects/mathml.js +23 -0
  274. data/lib/TokiServer/bower_components/modernizr/feature-detects/network-connection.js +22 -0
  275. data/lib/TokiServer/bower_components/modernizr/feature-detects/network-eventsource.js +5 -0
  276. data/lib/TokiServer/bower_components/modernizr/feature-detects/network-xhr2.js +13 -0
  277. data/lib/TokiServer/bower_components/modernizr/feature-detects/notification.js +10 -0
  278. data/lib/TokiServer/bower_components/modernizr/feature-detects/performance.js +5 -0
  279. data/lib/TokiServer/bower_components/modernizr/feature-detects/pointerlock-api.js +4 -0
  280. data/lib/TokiServer/bower_components/modernizr/feature-detects/quota-management-api.js +11 -0
  281. data/lib/TokiServer/bower_components/modernizr/feature-detects/requestanimationframe.js +7 -0
  282. data/lib/TokiServer/bower_components/modernizr/feature-detects/script-async.js +3 -0
  283. data/lib/TokiServer/bower_components/modernizr/feature-detects/script-defer.js +3 -0
  284. data/lib/TokiServer/bower_components/modernizr/feature-detects/style-scoped.js +6 -0
  285. data/lib/TokiServer/bower_components/modernizr/feature-detects/svg-filters.js +13 -0
  286. data/lib/TokiServer/bower_components/modernizr/feature-detects/unicode.js +32 -0
  287. data/lib/TokiServer/bower_components/modernizr/feature-detects/url-data-uri.js +26 -0
  288. data/lib/TokiServer/bower_components/modernizr/feature-detects/userdata.js +7 -0
  289. data/lib/TokiServer/bower_components/modernizr/feature-detects/vibration.js +4 -0
  290. data/lib/TokiServer/bower_components/modernizr/feature-detects/web-intents.js +6 -0
  291. data/lib/TokiServer/bower_components/modernizr/feature-detects/webgl-extensions.js +42 -0
  292. data/lib/TokiServer/bower_components/modernizr/feature-detects/websockets-binary.js +20 -0
  293. data/lib/TokiServer/bower_components/modernizr/feature-detects/window-framed.js +8 -0
  294. data/lib/TokiServer/bower_components/modernizr/feature-detects/workers-blobworkers.js +66 -0
  295. data/lib/TokiServer/bower_components/modernizr/feature-detects/workers-dataworkers.js +34 -0
  296. data/lib/TokiServer/bower_components/modernizr/feature-detects/workers-sharedworkers.js +3 -0
  297. data/lib/TokiServer/bower_components/modernizr/grunt.js +69 -0
  298. data/lib/TokiServer/bower_components/modernizr/media/Modernizr 2 Logo.ai +292 -1
  299. data/lib/TokiServer/bower_components/modernizr/media/Modernizr 2 Logo.eps +0 -0
  300. data/lib/TokiServer/bower_components/modernizr/media/Modernizr 2 Logo.pdf +292 -1
  301. data/lib/TokiServer/bower_components/modernizr/media/Modernizr 2 Logo.png +0 -0
  302. data/lib/TokiServer/bower_components/modernizr/media/Modernizr 2 Logo.svg +35 -0
  303. data/lib/TokiServer/bower_components/modernizr/modernizr.js +1406 -0
  304. data/lib/TokiServer/bower_components/modernizr/readme.md +28 -0
  305. data/lib/TokiServer/bower_components/modernizr/test/basic.html +65 -0
  306. data/lib/TokiServer/bower_components/modernizr/test/caniuse.html +1451 -0
  307. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/Windsong-webfont.eot +0 -0
  308. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/Windsong-webfont.otf +0 -0
  309. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/Windsong-webfont.svg +147 -0
  310. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/Windsong-webfont.ttf +0 -0
  311. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/Windsong-webfont.woff +0 -0
  312. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/alpha.png +0 -0
  313. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/apng_test.png +0 -0
  314. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/before-after.png +0 -0
  315. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/form_validation.html +15 -0
  316. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/ga.js +43 -0
  317. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/green5x5.png +0 -0
  318. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/hashchange.html +16 -0
  319. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/jquery.min.js +18 -0
  320. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/mathml.html +120 -0
  321. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/mathml_ref.png +0 -0
  322. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/modernizr-1.7.min.js +2 -0
  323. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/png_alpha_result.png +0 -0
  324. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/pushstate.html +40 -0
  325. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/red30x30.png +0 -0
  326. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/ruby.png +0 -0
  327. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/stroked-text.png +0 -0
  328. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/style.css +168 -0
  329. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/svg-html-blur.png +0 -0
  330. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/svg-img.svg +5 -0
  331. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/svg-img.svg.1 +5 -0
  332. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/svg_blur.png +0 -0
  333. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/table.png +0 -0
  334. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/text-shadow1.png +0 -0
  335. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/text-shadow2.png +0 -0
  336. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/windsong_font.png +0 -0
  337. data/lib/TokiServer/bower_components/modernizr/test/caniuse_files/xhtml.html +14 -0
  338. data/lib/TokiServer/bower_components/modernizr/test/index.html +104 -0
  339. data/lib/TokiServer/bower_components/modernizr/test/js/basic.html +65 -0
  340. data/lib/TokiServer/bower_components/modernizr/test/js/dumpdata.js +75 -0
  341. data/lib/TokiServer/bower_components/modernizr/test/js/lib/detect-global.js +153 -0
  342. data/lib/TokiServer/bower_components/modernizr/test/js/lib/jquery-1.7b2.js +9279 -0
  343. data/lib/TokiServer/bower_components/modernizr/test/js/lib/jsonselect.js +279 -0
  344. data/lib/TokiServer/bower_components/modernizr/test/js/lib/polyfills.js +96 -0
  345. data/lib/TokiServer/bower_components/modernizr/test/js/lib/uaparser.js +215 -0
  346. data/lib/TokiServer/bower_components/modernizr/test/js/setup.js +44 -0
  347. data/lib/TokiServer/bower_components/modernizr/test/js/unit-caniuse.js +191 -0
  348. data/lib/TokiServer/bower_components/modernizr/test/js/unit.js +669 -0
  349. data/lib/TokiServer/bower_components/modernizr/test/qunit/qunit.css +231 -0
  350. data/lib/TokiServer/bower_components/modernizr/test/qunit/qunit.js +1932 -0
  351. data/lib/TokiServer/bower_components/modernizr/test/qunit/run-qunit.js +72 -0
  352. data/lib/TokiServer/config.rb +25 -0
  353. data/lib/TokiServer/humans.txt +8 -0
  354. data/lib/TokiServer/itunesicon.rb +60 -0
  355. data/lib/TokiServer/js/app.js +3 -0
  356. data/lib/TokiServer/public/stylesheets/app.css +8094 -0
  357. data/lib/TokiServer/robots.txt +4 -0
  358. data/lib/TokiServer/scss/_settings.scss +1240 -0
  359. data/lib/TokiServer/scss/app.scss +102 -0
  360. data/lib/TokiServer/tokiserver.rb +377 -0
  361. data/lib/TokiServer/views/apps_total.erb +28 -0
  362. data/lib/TokiServer/views/error.erb +25 -0
  363. data/lib/TokiServer/views/index.erb +191 -0
  364. data/lib/TokiServer/views/layout.erb +20 -0
  365. data/lib/TokiServer/views/name_log.erb +50 -0
  366. data/lib/TokiServer/views/name_split.erb +37 -0
  367. data/lib/TokiServer/views/name_total.erb +34 -0
  368. metadata +416 -4
@@ -0,0 +1,44 @@
1
+
2
+ // Avoid `console` errors in browsers that lack a console
3
+ if (!(window.console && console.log)) {
4
+ (function() {
5
+ var noop = function() {};
6
+ var methods = ['assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'markTimeline', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn'];
7
+ var length = methods.length;
8
+ var console = window.console = {};
9
+ while (length--) {
10
+ console[methods[length]] = noop;
11
+ }
12
+ }());
13
+ }
14
+
15
+ // test helper object
16
+ window.TEST = {
17
+ // note some unique members of the Modernizr object
18
+ inputs : ['input','inputtypes', 'textarea'],
19
+ audvid : ['video','audio'],
20
+ API : ['addTest', 'mq', 'hasEvent', 'testProp', 'testAllProps', 'testStyles', '_prefixes', '_domPrefixes', '_cssomPrefixes', 'prefixed'],
21
+ extraclass: ['js'],
22
+ privates : ['_enableHTML5','_version','_fontfaceready'],
23
+ deprecated : [
24
+ { oldish : 'crosswindowmessaging', newish : 'postmessage'},
25
+ { oldish : 'historymanagement', newish : 'history'},
26
+ ],
27
+
28
+ // utility methods
29
+ inArray: function(elem, array) {
30
+ if (array.indexOf) {
31
+ return array.indexOf(elem);
32
+ }
33
+ for (var i = 0, length = array.length; i < length; i++) {
34
+ if (array[i] === elem) {
35
+ return i;
36
+ }
37
+ }
38
+ return -1;
39
+ },
40
+ trim : function(str){
41
+ return str.replace(/^\s*/, "").replace(/\s*$/, "");
42
+ }
43
+ };
44
+
@@ -0,0 +1,191 @@
1
+
2
+
3
+ var myscript = document.createElement('script'),
4
+ ref = document.getElementsByTagName('script')[0];
5
+
6
+ myscript.src = 'http://caniuse.com/jsonp.php?callback=caniusecb';
7
+
8
+ setTimeout(function(){
9
+ ref.parentNode.insertBefore(myscript, ref);
10
+ }, 100);
11
+
12
+ // mapping Modernizr terms over to caniuse terms
13
+ var map = {
14
+ audio : 'audio',
15
+ borderimage : 'border-image',
16
+ borderradius : 'border-radius',
17
+ canvas : 'canvas',
18
+ canvastext : 'canvas-text',
19
+ cssanimations : 'css-animation',
20
+ boxshadow : 'css-boxshadow',
21
+ cssgradients : 'css-gradients',
22
+ opacity : 'css-opacity',
23
+ cssreflections : 'css-reflections',
24
+ textshadow : 'css-textshadow',
25
+ csstransitions : 'css-transitions',
26
+ hsla : 'css3-colors',
27
+ rgba : 'css3-colors',
28
+ draganddrop : 'dragndrop',
29
+ flexbox : 'flexbox',
30
+ fontface : 'fontface',
31
+ geolocation : 'geolocation',
32
+ hashchange : 'hashchange',
33
+ history : 'history',
34
+ indexeddb : 'indexeddb',
35
+ multiplebgs : 'multibackgrounds',
36
+ csscolumns : 'multicolumn',
37
+ localstorage : 'namevalue-storage',
38
+ applicationcache : 'offline-apps',
39
+ websqldatabase : 'sql-storage',
40
+ svg : 'svg',
41
+ touch : 'touch',
42
+ csstransforms : 'transforms2d',
43
+ csstransforms3d : 'transforms3d',
44
+ video: 'video',
45
+ webgl: 'webgl',
46
+ websockets : 'websockets',
47
+ webworkers : 'webworkers',
48
+ postmessage : 'x-doc-messaging'
49
+ };
50
+
51
+ window.caniusecb = function(scriptdata) {
52
+
53
+ window.doo = scriptdata;
54
+
55
+ // quit if JSONSelect didn't make it.
56
+ if (!window.JSONSelect) return;
57
+
58
+ var testdata = scriptdata.data,
59
+
60
+ // parse the current UA with uaparser
61
+ ua = uaparse(navigator.userAgent),
62
+
63
+ // match the UA from uaparser into the browser used by caniuse
64
+ browserKey = JSONSelect.match('.agents .browser', scriptdata).indexOf(ua.family),
65
+ currBrowser = Object.keys(scriptdata.agents)[browserKey];
66
+
67
+ // So Phantom doesn't kill the caniuse.com matching exit out as it's useless anyway within PhantomJS
68
+ if(navigator.userAgent.indexOf("PhantomJS") != -1) {
69
+ return;
70
+ }
71
+
72
+ // translate 'y' 'n' or 'a' into a boolean that Modernizr uses
73
+ function bool(ciuresult){
74
+ if (ciuresult == 'y' || ciuresult == 'a') return true;
75
+ // 'p' is for polyfill
76
+ if (ciuresult == 'n' || ciuresult == 'p') return false;
77
+ throw 'unknown return value from can i use';
78
+ }
79
+
80
+ function testify(o){
81
+
82
+ var ciubool = bool(o.ciuresult);
83
+
84
+ // caniuse says audio/video are yes/no, Modernizr has more detail which we'll dumb down.
85
+ if (~TEST.audvid.indexOf(o.feature))
86
+ o.result = !!o.result;
87
+
88
+ // if caniuse gave us a 'partial', lets let it pass with a note.
89
+ if (o.ciuresult == 'a'){
90
+ return ok(true,
91
+ o.browser + o.version + ': Caniuse reported partial support for ' + o.ciufeature +
92
+ '. So.. Modernizr\'s ' + o.result + ' is good enough...'
93
+ );
94
+ }
95
+
96
+
97
+ // change the *documented* false positives
98
+ if ((o.feature == 'textshadow' && o.browser == 'firefox' && o.version == 3)
99
+ && ciubool == false
100
+ ) {
101
+ ciubool = o.fp = true;
102
+ }
103
+
104
+ // where we actually do most our assertions
105
+ equal(o.result, ciubool,
106
+ o.browser + o.version + ': Caniuse result for ' + o.ciufeature +
107
+ ' matches Modernizr\'s ' + (o.fp ? '*false positive*' : 'result') + ' for ' + o.feature
108
+ );
109
+ }
110
+
111
+
112
+ module('caniuse.com data matches', {
113
+ setup:function() {
114
+ },
115
+ teardown:function() {
116
+ }
117
+ });
118
+
119
+
120
+ test("we match caniuse data", function() {
121
+
122
+ for (var feature in Modernizr){
123
+
124
+ var ciufeatname = map[feature];
125
+
126
+ if (ciufeatname === undefined) continue;
127
+
128
+ var ciufeatdata = testdata[ciufeatname];
129
+
130
+ if (ciufeatdata === undefined) throw 'unknown key of caniusedata';
131
+
132
+ // get results for this feature for all versions of this browser
133
+ var browserResults = ciufeatdata.stats[currBrowser];
134
+
135
+ // let's get our versions in order..
136
+ var minorver = ua.minor && // caniuse doesn't use two digit minors
137
+ ua.minor.toString().replace(/(\d)\d$/,'$1'), // but opera does.
138
+
139
+ majorminor = (ua.major + '.' + minorver)
140
+ // opera gets grouped in some cases by caniuse
141
+ .replace(/(9\.(6|5))/ , ua.family == 'opera' ? '9.5-9.6' : "$1")
142
+ .replace(/(10\.(0|1))/, ua.family == 'opera' ? '10.0-10.1' : "$1"),
143
+
144
+ mmResult = browserResults[majorminor],
145
+ mResult = browserResults[ua.major];
146
+
147
+
148
+ // check it against the major.minor: eg. FF 3.6
149
+ if (mmResult && mmResult != 'u'){ // 'y' 'n' or 'a'
150
+
151
+ // data ends w/ ` x` if its still prefixed in the imp
152
+ mmResult = mmResult.replace(' x','');
153
+
154
+ // match it against our data.
155
+ testify({ feature : feature
156
+ , ciufeature : ciufeatname
157
+ , result : Modernizr[feature]
158
+ , ciuresult : mmResult
159
+ , browser : currBrowser
160
+ , version : majorminor
161
+ });
162
+
163
+ continue; // don't check the major version
164
+ }
165
+
166
+ // check it against just the major version: eg. FF 3
167
+ if (mResult){
168
+
169
+ // unknown support from caniuse... He would probably like to know our data, though!
170
+ if (mResult == 'u') continue;
171
+
172
+ // data ends w/ ` x` if its still prefixed in the imp
173
+ mResult = mResult.replace(' x','');
174
+
175
+ testify({ feature : feature
176
+ , ciufeature : ciufeatname
177
+ , result : Modernizr[feature]
178
+ , ciuresult : mResult
179
+ , browser : currBrowser
180
+ , version : ua.major
181
+ });
182
+
183
+
184
+ }
185
+
186
+ } // for in loop
187
+
188
+ }); // eo test()
189
+
190
+
191
+ }; // eo caniusecallback()
@@ -0,0 +1,669 @@
1
+ QUnit.begin = function() {
2
+ console.log("Starting test suite");
3
+ console.log("================================================\n");
4
+ };
5
+
6
+ QUnit.moduleDone = function(opts) {
7
+ if(opts.failed === 0) {
8
+ console.log("\u2714 All tests passed in '"+opts.name+"' module");
9
+ } else {
10
+ console.log("\u2716 "+ opts.failed +" tests failed in '"+opts.name+"' module");
11
+ }
12
+ };
13
+
14
+ QUnit.done = function(opts) {
15
+ console.log("\n================================================");
16
+ console.log("Tests completed in "+opts.runtime+" milliseconds");
17
+ console.log(opts.passed + " tests of "+opts.total+" passed, "+opts.failed+" failed.");
18
+ };
19
+
20
+ module('Basics', {
21
+ setup:function() {
22
+ },
23
+ teardown:function() {
24
+ }
25
+ });
26
+
27
+ test("globals set up", function() {
28
+
29
+ ok(window.Modernizr, 'global modernizr object created');
30
+
31
+ });
32
+
33
+ test("bind is implemented", function() {
34
+
35
+ ok(Function.prototype.bind, 'bind is a member of Function.prototype');
36
+
37
+ var a = function(){
38
+ return this.modernizr;
39
+ };
40
+ a = a.bind({modernizr: 'just awsome'});
41
+
42
+ equal("just awsome", a(), 'bind works as expected');
43
+
44
+
45
+ // thank you webkit layoutTests
46
+
47
+
48
+ var result;
49
+
50
+ function F(x, y)
51
+ {
52
+ result = this + " -> x:" + x + ", y:" + y;
53
+ }
54
+
55
+ G = F.bind("'a'", "'b'");
56
+ H = G.bind("'Cannot rebind this!'", "'c'");
57
+
58
+ G(1,2);
59
+ equal(result, "\'a\' -> x:\'b\', y:1");
60
+ H(1,2);
61
+ equal(result, "\'a\' -> x:\'b\', y:\'c\'");
62
+
63
+ var f = new F(1,2);
64
+ equal(result, "[object Object] -> x:1, y:2");
65
+ var g = new G(1,2);
66
+ equal(result, "[object Object] -> x:\'b\', y:1");
67
+ var h = new H(1,2);
68
+ equal(result, "[object Object] -> x:\'b\', y:\'c\'");
69
+
70
+ ok(f instanceof F, "f instanceof F");
71
+ ok(g instanceof F, "g instanceof F");
72
+ ok(h instanceof F, "h instanceof F");
73
+
74
+ // Bound functions don't have a 'prototype' property.
75
+ ok("prototype" in F, '"prototype" in F');
76
+
77
+ // The object passed to bind as 'this' must be callable.
78
+ raises(function(){
79
+ Function.bind.call(undefined);
80
+ });
81
+
82
+ // Objects that allow call but not construct can be bound, but should throw if used with new.
83
+ var abcAt = String.prototype.charAt.bind("abc");
84
+ equal(abcAt(1), "b", 'Objects that allow call but not construct can be bound...');
85
+
86
+ equal(1, Function.bind.length, 'it exists');
87
+
88
+
89
+ });
90
+
91
+
92
+
93
+ test("document.documentElement is valid and correct",1, function() {
94
+ equal(document.documentElement,document.getElementsByTagName('html')[0]);
95
+ });
96
+
97
+
98
+ test("no-js class is gone.", function() {
99
+
100
+ ok(!/(?:^|\s)no-js(?:^|\s)/.test(document.documentElement.className),
101
+ 'no-js class is gone');
102
+
103
+ ok(/(?:^|\s)js(?:^|\s)/.test(document.documentElement.className),
104
+ 'html.js class is present');
105
+
106
+ ok(/(?:^|\s)\+no-js(?:\s|$)/.test(document.documentElement.className),
107
+ 'html.+no-js class is still present');
108
+
109
+ ok(/(?:^|\s)no-js-(?:\s|$)/.test(document.documentElement.className),
110
+ 'html.no-js- class is still present');
111
+
112
+ ok(/(?:^|\s)i-has-no-js(?:\s|$)/.test(document.documentElement.className),
113
+ 'html.i-has-no-js class is still present');
114
+
115
+ if (document.querySelector){
116
+ ok(document.querySelector('html.js') == document.documentElement,
117
+ "document.querySelector('html.js') matches.");
118
+ }
119
+ });
120
+
121
+ test('html shim worked', function(){
122
+ expect(2);
123
+
124
+ // the exact test we use in the script
125
+ var elem = document.getElementsByTagName("section")[0];
126
+ elem.id = "html5section";
127
+
128
+ ok( elem.childNodes.length === 1 , 'unknown elements dont collapse');
129
+
130
+ elem.style.color = 'red';
131
+ ok( /red|#ff0000/i.test(elem.style.color), 'unknown elements are styleable')
132
+
133
+ });
134
+
135
+
136
+ module('Modernizr classes and bools', {
137
+ setup:function() {
138
+ },
139
+ teardown:function() {
140
+ }
141
+ });
142
+
143
+
144
+ test('html classes are looking good',function(){
145
+
146
+ var classes = TEST.trim(document.documentElement.className).split(/\s+/);
147
+
148
+ var modprops = Object.keys(Modernizr),
149
+ newprops = modprops;
150
+
151
+ // decrement for the properties that are private
152
+ for (var i = -1, len = TEST.privates.length; ++i < len; ){
153
+ var item = TEST.privates[i];
154
+ equal(-1, TEST.inArray(item, classes), 'private Modernizr object '+ item +'should not have matching classes');
155
+ equal(-1, TEST.inArray('no-' + item, classes), 'private Modernizr object no-'+item+' should not have matching classes');
156
+ }
157
+
158
+ // decrement for the non-boolean objects
159
+ // for (var i = -1, len = TEST.inputs.length; ++i < len; ){
160
+ // if (Modernizr[TEST.inputs[i]] != undefined) newprops--;
161
+ // }
162
+
163
+ // TODO decrement for the extraclasses
164
+
165
+ // decrement for deprecated ones.
166
+ $.each( TEST.deprecated, function(key, val){
167
+ newprops.splice( TEST.inArray(item, newprops), 1);
168
+ });
169
+
170
+
171
+ //equal(classes,newprops,'equal number of classes and global object props');
172
+
173
+ if (classes.length !== newprops){
174
+ //window.console && console.log(classes, newprops);
175
+
176
+ }
177
+
178
+ for (var i = 0, len = classes.length, aclass; i <len; i++){
179
+ aclass = classes[i];
180
+
181
+ // Skip js related classes.
182
+ if (/^(?:js|\+no-js|no-js-|i-has-no-js)$/.test(aclass)) continue;
183
+
184
+ if (aclass.indexOf('no-') === 0){
185
+ aclass = aclass.replace('no-','');
186
+
187
+ equal(Modernizr[aclass], false,
188
+ aclass + ' is correctly false in the classes and object')
189
+
190
+ } else {
191
+ equal(Modernizr[aclass], true,
192
+ aclass + ' is correctly true in the classes and object')
193
+ }
194
+ }
195
+
196
+
197
+ for (var i = 0, len = classes.length, aclass; i <len; i++){
198
+ equal(classes[i],classes[i].toLowerCase(),'all classes are lowerCase.');
199
+ }
200
+
201
+ // Remove fake no-js classes before test.
202
+ var docElClass = document.documentElement.className;
203
+ $.each(['\\+no-js', 'no-js-', 'i-has-no-js'], function(i, fakeClass) {
204
+ docElClass = docElClass.replace(new RegExp('(^|\\s)' + fakeClass + '(\\s|$)', 'g'), '$1$2');
205
+ });
206
+ equal(/[^\s]no-/.test(docElClass), false, 'whitespace between all classes.');
207
+
208
+
209
+ })
210
+
211
+
212
+ test('Modernizr properties are looking good',function(){
213
+
214
+ var count = 0,
215
+ nobool = TEST.API.concat(TEST.inputs)
216
+ .concat(TEST.audvid)
217
+ .concat(TEST.privates)
218
+ .concat(['textarea']); // due to forms-placeholder.js test
219
+
220
+ for (var prop in window.Modernizr){
221
+ if (Modernizr.hasOwnProperty(prop)){
222
+
223
+ if (TEST.inArray(prop,nobool) >= 0) continue;
224
+
225
+ ok(Modernizr[prop] === true || Modernizr[prop] === false,
226
+ 'Modernizr.'+prop+' is a straight up boolean');
227
+
228
+
229
+ equal(prop,prop.toLowerCase(),'all properties are lowerCase.')
230
+ }
231
+ }
232
+ })
233
+
234
+
235
+
236
+ test('Modernizr.audio and Modernizr.video',function(){
237
+
238
+ for (var i = -1, len = TEST.audvid.length; ++i < len;){
239
+ var prop = TEST.audvid[i];
240
+
241
+ if (Modernizr[prop].toString() == 'true'){
242
+
243
+ ok(Modernizr[prop], 'Modernizr.'+prop+' is truthy.');
244
+ equal(Modernizr[prop] == true,true, 'Modernizr.'+prop+' is == true')
245
+ equal(typeof Modernizr[prop] === 'object',true,'Moderizr.'+prop+' is truly an object');
246
+ equal(Modernizr[prop] !== true,true, 'Modernizr.'+prop+' is !== true')
247
+
248
+ } else {
249
+
250
+ equal(Modernizr[prop] != true,true, 'Modernizr.'+prop+' is != true')
251
+ }
252
+ }
253
+
254
+
255
+ });
256
+
257
+
258
+ test('Modernizr results match expected values',function(){
259
+
260
+ // i'm bringing over a few tests from inside Modernizr.js
261
+ equal(!!document.createElement('canvas').getContext,Modernizr.canvas,'canvas test consistent');
262
+
263
+ equal(!!window.Worker,Modernizr.webworkers,'web workers test consistent')
264
+
265
+ });
266
+
267
+
268
+
269
+ module('Modernizr\'s API methods', {
270
+ setup:function() {
271
+ },
272
+ teardown:function() {
273
+ }
274
+ });
275
+
276
+ test('Modernizr.addTest()',22,function(){
277
+
278
+ var docEl = document.documentElement;
279
+
280
+
281
+ Modernizr.addTest('testtrue',function(){
282
+ return true;
283
+ });
284
+
285
+ Modernizr.addTest('testtruthy',function(){
286
+ return 100;
287
+ });
288
+
289
+ Modernizr.addTest('testfalse',function(){
290
+ return false;
291
+ });
292
+
293
+ Modernizr.addTest('testfalsy',function(){
294
+ return undefined;
295
+ });
296
+
297
+ ok(docEl.className.indexOf(' testtrue') >= 0,'positive class added');
298
+ equal(Modernizr.testtrue,true,'positive prop added');
299
+
300
+ ok(docEl.className.indexOf(' testtruthy') >= 0,'positive class added');
301
+ equal(Modernizr.testtruthy,100,'truthy value is not casted to straight boolean');
302
+
303
+ ok(docEl.className.indexOf(' no-testfalse') >= 0,'negative class added');
304
+ equal(Modernizr.testfalse,false,'negative prop added');
305
+
306
+ ok(docEl.className.indexOf(' no-testfalsy') >= 0,'negative class added');
307
+ equal(Modernizr.testfalsy,undefined,'falsy value is not casted to straight boolean');
308
+
309
+
310
+
311
+ Modernizr.addTest('testcamelCase',function(){
312
+ return true;
313
+ });
314
+
315
+ ok(docEl.className.indexOf(' testcamelCase') === -1,
316
+ 'camelCase test name toLowerCase()\'d');
317
+
318
+
319
+ // okay new signature for this API! woo
320
+
321
+ Modernizr.addTest('testboolfalse', false);
322
+
323
+ ok(~docEl.className.indexOf(' no-testboolfalse'), 'Modernizr.addTest(feature, bool): negative class added');
324
+ equal(Modernizr.testboolfalse, false, 'Modernizr.addTest(feature, bool): negative prop added');
325
+
326
+
327
+
328
+ Modernizr.addTest('testbooltrue', true);
329
+
330
+ ok(~docEl.className.indexOf(' testbooltrue'), 'Modernizr.addTest(feature, bool): positive class added');
331
+ equal(Modernizr.testbooltrue, true, 'Modernizr.addTest(feature, bool): positive prop added');
332
+
333
+
334
+
335
+ Modernizr.addTest({'testobjboolfalse': false,
336
+ 'testobjbooltrue' : true });
337
+
338
+ ok(~docEl.className.indexOf(' no-testobjboolfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
339
+ equal(Modernizr.testobjboolfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
340
+
341
+ ok(~docEl.className.indexOf(' testobjbooltrue'), 'Modernizr.addTest({feature: bool}): positive class added');
342
+ equal(Modernizr.testobjbooltrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
343
+
344
+
345
+
346
+
347
+ Modernizr.addTest({'testobjfnfalse': function(){ return false },
348
+ 'testobjfntrue' : function(){ return true } });
349
+
350
+
351
+ ok(~docEl.className.indexOf(' no-testobjfnfalse'), 'Modernizr.addTest({feature: bool}): negative class added');
352
+ equal(Modernizr.testobjfnfalse, false, 'Modernizr.addTest({feature: bool}): negative prop added');
353
+
354
+ ok(~docEl.className.indexOf(' testobjfntrue'), 'Modernizr.addTest({feature: bool}): positive class added');
355
+ equal(Modernizr.testobjfntrue, true, 'Modernizr.addTest({feature: bool}): positive prop added');
356
+
357
+
358
+ Modernizr
359
+ .addTest('testchainone', true)
360
+ .addTest({ testchaintwo: true })
361
+ .addTest('testchainthree', function(){ return true; });
362
+
363
+ ok( Modernizr.testchainone == Modernizr.testchaintwo == Modernizr.testchainthree, 'addTest is chainable');
364
+
365
+
366
+ }); // eo addTest
367
+
368
+
369
+
370
+
371
+
372
+ test('Modernizr.mq: media query testing',function(){
373
+
374
+ var $html = $('html');
375
+ $.mobile = {};
376
+
377
+ // from jquery mobile
378
+
379
+ $.mobile.media = (function() {
380
+ // TODO: use window.matchMedia once at least one UA implements it
381
+ var cache = {},
382
+ testDiv = $( "<div id='jquery-mediatest'>" ),
383
+ fakeBody = $( "<body>" ).append( testDiv );
384
+
385
+ return function( query ) {
386
+ if ( !( query in cache ) ) {
387
+ var styleBlock = document.createElement('style'),
388
+ cssrule = "@media " + query + " { #jquery-mediatest { position:absolute; } }";
389
+ //must set type for IE!
390
+ styleBlock.type = "text/css";
391
+ if (styleBlock.styleSheet){
392
+ styleBlock.styleSheet.cssText = cssrule;
393
+ }
394
+ else {
395
+ styleBlock.appendChild(document.createTextNode(cssrule));
396
+ }
397
+
398
+ $html.prepend( fakeBody ).prepend( styleBlock );
399
+ cache[ query ] = testDiv.css( "position" ) === "absolute";
400
+ fakeBody.add( styleBlock ).remove();
401
+ }
402
+ return cache[ query ];
403
+ };
404
+ })();
405
+
406
+
407
+ ok(Modernizr.mq,'Modernizr.mq() doesn\' freak out.');
408
+
409
+ equal($.mobile.media('only screen'), Modernizr.mq('only screen'),'screen media query matches jQuery mobile\'s result');
410
+
411
+ equal(Modernizr.mq('only all'), Modernizr.mq('only all'), 'Cache hit matches');
412
+
413
+
414
+ });
415
+
416
+
417
+
418
+
419
+ test('Modernizr.hasEvent()',function(){
420
+
421
+ ok(typeof Modernizr.hasEvent == 'function','Modernizr.hasEvent() is a function');
422
+
423
+
424
+ equal(Modernizr.hasEvent('click'), true,'click event is supported');
425
+
426
+ equal(Modernizr.hasEvent('modernizrcustomevent'), false,'random event is definitely not supported');
427
+
428
+ /* works fine in webkit but not gecko
429
+ equal( Modernizr.hasEvent('resize', window),
430
+ !Modernizr.hasEvent('resize', document.createElement('div')),
431
+ 'Resize is supported in window but not a div, typically...');
432
+ */
433
+
434
+ });
435
+
436
+
437
+
438
+
439
+
440
+ test('Modernizr.testStyles()',function(){
441
+
442
+ equal(typeof Modernizr.testStyles, 'function','Modernizr.testStyles() is a function');
443
+
444
+ var style = '#modernizr{ width: 9px; height: 4px; font-size: 0; color: papayawhip; }';
445
+
446
+ Modernizr.testStyles(style, function(elem, rule){
447
+ equal(style, rule, 'rule passsed back matches what i gave it.')
448
+ equal(elem.offsetWidth, 9, 'width was set through the style');
449
+ equal(elem.offsetHeight, 4, 'height was set through the style');
450
+ equal(elem.id, 'modernizr', 'element is indeed the modernizr element');
451
+ });
452
+
453
+ });
454
+
455
+
456
+ test('Modernizr._[properties]',function(){
457
+
458
+ equal(6, Modernizr._prefixes.length, 'Modernizr._prefixes has 6 items');
459
+
460
+ equal(4, Modernizr._domPrefixes.length, 'Modernizr.domPrefixes has 4 items');
461
+
462
+ });
463
+
464
+ test('Modernizr.testProp()',function(){
465
+
466
+ equal(true, Modernizr.testProp('margin'), 'Everyone supports margin');
467
+
468
+ equal(false, Modernizr.testProp('happiness'), 'Nobody supports the happiness style. :(');
469
+ equal(true, Modernizr.testProp('fontSize'), 'Everyone supports fontSize');
470
+ equal(false, Modernizr.testProp('font-size'), 'Nobody supports font-size');
471
+
472
+ equal('pointerEvents' in document.createElement('div').style,
473
+ Modernizr.testProp('pointerEvents'),
474
+ 'results for `pointer-events` are consistent with a homegrown feature test');
475
+
476
+ });
477
+
478
+
479
+
480
+ test('Modernizr.testAllProps()',function(){
481
+
482
+ equal(true, Modernizr.testAllProps('margin'), 'Everyone supports margin');
483
+
484
+ equal(false, Modernizr.testAllProps('happiness'), 'Nobody supports the happiness style. :(');
485
+ equal(true, Modernizr.testAllProps('fontSize'), 'Everyone supports fontSize');
486
+ equal(false, Modernizr.testAllProps('font-size'), 'Nobody supports font-size');
487
+
488
+ equal(Modernizr.csstransitions, Modernizr.testAllProps('transition'), 'Modernizr result matches API result: csstransitions');
489
+
490
+ equal(Modernizr.csscolumns, Modernizr.testAllProps('columnCount'), 'Modernizr result matches API result: csscolumns')
491
+
492
+ });
493
+
494
+
495
+
496
+
497
+
498
+
499
+ test('Modernizr.prefixed() - css and DOM resolving', function(){
500
+ // https://gist.github.com/523692
501
+
502
+ function gimmePrefix(prop, obj){
503
+ var prefixes = ['Moz','Khtml','Webkit','O','ms'],
504
+ domPrefixes = ['moz','khtml','webkit','o','ms'],
505
+ elem = document.createElement('div'),
506
+ upper = prop.charAt(0).toUpperCase() + prop.slice(1);
507
+
508
+ if(!obj) {
509
+ if (prop in elem.style)
510
+ return prop;
511
+
512
+ for (var len = prefixes.length; len--; ){
513
+ if ((prefixes[len] + upper) in elem.style)
514
+ return (prefixes[len] + upper);
515
+ }
516
+ } else {
517
+ if (prop in obj)
518
+ return prop;
519
+
520
+ for (var len = domPrefixes.length; len--; ){
521
+ if ((domPrefixes[len] + upper) in obj)
522
+ return (domPrefixes[len] + upper);
523
+ }
524
+ }
525
+
526
+
527
+ return false;
528
+ }
529
+
530
+ var propArr = ['transition', 'backgroundSize', 'boxSizing', 'borderImage',
531
+ 'borderRadius', 'boxShadow', 'columnCount'];
532
+
533
+ var domPropArr = [{ 'prop': 'requestAnimationFrame', 'obj': window },
534
+ { 'prop': 'querySelectorAll', 'obj': document },
535
+ { 'prop': 'matchesSelector', 'obj': document.createElement('div') }];
536
+
537
+ for (var i = -1, len = propArr.length; ++i < len; ){
538
+ var prop = propArr[i];
539
+ equal(Modernizr.prefixed(prop), gimmePrefix(prop), 'results for ' + prop + ' match the homebaked prefix finder');
540
+ }
541
+
542
+ for (var i = -1, len = domPropArr.length; ++i < len; ){
543
+ var prop = domPropArr[i];
544
+ ok(!!~Modernizr.prefixed(prop.prop, prop.obj, false).toString().indexOf(gimmePrefix(prop.prop, prop.obj)), 'results for ' + prop.prop + ' match the homebaked prefix finder');
545
+ }
546
+
547
+
548
+
549
+
550
+ });
551
+
552
+
553
+ // FIXME: so a few of these are whitelisting for webkit. i'd like to improve that.
554
+ test('Modernizr.prefixed autobind', function(){
555
+
556
+ var rAFName;
557
+
558
+ // quick sniff to find the local rAF prefixed name.
559
+ var vendors = ['ms', 'moz', 'webkit', 'o'];
560
+ for(var x = 0; x < vendors.length && !rAFName; ++x) {
561
+ rAFName = window[vendors[x]+'RequestAnimationFrame'] && vendors[x]+'RequestAnimationFrame';
562
+ }
563
+
564
+ if (rAFName){
565
+ // rAF returns a function
566
+ equal(
567
+ 'function',
568
+ typeof Modernizr.prefixed('requestAnimationFrame', window),
569
+ "Modernizr.prefixed('requestAnimationFrame', window) returns a function")
570
+
571
+ // unless we false it to a string
572
+ equal(
573
+ rAFName,
574
+ Modernizr.prefixed('requestAnimationFrame', window, false),
575
+ "Modernizr.prefixed('requestAnimationFrame', window, false) returns a string (the prop name)")
576
+
577
+ }
578
+
579
+ if (document.body.webkitMatchesSelector || document.body.mozMatchesSelector){
580
+
581
+ var fn = Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body);
582
+
583
+ //returns function
584
+ equal(
585
+ 'function',
586
+ typeof fn,
587
+ "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) returns a function");
588
+
589
+ // fn scoping
590
+ equal(
591
+ true,
592
+ fn('body'),
593
+ "Modernizr.prefixed('matchesSelector', HTMLElement.prototype, document.body) is scoped to the body")
594
+
595
+ }
596
+
597
+ // Webkit only: are there other objects that are prefixed?
598
+ if (window.webkitNotifications){
599
+ // should be an object.
600
+
601
+ equal(
602
+ 'object',
603
+ typeof Modernizr.prefixed('Notifications', window),
604
+ "Modernizr.prefixed('Notifications') returns an object");
605
+
606
+ }
607
+
608
+ // Webkit only:
609
+ if (typeof document.webkitIsFullScreen !== 'undefined'){
610
+ // boolean
611
+
612
+ equal(
613
+ 'boolean',
614
+ typeof Modernizr.prefixed('isFullScreen', document),
615
+ "Modernizr.prefixed('isFullScreen') returns a boolean");
616
+ }
617
+
618
+
619
+
620
+ // Moz only:
621
+ if (typeof document.mozFullScreen !== 'undefined'){
622
+ // boolean
623
+
624
+ equal(
625
+ 'boolean',
626
+ typeof Modernizr.prefixed('fullScreen', document),
627
+ "Modernizr.prefixed('fullScreen') returns a boolean");
628
+ }
629
+
630
+
631
+ // Webkit-only.. takes advantage of Webkit's mixed case of prefixes
632
+ if (document.body.style.WebkitAnimation){
633
+ // string
634
+
635
+ equal(
636
+ 'string',
637
+ typeof Modernizr.prefixed('animation', document.body.style),
638
+ "Modernizr.prefixed('animation', document.body.style) returns value of that, as a string");
639
+
640
+ equal(
641
+ animationStyle.toLowerCase(),
642
+ Modernizr.prefixed('animation', document.body.style, false).toLowerCase(),
643
+ "Modernizr.prefixed('animation', document.body.style, false) returns the (case-normalized) name of the property: webkitanimation");
644
+
645
+ }
646
+
647
+ equal(
648
+ false,
649
+ Modernizr.prefixed('doSomethingAmazing$#$', window),
650
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj) returns false");
651
+
652
+ equal(
653
+ false,
654
+ Modernizr.prefixed('doSomethingAmazing$#$', window, document.body),
655
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, scope) returns false");
656
+
657
+
658
+ equal(
659
+ false,
660
+ Modernizr.prefixed('doSomethingAmazing$#$', window, false),
661
+ "Modernizr.prefixed('doSomethingAmazing$#$', window) : Gobbledygook with prefixed(str,obj, false) returns false");
662
+
663
+
664
+ });
665
+
666
+
667
+
668
+
669
+