compass-jquery-plugin 0.3.2.3 → 0.3.2.4

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 (235) hide show
  1. data/README.md +54 -37
  2. data/VERSION.yml +1 -1
  3. data/lib/handle_attributes.rb +4 -4
  4. data/lib/handle_js_files.rb +5 -5
  5. data/lib/jqtouch_theme.rb +2 -2
  6. data/lib/jquery/dynatree.rb +2 -2
  7. data/lib/jquery/emulators.rb +1 -1
  8. data/lib/jquery/flash_messages.rb +6 -6
  9. data/lib/jquery/graphics.rb +5 -0
  10. data/lib/jquery/gridify/assertions.rb +1 -1
  11. data/lib/jquery/gridify/grid.rb +76 -59
  12. data/lib/jquery/gridify/grid_column.rb +73 -67
  13. data/lib/jquery/gridify/grid_finder.rb +79 -79
  14. data/lib/jquery/gridify/grid_options.rb +154 -149
  15. data/lib/jquery/gridify/grid_view.rb +143 -143
  16. data/lib/jquery/gridify.rb +25 -25
  17. data/lib/jquery/ical/calendar.rb +2 -2
  18. data/lib/jquery/ical/event.rb +48 -44
  19. data/lib/jquery/ical/helpers/ui_event_helper.rb +3 -3
  20. data/lib/jquery/jqgrid/jqgrid.rb +58 -58
  21. data/lib/jquery/jqgrid.rb +1 -1
  22. data/lib/jquery/jqtouch.rb +1 -1
  23. data/lib/jquery/jquery.rb +117 -117
  24. data/lib/jquery/jquery_auto_complete.rb +9 -9
  25. data/lib/jquery/jquery_json_response.rb +12 -12
  26. data/lib/jquery/jquery_selector_assertions.rb +55 -53
  27. data/lib/jquery/jstree.rb +2 -2
  28. data/lib/jquery/mobile.rb +1 -1
  29. data/lib/jquery/ribbon.rb +2 -2
  30. data/lib/jquery/secret_sauce/controller/ui_dialog_controls.rb +5 -5
  31. data/lib/jquery/secret_sauce/controller/ui_grid_controls.rb +5 -5
  32. data/lib/jquery/secret_sauce/helpers/ui_dialog_helper.rb +1 -1
  33. data/lib/jquery/secret_sauce/helpers/ui_form_helper.rb +39 -39
  34. data/lib/jquery/secret_sauce/helpers/ui_grid_helper.rb +74 -74
  35. data/lib/jquery/secret_sauce/model/find_for_grid.rb +21 -21
  36. data/lib/jquery/secret_sauce.rb +1 -1
  37. data/lib/jquery/tools.rb +1 -1
  38. data/lib/jquery_mobile_theme.rb +2 -2
  39. data/lib/jquery_ui_theme.rb +12 -12
  40. data/templates/dynatree/config/initializers/dynatree.rb +3 -3
  41. data/templates/dynatree/jquery/dynatree/aero.scss +16 -16
  42. data/templates/dynatree/jquery/dynatree/aqua.scss +16 -16
  43. data/templates/dynatree/jquery/dynatree/crystal.scss +16 -16
  44. data/templates/dynatree/jquery/dynatree/xp.scss +17 -17
  45. data/templates/dynatree/jquery.dynatree.js +2926 -2912
  46. data/templates/emulators/config/initializers/emulators.rb +6 -6
  47. data/templates/graphics/config/initializers/graphics.rb +5 -0
  48. data/templates/graphics/jquery/ganttView.scss +89 -0
  49. data/templates/graphics/jquery.ganttView.js +1669 -0
  50. data/templates/graphics/jquery.ganttView.min.js +70 -0
  51. data/templates/{jquery → graphics}/jquery.sparkline.js +466 -438
  52. data/templates/{jquery → graphics}/jquery.sparkline.min.js +0 -0
  53. data/templates/graphics/manifest.rb +9 -0
  54. data/templates/jqgrid/config/initializers/jqgrid.rb +1 -1
  55. data/templates/jqgrid/i18n/jqgrid/locale-ar.js +131 -125
  56. data/templates/jqgrid/i18n/jqgrid/locale-bg.js +135 -131
  57. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.js +135 -131
  58. data/templates/jqgrid/i18n/jqgrid/locale-cat.js +132 -126
  59. data/templates/jqgrid/i18n/jqgrid/locale-cn.js +137 -131
  60. data/templates/jqgrid/i18n/jqgrid/locale-cs.js +133 -127
  61. data/templates/jqgrid/i18n/jqgrid/locale-da.js +132 -126
  62. data/templates/jqgrid/i18n/jqgrid/locale-de.js +138 -132
  63. data/templates/jqgrid/i18n/jqgrid/locale-el.js +131 -125
  64. data/templates/jqgrid/i18n/jqgrid/locale-en.js +133 -127
  65. data/templates/jqgrid/i18n/jqgrid/locale-es.js +133 -127
  66. data/templates/jqgrid/i18n/jqgrid/locale-fa.js +19 -16
  67. data/templates/jqgrid/i18n/jqgrid/locale-fi.js +132 -126
  68. data/templates/jqgrid/i18n/jqgrid/locale-fr.js +131 -125
  69. data/templates/jqgrid/i18n/jqgrid/locale-gl.js +131 -125
  70. data/templates/jqgrid/i18n/jqgrid/locale-he.js +132 -126
  71. data/templates/jqgrid/i18n/jqgrid/locale-hu.js +133 -127
  72. data/templates/jqgrid/i18n/jqgrid/locale-is.js +131 -125
  73. data/templates/jqgrid/i18n/jqgrid/locale-it.js +8 -1
  74. data/templates/jqgrid/i18n/jqgrid/locale-ja.js +139 -136
  75. data/templates/jqgrid/i18n/jqgrid/locale-nl.js +4 -1
  76. data/templates/jqgrid/i18n/jqgrid/locale-no.js +14 -1
  77. data/templates/jqgrid/i18n/jqgrid/locale-pl.js +132 -126
  78. data/templates/jqgrid/i18n/jqgrid/locale-pt-br.js +132 -126
  79. data/templates/jqgrid/i18n/jqgrid/locale-pt.js +130 -124
  80. data/templates/jqgrid/i18n/jqgrid/locale-ro.js +144 -138
  81. data/templates/jqgrid/i18n/jqgrid/locale-ru.js +132 -126
  82. data/templates/jqgrid/i18n/jqgrid/locale-sk.js +132 -126
  83. data/templates/jqgrid/i18n/jqgrid/locale-sr.js +133 -127
  84. data/templates/jqgrid/i18n/jqgrid/locale-sv.js +132 -126
  85. data/templates/jqgrid/i18n/jqgrid/locale-tr.js +131 -125
  86. data/templates/jqgrid/i18n/jqgrid/locale-ua.js +132 -126
  87. data/templates/jqgrid/jquery.jqGrid.js +12735 -10444
  88. data/templates/jqgrid/jquery.jqGrid.min.js +477 -469
  89. data/templates/jqgrid/public/stylesheets/ellipsis-xbl.xml +12 -10
  90. data/templates/jqtouch/config/initializers/jqtouch.rb +3 -3
  91. data/templates/jqtouch/jquery/touch/jqtouch.scss +1 -1
  92. data/templates/jqtouch/jquery.jqtouch.js +10025 -10043
  93. data/templates/jquery/config/initializers/jquery.rb +2 -4
  94. data/templates/jquery/history.adapter.jquery.js +71 -0
  95. data/templates/jquery/history.adapter.jquery.min.js +4 -0
  96. data/templates/jquery/history.html4.js +690 -0
  97. data/templates/jquery/history.html4.min.js +21 -0
  98. data/templates/jquery/history.js +1297 -0
  99. data/templates/jquery/history.min.js +29 -0
  100. data/templates/jquery/i18n/jquery.ui/datepicker-af.js +20 -20
  101. data/templates/jquery/i18n/jquery.ui/datepicker-ar-DZ.js +19 -19
  102. data/templates/jquery/i18n/jquery.ui/datepicker-ar.js +19 -19
  103. data/templates/jquery/i18n/jquery.ui/datepicker-az.js +19 -19
  104. data/templates/jquery/i18n/jquery.ui/datepicker-bg.js +8 -8
  105. data/templates/jquery/i18n/jquery.ui/datepicker-bs.js +20 -20
  106. data/templates/jquery/i18n/jquery.ui/datepicker-ca.js +20 -20
  107. data/templates/jquery/i18n/jquery.ui/datepicker-cs.js +20 -20
  108. data/templates/jquery/i18n/jquery.ui/datepicker-da.js +14 -14
  109. data/templates/jquery/i18n/jquery.ui/datepicker-de.js +20 -20
  110. data/templates/jquery/i18n/jquery.ui/datepicker-el.js +20 -20
  111. data/templates/jquery/i18n/jquery.ui/datepicker-en-AU.js +20 -20
  112. data/templates/jquery/i18n/jquery.ui/datepicker-en-GB.js +20 -20
  113. data/templates/jquery/i18n/jquery.ui/datepicker-en-NZ.js +20 -20
  114. data/templates/jquery/i18n/jquery.ui/datepicker-eo.js +20 -20
  115. data/templates/jquery/i18n/jquery.ui/datepicker-es.js +20 -20
  116. data/templates/jquery/i18n/jquery.ui/datepicker-et.js +20 -20
  117. data/templates/jquery/i18n/jquery.ui/datepicker-eu.js +20 -20
  118. data/templates/jquery/i18n/jquery.ui/datepicker-fa.js +18 -18
  119. data/templates/jquery/i18n/jquery.ui/datepicker-fi.js +15 -15
  120. data/templates/jquery/i18n/jquery.ui/datepicker-fo.js +20 -20
  121. data/templates/jquery/i18n/jquery.ui/datepicker-fr-CH.js +20 -20
  122. data/templates/jquery/i18n/jquery.ui/datepicker-fr.js +22 -22
  123. data/templates/jquery/i18n/jquery.ui/datepicker-gl.js +20 -20
  124. data/templates/jquery/i18n/jquery.ui/datepicker-he.js +20 -20
  125. data/templates/jquery/i18n/jquery.ui/datepicker-hr.js +20 -20
  126. data/templates/jquery/i18n/jquery.ui/datepicker-hu.js +20 -20
  127. data/templates/jquery/i18n/jquery.ui/datepicker-hu.min.js +1 -1
  128. data/templates/jquery/i18n/jquery.ui/datepicker-hy.js +20 -20
  129. data/templates/jquery/i18n/jquery.ui/datepicker-id.js +20 -20
  130. data/templates/jquery/i18n/jquery.ui/datepicker-is.js +20 -20
  131. data/templates/jquery/i18n/jquery.ui/datepicker-it.js +20 -20
  132. data/templates/jquery/i18n/jquery.ui/datepicker-ja.js +20 -20
  133. data/templates/jquery/i18n/jquery.ui/datepicker-ko.js +20 -20
  134. data/templates/jquery/i18n/jquery.ui/datepicker-kz.js +20 -20
  135. data/templates/jquery/i18n/jquery.ui/datepicker-lt.js +20 -20
  136. data/templates/jquery/i18n/jquery.ui/datepicker-lv.js +20 -20
  137. data/templates/jquery/i18n/jquery.ui/datepicker-ml.js +20 -20
  138. data/templates/jquery/i18n/jquery.ui/datepicker-ms.js +20 -20
  139. data/templates/jquery/i18n/jquery.ui/datepicker-nl.js +20 -20
  140. data/templates/jquery/i18n/jquery.ui/datepicker-no.js +16 -16
  141. data/templates/jquery/i18n/jquery.ui/datepicker-no.min.js +2 -2
  142. data/templates/jquery/i18n/jquery.ui/datepicker-pl.js +20 -20
  143. data/templates/jquery/i18n/jquery.ui/datepicker-pt-BR.js +20 -20
  144. data/templates/jquery/i18n/jquery.ui/datepicker-pt.js +20 -20
  145. data/templates/jquery/i18n/jquery.ui/datepicker-rm.js +18 -18
  146. data/templates/jquery/i18n/jquery.ui/datepicker-ro.js +20 -20
  147. data/templates/jquery/i18n/jquery.ui/datepicker-ru.js +20 -20
  148. data/templates/jquery/i18n/jquery.ui/datepicker-sk.js +20 -20
  149. data/templates/jquery/i18n/jquery.ui/datepicker-sl.js +20 -20
  150. data/templates/jquery/i18n/jquery.ui/datepicker-sq.js +20 -20
  151. data/templates/jquery/i18n/jquery.ui/datepicker-sr-SR.js +20 -20
  152. data/templates/jquery/i18n/jquery.ui/datepicker-sr.js +20 -20
  153. data/templates/jquery/i18n/jquery.ui/datepicker-sv.js +14 -14
  154. data/templates/jquery/i18n/jquery.ui/datepicker-ta.js +20 -20
  155. data/templates/jquery/i18n/jquery.ui/datepicker-th.js +20 -20
  156. data/templates/jquery/i18n/jquery.ui/datepicker-tr.js +20 -20
  157. data/templates/jquery/i18n/jquery.ui/datepicker-uk.js +20 -20
  158. data/templates/jquery/i18n/jquery.ui/datepicker-vi.js +20 -20
  159. data/templates/jquery/i18n/jquery.ui/datepicker-zh-CN.js +20 -20
  160. data/templates/jquery/i18n/jquery.ui/datepicker-zh-HK.js +20 -20
  161. data/templates/jquery/i18n/jquery.ui/datepicker-zh-TW.js +20 -20
  162. data/templates/jquery/{partials → jquery/ui}/_flash_messages.scss +0 -0
  163. data/templates/jquery/jquery/ui/_theme.scss +14 -13
  164. data/templates/jquery/jquery/ui/contextMenu/configure.png +0 -0
  165. data/templates/jquery/jquery/ui/contextMenu/copy.png +0 -0
  166. data/templates/jquery/jquery/ui/contextMenu/cut.png +0 -0
  167. data/templates/jquery/jquery/ui/contextMenu/delete.png +0 -0
  168. data/templates/jquery/jquery/ui/contextMenu/edit.png +0 -0
  169. data/templates/jquery/jquery/ui/contextMenu/exit.png +0 -0
  170. data/templates/jquery/jquery/ui/contextMenu/new.png +0 -0
  171. data/templates/jquery/jquery/ui/contextMenu/paste.png +0 -0
  172. data/templates/jquery/jquery/ui/contextMenu/rename.png +0 -0
  173. data/templates/jquery/jquery/ui/contextMenu/show.png +0 -0
  174. data/templates/jquery/jquery/ui/contextMenu/trash.png +0 -0
  175. data/templates/jquery/jquery/ui/contextMenu.scss +16 -10
  176. data/templates/jquery/jquery-ui.js +11839 -23066
  177. data/templates/jquery/jquery-ui.min.js +401 -795
  178. data/templates/jquery/jquery.bgiframe.js +27 -25
  179. data/templates/jquery/jquery.contextMenu.js +209 -196
  180. data/templates/jquery/jquery.cookie.js +3 -1
  181. data/templates/jquery/jquery.dotimeout.js +236 -228
  182. data/templates/jquery/jquery.dst.js +154 -151
  183. data/templates/jquery/jquery.farbtastic.js +293 -293
  184. data/templates/jquery/jquery.flashMessages.js +26 -0
  185. data/templates/jquery/jquery.flashMessages.min.js +1 -0
  186. data/templates/jquery/jquery.form.js +803 -786
  187. data/templates/jquery/jquery.haml.js +248 -247
  188. data/templates/jquery/jquery.hotkeys.js +89 -89
  189. data/templates/jquery/jquery.js +8141 -8106
  190. data/templates/jquery/jquery.layout.js +2451 -2415
  191. data/templates/jquery/jquery.min.js +167 -166
  192. data/templates/jquery/jquery.mousewheel.js +62 -54
  193. data/templates/jquery/jquery.offline.js +171 -171
  194. data/templates/jquery/jquery.pngFix.js +76 -76
  195. data/templates/jquery/jquery.replacetext.js +83 -83
  196. data/templates/jquery/jquery.themeswitchertool.js +202 -177
  197. data/templates/jquery/jquery.tmpl.js +478 -473
  198. data/templates/jquery/jquery.tmplPlus.js +82 -81
  199. data/templates/jquery/jrails.js +178 -175
  200. data/templates/jquery/json.js +77 -7
  201. data/templates/jquery/json2.js +480 -0
  202. data/templates/jquery/json2.min.js +7 -0
  203. data/templates/jquery/lib/tasks/haml.rake +2 -2
  204. data/templates/jquery/manifest.rb +21 -17
  205. data/templates/jstree/jquery.jstree.js +5967 -4536
  206. data/templates/mobile/config/initializers/mobile.rb +1 -1
  207. data/templates/mobile/jquery/mobile/_base.scss +944 -927
  208. data/templates/mobile/jquery/mobile/default.scss +61 -48
  209. data/templates/mobile/jquery/mobile/valencia.scss +56 -42
  210. data/templates/mobile/jquery.mobile.js +4461 -4347
  211. data/templates/mobile/jquery.mobile.min.js +11 -2
  212. data/templates/mobile/lib/tasks/jquery.mobile.rake +12 -12
  213. data/templates/ribbon/config/initializers/ribbon.rb +2 -2
  214. data/templates/ribbon/jquery.ribbon.js +50 -29
  215. data/templates/secret_sauce/secret_sauce.js +8 -8
  216. data/templates/tools/flowplayer.js +945 -1
  217. data/templates/tools/jquery.tools.js +4645 -4335
  218. data/templates/tools/jquery.tools.min.js +37 -37
  219. data/templates/tools/lib/tasks/jquery.tools.rake +4 -4
  220. data/templates/tools/swfobject.js +813 -773
  221. metadata +33 -21
  222. data/templates/jquery/haml.js +0 -506
  223. data/templates/jquery/haml.min.js +0 -5
  224. data/templates/jquery/jquery/ui/contextMenu/door.png +0 -0
  225. data/templates/jquery/jquery/ui/contextMenu/page_white_copy.png +0 -0
  226. data/templates/jquery/jquery/ui/contextMenu/page_white_delete.png +0 -0
  227. data/templates/jquery/jquery/ui/contextMenu/page_white_edit.png +0 -0
  228. data/templates/jquery/jquery/ui/contextMenu/page_white_new.png +0 -0
  229. data/templates/jquery/jquery/ui/contextMenu/page_white_paste.png +0 -0
  230. data/templates/jquery/jquery.compat-1.3.js +0 -291
  231. data/templates/jquery/jquery.compat-1.3.min.js +0 -6
  232. data/templates/jquery/jquery.flash_messages.js +0 -5
  233. data/templates/jquery/jquery.flash_messages.min.js +0 -1
  234. data/templates/jquery/jquery.history.js +0 -194
  235. data/templates/jquery/jquery.history.min.js +0 -5
