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,17 @@
1
+ {
2
+ "name": "jquery-placeholder",
3
+ "version": "2.0.8",
4
+ "main": [
5
+ "jquery.placeholder.js"
6
+ ],
7
+ "homepage": "https://github.com/mathiasbynens/jquery-placeholder",
8
+ "_release": "2.0.8",
9
+ "_resolution": {
10
+ "type": "version",
11
+ "tag": "v2.0.8",
12
+ "commit": "051f21ef5279f4887d9caf6af7af211d933ba670"
13
+ },
14
+ "_source": "git://github.com/mathiasbynens/jquery-placeholder.git",
15
+ "_target": "~2.0.7",
16
+ "_originalSource": "jquery-placeholder"
17
+ }
@@ -0,0 +1,20 @@
1
+ Copyright Mathias Bynens <http://mathiasbynens.be/>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,76 @@
1
+ # HTML5 Placeholder jQuery Plugin
2
+
3
+ ## Demo & Examples
4
+
5
+ [http://mathiasbynens.be/demo/placeholder](http://mathiasbynens.be/demo/placeholder)
6
+
7
+ ## Example Usage
8
+
9
+ ### HTML
10
+
11
+ ```html
12
+ <input type="text" name="name" placeholder="e.g. John Doe">
13
+ <input type="email" name="email" placeholder="e.g. address@example.ext">
14
+ <input type="url" name="url" placeholder="e.g. http://mathiasbynens.be/">
15
+ <input type="tel" name="tel" placeholder="e.g. +32 472 77 69 88">
16
+ <input type="password" name="password" placeholder="e.g. h4x0rpr00fz">
17
+ <input type="search" name="search" placeholder="Search this site…">
18
+ <textarea name="message" placeholder="Your message goes here"></textarea>
19
+ ```
20
+
21
+ ### jQuery
22
+
23
+ Use the plugin as follows:
24
+
25
+ ```js
26
+ $('input, textarea').placeholder();
27
+ ```
28
+
29
+ You’ll still be able to use `jQuery#val()` to get and set the input values. If the element is currently showing a placeholder, `.val()` will return an empty string instead of the placeholder text, just like it does in browsers with a native `@placeholder` implementation. Calling `.val('')` to set an element’s value to the empty string will result in the placeholder text (re)appearing.
30
+
31
+ ### CSS
32
+
33
+ The plugin automatically adds `class="placeholder"` to the elements who are currently showing their placeholder text. You can use this to style placeholder text differently:
34
+
35
+ ```css
36
+ input, textarea { color: #000; }
37
+ .placeholder { color: #aaa; }
38
+ ```
39
+
40
+ I’d suggest sticking to the `#aaa` color for placeholder text, as it’s the default in most browsers that support `@placeholder`. If you really want to, though, you can [style the placeholder text in some of the browsers that natively support it](http://stackoverflow.com/questions/2610497/change-an-inputs-html5-placeholder-color-with-css/2610741#2610741).
41
+
42
+ ## Installation
43
+
44
+ You can install jquery-placeholder by using [Bower](http://bower.io).
45
+
46
+ ```bash
47
+ bower install jquery-placeholder
48
+ ```
49
+
50
+ ## Notes
51
+
52
+ * Requires jQuery 1.6+. For an older version of this plugin that works under jQuery 1.4.2+, see [v1.8.7](https://github.com/mathiasbynens/jquery-placeholder/tree/v1.8.7).
53
+ * Works in all A-grade browsers, including IE6.
54
+ * Automatically checks if the browser natively supports the HTML5 `placeholder` attribute for `input` and `textarea` elements. If this is the case, the plugin won’t do anything. If `@placeholder` is only supported for `input` elements, the plugin will leave those alone and apply to `textarea`s exclusively. (This is the case for Safari 4, Opera 11.00, and possibly other browsers.)
55
+ * Caches the results of its two feature tests in `jQuery.fn.placeholder.input` and `jQuery.fn.placeholder.textarea`. For example, if `@placeholder` is natively supported for `input` elements, `jQuery.fn.placeholder.input` will be `true`. After loading the plugin, you can re-use these properties in your own code.
56
+ * Makes sure it never causes duplicate IDs in your DOM, even in browsers that need an extra `input` element to fake `@placeholder` for password inputs. This means you can safely do stuff like:
57
+
58
+ ```html
59
+ <label for="bar">Example label</label>
60
+ <input type="password" placeholder="foo" id="bar">
61
+ ```
62
+
63
+ And the `<label>` will always point to the `<input>` element you’d expect. Also, all CSS styles based on the ID will just work™.
64
+
65
+ ## License
66
+
67
+ This plugin is available under [the MIT license](http://mths.be/mit).
68
+
69
+ ## Thanks to…
70
+
71
+ * [Paul Irish](http://paulirish.com/) for his inspiring snippet in [jQuery 1.4 Hawtness #1](http://jquery14.com/day-05/jquery-1-4-hawtness-1-with-paul-irish)
72
+ * everyone from [#jquery](http://webchat.freenode.net/?channels=jquery) for the tips, ideas and patches
73
+ * temp01 for his major contributions
74
+ * anyone who [contributed a patch](https://github.com/mathiasbynens/jquery-placeholder/contributors) or [made a helpful suggestion](https://github.com/mathiasbynens/jquery-placeholder/issues)
75
+
76
+ _– [Mathias](http://mathiasbynens.be/)_
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "jquery-placeholder",
3
+ "version": "2.0.8",
4
+ "main": ["jquery.placeholder.js"]
5
+ }
@@ -0,0 +1,55 @@
1
+ <!DOCTYPE html>
2
+ <!-- If you’re looking for the online demo, it’s here: http://mathiasbynens.be/demo/placeholder -->
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <title>HTML5 placeholder jQuery Plugin</title>
7
+ <style>
8
+ body, input, textarea { font: 1em/1.4 Helvetica, Arial; }
9
+ label code { cursor: pointer; float: left; width: 150px; }
10
+ input { width: 14em; }
11
+ textarea { height: 5em; width: 20em; }
12
+ .placeholder { color: #aaa; }
13
+ .note { border: 1px solid orange; padding: 1em; background: #ffffe0; }
14
+ /* #p { background: lime; } */
15
+ </style>
16
+ </head>
17
+ <body>
18
+ <h1>HTML5 Placeholder jQuery Plugin</h1>
19
+ <p>Check out <a href="http://mths.be/placeholder">the HTML5 Placeholder jQuery Plugin project page on GitHub</a>.</p>
20
+ <pre><code>$(function() {<br> $('input, textarea').placeholder();<br>});</code></pre>
21
+ <form>
22
+ <p><label><code>type=search</code> <input type="search" name="search" placeholder="Search this site…"></label></p>
23
+ <p><label><code>type=text</code> <input type="text" name="name" placeholder="e.g. John Doe"></label></p>
24
+ <p><label><code>type=email</code> <input type="email" name="email" placeholder="e.g. address@example.ext"></label></p>
25
+ <p><label><code>type=url</code> <input type="url" name="url" placeholder="e.g. http://mathiasbynens.be/"></label></p>
26
+ <p><label><code>type=tel</code> <input type="tel" name="tel" placeholder="e.g. +32 472 77 69 88"></label></p>
27
+ <p><label for="p"><code>type=password</code> </label><input type="password" name="password" placeholder="e.g. hunter2" id="p"></p>
28
+ <p><label><code>textarea</code> <textarea name="message" placeholder="Your message goes here"></textarea></label></p>
29
+ <p><input type="submit" value="type=submit"></p>
30
+ </form>
31
+ <p>— <a href="http://mathiasbynens.be/" title="Mathias Bynens, front-end developer">Mathias</a></p>
32
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
33
+ <script src="jquery.placeholder.js"></script>
34
+ <script>
35
+ // To test the @id toggling on password inputs in browsers that don’t support changing an input’s @type dynamically (e.g. Firefox 3.6 or IE), uncomment this:
36
+ // $.fn.hide = function() { return this; }
37
+ // Then uncomment the last rule in the <style> element (in the <head>).
38
+ $(function() {
39
+ // Invoke the plugin
40
+ $('input, textarea').placeholder();
41
+ // That’s it, really.
42
+ // Now display a message if the browser supports placeholder natively
43
+ var html;
44
+ if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
45
+ html = '<strong>Your current browser natively supports <code>placeholder</code> for <code>input</code> and <code>textarea</code> elements.</strong> The plugin won’t run in this case, since it’s not needed. If you want to test the plugin, use an older browser ;)';
46
+ } else if ($.fn.placeholder.input) {
47
+ html = '<strong>Your current browser natively supports <code>placeholder</code> for <code>input</code> elements, but not for <code>textarea</code> elements.</strong> The plugin will only do its thang on the <code>textarea</code>s.';
48
+ }
49
+ if (html) {
50
+ $('<p class="note">' + html + '</p>').insertAfter('form');
51
+ }
52
+ });
53
+ </script>
54
+ </body>
55
+ </html>
@@ -0,0 +1,185 @@
1
+ /*! http://mths.be/placeholder v2.0.8 by @mathias */
2
+ ;(function(window, document, $) {
3
+
4
+ // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
5
+ var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
6
+ var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
7
+ var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
8
+ var prototype = $.fn;
9
+ var valHooks = $.valHooks;
10
+ var propHooks = $.propHooks;
11
+ var hooks;
12
+ var placeholder;
13
+
14
+ if (isInputSupported && isTextareaSupported) {
15
+
16
+ placeholder = prototype.placeholder = function() {
17
+ return this;
18
+ };
19
+
20
+ placeholder.input = placeholder.textarea = true;
21
+
22
+ } else {
23
+
24
+ placeholder = prototype.placeholder = function() {
25
+ var $this = this;
26
+ $this
27
+ .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
28
+ .not('.placeholder')
29
+ .bind({
30
+ 'focus.placeholder': clearPlaceholder,
31
+ 'blur.placeholder': setPlaceholder
32
+ })
33
+ .data('placeholder-enabled', true)
34
+ .trigger('blur.placeholder');
35
+ return $this;
36
+ };
37
+
38
+ placeholder.input = isInputSupported;
39
+ placeholder.textarea = isTextareaSupported;
40
+
41
+ hooks = {
42
+ 'get': function(element) {
43
+ var $element = $(element);
44
+
45
+ var $passwordInput = $element.data('placeholder-password');
46
+ if ($passwordInput) {
47
+ return $passwordInput[0].value;
48
+ }
49
+
50
+ return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
51
+ },
52
+ 'set': function(element, value) {
53
+ var $element = $(element);
54
+
55
+ var $passwordInput = $element.data('placeholder-password');
56
+ if ($passwordInput) {
57
+ return $passwordInput[0].value = value;
58
+ }
59
+
60
+ if (!$element.data('placeholder-enabled')) {
61
+ return element.value = value;
62
+ }
63
+ if (value == '') {
64
+ element.value = value;
65
+ // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
66
+ if (element != safeActiveElement()) {
67
+ // We can't use `triggerHandler` here because of dummy text/password inputs :(
68
+ setPlaceholder.call(element);
69
+ }
70
+ } else if ($element.hasClass('placeholder')) {
71
+ clearPlaceholder.call(element, true, value) || (element.value = value);
72
+ } else {
73
+ element.value = value;
74
+ }
75
+ // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
76
+ return $element;
77
+ }
78
+ };
79
+
80
+ if (!isInputSupported) {
81
+ valHooks.input = hooks;
82
+ propHooks.value = hooks;
83
+ }
84
+ if (!isTextareaSupported) {
85
+ valHooks.textarea = hooks;
86
+ propHooks.value = hooks;
87
+ }
88
+
89
+ $(function() {
90
+ // Look for forms
91
+ $(document).delegate('form', 'submit.placeholder', function() {
92
+ // Clear the placeholder values so they don't get submitted
93
+ var $inputs = $('.placeholder', this).each(clearPlaceholder);
94
+ setTimeout(function() {
95
+ $inputs.each(setPlaceholder);
96
+ }, 10);
97
+ });
98
+ });
99
+
100
+ // Clear placeholder values upon page reload
101
+ $(window).bind('beforeunload.placeholder', function() {
102
+ $('.placeholder').each(function() {
103
+ this.value = '';
104
+ });
105
+ });
106
+
107
+ }
108
+
109
+ function args(elem) {
110
+ // Return an object of element attributes
111
+ var newAttrs = {};
112
+ var rinlinejQuery = /^jQuery\d+$/;
113
+ $.each(elem.attributes, function(i, attr) {
114
+ if (attr.specified && !rinlinejQuery.test(attr.name)) {
115
+ newAttrs[attr.name] = attr.value;
116
+ }
117
+ });
118
+ return newAttrs;
119
+ }
120
+
121
+ function clearPlaceholder(event, value) {
122
+ var input = this;
123
+ var $input = $(input);
124
+ if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
125
+ if ($input.data('placeholder-password')) {
126
+ $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
127
+ // If `clearPlaceholder` was called from `$.valHooks.input.set`
128
+ if (event === true) {
129
+ return $input[0].value = value;
130
+ }
131
+ $input.focus();
132
+ } else {
133
+ input.value = '';
134
+ $input.removeClass('placeholder');
135
+ input == safeActiveElement() && input.select();
136
+ }
137
+ }
138
+ }
139
+
140
+ function setPlaceholder() {
141
+ var $replacement;
142
+ var input = this;
143
+ var $input = $(input);
144
+ var id = this.id;
145
+ if (input.value == '') {
146
+ if (input.type == 'password') {
147
+ if (!$input.data('placeholder-textinput')) {
148
+ try {
149
+ $replacement = $input.clone().attr({ 'type': 'text' });
150
+ } catch(e) {
151
+ $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
152
+ }
153
+ $replacement
154
+ .removeAttr('name')
155
+ .data({
156
+ 'placeholder-password': $input,
157
+ 'placeholder-id': id
158
+ })
159
+ .bind('focus.placeholder', clearPlaceholder);
160
+ $input
161
+ .data({
162
+ 'placeholder-textinput': $replacement,
163
+ 'placeholder-id': id
164
+ })
165
+ .before($replacement);
166
+ }
167
+ $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
168
+ // Note: `$input[0] != input` now!
169
+ }
170
+ $input.addClass('placeholder');
171
+ $input[0].value = $input.attr('placeholder');
172
+ } else {
173
+ $input.removeClass('placeholder');
174
+ }
175
+ }
176
+
177
+ function safeActiveElement() {
178
+ // Avoid IE9 `document.activeElement` of death
179
+ // https://github.com/mathiasbynens/jquery-placeholder/pull/99
180
+ try {
181
+ return document.activeElement;
182
+ } catch (exception) {}
183
+ }
184
+
185
+ }(this, document, jQuery));
@@ -0,0 +1,32 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>jquery-placeholder test suite</title>
6
+ <link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.12.0.css">
7
+ <style>
8
+ .placeholder { color: #aaa; }
9
+ #input-type-password { border: 5px solid lime; }
10
+ </style>
11
+ </head>
12
+ <body>
13
+ <div id="qunit"></div>
14
+ <div id="fixtures">
15
+ <!-- I explicitly want these to be visible in the page, for easier debugging. -->
16
+ <form>
17
+ <p><label><code>type=search</code> <input id="input-type-search" type="search" name="search" placeholder="Search this site..."></label></p>
18
+ <p><label><code>type=text</code> <input id="input-type-text" type="text" name="name" placeholder="e.g. John Doe"></label></p>
19
+ <p><label><code>type=email</code> <input id="input-type-email" type="email" name="email" placeholder="e.g. address@example.ext"></label></p>
20
+ <p><label><code>type=url</code> <input id="input-type-url" type="url" name="url" placeholder="e.g. http://mathiasbynens.be/"></label></p>
21
+ <p><label><code>type=tel</code> <input id="input-type-tel" type="tel" name="tel" placeholder="e.g. +32 472 77 69 88"></label></p>
22
+ <p><label for="input-type-password"><code>type=password</code> </label><input id="input-type-password" type="password" name="password" placeholder="e.g. hunter2"></p>
23
+ <p><label><code>textarea</code> <textarea id="textarea" name="message" placeholder="Your message goes here"></textarea></label></p>
24
+ <p><input type="submit" value="type=submit"></p>
25
+ </form>
26
+ </div>
27
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
28
+ <script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script>
29
+ <script src="../jquery.placeholder.js"></script>
30
+ <script src="tests.js"></script>
31
+ </body>
32
+ </html>
@@ -0,0 +1,134 @@
1
+ (function($) {
2
+
3
+ module('jQuery#placeholder');
4
+
5
+ test('caches results of feature tests', function() {
6
+ strictEqual(typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input');
7
+ strictEqual(typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea');
8
+ });
9
+
10
+ if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
11
+ return;
12
+ }
13
+
14
+ var testElement = function($el) {
15
+
16
+ var el = $el[0];
17
+ var placeholder = el.getAttribute('placeholder');
18
+
19
+ strictEqual($el.placeholder(), $el, 'should be chainable');
20
+
21
+ strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
22
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
23
+ strictEqual($el.val(), '', 'valHooks works properly');
24
+ ok($el.hasClass('placeholder'), 'should have `placeholder` class');
25
+
26
+ // test on focus
27
+ $el.focus();
28
+ strictEqual(el.value, '', '`value` should be the empty string on focus');
29
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
30
+ strictEqual($el.val(), '', 'valHooks works properly');
31
+ ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
32
+
33
+ // and unfocus (blur) again
34
+ $el.blur();
35
+
36
+ strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
37
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
38
+ strictEqual($el.val(), '', 'valHooks works properly');
39
+ ok($el.hasClass('placeholder'), 'should have `placeholder` class');
40
+
41
+ // change the value
42
+ $el.val('lorem ipsum');
43
+ strictEqual($el.prop('value'), 'lorem ipsum', '`$el.val(string)` should change the `value` property');
44
+ strictEqual(el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute');
45
+ ok(!$el.hasClass('placeholder'), '`$el.val(string)` should remove `placeholder` class');
46
+
47
+ // and clear it again
48
+ $el.val('');
49
+ strictEqual($el.prop('value'), '', '`$el.val("")` should change the `value` property');
50
+ strictEqual(el.value, placeholder, '`$el.val("")` should change the `value` attribute');
51
+ ok($el.hasClass('placeholder'), '`$el.val("")` should re-enable `placeholder` class');
52
+
53
+ // make sure the placeholder property works as expected.
54
+ strictEqual($el.prop('placeholder'), placeholder, '$el.prop(`placeholder`) should return the placeholder value');
55
+ $el.prop('placeholder', 'new placeholder');
56
+ strictEqual($el.prop('placeholder'), 'new placeholder', '$el.prop(`placeholder`, <string>) should set the placeholder value');
57
+ strictEqual($el.value, 'new placeholder', '$el.prop(`placeholder`, <string>) should update the displayed placeholder value');
58
+ $el.prop('placeholder', placeholder);
59
+ };
60
+
61
+ test('emulates placeholder for <input type=text>', function() {
62
+ testElement( $('#input-type-text') );
63
+ });
64
+
65
+ test('emulates placeholder for <input type=search>', function() {
66
+ testElement( $('#input-type-search') );
67
+ });
68
+
69
+ test('emulates placeholder for <input type=email>', function() {
70
+ testElement( $('#input-type-email') );
71
+ });
72
+
73
+ test('emulates placeholder for <input type=url>', function() {
74
+ testElement( $('#input-type-url') );
75
+ });
76
+
77
+ test('emulates placeholder for <input type=tel>', function() {
78
+ testElement( $('#input-type-tel') );
79
+ });
80
+
81
+ test('emulates placeholder for <input type=tel>', function() {
82
+ testElement( $('#input-type-tel') );
83
+ });
84
+
85
+ test('emulates placeholder for <input type=password>', function() {
86
+ var selector = '#input-type-password';
87
+
88
+ var $el = $(selector);
89
+ var el = $el[0];
90
+
91
+ var placeholder = el.getAttribute('placeholder');
92
+
93
+ strictEqual($el.placeholder(), $el, 'should be chainable');
94
+
95
+ // Re-select the element, as it gets replaced by another one in some browsers
96
+ $el = $(selector);
97
+ el = $el[0];
98
+
99
+ strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
100
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
101
+ strictEqual($el.val(), '', 'valHooks works properly');
102
+ ok($el.hasClass('placeholder'), 'should have `placeholder` class');
103
+
104
+ // test on focus
105
+ $el.focus();
106
+
107
+ // Re-select the element, as it gets replaced by another one in some browsers
108
+ $el = $(selector);
109
+ el = $el[0];
110
+
111
+ strictEqual(el.value, '', '`value` should be the empty string on focus');
112
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
113
+ strictEqual($el.val(), '', 'valHooks works properly');
114
+ ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
115
+
116
+ // and unfocus (blur) again
117
+ $el.blur();
118
+
119
+ // Re-select the element, as it gets replaced by another one in some browsers
120
+ $el = $(selector);
121
+ el = $el[0];
122
+
123
+ strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
124
+ strictEqual($el.prop('value'), '', 'propHooks works properly');
125
+ strictEqual($el.val(), '', 'valHooks works properly');
126
+ ok($el.hasClass('placeholder'), 'should have `placeholder` class');
127
+
128
+ });
129
+
130
+ test('emulates placeholder for <textarea></textarea>', function() {
131
+ testElement( $('#textarea') );
132
+ });
133
+
134
+ }(jQuery));