logster 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/Guardfile +8 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +38 -0
  7. data/Rakefile +18 -0
  8. data/assets/javascript/app.js +377 -0
  9. data/assets/javascript/external/ember.js +44267 -0
  10. data/assets/javascript/external/ember.min.js +19 -0
  11. data/assets/javascript/external/handlebars.min.js +28 -0
  12. data/assets/javascript/external/jquery.min.js +5 -0
  13. data/assets/javascript/external/lodash.min.js +56 -0
  14. data/assets/javascript/external/moment.min.js +6 -0
  15. data/assets/javascript/templates/application.handlebars +1 -0
  16. data/assets/javascript/templates/index.handlebars +48 -0
  17. data/assets/javascript/templates/message.handlebars +7 -0
  18. data/assets/stylesheets/app.css +188 -0
  19. data/bower_components/ember/.bower.json +22 -0
  20. data/bower_components/ember/.gitignore +5 -0
  21. data/bower_components/ember/Makefile +9 -0
  22. data/bower_components/ember/README.md +12 -0
  23. data/bower_components/ember/bower.json +11 -0
  24. data/bower_components/ember/component.json +13 -0
  25. data/bower_components/ember/composer.json +27 -0
  26. data/bower_components/ember/ember-template-compiler.js +320 -0
  27. data/bower_components/ember/ember.js +44267 -0
  28. data/bower_components/ember/ember.min.js +19 -0
  29. data/bower_components/ember/ember.prod.js +42649 -0
  30. data/bower_components/ember/package.json +11 -0
  31. data/bower_components/handlebars/.bower.json +16 -0
  32. data/bower_components/handlebars/.gitignore +2 -0
  33. data/bower_components/handlebars/README.md +11 -0
  34. data/bower_components/handlebars/bower.json +6 -0
  35. data/bower_components/handlebars/component.json +9 -0
  36. data/bower_components/handlebars/composer.json +35 -0
  37. data/bower_components/handlebars/handlebars-source.gemspec +21 -0
  38. data/bower_components/handlebars/handlebars.amd.js +2719 -0
  39. data/bower_components/handlebars/handlebars.amd.min.js +28 -0
  40. data/bower_components/handlebars/handlebars.js +2746 -0
  41. data/bower_components/handlebars/handlebars.js.nuspec +17 -0
  42. data/bower_components/handlebars/handlebars.min.js +28 -0
  43. data/bower_components/handlebars/handlebars.runtime.amd.js +515 -0
  44. data/bower_components/handlebars/handlebars.runtime.amd.min.js +27 -0
  45. data/bower_components/handlebars/handlebars.runtime.js +530 -0
  46. data/bower_components/handlebars/handlebars.runtime.min.js +27 -0
  47. data/bower_components/handlebars/lib/handlebars/source.rb +11 -0
  48. data/bower_components/jquery/.bower.json +37 -0
  49. data/bower_components/jquery/MIT-LICENSE.txt +21 -0
  50. data/bower_components/jquery/bower.json +27 -0
  51. data/bower_components/jquery/dist/jquery.js +9111 -0
  52. data/bower_components/jquery/dist/jquery.min.js +5 -0
  53. data/bower_components/jquery/dist/jquery.min.map +1 -0
  54. data/bower_components/jquery/src/ajax.js +806 -0
  55. data/bower_components/jquery/src/ajax/jsonp.js +89 -0
  56. data/bower_components/jquery/src/ajax/load.js +75 -0
  57. data/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  58. data/bower_components/jquery/src/ajax/parseXML.js +28 -0
  59. data/bower_components/jquery/src/ajax/script.js +64 -0
  60. data/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  61. data/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  62. data/bower_components/jquery/src/ajax/xhr.js +130 -0
  63. data/bower_components/jquery/src/attributes.js +11 -0
  64. data/bower_components/jquery/src/attributes/attr.js +143 -0
  65. data/bower_components/jquery/src/attributes/classes.js +158 -0
  66. data/bower_components/jquery/src/attributes/prop.js +96 -0
  67. data/bower_components/jquery/src/attributes/support.js +35 -0
  68. data/bower_components/jquery/src/attributes/val.js +153 -0
  69. data/bower_components/jquery/src/callbacks.js +205 -0
  70. data/bower_components/jquery/src/core.js +500 -0
  71. data/bower_components/jquery/src/core/access.js +60 -0
  72. data/bower_components/jquery/src/core/init.js +123 -0
  73. data/bower_components/jquery/src/core/parseHTML.js +39 -0
  74. data/bower_components/jquery/src/core/ready.js +96 -0
  75. data/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  76. data/bower_components/jquery/src/css.js +455 -0
  77. data/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  78. data/bower_components/jquery/src/css/curCSS.js +57 -0
  79. data/bower_components/jquery/src/css/defaultDisplay.js +69 -0
  80. data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  81. data/bower_components/jquery/src/css/support.js +83 -0
  82. data/bower_components/jquery/src/css/swap.js +28 -0
  83. data/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  84. data/bower_components/jquery/src/css/var/getStyles.js +5 -0
  85. data/bower_components/jquery/src/css/var/isHidden.js +13 -0
  86. data/bower_components/jquery/src/css/var/rmargin.js +3 -0
  87. data/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  88. data/bower_components/jquery/src/data.js +175 -0
  89. data/bower_components/jquery/src/data/Data.js +181 -0
  90. data/bower_components/jquery/src/data/accepts.js +20 -0
  91. data/bower_components/jquery/src/data/var/data_priv.js +5 -0
  92. data/bower_components/jquery/src/data/var/data_user.js +5 -0
  93. data/bower_components/jquery/src/deferred.js +149 -0
  94. data/bower_components/jquery/src/deprecated.js +13 -0
  95. data/bower_components/jquery/src/dimensions.js +50 -0
  96. data/bower_components/jquery/src/effects.js +642 -0
  97. data/bower_components/jquery/src/effects/Tween.js +114 -0
  98. data/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  99. data/bower_components/jquery/src/event.js +859 -0
  100. data/bower_components/jquery/src/event/alias.js +39 -0
  101. data/bower_components/jquery/src/event/support.js +9 -0
  102. data/bower_components/jquery/src/exports/amd.js +18 -0
  103. data/bower_components/jquery/src/exports/global.js +32 -0
  104. data/bower_components/jquery/src/intro.js +44 -0
  105. data/bower_components/jquery/src/jquery.js +36 -0
  106. data/bower_components/jquery/src/manipulation.js +583 -0
  107. data/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  108. data/bower_components/jquery/src/manipulation/support.js +24 -0
  109. data/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  110. data/bower_components/jquery/src/offset.js +204 -0
  111. data/bower_components/jquery/src/outro.js +1 -0
  112. data/bower_components/jquery/src/queue.js +142 -0
  113. data/bower_components/jquery/src/queue/delay.js +22 -0
  114. data/bower_components/jquery/src/selector-native.js +171 -0
  115. data/bower_components/jquery/src/selector-sizzle.js +14 -0
  116. data/bower_components/jquery/src/selector.js +1 -0
  117. data/bower_components/jquery/src/serialize.js +111 -0
  118. data/bower_components/jquery/src/sizzle/dist/sizzle.js +2015 -0
  119. data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  120. data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  121. data/bower_components/jquery/src/traversing.js +200 -0
  122. data/bower_components/jquery/src/traversing/findFilter.js +100 -0
  123. data/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  124. data/bower_components/jquery/src/var/arr.js +3 -0
  125. data/bower_components/jquery/src/var/class2type.js +4 -0
  126. data/bower_components/jquery/src/var/concat.js +5 -0
  127. data/bower_components/jquery/src/var/hasOwn.js +5 -0
  128. data/bower_components/jquery/src/var/indexOf.js +5 -0
  129. data/bower_components/jquery/src/var/pnum.js +3 -0
  130. data/bower_components/jquery/src/var/push.js +5 -0
  131. data/bower_components/jquery/src/var/rnotwhite.js +3 -0
  132. data/bower_components/jquery/src/var/slice.js +5 -0
  133. data/bower_components/jquery/src/var/strundefined.js +3 -0
  134. data/bower_components/jquery/src/var/support.js +4 -0
  135. data/bower_components/jquery/src/var/toString.js +5 -0
  136. data/bower_components/jquery/src/var/trim.js +3 -0
  137. data/bower_components/jquery/src/wrap.js +78 -0
  138. data/bower_components/lodash/.bower.json +34 -0
  139. data/bower_components/lodash/LICENSE.txt +22 -0
  140. data/bower_components/lodash/bower.json +23 -0
  141. data/bower_components/lodash/dist/lodash.compat.js +7157 -0
  142. data/bower_components/lodash/dist/lodash.compat.min.js +61 -0
  143. data/bower_components/lodash/dist/lodash.js +6785 -0
  144. data/bower_components/lodash/dist/lodash.min.js +56 -0
  145. data/bower_components/lodash/dist/lodash.underscore.js +4979 -0
  146. data/bower_components/lodash/dist/lodash.underscore.min.js +39 -0
  147. data/bower_components/moment/.bower.json +31 -0
  148. data/bower_components/moment/LICENSE +22 -0
  149. data/bower_components/moment/bower.json +20 -0
  150. data/bower_components/moment/lang/ar-ma.js +56 -0
  151. data/bower_components/moment/lang/ar.js +56 -0
  152. data/bower_components/moment/lang/bg.js +86 -0
  153. data/bower_components/moment/lang/br.js +107 -0
  154. data/bower_components/moment/lang/bs.js +139 -0
  155. data/bower_components/moment/lang/ca.js +66 -0
  156. data/bower_components/moment/lang/cs.js +155 -0
  157. data/bower_components/moment/lang/cv.js +59 -0
  158. data/bower_components/moment/lang/cy.js +77 -0
  159. data/bower_components/moment/lang/da.js +56 -0
  160. data/bower_components/moment/lang/de.js +71 -0
  161. data/bower_components/moment/lang/el.js +79 -0
  162. data/bower_components/moment/lang/en-au.js +62 -0
  163. data/bower_components/moment/lang/en-ca.js +59 -0
  164. data/bower_components/moment/lang/en-gb.js +63 -0
  165. data/bower_components/moment/lang/eo.js +65 -0
  166. data/bower_components/moment/lang/es.js +75 -0
  167. data/bower_components/moment/lang/et.js +76 -0
  168. data/bower_components/moment/lang/eu.js +60 -0
  169. data/bower_components/moment/lang/fa.js +97 -0
  170. data/bower_components/moment/lang/fi.js +103 -0
  171. data/bower_components/moment/lang/fo.js +56 -0
  172. data/bower_components/moment/lang/fr-ca.js +54 -0
  173. data/bower_components/moment/lang/fr.js +58 -0
  174. data/bower_components/moment/lang/gl.js +71 -0
  175. data/bower_components/moment/lang/he.js +77 -0
  176. data/bower_components/moment/lang/hi.js +105 -0
  177. data/bower_components/moment/lang/hr.js +140 -0
  178. data/bower_components/moment/lang/hu.js +105 -0
  179. data/bower_components/moment/lang/hy-am.js +113 -0
  180. data/bower_components/moment/lang/id.js +67 -0
  181. data/bower_components/moment/lang/is.js +124 -0
  182. data/bower_components/moment/lang/it.js +59 -0
  183. data/bower_components/moment/lang/ja.js +58 -0
  184. data/bower_components/moment/lang/ka.js +108 -0
  185. data/bower_components/moment/lang/km.js +55 -0
  186. data/bower_components/moment/lang/ko.js +63 -0
  187. data/bower_components/moment/lang/lb.js +160 -0
  188. data/bower_components/moment/lang/lt.js +118 -0
  189. data/bower_components/moment/lang/lv.js +77 -0
  190. data/bower_components/moment/lang/mk.js +86 -0
  191. data/bower_components/moment/lang/ml.js +64 -0
  192. data/bower_components/moment/lang/mr.js +104 -0
  193. data/bower_components/moment/lang/ms-my.js +66 -0
  194. data/bower_components/moment/lang/nb.js +57 -0
  195. data/bower_components/moment/lang/ne.js +105 -0
  196. data/bower_components/moment/lang/nl.js +67 -0
  197. data/bower_components/moment/lang/nn.js +56 -0
  198. data/bower_components/moment/lang/pl.js +98 -0
  199. data/bower_components/moment/lang/pt-br.js +56 -0
  200. data/bower_components/moment/lang/pt.js +60 -0
  201. data/bower_components/moment/lang/ro.js +72 -0
  202. data/bower_components/moment/lang/ru.js +163 -0
  203. data/bower_components/moment/lang/sk.js +156 -0
  204. data/bower_components/moment/lang/sl.js +144 -0
  205. data/bower_components/moment/lang/sq.js +61 -0
  206. data/bower_components/moment/lang/sr-cyr.js +106 -0
  207. data/bower_components/moment/lang/sr.js +106 -0
  208. data/bower_components/moment/lang/sv.js +63 -0
  209. data/bower_components/moment/lang/ta.js +112 -0
  210. data/bower_components/moment/lang/th.js +58 -0
  211. data/bower_components/moment/lang/tl-ph.js +58 -0
  212. data/bower_components/moment/lang/tr.js +93 -0
  213. data/bower_components/moment/lang/tzm-la.js +55 -0
  214. data/bower_components/moment/lang/tzm.js +55 -0
  215. data/bower_components/moment/lang/uk.js +157 -0
  216. data/bower_components/moment/lang/uz.js +55 -0
  217. data/bower_components/moment/lang/vi.js +62 -0
  218. data/bower_components/moment/lang/zh-cn.js +108 -0
  219. data/bower_components/moment/lang/zh-tw.js +84 -0
  220. data/bower_components/moment/min/langs.js +5991 -0
  221. data/bower_components/moment/min/langs.min.js +3 -0
  222. data/bower_components/moment/min/moment-with-langs.js +7993 -0
  223. data/bower_components/moment/min/moment-with-langs.min.js +9 -0
  224. data/bower_components/moment/min/moment.min.js +6 -0
  225. data/bower_components/moment/moment.js +2489 -0
  226. data/bower_components/moment/readme.md +368 -0
  227. data/lib/logster.rb +9 -0
  228. data/lib/logster/logger.rb +31 -0
  229. data/lib/logster/message.rb +42 -0
  230. data/lib/logster/middleware/reporter.rb +13 -0
  231. data/lib/logster/middleware/viewer.rb +122 -0
  232. data/lib/logster/rails/railtie.rb +39 -0
  233. data/lib/logster/redis_store.rb +124 -0
  234. data/lib/logster/version.rb +3 -0
  235. data/logster.gemspec +30 -0
  236. data/test/logster/middleware/test_viewer.rb +34 -0
  237. data/test/logster/test_redis_store.rb +112 -0
  238. data/test/test_helper.rb +6 -0
  239. data/website/Gemfile +6 -0
  240. data/website/config.ru +2 -0
  241. data/website/data/data.json +1 -0
  242. data/website/docker_container/logster.yml +95 -0
  243. data/website/sample.rb +85 -0
  244. data/website/scripts/persist_logs.rb +13 -0
  245. metadata +375 -0