@@ -12,283 +12,284 @@
12
12
 
13
13
  (function ($) {
14
14
 
15
- var action_queue = [], data_cache = {};
15
+ var action_queue = [], data_cache = {};
16
16
 
17
- // Test an object for it's constructor type. Sort of a reverse, discriminatory instanceof
18
- function isTypeOf(t, c) {
19
- if (t === undefined) {
20
- return c === 'undefined';
21
- }
22
- if (t === null) {
23
- return c === 'null';
17
+ // Test an object for it's constructor type. Sort of a reverse, discriminatory instanceof
18
+ function isTypeOf(t, c) {
19
+ if (t === undefined) {
20
+ return c === 'undefined';
21
+ }
22
+ if (t === null) {
23
+ return c === 'null';
24
+ }
25
+ return t.constructor.toString().match(new RegExp(c, 'i')) !== null;
24
26
  }
25
- return t.constructor.toString().match(new RegExp(c, 'i')) !== null;
26
- }
27
27
 
28
- // Parses declarations out of the flat attribute array
29
- function extractor(attrs, symbol) {
30
- if (!attrs || !attrs[symbol]) {
31
- return undefined;
32
- }
33
- var extract = attrs[symbol];
34
- delete attrs[symbol];
35
- return extract;
36
- }
37
-
38
- function is_selector(obj) {
39
- // Must be string of at least 2 length
40
- if (typeof obj !== "string" || obj.length < 2) {
41
- return false;
28
+ // Parses declarations out of the flat attribute array
29
+ function extractor(attrs, symbol) {
30
+ if (!attrs || !attrs[symbol]) {
31
+ return undefined;
32
+ }
33
+ var extract = attrs[symbol];
34
+ delete attrs[symbol];
35
+ return extract;
42
36
  }
43
- // Must start with '.', '#', or '%'
44
- var c = obj.charAt(0);
45
- if (!(c === '.' || c === '#' || c === '%')) {
46
- return false;
37
+
38
+ function is_selector(obj) {
39
+ // Must be string of at least 2 length
40
+ if (typeof obj !== "string" || obj.length < 2) {
41
+ return false;
42
+ }
43
+ // Must start with '.', '#', or '%'
44
+ var c = obj.charAt(0);
45
+ if (!(c === '.' || c === '#' || c === '%')) {
46
+ return false;
47
+ }
48
+ return true;
47
49
  }
48
- return true;
49
- }
50
50
 
51
51
 
52
- // The workhorse that creates the node.
53
- function exec_haml(node, haml) {
52
+ // The workhorse that creates the node.
53
+ function exec_haml(node, haml) {
54
+
55
+ var css, actions, input, selector, classes, ids, tag, newnode, attributes;
54
56
 
55
- var css, actions, input, selector, classes, ids, tag, newnode, attributes;
57
+ // Shallow copy haml so we don't eat our input when we shift the array
58
+ // Also this turns "arguments" pseudo-arrays to real arrays
59
+ input = Array.prototype.slice.call(haml, 0);
56
60
 
57
- // Shallow copy haml so we don't eat our input when we shift the array
58
- // Also this turns "arguments" pseudo-arrays to real arrays
59
- input = Array.prototype.slice.call(haml, 0);
61
+ function apply_haml(parent, part) {
60
62
 
61
- function apply_haml(parent, part) {
63
+ // Ignore undefined and null, they only break things.
64
+ if (part === undefined || part === null) {
65
+ return;
66
+ }
62
67
 
63
- // Ignore undefined and null, they only break things.
64
- if (part === undefined || part === null) {
65
- return;
66
- }
68
+ // Pass dom and jquery nodes through as is
69
+ if (part.nodeType || part.jquery) {
70
+ parent.append(part);
71
+ return;
72
+ }
67
73
 
68
- // Pass dom and jquery nodes through as is
69
- if (part.nodeType || part.jquery) {
70
- parent.append(part);
71
- return;
72
- }
74
+ // Strings and numbers are text nodes
75
+ if (isTypeOf(part, 'String') && part.length > 0) {
76
+ // Strip of leading backslash
77
+ if (part[0] === '\\') {
78
+ part = part.substr(1);
79
+ }
80
+ parent.append(document.createTextNode(part));
81
+ return;
82
+ }
83
+ if (isTypeOf(part, 'Number')) {
84
+ parent.append(document.createTextNode(part));
85
+ return;
86
+ }
73
87
 
74
- // Strings and numbers are text nodes
75
- if (isTypeOf(part, 'String') && part.length > 0) {
76
- // Strip of leading backslash
77
- if (part[0] === '\\') {
78
- part = part.substr(1);
88
+ // Recursivly run arrays
89
+ if (isTypeOf(part, 'Array') && part.length > 0) {
90
+ exec_haml(parent, part);
91
+ return;
92
+ }
79
93
  }
80
- parent.append(document.createTextNode(part));
81
- return;
82
- }
83
- if (isTypeOf(part, 'Number')) {
84
- parent.append(document.createTextNode(part));
85
- return;
86
- }
87
-
88
- // Recursivly run arrays
89
- if (isTypeOf(part, 'Array') && part.length > 0) {
90
- exec_haml(parent, part);
91
- return;
92
- }
93
- }
94
94
 
95
- if (input.length && input.length > 0)
96
- {
97
- if (is_selector(input[0])) {
98
- // Pull the selector off the front
99
- // Parse out the selector information
100
- // Default tag to div if not specified
101
- selector = input.shift();
102
- classes = selector.match(/\.[^\.#]+/g);
103
- ids = selector.match(/#[^\.#]+/g);
104
- tag = selector.match(/^%([^\.#]+)/g);
105
- tag = tag ? tag[0].substr(1) : 'div';
106
-
107
- // Create the node
108
- newnode = $(document.createElement(tag));
109
-
110
- // Parse the attributes if there are any
111
- if (input.length > 0 && isTypeOf(input[0], 'Object') && !input[0].nodeType && !input[0].jquery) {
112
- attributes = input.shift();
113
- css = extractor(attributes, 'css');
114
- actions = extractor(attributes, '$');
115
- newnode.attr(attributes);
95
+ if (input.length && input.length > 0) {
96
+ if (is_selector(input[0])) {
97
+ // Pull the selector off the front
98
+ // Parse out the selector information
99
+ // Default tag to div if not specified
100
+ selector = input.shift();
101
+ classes = selector.match(/\.[^\.#]+/g);
102
+ ids = selector.match(/#[^\.#]+/g);
103
+ tag = selector.match(/^%([^\.#]+)/g);
104
+ tag = tag ? tag[0].substr(1) : 'div';
105
+
106
+ // Create the node
107
+ newnode = $(document.createElement(tag));
108
+
109
+ // Parse the attributes if there are any
110
+ if (input.length > 0 && isTypeOf(input[0], 'Object') && !input[0].nodeType && !input[0].jquery) {
111
+ attributes = input.shift();
112
+ css = extractor(attributes, 'css');
113
+ actions = extractor(attributes, '$');
114
+ newnode.attr(attributes);
115
+ }
116
+
117
+ // Add in the ids from the selector
118
+ if (ids) {
119
+ $.each(ids, function () {
120
+ var id, old_id;
121
+ id = this.substr(1);
122
+ old_id = newnode.attr('id');
123
+ if (old_id) {
124
+ newnode.attr('id', old_id + " " + id);
125
+ }
126
+ else {
127
+ newnode.attr('id', id);
128
+ }
129
+ });
130
+ }
131
+
132
+ // Add in the classes from the selector
133
+ if (classes) {
134
+ $.each(classes, function () {
135
+ newnode.addClass(this.substr(1));
136
+ });
137
+ }
138
+
139
+ // Add in any css from underscore styles
140
+ if (css) {
141
+ newnode.css(css);
142
+ }
143
+
144
+ // Move a level deeper in the dom tree
145
+ node.append(newnode);
146
+ node = newnode;
147
+
148
+ // Process jquery actions as well
149
+ if (actions) {
150
+ $.each(actions, function (method) {
151
+ action_queue.push({node: node, method: method, params: this});
152
+ });
153
+ }
154
+ }
155
+
156
+ // Add in content with recursive call
157
+ $.each(input, function () {
158
+ apply_haml(node, this);
159
+ });
160
+ }
161
+ else {
162
+ apply_haml(node, input);
116
163
  }
164
+ }
117
165
 
118
- // Add in the ids from the selector
119
- if (ids) {
120
- $.each(ids, function () {
121
- var id, old_id;
122
- id = this.substr(1);
123
- old_id = newnode.attr('id');
124
- if (old_id) {
125
- newnode.attr('id', old_id + " " + id);
166
+ // jQuery events are queued up till we're sure the node exists in the main dom. Once
167
+ // it's safe, this function is called to actually flush the queue and execute the function calls.
168
+ function flush_queue() {
169
+ $.each(action_queue, function () {
170
+ // $ is a special case that means onload
171
+ if (this.method === '$') {
172
+ this.params.apply(this.node, []);
126
173
  }
174
+ // otherwise call method on the jquery object with given params.
127
175
  else {
128
- newnode.attr('id', id);
176
+ if (!isTypeOf(this.params, 'Array')) {
177
+ this.params = [this.params];
178
+ }
179
+ this.node[this.method].apply(this.node, this.params);
129
180
  }
130
- });
131
- }
181
+ });
182
+ action_queue = [];
183
+ }
132
184
 
133
- // Add in the classes from the selector
134
- if (classes) {
135
- $.each(classes, function () {
136
- newnode.addClass(this.substr(1));
137
- });
138
- }
185
+ function real_haml(haml) {
186
+ var newnode;
139
187
 
140
- // Add in any css from underscore styles
141
- if (css) {
142
- newnode.css(css);
143
- }
188
+ // Build the dom on a non-attached node
189
+ newnode = $(document.createElement("div"));
190
+ exec_haml(newnode, haml);
144
191
 
145
- // Move a level deeper in the dom tree
146
- node.append(newnode);
147
- node = newnode;
192
+ // Then attach it's children to the page.
193
+ this.append(newnode.contents());
148
194
 
149
- // Process jquery actions as well
150
- if (actions) {
151
- $.each(actions, function (method) {
152
- action_queue.push({node: node, method: method, params: this});
153
- });
195
+ // Flush action queue once we're on the page
196
+ if (this.closest('body').length > 0) {
197
+ flush_queue();
154
198
  }
155
- }
156
199
 
157
- // Add in content with recursive call
158
- $.each(input, function () {
159
- apply_haml(node, this);
160
- });
200
+ return newnode.contents();
161
201
  }
162
- else
163
- {
164
- apply_haml(node, input);
165
- }
166
- }
167
-
168
- // jQuery events are queued up till we're sure the node exists in the main dom. Once
169
- // it's safe, this function is called to actually flush the queue and execute the function calls.
170
- function flush_queue() {
171
- $.each(action_queue, function () {
172
- // $ is a special case that means onload
173
- if (this.method === '$') {
174
- this.params.apply(this.node, []);
175
- }
176
- // otherwise call method on the jquery object with given params.
177
- else {
178
- if (!isTypeOf(this.params, 'Array')) {
179
- this.params = [this.params];
180
- }
181
- this.node[this.method].apply(this.node, this.params);
182
- }
183
- });
184
- action_queue = [];
185
- }
186
202
 
187
- function real_haml(haml) {
188
- var newnode;
189
-
190
- // Build the dom on a non-attached node
191
- newnode = $(document.createElement("div"));
192
- exec_haml(newnode, haml);
193
-
194
- // Then attach it's children to the page.
195
- this.append(newnode.contents());
196
-
197
- // Flush action queue once we're on the page
198
- if (this.closest('body').length > 0) {
199
- flush_queue();
200
- }
203
+ // Like the original haml, but returns the new nodes instead of the
204
+ // original matched set.
205
+ $.fn.insertHaml = function (/* haml1, haml2, ... */) {
206
+ return real_haml.call(this,
207
+ Array.prototype.slice.call(arguments, 0)
208
+ );
209
+ };
210
+
211
+ // Calling haml on a node converts the passed in array to dom children
212
+ $.fn.haml = function (/* haml1, haml2, ... */) {
213
+ real_haml.call(this,
214
+ Array.prototype.slice.call(arguments, 0)
215
+ );
216
+
217
+ // Return "this" to allow for chaining.
218
+ return this;
219
+
220
+ };
221
+
222
+ // static helper functions
223
+ $.haml = {
224
+ // This is a constructor to create a piece of page that is re-drawable.
225
+ // The passed in callback is the function that provides the haml input.
226
+ // Call inject() on the resulting object to place it in the haml document stream
227
+ // and call update() on the placeholder whenever you want it to redraw itself.
228
+ placeholder: function (callback) {
229
+ var children;
230
+
231
+ function inject() {
232
+ // Build the dom on a non-attached node
233
+ var node = $(document.createElement("div"));
234
+ node.haml(callback.apply(this, arguments));
235
+ children = node.contents();
236
+ return children;
237
+ }
201
238
 
202
- return newnode.contents();
203
- }
204
-
205
- // Like the original haml, but returns the new nodes instead of the
206
- // original matched set.
207
- $.fn.insertHaml = function (/* haml1, haml2, ... */) {
208
- return real_haml.call(this,
209
- Array.prototype.slice.call(arguments, 0)
210
- );
211
- };
212
-
213
- // Calling haml on a node converts the passed in array to dom children
214
- $.fn.haml = function (/* haml1, haml2, ... */) {
215
- real_haml.call(this,
216
- Array.prototype.slice.call(arguments, 0)
217
- );
218
-
219
- // Return "this" to allow for chaining.
220
- return this;
221
-
222
- };
223
-
224
- // static helper functions
225
- $.haml = {
226
- // This is a constructor to create a piece of page that is re-drawable.
227
- // The passed in callback is the function that provides the haml input.
228
- // Call inject() on the resulting object to place it in the haml document stream
229
- // and call update() on the placeholder whenever you want it to redraw itself.
230
- placeholder: function (callback) {
231
- var children;
232
-
233
- function inject() {
234
- // Build the dom on a non-attached node
235
- var node = $(document.createElement("div"));
236
- node.haml(callback.apply(this, arguments));
237
- children = node.contents();
238
- return children;
239
- }
240
-
241
- // Replace the first child node with the new children and remove other
242
- // old children if there are any.
243
- function update() {
244
- var args = arguments;
245
- $.each(children, function (i, child) {
246
- if (i === 0) {
247
- $(child).replaceWith(inject.apply(this, args));
248
- } else {
249
- $(child).remove();
250
- }
251
- });
252
- flush_queue();
253
- }
254
-
255
- return {
256
- inject: inject,
257
- update: update
258
- };
259
- },
260
-
261
- // data_provider is a function that has the form "function (on_data)" where
262
- // on_data is of the form "function (data)" so that OnDemand can call
263
- // data_provider giving it a callback, and the callback will be called with
264
- // the data when it's available.
265
- // onDemand returns functions that returns a placeholder. See above for details.
266
- onDemand: function (data_provider, loading_message) {
267
- var placeholder;
268
-
269
- loading_message = ["%div", {style: "text-align: center; cursor: wait"}, loading_message || "Loading..."];
270
-
271
- return function (renderer/*, param1, param2...*/) {
272
- var params = Array.prototype.slice.call(arguments, 1);
273
- function render_haml() {
274
- var key = Util.stringify(params);
275
- if (data_cache[key] !== undefined) {
276
- // If data is in data_cache, render directly
277
- return renderer(data_cache[key]);
278
- } else {
279
- // Otherwise put in a placeholder and then replace once the data is known
280
- function on_data(data) {
281
- data_cache[key] = data;
282
- placeholder.update();
239
+ // Replace the first child node with the new children and remove other
240
+ // old children if there are any.
241
+ function update() {
242
+ var args = arguments;
243
+ $.each(children, function (i, child) {
244
+ if (i === 0) {
245
+ $(child).replaceWith(inject.apply(this, args));
246
+ } else {
247
+ $(child).remove();
248
+ }
249
+ });
250
+ flush_queue();
283
251
  }
284
- data_provider.apply(this, [on_data].concat(params));
285
- return loading_message;
286
- }
252
+
253
+ return {
254
+ inject: inject,
255
+ update: update
256
+ };
257
+ },
258
+
259
+ // data_provider is a function that has the form "function (on_data)" where
260
+ // on_data is of the form "function (data)" so that OnDemand can call
261
+ // data_provider giving it a callback, and the callback will be called with
262
+ // the data when it's available.
263
+ // onDemand returns functions that returns a placeholder. See above for details.
264
+ onDemand: function (data_provider, loading_message) {
265
+ var placeholder;
266
+
267
+ loading_message = ["%div", {style: "text-align: center; cursor: wait"}, loading_message || "Loading..."];
268
+
269
+ return function (renderer/*, param1, param2...*/) {
270
+ var params = Array.prototype.slice.call(arguments, 1);
271
+
272
+ function render_haml() {
273
+ var key = Util.stringify(params);
274
+ if (data_cache[key] !== undefined) {
275
+ // If data is in data_cache, render directly
276
+ return renderer(data_cache[key]);
277
+ } else {
278
+ // Otherwise put in a placeholder and then replace once the data is known
279
+ function on_data(data) {
280
+ data_cache[key] = data;
281
+ placeholder.update();
282
+ }
283
+
284
+ data_provider.apply(this, [on_data].concat(params));
285
+ return loading_message;
286
+ }
287
+ }
288
+
289
+ placeholder = $.haml.placeholder(render_haml);
290
+ return placeholder;
291
+ };
287
292
  }
288
- placeholder = $.haml.placeholder(render_haml);
289
- return placeholder;
290
- };
291
- }
292
- };
293
+ };
293
294
 
294
295
  }(jQuery));