lady_josephine 0.0.1

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 (304) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +32 -0
  4. data/app/assets/fonts/lady_josephine/icons/icons.eot +0 -0
  5. data/app/assets/fonts/lady_josephine/icons/icons.svg +215 -0
  6. data/app/assets/fonts/lady_josephine/icons/icons.ttf +0 -0
  7. data/app/assets/fonts/lady_josephine/icons/icons.woff +0 -0
  8. data/app/assets/javascripts/lady_josephine/blocks/facebook.js +25 -0
  9. data/app/assets/javascripts/lady_josephine/blocks/instagram.js +22 -0
  10. data/app/assets/javascripts/lady_josephine/blocks/soundcloud.js +24 -0
  11. data/app/assets/javascripts/lady_josephine/blocks/twitter.js +25 -0
  12. data/app/assets/javascripts/lady_josephine/blocks/vimeo.js +55 -0
  13. data/app/assets/javascripts/lady_josephine/blocks/youtube.js +64 -0
  14. data/app/assets/javascripts/lady_josephine/editor.js +40 -0
  15. data/app/assets/javascripts/lady_josephine/lady_josephine.js +4 -0
  16. data/app/assets/javascripts/lady_josephine/lady_josephine_view.js +6 -0
  17. data/app/assets/stylesheets/lady_josephine/content.sass +33 -0
  18. data/app/assets/stylesheets/lady_josephine/icons.sass +175 -0
  19. data/app/assets/stylesheets/lady_josephine/lady_josephine.sass +6 -0
  20. data/app/assets/stylesheets/lady_josephine/sir_trevor.sass +619 -0
  21. data/app/assets/stylesheets/lady_josephine/vars.sass +36 -0
  22. data/app/controllers/lady_josephine/application_controller.rb +4 -0
  23. data/app/controllers/lady_josephine/editor_controller.rb +40 -0
  24. data/app/controllers/lady_josephine/images_controller.rb +26 -0
  25. data/app/helpers/lady_josephine/helper.rb +25 -0
  26. data/app/helpers/lady_josephine/sir_trevor_helper.rb +172 -0
  27. data/app/models/lady_josephine/concerns/model.rb +29 -0
  28. data/app/models/lady_josephine/concerns/pingable.rb +28 -0
  29. data/app/models/lady_josephine/concerns/server_uuid.rb +24 -0
  30. data/app/models/lady_josephine/concerns/sir_trevor_images.rb +38 -0
  31. data/app/models/lady_josephine/image.rb +41 -0
  32. data/app/uploader/lady_josephine/base_uploader.rb +47 -0
  33. data/app/uploader/lady_josephine/image_uploader.rb +149 -0
  34. data/app/views/lady_josephine/blocks/_audio_block.haml +2 -0
  35. data/app/views/lady_josephine/blocks/_definition_block.haml +4 -0
  36. data/app/views/lady_josephine/blocks/_divider_block.haml +2 -0
  37. data/app/views/lady_josephine/blocks/_extended_image_block.haml +63 -0
  38. data/app/views/lady_josephine/blocks/_extended_quote_block.haml +5 -0
  39. data/app/views/lady_josephine/blocks/_extended_tweet_block.haml +2 -0
  40. data/app/views/lady_josephine/blocks/_facebook_post_block.haml +2 -0
  41. data/app/views/lady_josephine/blocks/_heading_block.haml +2 -0
  42. data/app/views/lady_josephine/blocks/_html_block.haml +1 -0
  43. data/app/views/lady_josephine/blocks/_instagram_block.haml +2 -0
  44. data/app/views/lady_josephine/blocks/_list_block.haml +3 -0
  45. data/app/views/lady_josephine/blocks/_quote_block.haml +5 -0
  46. data/app/views/lady_josephine/blocks/_text_block.html.haml +2 -0
  47. data/app/views/lady_josephine/blocks/_video_block.haml +9 -0
  48. data/config/routes.rb +9 -0
  49. data/db/migrate/20160222151500_lady_josephine_image.rb +18 -0
  50. data/lib/generators/lady_josephine_migration/USAGE +9 -0
  51. data/lib/generators/lady_josephine_migration/lady_josephine_migration_generator.rb +17 -0
  52. data/lib/generators/lady_josephine_migration/templates/migration.rb +9 -0
  53. data/lib/lady_josephine.rb +18 -0
  54. data/lib/lady_josephine/engine.rb +18 -0
  55. data/lib/lady_josephine/redcarpet/custom_markdown_formatter.rb +63 -0
  56. data/lib/lady_josephine/renderer/sir_trevor_renderer.rb +16 -0
  57. data/lib/lady_josephine/version.rb +3 -0
  58. data/lib/lady_josephine/whitelist.rb +26 -0
  59. data/lib/tasks/lady_josephine_tasks.rake +4 -0
  60. data/spec/controllers/lady_josephine/editor_controller_spec.rb +58 -0
  61. data/spec/dummy/README.rdoc +28 -0
  62. data/spec/dummy/Rakefile +6 -0
  63. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  64. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  65. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  66. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  67. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  68. data/spec/dummy/bin/bundle +3 -0
  69. data/spec/dummy/bin/rails +4 -0
  70. data/spec/dummy/bin/rake +4 -0
  71. data/spec/dummy/bin/setup +29 -0
  72. data/spec/dummy/config.ru +4 -0
  73. data/spec/dummy/config/application.rb +26 -0
  74. data/spec/dummy/config/boot.rb +5 -0
  75. data/spec/dummy/config/database.yml +25 -0
  76. data/spec/dummy/config/environment.rb +5 -0
  77. data/spec/dummy/config/environments/development.rb +41 -0
  78. data/spec/dummy/config/environments/production.rb +79 -0
  79. data/spec/dummy/config/environments/test.rb +42 -0
  80. data/spec/dummy/config/initializers/assets.rb +11 -0
  81. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  82. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  83. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  84. data/spec/dummy/config/initializers/inflections.rb +16 -0
  85. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  86. data/spec/dummy/config/initializers/session_store.rb +3 -0
  87. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  88. data/spec/dummy/config/locales/en.yml +23 -0
  89. data/spec/dummy/config/routes.rb +4 -0
  90. data/spec/dummy/config/secrets.yml +22 -0
  91. data/spec/dummy/db/development.sqlite3 +0 -0
  92. data/spec/dummy/db/schema.rb +16 -0
  93. data/spec/dummy/db/test.sqlite3 +0 -0
  94. data/spec/dummy/log/bla +0 -0
  95. data/spec/dummy/public/404.html +67 -0
  96. data/spec/dummy/public/422.html +67 -0
  97. data/spec/dummy/public/500.html +66 -0
  98. data/spec/dummy/public/favicon.ico +0 -0
  99. data/spec/spec_helper.rb +17 -0
  100. data/vendor/assets/components/Eventable/README.md +12 -0
  101. data/vendor/assets/components/Eventable/bower.json +10 -0
  102. data/vendor/assets/components/Eventable/component.json +11 -0
  103. data/vendor/assets/components/Eventable/eventable.js +207 -0
  104. data/vendor/assets/components/Eventable/package.json +15 -0
  105. data/vendor/assets/components/jquery-autosize/bower.json +30 -0
  106. data/vendor/assets/components/jquery-autosize/demo.html +36 -0
  107. data/vendor/assets/components/jquery-autosize/jquery.autosize.js +273 -0
  108. data/vendor/assets/components/jquery-autosize/jquery.autosize.min.js +6 -0
  109. data/vendor/assets/components/jquery-autosize/package.json +32 -0
  110. data/vendor/assets/components/jquery-autosize/readme.md +216 -0
  111. data/vendor/assets/components/jquery/AUTHORS.txt +163 -0
  112. data/vendor/assets/components/jquery/CONTRIBUTING.md +216 -0
  113. data/vendor/assets/components/jquery/Gruntfile.js +496 -0
  114. data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
  115. data/vendor/assets/components/jquery/README.md +415 -0
  116. data/vendor/assets/components/jquery/build/release-notes.js +59 -0
  117. data/vendor/assets/components/jquery/build/release.js +246 -0
  118. data/vendor/assets/components/jquery/component.json +13 -0
  119. data/vendor/assets/components/jquery/composer.json +35 -0
  120. data/vendor/assets/components/jquery/jquery-migrate.js +496 -0
  121. data/vendor/assets/components/jquery/jquery-migrate.min.js +3 -0
  122. data/vendor/assets/components/jquery/jquery.js +9597 -0
  123. data/vendor/assets/components/jquery/jquery.min.js +5 -0
  124. data/vendor/assets/components/jquery/jquery.min.map +1 -0
  125. data/vendor/assets/components/jquery/package.json +39 -0
  126. data/vendor/assets/components/jquery/speed/benchmark.js +15 -0
  127. data/vendor/assets/components/jquery/speed/benchmarker.css +65 -0
  128. data/vendor/assets/components/jquery/speed/benchmarker.js +181 -0
  129. data/vendor/assets/components/jquery/speed/closest.html +39 -0
  130. data/vendor/assets/components/jquery/speed/css.html +82 -0
  131. data/vendor/assets/components/jquery/speed/event.html +58 -0
  132. data/vendor/assets/components/jquery/speed/filter.html +183 -0
  133. data/vendor/assets/components/jquery/speed/find.html +179 -0
  134. data/vendor/assets/components/jquery/speed/index.html +72 -0
  135. data/vendor/assets/components/jquery/speed/jquery-basis.js +6238 -0
  136. data/vendor/assets/components/jquery/speed/slice.vs.concat.html +47 -0
  137. data/vendor/assets/components/jquery/src/ajax.js +851 -0
  138. data/vendor/assets/components/jquery/src/ajax/jsonp.js +80 -0
  139. data/vendor/assets/components/jquery/src/ajax/script.js +86 -0
  140. data/vendor/assets/components/jquery/src/ajax/xhr.js +207 -0
  141. data/vendor/assets/components/jquery/src/attributes.js +661 -0
  142. data/vendor/assets/components/jquery/src/callbacks.js +196 -0
  143. data/vendor/assets/components/jquery/src/core.js +949 -0
  144. data/vendor/assets/components/jquery/src/css.js +679 -0
  145. data/vendor/assets/components/jquery/src/data.js +340 -0
  146. data/vendor/assets/components/jquery/src/deferred.js +141 -0
  147. data/vendor/assets/components/jquery/src/deprecated.js +4 -0
  148. data/vendor/assets/components/jquery/src/dimensions.js +41 -0
  149. data/vendor/assets/components/jquery/src/effects.js +730 -0
  150. data/vendor/assets/components/jquery/src/event-alias.js +15 -0
  151. data/vendor/assets/components/jquery/src/event.js +991 -0
  152. data/vendor/assets/components/jquery/src/exports.js +18 -0
  153. data/vendor/assets/components/jquery/src/intro.js +20 -0
  154. data/vendor/assets/components/jquery/src/manipulation.js +796 -0
  155. data/vendor/assets/components/jquery/src/offset.js +169 -0
  156. data/vendor/assets/components/jquery/src/outro.js +2 -0
  157. data/vendor/assets/components/jquery/src/queue.js +147 -0
  158. data/vendor/assets/components/jquery/src/serialize.js +99 -0
  159. data/vendor/assets/components/jquery/src/sizzle-jquery.js +9 -0
  160. data/vendor/assets/components/jquery/src/support.js +241 -0
  161. data/vendor/assets/components/jquery/src/traversing.js +275 -0
  162. data/vendor/assets/components/jquery/test/csp.php +16 -0
  163. data/vendor/assets/components/jquery/test/data/1x1.jpg +0 -0
  164. data/vendor/assets/components/jquery/test/data/ajax/unreleasedXHR.html +25 -0
  165. data/vendor/assets/components/jquery/test/data/atom+xml.php +4 -0
  166. data/vendor/assets/components/jquery/test/data/badcall.js +1 -0
  167. data/vendor/assets/components/jquery/test/data/badjson.js +1 -0
  168. data/vendor/assets/components/jquery/test/data/cleanScript.html +10 -0
  169. data/vendor/assets/components/jquery/test/data/core/cc_on.html +22 -0
  170. data/vendor/assets/components/jquery/test/data/dashboard.xml +11 -0
  171. data/vendor/assets/components/jquery/test/data/dimensions/documentLarge.html +17 -0
  172. data/vendor/assets/components/jquery/test/data/dimensions/documentSmall.html +21 -0
  173. data/vendor/assets/components/jquery/test/data/echoData.php +1 -0
  174. data/vendor/assets/components/jquery/test/data/echoQuery.php +1 -0
  175. data/vendor/assets/components/jquery/test/data/errorWithText.php +5 -0
  176. data/vendor/assets/components/jquery/test/data/etag.php +21 -0
  177. data/vendor/assets/components/jquery/test/data/evalScript.php +1 -0
  178. data/vendor/assets/components/jquery/test/data/event/longLoadScript.php +4 -0
  179. data/vendor/assets/components/jquery/test/data/event/promiseReady.html +17 -0
  180. data/vendor/assets/components/jquery/test/data/event/syncReady.html +23 -0
  181. data/vendor/assets/components/jquery/test/data/headers.php +18 -0
  182. data/vendor/assets/components/jquery/test/data/if_modified_since.php +20 -0
  183. data/vendor/assets/components/jquery/test/data/iframe.html +8 -0
  184. data/vendor/assets/components/jquery/test/data/jquery-1.8.2.ajax_xhr.min.js +2 -0
  185. data/vendor/assets/components/jquery/test/data/json.php +13 -0
  186. data/vendor/assets/components/jquery/test/data/json_obj.js +1 -0
  187. data/vendor/assets/components/jquery/test/data/jsonp.php +14 -0
  188. data/vendor/assets/components/jquery/test/data/manipulation/iframe-denied.html +36 -0
  189. data/vendor/assets/components/jquery/test/data/name.html +1 -0
  190. data/vendor/assets/components/jquery/test/data/name.php +24 -0
  191. data/vendor/assets/components/jquery/test/data/nocontent.php +5 -0
  192. data/vendor/assets/components/jquery/test/data/offset/absolute.html +41 -0
  193. data/vendor/assets/components/jquery/test/data/offset/body.html +26 -0
  194. data/vendor/assets/components/jquery/test/data/offset/fixed.html +34 -0
  195. data/vendor/assets/components/jquery/test/data/offset/relative.html +31 -0
  196. data/vendor/assets/components/jquery/test/data/offset/scroll.html +39 -0
  197. data/vendor/assets/components/jquery/test/data/offset/static.html +31 -0
  198. data/vendor/assets/components/jquery/test/data/offset/table.html +43 -0
  199. data/vendor/assets/components/jquery/test/data/params_html.php +12 -0
  200. data/vendor/assets/components/jquery/test/data/readywaitasset.js +1 -0
  201. data/vendor/assets/components/jquery/test/data/readywaitloader.js +25 -0
  202. data/vendor/assets/components/jquery/test/data/script.php +11 -0
  203. data/vendor/assets/components/jquery/test/data/selector/html5_selector.html +114 -0
  204. data/vendor/assets/components/jquery/test/data/selector/sizzle_cache.html +21 -0
  205. data/vendor/assets/components/jquery/test/data/statusText.php +5 -0
  206. data/vendor/assets/components/jquery/test/data/support/bodyBackground.html +28 -0
  207. data/vendor/assets/components/jquery/test/data/support/shrinkWrapBlocks.html +23 -0
  208. data/vendor/assets/components/jquery/test/data/support/testElementCrash.html +17 -0
  209. data/vendor/assets/components/jquery/test/data/test.html +7 -0
  210. data/vendor/assets/components/jquery/test/data/test.js +3 -0
  211. data/vendor/assets/components/jquery/test/data/test.php +7 -0
  212. data/vendor/assets/components/jquery/test/data/test2.html +5 -0
  213. data/vendor/assets/components/jquery/test/data/test3.html +3 -0
  214. data/vendor/assets/components/jquery/test/data/testinit.js +269 -0
  215. data/vendor/assets/components/jquery/test/data/testrunner.js +368 -0
  216. data/vendor/assets/components/jquery/test/data/testsuite.css +155 -0
  217. data/vendor/assets/components/jquery/test/data/text.php +12 -0
  218. data/vendor/assets/components/jquery/test/data/ua.txt +272 -0
  219. data/vendor/assets/components/jquery/test/data/with_fries.xml +25 -0
  220. data/vendor/assets/components/jquery/test/data/with_fries_over_jsonp.php +7 -0
  221. data/vendor/assets/components/jquery/test/delegatetest.html +228 -0
  222. data/vendor/assets/components/jquery/test/hovertest.html +158 -0
  223. data/vendor/assets/components/jquery/test/index.html +330 -0
  224. data/vendor/assets/components/jquery/test/localfile.html +75 -0
  225. data/vendor/assets/components/jquery/test/networkerror.html +84 -0
  226. data/vendor/assets/components/jquery/test/polluted.php +110 -0
  227. data/vendor/assets/components/jquery/test/readywait.html +70 -0
  228. data/vendor/assets/components/jquery/test/unit/ajax.js +1971 -0
  229. data/vendor/assets/components/jquery/test/unit/attributes.js +1332 -0
  230. data/vendor/assets/components/jquery/test/unit/callbacks.js +326 -0
  231. data/vendor/assets/components/jquery/test/unit/core.js +1332 -0
  232. data/vendor/assets/components/jquery/test/unit/css.js +1036 -0
  233. data/vendor/assets/components/jquery/test/unit/data.js +636 -0
  234. data/vendor/assets/components/jquery/test/unit/deferred.js +440 -0
  235. data/vendor/assets/components/jquery/test/unit/deprecated.js +1 -0
  236. data/vendor/assets/components/jquery/test/unit/dimensions.js +461 -0
  237. data/vendor/assets/components/jquery/test/unit/effects.js +2050 -0
  238. data/vendor/assets/components/jquery/test/unit/event.js +2690 -0
  239. data/vendor/assets/components/jquery/test/unit/exports.js +7 -0
  240. data/vendor/assets/components/jquery/test/unit/manipulation.js +2242 -0
  241. data/vendor/assets/components/jquery/test/unit/offset.js +549 -0
  242. data/vendor/assets/components/jquery/test/unit/queue.js +316 -0
  243. data/vendor/assets/components/jquery/test/unit/selector.js +185 -0
  244. data/vendor/assets/components/jquery/test/unit/serialize.js +146 -0
  245. data/vendor/assets/components/jquery/test/unit/support.js +384 -0
  246. data/vendor/assets/components/jquery/test/unit/traversing.js +667 -0
  247. data/vendor/assets/components/jquery/test/xhtml.php +5 -0
  248. data/vendor/assets/components/sir-trevor-js/CHANGELOG.md +44 -0
  249. data/vendor/assets/components/sir-trevor-js/Gemfile +3 -0
  250. data/vendor/assets/components/sir-trevor-js/Gemfile.lock +10 -0
  251. data/vendor/assets/components/sir-trevor-js/Gruntfile.js +109 -0
  252. data/vendor/assets/components/sir-trevor-js/MIT-LICENCE +20 -0
  253. data/vendor/assets/components/sir-trevor-js/Readme.md +84 -0
  254. data/vendor/assets/components/sir-trevor-js/bower.json +21 -0
  255. data/vendor/assets/components/sir-trevor-js/component.json +42 -0
  256. data/vendor/assets/components/sir-trevor-js/contributing.md +74 -0
  257. data/vendor/assets/components/sir-trevor-js/examples-component/component.json +14 -0
  258. data/vendor/assets/components/sir-trevor-js/examples-component/index.html +33 -0
  259. data/vendor/assets/components/sir-trevor-js/examples-component/index.js +29 -0
  260. data/vendor/assets/components/sir-trevor-js/examples-component/javascript/example_block.js +203 -0
  261. data/vendor/assets/components/sir-trevor-js/examples-component/javascript/limit_chars.js +46 -0
  262. data/vendor/assets/components/sir-trevor-js/examples-component/sir-trevor.gif +0 -0
  263. data/vendor/assets/components/sir-trevor-js/locales/cn.js +51 -0
  264. data/vendor/assets/components/sir-trevor-js/locales/de.js +51 -0
  265. data/vendor/assets/components/sir-trevor-js/locales/es.js +51 -0
  266. data/vendor/assets/components/sir-trevor-js/locales/fi.js +51 -0
  267. data/vendor/assets/components/sir-trevor-js/locales/fr.js +51 -0
  268. data/vendor/assets/components/sir-trevor-js/locales/pt.js +52 -0
  269. data/vendor/assets/components/sir-trevor-js/package.json +23 -0
  270. data/vendor/assets/components/sir-trevor-js/sir-trevor-icons.css +6 -0
  271. data/vendor/assets/components/sir-trevor-js/sir-trevor.css +393 -0
  272. data/vendor/assets/components/sir-trevor-js/sir-trevor.css.map +7 -0
  273. data/vendor/assets/components/sir-trevor-js/sir-trevor.js +5481 -0
  274. data/vendor/assets/components/sir-trevor-js/sir-trevor.min.js +13 -0
  275. data/vendor/assets/components/underscore/CNAME +1 -0
  276. data/vendor/assets/components/underscore/CONTRIBUTING.md +9 -0
  277. data/vendor/assets/components/underscore/LICENSE +22 -0
  278. data/vendor/assets/components/underscore/README.md +19 -0
  279. data/vendor/assets/components/underscore/Rakefile +10 -0
  280. data/vendor/assets/components/underscore/docs/docco.css +192 -0
  281. data/vendor/assets/components/underscore/docs/favicon.ico +0 -0
  282. data/vendor/assets/components/underscore/docs/images/background.png +0 -0
  283. data/vendor/assets/components/underscore/docs/images/underscore.png +0 -0
  284. data/vendor/assets/components/underscore/docs/underscore.html +823 -0
  285. data/vendor/assets/components/underscore/favicon.ico +0 -0
  286. data/vendor/assets/components/underscore/index.html +2467 -0
  287. data/vendor/assets/components/underscore/index.js +1 -0
  288. data/vendor/assets/components/underscore/package.json +16 -0
  289. data/vendor/assets/components/underscore/test/arrays.js +200 -0
  290. data/vendor/assets/components/underscore/test/chaining.js +59 -0
  291. data/vendor/assets/components/underscore/test/collections.js +453 -0
  292. data/vendor/assets/components/underscore/test/functions.js +265 -0
  293. data/vendor/assets/components/underscore/test/index.html +44 -0
  294. data/vendor/assets/components/underscore/test/objects.js +570 -0
  295. data/vendor/assets/components/underscore/test/speed.js +75 -0
  296. data/vendor/assets/components/underscore/test/utility.js +266 -0
  297. data/vendor/assets/components/underscore/test/vendor/jquery.js +9404 -0
  298. data/vendor/assets/components/underscore/test/vendor/jslitmus.js +670 -0
  299. data/vendor/assets/components/underscore/test/vendor/qunit.css +235 -0
  300. data/vendor/assets/components/underscore/test/vendor/qunit.js +1977 -0
  301. data/vendor/assets/components/underscore/test/vendor/runner.js +98 -0
  302. data/vendor/assets/components/underscore/underscore-min.js +1 -0
  303. data/vendor/assets/components/underscore/underscore.js +1226 -0
  304. metadata +473 -0