@@ -0,0 +1,60 @@
1
+ define([
2
+ "../core"
3
+ ], function( jQuery ) {
4
+
5
+ // Multifunctional method to get and set values of a collection
6
+ // The value/s can optionally be executed if it's a function
7
+ var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
8
+ var i = 0,
9
+ len = elems.length,
10
+ bulk = key == null;
11
+
12
+ // Sets many values
13
+ if ( jQuery.type( key ) === "object" ) {
14
+ chainable = true;
15
+ for ( i in key ) {
16
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
17
+ }
18
+
19
+ // Sets one value
20
+ } else if ( value !== undefined ) {
21
+ chainable = true;
22
+
23
+ if ( !jQuery.isFunction( value ) ) {
24
+ raw = true;
25
+ }
26
+
27
+ if ( bulk ) {
28
+ // Bulk operations run against the entire set
29
+ if ( raw ) {
30
+ fn.call( elems, value );
31
+ fn = null;
32
+
33
+ // ...except when executing function values
34
+ } else {
35
+ bulk = fn;
36
+ fn = function( elem, key, value ) {
37
+ return bulk.call( jQuery( elem ), value );
38
+ };
39
+ }
40
+ }
41
+
42
+ if ( fn ) {
43
+ for ( ; i < len; i++ ) {
44
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
45
+ }
46
+ }
47
+ }
48
+
49
+ return chainable ?
50
+ elems :
51
+
52
+ // Gets
53
+ bulk ?
54
+ fn.call( elems ) :
55
+ len ? fn( elems[0], key ) : emptyGet;
56
+ };
57
+
58
+ return access;
59
+
60
+ });
@@ -0,0 +1,123 @@
1
+ // Initialize a jQuery object
2
+ define([
3
+ "../core",
4
+ "./var/rsingleTag",
5
+ "../traversing/findFilter"
6
+ ], function( jQuery, rsingleTag ) {
7
+
8
+ // A central reference to the root jQuery(document)
9
+ var rootjQuery,
10
+
11
+ // A simple way to check for HTML strings
12
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
13
+ // Strict HTML recognition (#11290: must start with <)
14
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
15
+
16
+ init = jQuery.fn.init = function( selector, context ) {
17
+ var match, elem;
18
+
19
+ // HANDLE: $(""), $(null), $(undefined), $(false)
20
+ if ( !selector ) {
21
+ return this;
22
+ }
23
+
24
+ // Handle HTML strings
25
+ if ( typeof selector === "string" ) {
26
+ if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
27
+ // Assume that strings that start and end with <> are HTML and skip the regex check
28
+ match = [ null, selector, null ];
29
+
30
+ } else {
31
+ match = rquickExpr.exec( selector );
32
+ }
33
+
34
+ // Match html or make sure no context is specified for #id
35
+ if ( match && (match[1] || !context) ) {
36
+
37
+ // HANDLE: $(html) -> $(array)
38
+ if ( match[1] ) {
39
+ context = context instanceof jQuery ? context[0] : context;
40
+
41
+ // scripts is true for back-compat
42
+ // Intentionally let the error be thrown if parseHTML is not present
43
+ jQuery.merge( this, jQuery.parseHTML(
44
+ match[1],
45
+ context && context.nodeType ? context.ownerDocument || context : document,
46
+ true
47
+ ) );
48
+
49
+ // HANDLE: $(html, props)
50
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
51
+ for ( match in context ) {
52
+ // Properties of context are called as methods if possible
53
+ if ( jQuery.isFunction( this[ match ] ) ) {
54
+ this[ match ]( context[ match ] );
55
+
56
+ // ...and otherwise set as attributes
57
+ } else {
58
+ this.attr( match, context[ match ] );
59
+ }
60
+ }
61
+ }
62
+
63
+ return this;
64
+
65
+ // HANDLE: $(#id)
66
+ } else {
67
+ elem = document.getElementById( match[2] );
68
+
69
+ // Check parentNode to catch when Blackberry 4.6 returns
70
+ // nodes that are no longer in the document #6963
71
+ if ( elem && elem.parentNode ) {
72
+ // Inject the element directly into the jQuery object
73
+ this.length = 1;
74
+ this[0] = elem;
75
+ }
76
+
77
+ this.context = document;
78
+ this.selector = selector;
79
+ return this;
80
+ }
81
+
82
+ // HANDLE: $(expr, $(...))
83
+ } else if ( !context || context.jquery ) {
84
+ return ( context || rootjQuery ).find( selector );
85
+
86
+ // HANDLE: $(expr, context)
87
+ // (which is just equivalent to: $(context).find(expr)
88
+ } else {
89
+ return this.constructor( context ).find( selector );
90
+ }
91
+
92
+ // HANDLE: $(DOMElement)
93
+ } else if ( selector.nodeType ) {
94
+ this.context = this[0] = selector;
95
+ this.length = 1;
96
+ return this;
97
+
98
+ // HANDLE: $(function)
99
+ // Shortcut for document ready
100
+ } else if ( jQuery.isFunction( selector ) ) {
101
+ return typeof rootjQuery.ready !== "undefined" ?
102
+ rootjQuery.ready( selector ) :
103
+ // Execute immediately if ready is not present
104
+ selector( jQuery );
105
+ }
106
+
107
+ if ( selector.selector !== undefined ) {
108
+ this.selector = selector.selector;
109
+ this.context = selector.context;
110
+ }
111
+
112
+ return jQuery.makeArray( selector, this );
113
+ };
114
+
115
+ // Give the init function the jQuery prototype for later instantiation
116
+ init.prototype = jQuery.fn;
117
+
118
+ // Initialize central reference
119
+ rootjQuery = jQuery( document );
120
+
121
+ return init;
122
+
123
+ });
@@ -0,0 +1,39 @@
1
+ define([
2
+ "../core",
3
+ "./var/rsingleTag",
4
+ "../manipulation" // buildFragment
5
+ ], function( jQuery, rsingleTag ) {
6
+
7
+ // data: string of html
8
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
9
+ // keepScripts (optional): If true, will include scripts passed in the html string
10
+ jQuery.parseHTML = function( data, context, keepScripts ) {
11
+ if ( !data || typeof data !== "string" ) {
12
+ return null;
13
+ }
14
+ if ( typeof context === "boolean" ) {
15
+ keepScripts = context;
16
+ context = false;
17
+ }
18
+ context = context || document;
19
+
20
+ var parsed = rsingleTag.exec( data ),
21
+ scripts = !keepScripts && [];
22
+
23
+ // Single tag
24
+ if ( parsed ) {
25
+ return [ context.createElement( parsed[1] ) ];
26
+ }
27
+
28
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
29
+
30
+ if ( scripts && scripts.length ) {
31
+ jQuery( scripts ).remove();
32
+ }
33
+
34
+ return jQuery.merge( [], parsed.childNodes );
35
+ };
36
+
37
+ return jQuery.parseHTML;
38
+
39
+ });
@@ -0,0 +1,96 @@
1
+ define([
2
+ "../core",
3
+ "../core/init",
4
+ "../deferred"
5
+ ], function( jQuery ) {
6
+
7
+ // The deferred used on DOM ready
8
+ var readyList;
9
+
10
+ jQuery.fn.ready = function( fn ) {
11
+ // Add the callback
12
+ jQuery.ready.promise().done( fn );
13
+
14
+ return this;
15
+ };
16
+
17
+ jQuery.extend({
18
+ // Is the DOM ready to be used? Set to true once it occurs.
19
+ isReady: false,
20
+
21
+ // A counter to track how many items to wait for before
22
+ // the ready event fires. See #6781
23
+ readyWait: 1,
24
+
25
+ // Hold (or release) the ready event
26
+ holdReady: function( hold ) {
27
+ if ( hold ) {
28
+ jQuery.readyWait++;
29
+ } else {
30
+ jQuery.ready( true );
31
+ }
32
+ },
33
+
34
+ // Handle when the DOM is ready
35
+ ready: function( wait ) {
36
+
37
+ // Abort if there are pending holds or we're already ready
38
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
39
+ return;
40
+ }
41
+
42
+ // Remember that the DOM is ready
43
+ jQuery.isReady = true;
44
+
45
+ // If a normal DOM Ready event fired, decrement, and wait if need be
46
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
47
+ return;
48
+ }
49
+
50
+ // If there are functions bound, to execute
51
+ readyList.resolveWith( document, [ jQuery ] );
52
+
53
+ // Trigger any bound ready events
54
+ if ( jQuery.fn.trigger ) {
55
+ jQuery( document ).trigger("ready").off("ready");
56
+ }
57
+ }
58
+ });
59
+
60
+ /**
61
+ * The ready event handler and self cleanup method
62
+ */
63
+ function completed() {
64
+ document.removeEventListener( "DOMContentLoaded", completed, false );
65
+ window.removeEventListener( "load", completed, false );
66
+ jQuery.ready();
67
+ }
68
+
69
+ jQuery.ready.promise = function( obj ) {
70
+ if ( !readyList ) {
71
+
72
+ readyList = jQuery.Deferred();
73
+
74
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
75
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
76
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
77
+ if ( document.readyState === "complete" ) {
78
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
79
+ setTimeout( jQuery.ready );
80
+
81
+ } else {
82
+
83
+ // Use the handy event callback
84
+ document.addEventListener( "DOMContentLoaded", completed, false );
85
+
86
+ // A fallback to window.onload, that will always work
87
+ window.addEventListener( "load", completed, false );
88
+ }
89
+ }
90
+ return readyList.promise( obj );
91
+ };
92
+
93
+ // Kick off the DOM ready check even if the user does not
94
+ jQuery.ready.promise();
95
+
96
+ });
@@ -0,0 +1,4 @@
1
+ define(function() {
2
+ // Match a standalone tag
3
+ return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
4
+ });
@@ -0,0 +1,455 @@
1
+ define([
2
+ "./core",
3
+ "./var/pnum",
4
+ "./core/access",
5
+ "./css/var/rmargin",
6
+ "./css/var/rnumnonpx",
7
+ "./css/var/cssExpand",
8
+ "./css/var/isHidden",
9
+ "./css/var/getStyles",
10
+ "./css/curCSS",
11
+ "./css/defaultDisplay",
12
+ "./css/addGetHookIf",
13
+ "./css/support",
14
+ "./data/var/data_priv",
15
+
16
+ "./core/init",
17
+ "./css/swap",
18
+ "./core/ready",
19
+ "./selector" // contains
20
+ ], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
21
+ getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
22
+
23
+ var
24
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
25
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
26
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
27
+ rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
28
+ rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
29
+
30
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
31
+ cssNormalTransform = {
32
+ letterSpacing: 0,
33
+ fontWeight: 400
34
+ },
35
+
36
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
37
+
38
+ // return a css property mapped to a potentially vendor prefixed property
39
+ function vendorPropName( style, name ) {
40
+
41
+ // shortcut for names that are not vendor prefixed
42
+ if ( name in style ) {
43
+ return name;
44
+ }
45
+
46
+ // check for vendor prefixed names
47
+ var capName = name[0].toUpperCase() + name.slice(1),
48
+ origName = name,
49
+ i = cssPrefixes.length;
50
+
51
+ while ( i-- ) {
52
+ name = cssPrefixes[ i ] + capName;
53
+ if ( name in style ) {
54
+ return name;
55
+ }
56
+ }
57
+
58
+ return origName;
59
+ }
60
+
61
+ function setPositiveNumber( elem, value, subtract ) {
62
+ var matches = rnumsplit.exec( value );
63
+ return matches ?
64
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
65
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
66
+ value;
67
+ }
68
+
69
+ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
70
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
71
+ // If we already have the right measurement, avoid augmentation
72
+ 4 :
73
+ // Otherwise initialize for horizontal or vertical properties
74
+ name === "width" ? 1 : 0,
75
+
76
+ val = 0;
77
+
78
+ for ( ; i < 4; i += 2 ) {
79
+ // both box models exclude margin, so add it if we want it
80
+ if ( extra === "margin" ) {
81
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
82
+ }
83
+
84
+ if ( isBorderBox ) {
85
+ // border-box includes padding, so remove it if we want content
86
+ if ( extra === "content" ) {
87
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
88
+ }
89
+
90
+ // at this point, extra isn't border nor margin, so remove border
91
+ if ( extra !== "margin" ) {
92
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
93
+ }
94
+ } else {
95
+ // at this point, extra isn't content, so add padding
96
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
97
+
98
+ // at this point, extra isn't content nor padding, so add border
99
+ if ( extra !== "padding" ) {
100
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
101
+ }
102
+ }
103
+ }
104
+
105
+ return val;
106
+ }
107
+
108
+ function getWidthOrHeight( elem, name, extra ) {
109
+
110
+ // Start with offset property, which is equivalent to the border-box value
111
+ var valueIsBorderBox = true,
112
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
113
+ styles = getStyles( elem ),
114
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
115
+
116
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
117
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
118
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
119
+ if ( val <= 0 || val == null ) {
120
+ // Fall back to computed then uncomputed css if necessary
121
+ val = curCSS( elem, name, styles );
122
+ if ( val < 0 || val == null ) {
123
+ val = elem.style[ name ];
124
+ }
125
+
126
+ // Computed unit is not pixels. Stop here and return.
127
+ if ( rnumnonpx.test(val) ) {
128
+ return val;
129
+ }
130
+
131
+ // we need the check for style in case a browser which returns unreliable values
132
+ // for getComputedStyle silently falls back to the reliable elem.style
133
+ valueIsBorderBox = isBorderBox &&
134
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
135
+
136
+ // Normalize "", auto, and prepare for extra
137
+ val = parseFloat( val ) || 0;
138
+ }
139
+
140
+ // use the active box-sizing model to add/subtract irrelevant styles
141
+ return ( val +
142
+ augmentWidthOrHeight(
143
+ elem,
144
+ name,
145
+ extra || ( isBorderBox ? "border" : "content" ),
146
+ valueIsBorderBox,
147
+ styles
148
+ )
149
+ ) + "px";
150
+ }
151
+
152
+ function showHide( elements, show ) {
153
+ var display, elem, hidden,
154
+ values = [],
155
+ index = 0,
156
+ length = elements.length;
157
+
158
+ for ( ; index < length; index++ ) {
159
+ elem = elements[ index ];
160
+ if ( !elem.style ) {
161
+ continue;
162
+ }
163
+
164
+ values[ index ] = data_priv.get( elem, "olddisplay" );
165
+ display = elem.style.display;
166
+ if ( show ) {
167
+ // Reset the inline display of this element to learn if it is
168
+ // being hidden by cascaded rules or not
169
+ if ( !values[ index ] && display === "none" ) {
170
+ elem.style.display = "";
171
+ }
172
+
173
+ // Set elements which have been overridden with display: none
174
+ // in a stylesheet to whatever the default browser style is
175
+ // for such an element
176
+ if ( elem.style.display === "" && isHidden( elem ) ) {
177
+ values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
178
+ }
179
+ } else {
180
+
181
+ if ( !values[ index ] ) {
182
+ hidden = isHidden( elem );
183
+
184
+ if ( display && display !== "none" || !hidden ) {
185
+ data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
186
+ }
187
+ }
188
+ }
189
+ }
190
+
191
+ // Set the display of most of the elements in a second loop
192
+ // to avoid the constant reflow
193
+ for ( index = 0; index < length; index++ ) {
194
+ elem = elements[ index ];
195
+ if ( !elem.style ) {
196
+ continue;
197
+ }
198
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
199
+ elem.style.display = show ? values[ index ] || "" : "none";
200
+ }
201
+ }
202
+
203
+ return elements;
204
+ }
205
+
206
+ jQuery.extend({
207
+ // Add in style property hooks for overriding the default
208
+ // behavior of getting and setting a style property
209
+ cssHooks: {
210
+ opacity: {
211
+ get: function( elem, computed ) {
212
+ if ( computed ) {
213
+ // We should always get a number back from opacity
214
+ var ret = curCSS( elem, "opacity" );
215
+ return ret === "" ? "1" : ret;
216
+ }
217
+ }
218
+ }
219
+ },
220
+
221
+ // Don't automatically add "px" to these possibly-unitless properties
222
+ cssNumber: {
223
+ "columnCount": true,
224
+ "fillOpacity": true,
225
+ "fontWeight": true,
226
+ "lineHeight": true,
227
+ "opacity": true,
228
+ "order": true,
229
+ "orphans": true,
230
+ "widows": true,
231
+ "zIndex": true,
232
+ "zoom": true
233
+ },
234
+
235
+ // Add in properties whose names you wish to fix before
236
+ // setting or getting the value
237
+ cssProps: {
238
+ // normalize float css property
239
+ "float": "cssFloat"
240
+ },
241
+
242
+ // Get and set the style property on a DOM Node
243
+ style: function( elem, name, value, extra ) {
244
+ // Don't set styles on text and comment nodes
245
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
246
+ return;
247
+ }
248
+
249
+ // Make sure that we're working with the right name
250
+ var ret, type, hooks,
251
+ origName = jQuery.camelCase( name ),
252
+ style = elem.style;
253
+
254
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
255
+
256
+ // gets hook for the prefixed version
257
+ // followed by the unprefixed version
258
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
259
+
260
+ // Check if we're setting a value
261
+ if ( value !== undefined ) {
262
+ type = typeof value;
263
+
264
+ // convert relative number strings (+= or -=) to relative numbers. #7345
265
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
266
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
267
+ // Fixes bug #9237
268
+ type = "number";
269
+ }
270
+
271
+ // Make sure that null and NaN values aren't set. See: #7116
272
+ if ( value == null || value !== value ) {
273
+ return;
274
+ }
275
+
276
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
277
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
278
+ value += "px";
279
+ }
280
+
281
+ // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
282
+ // but it would mean to define eight (for every problematic property) identical functions
283
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
284
+ style[ name ] = "inherit";
285
+ }
286
+
287
+ // If a hook was provided, use that value, otherwise just set the specified value
288
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
289
+ // Support: Chrome, Safari
290
+ // Setting style to blank string required to delete "style: x !important;"
291
+ style[ name ] = "";
292
+ style[ name ] = value;
293
+ }
294
+
295
+ } else {
296
+ // If a hook was provided get the non-computed value from there
297
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
298
+ return ret;
299
+ }
300
+
301
+ // Otherwise just get the value from the style object
302
+ return style[ name ];
303
+ }
304
+ },
305
+
306
+ css: function( elem, name, extra, styles ) {
307
+ var val, num, hooks,
308
+ origName = jQuery.camelCase( name );
309
+
310
+ // Make sure that we're working with the right name
311
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
312
+
313
+ // gets hook for the prefixed version
314
+ // followed by the unprefixed version
315
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
316
+
317
+ // If a hook was provided get the computed value from there
318
+ if ( hooks && "get" in hooks ) {
319
+ val = hooks.get( elem, true, extra );
320
+ }
321
+
322
+ // Otherwise, if a way to get the computed value exists, use that
323
+ if ( val === undefined ) {
324
+ val = curCSS( elem, name, styles );
325
+ }
326
+
327
+ //convert "normal" to computed value
328
+ if ( val === "normal" && name in cssNormalTransform ) {
329
+ val = cssNormalTransform[ name ];
330
+ }
331
+
332
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
333
+ if ( extra === "" || extra ) {
334
+ num = parseFloat( val );
335
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
336
+ }
337
+ return val;
338
+ }
339
+ });
340
+
341
+ jQuery.each([ "height", "width" ], function( i, name ) {
342
+ jQuery.cssHooks[ name ] = {
343
+ get: function( elem, computed, extra ) {
344
+ if ( computed ) {
345
+ // certain elements can have dimension info if we invisibly show them
346
+ // however, it must have a current display style that would benefit from this
347
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
348
+ jQuery.swap( elem, cssShow, function() {
349
+ return getWidthOrHeight( elem, name, extra );
350
+ }) :
351
+ getWidthOrHeight( elem, name, extra );
352
+ }
353
+ },
354
+
355
+ set: function( elem, value, extra ) {
356
+ var styles = extra && getStyles( elem );
357
+ return setPositiveNumber( elem, value, extra ?
358
+ augmentWidthOrHeight(
359
+ elem,
360
+ name,
361
+ extra,
362
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
363
+ styles
364
+ ) : 0
365
+ );
366
+ }
367
+ };
368
+ });
369
+
370
+ // Support: Android 2.3
371
+ jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
372
+ function( elem, computed ) {
373
+ if ( computed ) {
374
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
375
+ // Work around by temporarily setting element display to inline-block
376
+ return jQuery.swap( elem, { "display": "inline-block" },
377
+ curCSS, [ elem, "marginRight" ] );
378
+ }
379
+ }
380
+ );
381
+
382
+ // These hooks are used by animate to expand properties
383
+ jQuery.each({
384
+ margin: "",
385
+ padding: "",
386
+ border: "Width"
387
+ }, function( prefix, suffix ) {
388
+ jQuery.cssHooks[ prefix + suffix ] = {
389
+ expand: function( value ) {
390
+ var i = 0,
391
+ expanded = {},
392
+
393
+ // assumes a single number if not a string
394
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
395
+
396
+ for ( ; i < 4; i++ ) {
397
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
398
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
399
+ }
400
+
401
+ return expanded;
402
+ }
403
+ };
404
+
405
+ if ( !rmargin.test( prefix ) ) {
406
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
407
+ }
408
+ });
409
+
410
+ jQuery.fn.extend({
411
+ css: function( name, value ) {
412
+ return access( this, function( elem, name, value ) {
413
+ var styles, len,
414
+ map = {},
415
+ i = 0;
416
+
417
+ if ( jQuery.isArray( name ) ) {
418
+ styles = getStyles( elem );
419
+ len = name.length;
420
+
421
+ for ( ; i < len; i++ ) {
422
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
423
+ }
424
+
425
+ return map;
426
+ }
427
+
428
+ return value !== undefined ?
429
+ jQuery.style( elem, name, value ) :
430
+ jQuery.css( elem, name );
431
+ }, name, value, arguments.length > 1 );
432
+ },
433
+ show: function() {
434
+ return showHide( this, true );
435
+ },
436
+ hide: function() {
437
+ return showHide( this );
438
+ },
439
+ toggle: function( state ) {
440
+ if ( typeof state === "boolean" ) {
441
+ return state ? this.show() : this.hide();
442
+ }
443
+
444
+ return this.each(function() {
445
+ if ( isHidden( this ) ) {
446
+ jQuery( this ).show();
447
+ } else {
448
+ jQuery( this ).hide();
449
+ }
450
+ });
451
+ }
452
+ });
453
+
454
+ return jQuery;
455
+ });