@@ -0,0 +1,340 @@
1
+ var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
2
+ rmultiDash = /([A-Z])/g;
3
+
4
+ function internalData( elem, name, data, pvt /* Internal Use Only */ ){
5
+ if ( !jQuery.acceptData( elem ) ) {
6
+ return;
7
+ }
8
+
9
+ var thisCache, ret,
10
+ internalKey = jQuery.expando,
11
+ getByName = typeof name === "string",
12
+
13
+ // We have to handle DOM nodes and JS objects differently because IE6-7
14
+ // can't GC object references properly across the DOM-JS boundary
15
+ isNode = elem.nodeType,
16
+
17
+ // Only DOM nodes need the global jQuery cache; JS object data is
18
+ // attached directly to the object so GC can occur automatically
19
+ cache = isNode ? jQuery.cache : elem,
20
+
21
+ // Only defining an ID for JS objects if its cache already exists allows
22
+ // the code to shortcut on the same path as a DOM node with no cache
23
+ id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
24
+
25
+ // Avoid doing any more work than we need to when trying to get data on an
26
+ // object that has no data at all
27
+ if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
28
+ return;
29
+ }
30
+
31
+ if ( !id ) {
32
+ // Only DOM nodes need a new unique ID for each element since their data
33
+ // ends up in the global cache
34
+ if ( isNode ) {
35
+ elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
36
+ } else {
37
+ id = internalKey;
38
+ }
39
+ }
40
+
41
+ if ( !cache[ id ] ) {
42
+ cache[ id ] = {};
43
+
44
+ // Avoids exposing jQuery metadata on plain JS objects when the object
45
+ // is serialized using JSON.stringify
46
+ if ( !isNode ) {
47
+ cache[ id ].toJSON = jQuery.noop;
48
+ }
49
+ }
50
+
51
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
52
+ // shallow copied over onto the existing cache
53
+ if ( typeof name === "object" || typeof name === "function" ) {
54
+ if ( pvt ) {
55
+ cache[ id ] = jQuery.extend( cache[ id ], name );
56
+ } else {
57
+ cache[ id ].data = jQuery.extend( cache[ id ].data, name );
58
+ }
59
+ }
60
+
61
+ thisCache = cache[ id ];
62
+
63
+ // jQuery data() is stored in a separate object inside the object's internal data
64
+ // cache in order to avoid key collisions between internal data and user-defined
65
+ // data.
66
+ if ( !pvt ) {
67
+ if ( !thisCache.data ) {
68
+ thisCache.data = {};
69
+ }
70
+
71
+ thisCache = thisCache.data;
72
+ }
73
+
74
+ if ( data !== undefined ) {
75
+ thisCache[ jQuery.camelCase( name ) ] = data;
76
+ }
77
+
78
+ // Check for both converted-to-camel and non-converted data property names
79
+ // If a data property was specified
80
+ if ( getByName ) {
81
+
82
+ // First Try to find as-is property data
83
+ ret = thisCache[ name ];
84
+
85
+ // Test for null|undefined property data
86
+ if ( ret == null ) {
87
+
88
+ // Try to find the camelCased property
89
+ ret = thisCache[ jQuery.camelCase( name ) ];
90
+ }
91
+ } else {
92
+ ret = thisCache;
93
+ }
94
+
95
+ return ret;
96
+ }
97
+
98
+ function internalRemoveData( elem, name, pvt ) {
99
+ if ( !jQuery.acceptData( elem ) ) {
100
+ return;
101
+ }
102
+
103
+ var i, l, thisCache,
104
+ isNode = elem.nodeType,
105
+
106
+ // See jQuery.data for more information
107
+ cache = isNode ? jQuery.cache : elem,
108
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
109
+
110
+ // If there is already no cache entry for this object, there is no
111
+ // purpose in continuing
112
+ if ( !cache[ id ] ) {
113
+ return;
114
+ }
115
+
116
+ if ( name ) {
117
+
118
+ thisCache = pvt ? cache[ id ] : cache[ id ].data;
119
+
120
+ if ( thisCache ) {
121
+
122
+ // Support array or space separated string names for data keys
123
+ if ( !jQuery.isArray( name ) ) {
124
+
125
+ // try the string as a key before any manipulation
126
+ if ( name in thisCache ) {
127
+ name = [ name ];
128
+ } else {
129
+
130
+ // split the camel cased version by spaces unless a key with the spaces exists
131
+ name = jQuery.camelCase( name );
132
+ if ( name in thisCache ) {
133
+ name = [ name ];
134
+ } else {
135
+ name = name.split(" ");
136
+ }
137
+ }
138
+ } else {
139
+ // If "name" is an array of keys...
140
+ // When data is initially created, via ("key", "val") signature,
141
+ // keys will be converted to camelCase.
142
+ // Since there is no way to tell _how_ a key was added, remove
143
+ // both plain key and camelCase key. #12786
144
+ // This will only penalize the array argument path.
145
+ name = name.concat( jQuery.map( name, jQuery.camelCase ) );
146
+ }
147
+
148
+ for ( i = 0, l = name.length; i < l; i++ ) {
149
+ delete thisCache[ name[i] ];
150
+ }
151
+
152
+ // If there is no data left in the cache, we want to continue
153
+ // and let the cache object itself get destroyed
154
+ if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
155
+ return;
156
+ }
157
+ }
158
+ }
159
+
160
+ // See jQuery.data for more information
161
+ if ( !pvt ) {
162
+ delete cache[ id ].data;
163
+
164
+ // Don't destroy the parent cache unless the internal data object
165
+ // had been the only thing left in it
166
+ if ( !isEmptyDataObject( cache[ id ] ) ) {
167
+ return;
168
+ }
169
+ }
170
+
171
+ // Destroy the cache
172
+ if ( isNode ) {
173
+ jQuery.cleanData( [ elem ], true );
174
+
175
+ // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
176
+ } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
177
+ delete cache[ id ];
178
+
179
+ // When all else fails, null
180
+ } else {
181
+ cache[ id ] = null;
182
+ }
183
+ }
184
+
185
+ jQuery.extend({
186
+ cache: {},
187
+
188
+ // Unique for each copy of jQuery on the page
189
+ // Non-digits removed to match rinlinejQuery
190
+ expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
191
+
192
+ // The following elements throw uncatchable exceptions if you
193
+ // attempt to add expando properties to them.
194
+ noData: {
195
+ "embed": true,
196
+ // Ban all objects except for Flash (which handle expandos)
197
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
198
+ "applet": true
199
+ },
200
+
201
+ hasData: function( elem ) {
202
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
203
+ return !!elem && !isEmptyDataObject( elem );
204
+ },
205
+
206
+ data: function( elem, name, data ) {
207
+ return internalData( elem, name, data );
208
+ },
209
+
210
+ removeData: function( elem, name ) {
211
+ return internalRemoveData( elem, name );
212
+ },
213
+
214
+ // For internal use only.
215
+ _data: function( elem, name, data ) {
216
+ return internalData( elem, name, data, true );
217
+ },
218
+
219
+ _removeData: function( elem, name ) {
220
+ return internalRemoveData( elem, name, true );
221
+ },
222
+
223
+ // A method for determining if a DOM node can handle the data expando
224
+ acceptData: function( elem ) {
225
+ // Do not set data on non-element because it will not be cleared (#8335).
226
+ if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
227
+ return false;
228
+ }
229
+
230
+ var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
231
+
232
+ // nodes accept data unless otherwise specified; rejection can be conditional
233
+ return !noData || noData !== true && elem.getAttribute("classid") === noData;
234
+ }
235
+ });
236
+
237
+ jQuery.fn.extend({
238
+ data: function( key, value ) {
239
+ var attrs, name,
240
+ elem = this[0],
241
+ i = 0,
242
+ data = null;
243
+
244
+ // Gets all values
245
+ if ( key === undefined ) {
246
+ if ( this.length ) {
247
+ data = jQuery.data( elem );
248
+
249
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
250
+ attrs = elem.attributes;
251
+ for ( ; i < attrs.length; i++ ) {
252
+ name = attrs[i].name;
253
+
254
+ if ( !name.indexOf( "data-" ) ) {
255
+ name = jQuery.camelCase( name.slice(5) );
256
+
257
+ dataAttr( elem, name, data[ name ] );
258
+ }
259
+ }
260
+ jQuery._data( elem, "parsedAttrs", true );
261
+ }
262
+ }
263
+
264
+ return data;
265
+ }
266
+
267
+ // Sets multiple values
268
+ if ( typeof key === "object" ) {
269
+ return this.each(function() {
270
+ jQuery.data( this, key );
271
+ });
272
+ }
273
+
274
+ return jQuery.access( this, function( value ) {
275
+
276
+ if ( value === undefined ) {
277
+ // Try to fetch any internally stored data first
278
+ return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
279
+ }
280
+
281
+ this.each(function() {
282
+ jQuery.data( this, key, value );
283
+ });
284
+ }, null, value, arguments.length > 1, null, true );
285
+ },
286
+
287
+ removeData: function( key ) {
288
+ return this.each(function() {
289
+ jQuery.removeData( this, key );
290
+ });
291
+ }
292
+ });
293
+
294
+ function dataAttr( elem, key, data ) {
295
+ // If nothing was found internally, try to fetch any
296
+ // data from the HTML5 data-* attribute
297
+ if ( data === undefined && elem.nodeType === 1 ) {
298
+
299
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
300
+
301
+ data = elem.getAttribute( name );
302
+
303
+ if ( typeof data === "string" ) {
304
+ try {
305
+ data = data === "true" ? true :
306
+ data === "false" ? false :
307
+ data === "null" ? null :
308
+ // Only convert to a number if it doesn't change the string
309
+ +data + "" === data ? +data :
310
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
311
+ data;
312
+ } catch( e ) {}
313
+
314
+ // Make sure we set the data so it isn't changed later
315
+ jQuery.data( elem, key, data );
316
+
317
+ } else {
318
+ data = undefined;
319
+ }
320
+ }
321
+
322
+ return data;
323
+ }
324
+
325
+ // checks a cache object for emptiness
326
+ function isEmptyDataObject( obj ) {
327
+ var name;
328
+ for ( name in obj ) {
329
+
330
+ // if the public data object is empty, the private is still empty
331
+ if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
332
+ continue;
333
+ }
334
+ if ( name !== "toJSON" ) {
335
+ return false;
336
+ }
337
+ }
338
+
339
+ return true;
340
+ }
@@ -0,0 +1,141 @@
1
+ jQuery.extend({
2
+
3
+ Deferred: function( func ) {
4
+ var tuples = [
5
+ // action, add listener, listener list, final state
6
+ [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
7
+ [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
8
+ [ "notify", "progress", jQuery.Callbacks("memory") ]
9
+ ],
10
+ state = "pending",
11
+ promise = {
12
+ state: function() {
13
+ return state;
14
+ },
15
+ always: function() {
16
+ deferred.done( arguments ).fail( arguments );
17
+ return this;
18
+ },
19
+ then: function( /* fnDone, fnFail, fnProgress */ ) {
20
+ var fns = arguments;
21
+ return jQuery.Deferred(function( newDefer ) {
22
+ jQuery.each( tuples, function( i, tuple ) {
23
+ var action = tuple[ 0 ],
24
+ fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
25
+ // deferred[ done | fail | progress ] for forwarding actions to newDefer
26
+ deferred[ tuple[1] ](function() {
27
+ var returned = fn && fn.apply( this, arguments );
28
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
29
+ returned.promise()
30
+ .done( newDefer.resolve )
31
+ .fail( newDefer.reject )
32
+ .progress( newDefer.notify );
33
+ } else {
34
+ newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
35
+ }
36
+ });
37
+ });
38
+ fns = null;
39
+ }).promise();
40
+ },
41
+ // Get a promise for this deferred
42
+ // If obj is provided, the promise aspect is added to the object
43
+ promise: function( obj ) {
44
+ return obj != null ? jQuery.extend( obj, promise ) : promise;
45
+ }
46
+ },
47
+ deferred = {};
48
+
49
+ // Keep pipe for back-compat
50
+ promise.pipe = promise.then;
51
+
52
+ // Add list-specific methods
53
+ jQuery.each( tuples, function( i, tuple ) {
54
+ var list = tuple[ 2 ],
55
+ stateString = tuple[ 3 ];
56
+
57
+ // promise[ done | fail | progress ] = list.add
58
+ promise[ tuple[1] ] = list.add;
59
+
60
+ // Handle state
61
+ if ( stateString ) {
62
+ list.add(function() {
63
+ // state = [ resolved | rejected ]
64
+ state = stateString;
65
+
66
+ // [ reject_list | resolve_list ].disable; progress_list.lock
67
+ }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
68
+ }
69
+
70
+ // deferred[ resolve | reject | notify ]
71
+ deferred[ tuple[0] ] = function() {
72
+ deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
73
+ return this;
74
+ };
75
+ deferred[ tuple[0] + "With" ] = list.fireWith;
76
+ });
77
+
78
+ // Make the deferred a promise
79
+ promise.promise( deferred );
80
+
81
+ // Call given func if any
82
+ if ( func ) {
83
+ func.call( deferred, deferred );
84
+ }
85
+
86
+ // All done!
87
+ return deferred;
88
+ },
89
+
90
+ // Deferred helper
91
+ when: function( subordinate /* , ..., subordinateN */ ) {
92
+ var i = 0,
93
+ resolveValues = core_slice.call( arguments ),
94
+ length = resolveValues.length,
95
+
96
+ // the count of uncompleted subordinates
97
+ remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
98
+
99
+ // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
100
+ deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
101
+
102
+ // Update function for both resolve and progress values
103
+ updateFunc = function( i, contexts, values ) {
104
+ return function( value ) {
105
+ contexts[ i ] = this;
106
+ values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
107
+ if( values === progressValues ) {
108
+ deferred.notifyWith( contexts, values );
109
+ } else if ( !( --remaining ) ) {
110
+ deferred.resolveWith( contexts, values );
111
+ }
112
+ };
113
+ },
114
+
115
+ progressValues, progressContexts, resolveContexts;
116
+
117
+ // add listeners to Deferred subordinates; treat others as resolved
118
+ if ( length > 1 ) {
119
+ progressValues = new Array( length );
120
+ progressContexts = new Array( length );
121
+ resolveContexts = new Array( length );
122
+ for ( ; i < length; i++ ) {
123
+ if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
124
+ resolveValues[ i ].promise()
125
+ .done( updateFunc( i, resolveContexts, resolveValues ) )
126
+ .fail( deferred.reject )
127
+ .progress( updateFunc( i, progressContexts, progressValues ) );
128
+ } else {
129
+ --remaining;
130
+ }
131
+ }
132
+ }
133
+
134
+ // if we're not waiting on anything, resolve the master
135
+ if ( !remaining ) {
136
+ deferred.resolveWith( resolveContexts, resolveValues );
137
+ }
138
+
139
+ return deferred.promise();
140
+ }
141
+ });