haml 3.2.0.alpha.10 → 3.2.0.alpha.13

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (389) hide show
  1. data/.yardopts +19 -7
  2. data/CHANGELOG.md +1224 -0
  3. data/FAQ.md +157 -0
  4. data/README.md +99 -62
  5. data/REFERENCE.md +1404 -0
  6. data/Rakefile +52 -341
  7. data/init.rb +1 -18
  8. data/lib/haml.rb +6 -30
  9. data/lib/haml/buffer.rb +37 -16
  10. data/lib/haml/compiler.rb +52 -13
  11. data/lib/haml/engine.rb +61 -44
  12. data/lib/haml/exec.rb +21 -4
  13. data/lib/haml/filters.rb +136 -166
  14. data/lib/haml/helpers.rb +37 -10
  15. data/lib/haml/helpers/action_view_extensions.rb +2 -1
  16. data/lib/haml/helpers/action_view_mods.rb +67 -181
  17. data/lib/haml/helpers/rails_323_textarea_fix.rb +39 -0
  18. data/lib/haml/helpers/xss_mods.rb +9 -11
  19. data/lib/haml/html.rb +22 -9
  20. data/lib/haml/html/erb.rb +1 -1
  21. data/lib/haml/parser.rb +22 -15
  22. data/lib/haml/railtie.rb +2 -13
  23. data/lib/haml/template.rb +18 -85
  24. data/lib/haml/template/options.rb +1 -1
  25. data/lib/haml/template/plugin.rb +15 -101
  26. data/lib/haml/util.rb +120 -603
  27. data/lib/haml/version.rb +1 -107
  28. data/test/{haml/engine_test.rb → engine_test.rb} +137 -143
  29. data/test/{haml/erb → erb}/_av_partial_1.erb +1 -1
  30. data/test/{haml/erb → erb}/_av_partial_2.erb +1 -1
  31. data/test/{haml/erb → erb}/action_view.erb +1 -1
  32. data/test/{haml/erb → erb}/standard.erb +0 -0
  33. data/test/filters_test.rb +141 -0
  34. data/test/gemfiles/Gemfile.rails-3.0.x +4 -6
  35. data/test/gemfiles/Gemfile.rails-3.1.x +5 -6
  36. data/test/gemfiles/Gemfile.rails-3.2.x +6 -0
  37. data/test/haml-spec/LICENSE +14 -0
  38. data/test/{haml/spec → haml-spec}/README.md +26 -17
  39. data/test/haml-spec/lua_haml_spec.lua +38 -0
  40. data/test/haml-spec/perl_haml_test.pl +81 -0
  41. data/test/haml-spec/ruby_haml_test.rb +23 -0
  42. data/test/{haml/spec → haml-spec}/tests.json +132 -54
  43. data/test/{haml/helper_test.rb → helper_test.rb} +50 -36
  44. data/test/{haml/html2haml → html2haml}/erb_tests.rb +0 -0
  45. data/test/{haml/html2haml_test.rb → html2haml_test.rb} +11 -5
  46. data/test/{haml/markaby → markaby}/standard.mab +0 -0
  47. data/test/{haml/mocks → mocks}/article.rb +0 -0
  48. data/test/{haml/results → results}/content_for_layout.xhtml +0 -0
  49. data/test/{haml/results → results}/eval_suppressed.xhtml +0 -0
  50. data/test/{haml/results → results}/helpers.xhtml +0 -0
  51. data/test/{haml/results → results}/helpful.xhtml +0 -0
  52. data/test/{haml/results → results}/just_stuff.xhtml +0 -0
  53. data/test/{haml/results → results}/list.xhtml +0 -0
  54. data/test/{haml/results → results}/nuke_inner_whitespace.xhtml +0 -0
  55. data/test/{haml/results → results}/nuke_outer_whitespace.xhtml +0 -0
  56. data/test/{haml/results → results}/original_engine.xhtml +0 -0
  57. data/test/{haml/results → results}/partial_layout.xhtml +0 -0
  58. data/test/{haml/results → results}/partials.xhtml +0 -0
  59. data/test/{haml/results → results}/render_layout.xhtml +0 -0
  60. data/test/{haml/results → results}/silent_script.xhtml +1 -1
  61. data/test/{haml/results → results}/standard.xhtml +0 -0
  62. data/test/{haml/results → results}/tag_parsing.xhtml +0 -0
  63. data/test/{haml/results → results}/very_basic.xhtml +0 -0
  64. data/test/{haml/results → results}/whitespace_handling.xhtml +46 -50
  65. data/test/{haml/template_test.rb → template_test.rb} +20 -81
  66. data/test/{haml/templates → templates}/_av_partial_1.haml +1 -1
  67. data/test/{haml/templates → templates}/_av_partial_1_ugly.haml +1 -1
  68. data/test/{haml/templates → templates}/_av_partial_2.haml +1 -1
  69. data/test/{haml/templates → templates}/_av_partial_2_ugly.haml +1 -1
  70. data/test/{haml/templates → templates}/_layout.erb +0 -0
  71. data/test/{haml/templates → templates}/_layout_for_partial.haml +0 -0
  72. data/test/{haml/templates → templates}/_partial.haml +0 -0
  73. data/test/{haml/templates → templates}/_text_area.haml +0 -0
  74. data/test/{haml/templates → templates}/action_view.haml +1 -1
  75. data/test/{haml/templates → templates}/action_view_ugly.haml +1 -1
  76. data/test/{haml/templates → templates}/breakage.haml +0 -0
  77. data/test/{haml/templates → templates}/content_for_layout.haml +0 -0
  78. data/test/{haml/templates → templates}/eval_suppressed.haml +0 -0
  79. data/test/{haml/templates → templates}/helpers.haml +0 -0
  80. data/test/{haml/templates → templates}/helpful.haml +0 -0
  81. data/test/{haml/templates → templates}/just_stuff.haml +0 -0
  82. data/test/{haml/templates → templates}/list.haml +0 -0
  83. data/test/{haml/templates → templates}/nuke_inner_whitespace.haml +0 -0
  84. data/test/{haml/templates → templates}/nuke_outer_whitespace.haml +0 -0
  85. data/test/{haml/templates → templates}/original_engine.haml +0 -0
  86. data/test/templates/partial_layout.haml +3 -0
  87. data/test/{haml/templates → templates}/partialize.haml +0 -0
  88. data/test/{haml/templates → templates}/partials.haml +0 -0
  89. data/test/{haml/templates → templates}/render_layout.haml +0 -0
  90. data/test/{haml/templates → templates}/silent_script.haml +2 -2
  91. data/test/{haml/templates → templates}/standard.haml +0 -0
  92. data/test/{haml/templates → templates}/standard_ugly.haml +0 -0
  93. data/test/{haml/templates → templates}/tag_parsing.haml +0 -0
  94. data/test/{haml/templates → templates}/very_basic.haml +0 -0
  95. data/test/{haml/templates → templates}/whitespace_handling.haml +0 -0
  96. data/test/test_helper.rb +42 -34
  97. data/test/util_test.rb +80 -0
  98. metadata +259 -427
  99. data/CONTRIBUTING +0 -3
  100. data/REVISION +0 -1
  101. data/VERSION +0 -1
  102. data/VERSION_NAME +0 -1
  103. data/extra/update_watch.rb +0 -13
  104. data/lib/haml/root.rb +0 -7
  105. data/lib/haml/shared.rb +0 -78
  106. data/lib/haml/template/patch.rb +0 -58
  107. data/lib/sass.rb +0 -8
  108. data/lib/sass/plugin.rb +0 -10
  109. data/lib/sass/rails2_shim.rb +0 -9
  110. data/lib/sass/rails3_shim.rb +0 -16
  111. data/test/benchmark.rb +0 -91
  112. data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
  113. data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
  114. data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
  115. data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
  116. data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
  117. data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
  118. data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
  119. data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
  120. data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
  121. data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -98
  122. data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
  123. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
  124. data/test/haml/results/filters.xhtml +0 -62
  125. data/test/haml/spec/lua_haml_spec.lua +0 -30
  126. data/test/haml/spec/ruby_haml_test.rb +0 -19
  127. data/test/haml/spec_test.rb +0 -44
  128. data/test/haml/templates/filters.haml +0 -66
  129. data/test/haml/templates/partial_layout.haml +0 -10
  130. data/test/haml/util_test.rb +0 -300
  131. data/test/linked_rails.rb +0 -42
  132. data/vendor/sass/CONTRIBUTING +0 -3
  133. data/vendor/sass/MIT-LICENSE +0 -20
  134. data/vendor/sass/README.md +0 -201
  135. data/vendor/sass/Rakefile +0 -339
  136. data/vendor/sass/TODO +0 -39
  137. data/vendor/sass/VERSION +0 -1
  138. data/vendor/sass/VERSION_NAME +0 -1
  139. data/vendor/sass/bin/sass +0 -8
  140. data/vendor/sass/bin/sass-convert +0 -7
  141. data/vendor/sass/bin/scss +0 -8
  142. data/vendor/sass/doc-src/FAQ.md +0 -35
  143. data/vendor/sass/doc-src/INDENTED_SYNTAX.md +0 -210
  144. data/vendor/sass/doc-src/SASS_CHANGELOG.md +0 -2327
  145. data/vendor/sass/doc-src/SASS_REFERENCE.md +0 -1965
  146. data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
  147. data/vendor/sass/ext/extconf.rb +0 -10
  148. data/vendor/sass/extra/update_watch.rb +0 -13
  149. data/vendor/sass/init.rb +0 -18
  150. data/vendor/sass/lib/sass.rb +0 -73
  151. data/vendor/sass/lib/sass/cache_stores.rb +0 -15
  152. data/vendor/sass/lib/sass/cache_stores/base.rb +0 -86
  153. data/vendor/sass/lib/sass/cache_stores/chain.rb +0 -33
  154. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -60
  155. data/vendor/sass/lib/sass/cache_stores/memory.rb +0 -47
  156. data/vendor/sass/lib/sass/cache_stores/null.rb +0 -25
  157. data/vendor/sass/lib/sass/callbacks.rb +0 -66
  158. data/vendor/sass/lib/sass/css.rb +0 -295
  159. data/vendor/sass/lib/sass/engine.rb +0 -878
  160. data/vendor/sass/lib/sass/environment.rb +0 -166
  161. data/vendor/sass/lib/sass/error.rb +0 -201
  162. data/vendor/sass/lib/sass/exec.rb +0 -672
  163. data/vendor/sass/lib/sass/importers.rb +0 -22
  164. data/vendor/sass/lib/sass/importers/base.rb +0 -139
  165. data/vendor/sass/lib/sass/importers/filesystem.rb +0 -149
  166. data/vendor/sass/lib/sass/less.rb +0 -382
  167. data/vendor/sass/lib/sass/logger.rb +0 -15
  168. data/vendor/sass/lib/sass/logger/base.rb +0 -32
  169. data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
  170. data/vendor/sass/lib/sass/plugin.rb +0 -132
  171. data/vendor/sass/lib/sass/plugin/compiler.rb +0 -383
  172. data/vendor/sass/lib/sass/plugin/configuration.rb +0 -123
  173. data/vendor/sass/lib/sass/plugin/generic.rb +0 -15
  174. data/vendor/sass/lib/sass/plugin/merb.rb +0 -48
  175. data/vendor/sass/lib/sass/plugin/rack.rb +0 -60
  176. data/vendor/sass/lib/sass/plugin/rails.rb +0 -47
  177. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +0 -173
  178. data/vendor/sass/lib/sass/railtie.rb +0 -9
  179. data/vendor/sass/lib/sass/repl.rb +0 -58
  180. data/vendor/sass/lib/sass/root.rb +0 -7
  181. data/vendor/sass/lib/sass/script.rb +0 -40
  182. data/vendor/sass/lib/sass/script/bool.rb +0 -18
  183. data/vendor/sass/lib/sass/script/color.rb +0 -480
  184. data/vendor/sass/lib/sass/script/css_lexer.rb +0 -29
  185. data/vendor/sass/lib/sass/script/css_parser.rb +0 -31
  186. data/vendor/sass/lib/sass/script/funcall.rb +0 -175
  187. data/vendor/sass/lib/sass/script/functions.rb +0 -1386
  188. data/vendor/sass/lib/sass/script/interpolation.rb +0 -79
  189. data/vendor/sass/lib/sass/script/lexer.rb +0 -339
  190. data/vendor/sass/lib/sass/script/list.rb +0 -83
  191. data/vendor/sass/lib/sass/script/literal.rb +0 -250
  192. data/vendor/sass/lib/sass/script/node.rb +0 -99
  193. data/vendor/sass/lib/sass/script/number.rb +0 -452
  194. data/vendor/sass/lib/sass/script/operation.rb +0 -99
  195. data/vendor/sass/lib/sass/script/parser.rb +0 -474
  196. data/vendor/sass/lib/sass/script/string.rb +0 -51
  197. data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -103
  198. data/vendor/sass/lib/sass/script/unary_operation.rb +0 -64
  199. data/vendor/sass/lib/sass/script/variable.rb +0 -59
  200. data/vendor/sass/lib/sass/scss.rb +0 -17
  201. data/vendor/sass/lib/sass/scss/css_parser.rb +0 -46
  202. data/vendor/sass/lib/sass/scss/parser.rb +0 -960
  203. data/vendor/sass/lib/sass/scss/rx.rb +0 -128
  204. data/vendor/sass/lib/sass/scss/sass_parser.rb +0 -11
  205. data/vendor/sass/lib/sass/scss/script_lexer.rb +0 -15
  206. data/vendor/sass/lib/sass/scss/script_parser.rb +0 -25
  207. data/vendor/sass/lib/sass/scss/static_parser.rb +0 -40
  208. data/vendor/sass/lib/sass/selector.rb +0 -361
  209. data/vendor/sass/lib/sass/selector/abstract_sequence.rb +0 -62
  210. data/vendor/sass/lib/sass/selector/comma_sequence.rb +0 -81
  211. data/vendor/sass/lib/sass/selector/sequence.rb +0 -233
  212. data/vendor/sass/lib/sass/selector/simple.rb +0 -113
  213. data/vendor/sass/lib/sass/selector/simple_sequence.rb +0 -134
  214. data/vendor/sass/lib/sass/shared.rb +0 -78
  215. data/vendor/sass/lib/sass/tree/charset_node.rb +0 -22
  216. data/vendor/sass/lib/sass/tree/comment_node.rb +0 -90
  217. data/vendor/sass/lib/sass/tree/debug_node.rb +0 -18
  218. data/vendor/sass/lib/sass/tree/directive_node.rb +0 -23
  219. data/vendor/sass/lib/sass/tree/each_node.rb +0 -24
  220. data/vendor/sass/lib/sass/tree/extend_node.rb +0 -29
  221. data/vendor/sass/lib/sass/tree/for_node.rb +0 -36
  222. data/vendor/sass/lib/sass/tree/function_node.rb +0 -27
  223. data/vendor/sass/lib/sass/tree/if_node.rb +0 -52
  224. data/vendor/sass/lib/sass/tree/import_node.rb +0 -68
  225. data/vendor/sass/lib/sass/tree/media_node.rb +0 -32
  226. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +0 -27
  227. data/vendor/sass/lib/sass/tree/mixin_node.rb +0 -32
  228. data/vendor/sass/lib/sass/tree/node.rb +0 -201
  229. data/vendor/sass/lib/sass/tree/prop_node.rb +0 -148
  230. data/vendor/sass/lib/sass/tree/return_node.rb +0 -18
  231. data/vendor/sass/lib/sass/tree/root_node.rb +0 -28
  232. data/vendor/sass/lib/sass/tree/rule_node.rb +0 -136
  233. data/vendor/sass/lib/sass/tree/variable_node.rb +0 -30
  234. data/vendor/sass/lib/sass/tree/visitors/base.rb +0 -75
  235. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +0 -133
  236. data/vendor/sass/lib/sass/tree/visitors/convert.rb +0 -260
  237. data/vendor/sass/lib/sass/tree/visitors/cssize.rb +0 -175
  238. data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
  239. data/vendor/sass/lib/sass/tree/visitors/perform.rb +0 -332
  240. data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
  241. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +0 -210
  242. data/vendor/sass/lib/sass/tree/warn_node.rb +0 -18
  243. data/vendor/sass/lib/sass/tree/while_node.rb +0 -18
  244. data/vendor/sass/lib/sass/util.rb +0 -721
  245. data/vendor/sass/lib/sass/util/subset_map.rb +0 -101
  246. data/vendor/sass/lib/sass/version.rb +0 -112
  247. data/vendor/sass/rails/init.rb +0 -1
  248. data/vendor/sass/sass.gemspec +0 -33
  249. data/vendor/sass/test/Gemfile +0 -4
  250. data/vendor/sass/test/Gemfile.lock +0 -19
  251. data/vendor/sass/test/sass/cache_test.rb +0 -89
  252. data/vendor/sass/test/sass/callbacks_test.rb +0 -61
  253. data/vendor/sass/test/sass/conversion_test.rb +0 -1199
  254. data/vendor/sass/test/sass/css2sass_test.rb +0 -373
  255. data/vendor/sass/test/sass/data/hsl-rgb.txt +0 -319
  256. data/vendor/sass/test/sass/engine_test.rb +0 -2567
  257. data/vendor/sass/test/sass/extend_test.rb +0 -1348
  258. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  259. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  260. data/vendor/sass/test/sass/functions_test.rb +0 -1038
  261. data/vendor/sass/test/sass/importer_test.rb +0 -192
  262. data/vendor/sass/test/sass/less_conversion_test.rb +0 -653
  263. data/vendor/sass/test/sass/logger_test.rb +0 -58
  264. data/vendor/sass/test/sass/mock_importer.rb +0 -49
  265. data/vendor/sass/test/sass/more_results/more1.css +0 -9
  266. data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +0 -26
  267. data/vendor/sass/test/sass/more_results/more_import.css +0 -29
  268. data/vendor/sass/test/sass/more_templates/_more_partial.sass +0 -2
  269. data/vendor/sass/test/sass/more_templates/more1.sass +0 -23
  270. data/vendor/sass/test/sass/more_templates/more_import.sass +0 -11
  271. data/vendor/sass/test/sass/plugin_test.rb +0 -472
  272. data/vendor/sass/test/sass/results/alt.css +0 -4
  273. data/vendor/sass/test/sass/results/basic.css +0 -9
  274. data/vendor/sass/test/sass/results/compact.css +0 -5
  275. data/vendor/sass/test/sass/results/complex.css +0 -86
  276. data/vendor/sass/test/sass/results/compressed.css +0 -1
  277. data/vendor/sass/test/sass/results/expanded.css +0 -19
  278. data/vendor/sass/test/sass/results/if.css +0 -3
  279. data/vendor/sass/test/sass/results/import.css +0 -31
  280. data/vendor/sass/test/sass/results/import_charset.css +0 -4
  281. data/vendor/sass/test/sass/results/import_charset_1_8.css +0 -4
  282. data/vendor/sass/test/sass/results/import_charset_ibm866.css +0 -4
  283. data/vendor/sass/test/sass/results/line_numbers.css +0 -49
  284. data/vendor/sass/test/sass/results/mixins.css +0 -95
  285. data/vendor/sass/test/sass/results/multiline.css +0 -24
  286. data/vendor/sass/test/sass/results/nested.css +0 -22
  287. data/vendor/sass/test/sass/results/options.css +0 -1
  288. data/vendor/sass/test/sass/results/parent_ref.css +0 -13
  289. data/vendor/sass/test/sass/results/script.css +0 -16
  290. data/vendor/sass/test/sass/results/scss_import.css +0 -31
  291. data/vendor/sass/test/sass/results/scss_importee.css +0 -2
  292. data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  293. data/vendor/sass/test/sass/results/subdir/subdir.css +0 -3
  294. data/vendor/sass/test/sass/results/units.css +0 -11
  295. data/vendor/sass/test/sass/results/warn.css +0 -0
  296. data/vendor/sass/test/sass/results/warn_imported.css +0 -0
  297. data/vendor/sass/test/sass/script_conversion_test.rb +0 -285
  298. data/vendor/sass/test/sass/script_test.rb +0 -514
  299. data/vendor/sass/test/sass/scss/css_test.rb +0 -922
  300. data/vendor/sass/test/sass/scss/rx_test.rb +0 -156
  301. data/vendor/sass/test/sass/scss/scss_test.rb +0 -1273
  302. data/vendor/sass/test/sass/scss/test_helper.rb +0 -37
  303. data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  304. data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +0 -4
  305. data/vendor/sass/test/sass/templates/_partial.sass +0 -2
  306. data/vendor/sass/test/sass/templates/alt.sass +0 -16
  307. data/vendor/sass/test/sass/templates/basic.sass +0 -23
  308. data/vendor/sass/test/sass/templates/bork1.sass +0 -2
  309. data/vendor/sass/test/sass/templates/bork2.sass +0 -2
  310. data/vendor/sass/test/sass/templates/bork3.sass +0 -2
  311. data/vendor/sass/test/sass/templates/bork4.sass +0 -2
  312. data/vendor/sass/test/sass/templates/bork5.sass +0 -3
  313. data/vendor/sass/test/sass/templates/compact.sass +0 -17
  314. data/vendor/sass/test/sass/templates/complex.sass +0 -305
  315. data/vendor/sass/test/sass/templates/compressed.sass +0 -15
  316. data/vendor/sass/test/sass/templates/expanded.sass +0 -17
  317. data/vendor/sass/test/sass/templates/if.sass +0 -11
  318. data/vendor/sass/test/sass/templates/import.sass +0 -12
  319. data/vendor/sass/test/sass/templates/import_charset.sass +0 -7
  320. data/vendor/sass/test/sass/templates/import_charset_1_8.sass +0 -4
  321. data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +0 -9
  322. data/vendor/sass/test/sass/templates/importee.less +0 -2
  323. data/vendor/sass/test/sass/templates/importee.sass +0 -19
  324. data/vendor/sass/test/sass/templates/line_numbers.sass +0 -13
  325. data/vendor/sass/test/sass/templates/mixin_bork.sass +0 -5
  326. data/vendor/sass/test/sass/templates/mixins.sass +0 -76
  327. data/vendor/sass/test/sass/templates/multiline.sass +0 -20
  328. data/vendor/sass/test/sass/templates/nested.sass +0 -25
  329. data/vendor/sass/test/sass/templates/nested_bork1.sass +0 -2
  330. data/vendor/sass/test/sass/templates/nested_bork2.sass +0 -2
  331. data/vendor/sass/test/sass/templates/nested_bork3.sass +0 -2
  332. data/vendor/sass/test/sass/templates/nested_bork4.sass +0 -2
  333. data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
  334. data/vendor/sass/test/sass/templates/nested_import.sass +0 -2
  335. data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +0 -6
  336. data/vendor/sass/test/sass/templates/options.sass +0 -2
  337. data/vendor/sass/test/sass/templates/parent_ref.sass +0 -25
  338. data/vendor/sass/test/sass/templates/script.sass +0 -101
  339. data/vendor/sass/test/sass/templates/scss_import.scss +0 -11
  340. data/vendor/sass/test/sass/templates/scss_importee.scss +0 -1
  341. data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  342. data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  343. data/vendor/sass/test/sass/templates/subdir/subdir.sass +0 -6
  344. data/vendor/sass/test/sass/templates/units.sass +0 -11
  345. data/vendor/sass/test/sass/templates/warn.sass +0 -3
  346. data/vendor/sass/test/sass/templates/warn_imported.sass +0 -4
  347. data/vendor/sass/test/sass/test_helper.rb +0 -8
  348. data/vendor/sass/test/sass/util/subset_map_test.rb +0 -91
  349. data/vendor/sass/test/sass/util_test.rb +0 -266
  350. data/vendor/sass/test/test_helper.rb +0 -69
  351. data/vendor/sass/vendor/fssm/Gemfile +0 -3
  352. data/vendor/sass/vendor/fssm/LICENSE +0 -20
  353. data/vendor/sass/vendor/fssm/README.markdown +0 -83
  354. data/vendor/sass/vendor/fssm/Rakefile +0 -11
  355. data/vendor/sass/vendor/fssm/example.rb +0 -12
  356. data/vendor/sass/vendor/fssm/fssm.gemspec +0 -24
  357. data/vendor/sass/vendor/fssm/lib/fssm.rb +0 -37
  358. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  359. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  360. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  361. data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  362. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  363. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +0 -36
  364. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +0 -94
  365. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +0 -36
  366. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +0 -75
  367. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +0 -24
  368. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +0 -92
  369. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +0 -176
  370. data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
  371. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +0 -40
  372. data/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  373. data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  374. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +0 -68
  375. data/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  376. data/vendor/sass/vendor/fssm/profile/prof.html +0 -2379
  377. data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
  378. data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
  379. data/vendor/sass/vendor/fssm/spec/path_spec.rb +0 -96
  380. data/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  381. data/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  382. data/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  383. data/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  384. data/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  385. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +0 -14
  386. data/vendor/sass/yard/callbacks.rb +0 -29
  387. data/vendor/sass/yard/default/fulldoc/html/css/common.sass +0 -26
  388. data/vendor/sass/yard/default/layout/html/footer.erb +0 -12
  389. data/vendor/sass/yard/inherited_hash.rb +0 -41
data/init.rb CHANGED
@@ -1,18 +1 @@
1
- begin
2
- require File.join(File.dirname(__FILE__), 'lib', 'haml') # From here
3
- rescue LoadError
4
- begin
5
- require 'haml' # From gem
6
- rescue LoadError => e
7
- # gems:install may be run to install Haml with the skeleton plugin
8
- # but not the gem itself installed.
9
- # Don't die if this is the case.
10
- raise e unless defined?(Rake) &&
11
- (Rake.application.top_level_tasks.include?('gems') ||
12
- Rake.application.top_level_tasks.include?('gems:install'))
13
- end
14
- end
15
-
16
- # Load Haml.
17
- # Haml may be undefined if we're running gems:install.
18
- Haml.init_rails(binding) if defined?(Haml)
1
+ require "haml"
@@ -1,6 +1,3 @@
1
- dir = File.dirname(__FILE__)
2
- $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir)
3
-
4
1
  require 'haml/version'
5
2
 
6
3
  # The module that contains everything Haml-related:
@@ -11,37 +8,16 @@ require 'haml/version'
11
8
  # * {Haml::Error} is raised when Haml encounters an error.
12
9
  # * {Haml::HTML} handles conversion of HTML to Haml.
13
10
  #
14
- # Also see the {file:HAML_REFERENCE.md full Haml reference}.
11
+ # Also see the {file:REFERENCE.md full Haml reference}.
15
12
  module Haml
16
- # Initializes Haml for Rails.
17
- #
18
- # This method is called by `init.rb`,
19
- # which is run by Rails on startup.
20
- # We use it rather than putting stuff straight into `init.rb`
21
- # so we can change the initialization behavior
22
- # without modifying the file itself.
23
- #
24
- # @param binding [Binding] The context of the `init.rb` file.
25
- # This isn't actually used;
26
- # it's just passed in in case it needs to be used in the future
27
- def self.init_rails(binding)
28
- # 2.2 <= Rails < 3
29
- if defined?(Rails) && Rails.respond_to?(:configuration) &&
30
- Rails.configuration.respond_to?(:after_initialize) &&
31
- !Haml::Util.ap_geq_3?
32
- Rails.configuration.after_initialize do
33
- next if defined?(Sass)
34
- autoload(:Sass, 'sass/rails2_shim')
35
- # resolve autoload if it looks like they're using Sass without options
36
- Sass if File.exist?(File.join(RAILS_ROOT, 'public/stylesheets/sass'))
37
- end
38
- end
39
13
 
40
- # No &method here for Rails 2.1 compatibility
41
- %w[haml/template].each {|f| require f}
14
+ def self.init_rails(*args)
15
+ # Maintain this as a no-op for any libraries that may be depending on the
16
+ # previous definition here.
42
17
  end
18
+
43
19
  end
44
20
 
45
21
  require 'haml/util'
46
22
  require 'haml/engine'
47
- require 'haml/railtie'
23
+ require 'haml/railtie' if defined?(Rails)
@@ -88,15 +88,17 @@ module Haml
88
88
  # @param options [{Symbol => Object}] An options hash.
89
89
  # See {Haml::Engine#options\_for\_buffer}
90
90
  def initialize(upper = nil, options = {})
91
- @active = true
92
- @upper = upper
93
- @options = options
94
- @buffer = ruby1_8? ? "" : "".encode(Encoding.find(options[:encoding]))
91
+ @active = true
92
+ @upper = upper
93
+ @options = options
94
+ @buffer = new_encoded_string
95
95
  @tabulation = 0
96
96
 
97
97
  # The number of tabs that Engine thinks we should have
98
98
  # @real_tabs + @tabulation is the number of tabs actually output
99
99
  @real_tabs = 0
100
+
101
+ @preserve_pattern = /<[\s]*#{@options[:preserve].join("|")}/i
100
102
  end
101
103
 
102
104
  # Appends text to the buffer, properly tabulated.
@@ -141,7 +143,9 @@ module Haml
141
143
  @tabulation = 0
142
144
  <% end %>
143
145
 
146
+ <% if !(in_tag && preserve_tag && !nuke_inner_whitespace) %>
144
147
  tabulation = @real_tabs
148
+ <% end %>
145
149
  result = <%= result_name %>.<% if nuke_inner_whitespace %>strip<% else %>rstrip<% end %>
146
150
  <% else %>
147
151
  result = <%= result_name %><% if nuke_inner_whitespace %>.strip<% end %>
@@ -157,7 +161,12 @@ module Haml
157
161
  return result
158
162
  <% else %>
159
163
 
160
- has_newline = result.include?("\\n")
164
+ return result if self.instance_variable_get(:@preserve_pattern).match(result)
165
+
166
+ <% if !(in_tag && preserve_tag && !nuke_inner_whitespace) %>
167
+ has_newline = result.include?("\\n")
168
+ <% end %>
169
+
161
170
  <% if in_tag && !nuke_inner_whitespace %>
162
171
  <% unless preserve_tag %> if !has_newline <% end %>
163
172
  @real_tabs -= 1
@@ -166,6 +175,7 @@ module Haml
166
175
  <% unless preserve_tag %> end <% end %>
167
176
  <% end %>
168
177
 
178
+ <% if !(in_tag && preserve_tag && !nuke_inner_whitespace) %>
169
179
  # Precompiled tabulation may be wrong
170
180
  <% if !interpolated && !in_tag %>
171
181
  result = tabs + result if @tabulation > 0
@@ -184,17 +194,18 @@ module Haml
184
194
  <% end %>
185
195
  <% if interpolated %> @tabulation = old_tabulation <% end %>
186
196
  result
197
+ <% end %>
187
198
  <% end %>
188
199
  RUBY
189
200
 
190
201
  def attributes(class_id, obj_ref, *attributes_hashes)
191
202
  attributes = class_id
192
203
  attributes_hashes.each do |old|
193
- self.class.merge_attrs(attributes, to_hash(old.map {|k, v| [k.to_s, v]}))
204
+ self.class.merge_attrs(attributes, Hash[old.map {|k, v| [k.to_s, v]}])
194
205
  end
195
206
  self.class.merge_attrs(attributes, parse_object_ref(obj_ref)) if obj_ref
196
207
  Compiler.build_attributes(
197
- html?, @options[:attr_wrapper], @options[:escape_attrs], attributes)
208
+ html?, @options[:attr_wrapper], @options[:escape_attrs], @options[:hyphenate_data_attrs], attributes)
198
209
  end
199
210
 
200
211
  # Remove the whitespace from the right side of the buffer string.
@@ -237,21 +248,31 @@ RUBY
237
248
  from['class'] ||= to['class']
238
249
  end
239
250
 
240
- from_data = from['data'].is_a?(Hash)
241
- to_data = to['data'].is_a?(Hash)
242
- if from_data && to_data
243
- to['data'] = to['data'].merge(from['data'])
244
- elsif to_data
245
- to = Haml::Util.map_keys(to.delete('data')) {|name| "data-#{name}"}.merge(to)
246
- elsif from_data
247
- from = Haml::Util.map_keys(from.delete('data')) {|name| "data-#{name}"}.merge(from)
248
- end
251
+ from_data = from.delete('data') || {}
252
+ to_data = to.delete('data') || {}
249
253
 
254
+ # forces to_data & from_data into a hash
255
+ from_data = { nil => from_data } unless from_data.is_a?(Hash)
256
+ to_data = { nil => to_data } unless to_data.is_a?(Hash)
257
+
258
+ merged_data = to_data.merge(from_data)
259
+
260
+ to['data'] = merged_data unless merged_data.empty?
250
261
  to.merge!(from)
251
262
  end
252
263
 
253
264
  private
254
265
 
266
+ if RUBY_VERSION < "1.9"
267
+ def new_encoded_string
268
+ ""
269
+ end
270
+ else
271
+ def new_encoded_string
272
+ "".encode(Encoding.find(options[:encoding]))
273
+ end
274
+ end
275
+
255
276
  @@tab_cache = {}
256
277
  # Gets `count` tabs. Mostly for internal use.
257
278
  def tabs(count = 0)
@@ -11,9 +11,8 @@ module Haml
11
11
  preamble = <<END.gsub("\n", ";")
12
12
  begin
13
13
  extend Haml::Helpers
14
- _hamlout = @haml_buffer = Haml::Buffer.new(@haml_buffer, #{options_for_buffer.inspect})
14
+ _hamlout = @haml_buffer = Haml::Buffer.new(haml_buffer, #{options_for_buffer.inspect})
15
15
  _erbout = _hamlout.buffer
16
- __in_erb_template = true
17
16
  END
18
17
  postamble = <<END.gsub("\n", ";")
19
18
  #{precompiled_method_return_value}
@@ -53,17 +52,28 @@ END
53
52
  push_text @node.value[:text]
54
53
  end
55
54
 
55
+ def nuke_inner_whitespace?(node)
56
+ if node.value && node.value[:nuke_inner_whitespace]
57
+ true
58
+ elsif node.parent
59
+ nuke_inner_whitespace?(node.parent)
60
+ else
61
+ false
62
+ end
63
+ end
64
+
56
65
  def compile_script(&block)
57
66
  push_script(@node.value[:text],
58
- :preserve_script => @node.value[:preserve],
59
- :escape_html => @node.value[:escape_html], &block)
67
+ :preserve_script => @node.value[:preserve],
68
+ :escape_html => @node.value[:escape_html],
69
+ :nuke_inner_whitespace => nuke_inner_whitespace?(@node),
70
+ &block)
60
71
  end
61
72
 
62
73
  def compile_silent_script
63
74
  return if @options[:suppress_eval]
64
75
  push_silent(@node.value[:text])
65
76
  keyword = @node.value[:keyword]
66
- ruby_block = block_given? && !keyword
67
77
 
68
78
  if block_given?
69
79
  # Store these values because for conditional statements,
@@ -345,14 +355,18 @@ END
345
355
  end
346
356
 
347
357
  # This is a class method so it can be accessed from Buffer.
348
- def self.build_attributes(is_html, attr_wrapper, escape_attrs, attributes = {})
349
- quote_escape = attr_wrapper == '"' ? "&quot;" : "&apos;"
358
+ def self.build_attributes(is_html, attr_wrapper, escape_attrs, hyphenate_data_attrs, attributes = {})
359
+ # @TODO this is an absolutely ridiculous amount of arguments. At least
360
+ # some of this needs to be moved into an instance method.
361
+ quote_escape = attr_wrapper == '"' ? "&#x0022;" : "&#x0027;"
350
362
  other_quote_char = attr_wrapper == '"' ? "'" : '"'
363
+ join_char = hyphenate_data_attrs ? '-' : '_'
351
364
 
352
365
  if attributes['data'].is_a?(Hash)
353
- attributes = attributes.dup
354
- attributes =
355
- Haml::Util.map_keys(attributes.delete('data')) {|name| "data-#{name}"}.merge(attributes)
366
+ data_attributes = attributes.delete('data')
367
+ data_attributes = flatten_data_attributes(data_attributes, '', join_char)
368
+ data_attributes = build_data_keys(data_attributes, hyphenate_data_attrs)
369
+ attributes = data_attributes.merge(attributes)
356
370
  end
357
371
 
358
372
  result = attributes.collect do |attr, value|
@@ -379,7 +393,7 @@ END
379
393
  value = Haml::Helpers.preserve(escaped)
380
394
  if escape_attrs
381
395
  # We want to decide whether or not to escape quotes
382
- value = value.gsub('&quot;', '"')
396
+ value = value.gsub('&quot;', '"').gsub('&#x0022;', '"')
383
397
  this_attr_wrapper = attr_wrapper
384
398
  if value.include? attr_wrapper
385
399
  if value.include? other_quote_char
@@ -403,9 +417,33 @@ END
403
417
  return !value.empty? && value
404
418
  end
405
419
 
420
+ def self.build_data_keys(data_hash, hyphenate)
421
+ Hash[data_hash.map do |name, value|
422
+ if name == nil
423
+ ["data", value]
424
+ elsif hyphenate
425
+ ["data-#{name.to_s.gsub(/_/, '-')}", value]
426
+ else
427
+ ["data-#{name}", value]
428
+ end
429
+ end]
430
+ end
431
+
432
+ def self.flatten_data_attributes(data, key, join_char, seen = [])
433
+ return {key => nil} if seen.include? data.object_id
434
+ seen << data.object_id
435
+
436
+ return {key => data} unless data.is_a?(Hash)
437
+ data.sort {|x, y| x[0].to_s <=> y[0].to_s}.inject({}) do |hash, array|
438
+ k, v = array
439
+ joined = key == '' ? k : [key, k].join(join_char)
440
+ hash.merge! flatten_data_attributes(v, joined, join_char, seen)
441
+ end
442
+ end
443
+
406
444
  def prerender_tag(name, self_close, attributes)
407
445
  attributes_string = Compiler.build_attributes(
408
- html?, @options[:attr_wrapper], @options[:escape_attrs], attributes)
446
+ html?, @options[:attr_wrapper], @options[:escape_attrs], @options[:hyphenate_data_attrs], attributes)
409
447
  "<#{name}#{attributes_string}#{self_close && xhtml? ? ' /' : ''}>"
410
448
  end
411
449
 
@@ -442,7 +480,8 @@ END
442
480
  end
443
481
 
444
482
  def compile(node)
445
- parent, @node = @node, node
483
+ parent = instance_variable_defined?('@node') ? @node : nil
484
+ @node = node
446
485
  if node.children.empty?
447
486
  send(:"compile_#{node.type}")
448
487
  else
@@ -20,7 +20,7 @@ module Haml
20
20
  include Compiler
21
21
 
22
22
  # The options hash.
23
- # See {file:HAML_REFERENCE.md#haml_options the Haml options documentation}.
23
+ # See {file:REFERENCE.md#options the Haml options documentation}.
24
24
  #
25
25
  # @return [{Symbol => Object}]
26
26
  attr_accessor :options
@@ -52,63 +52,64 @@ module Haml
52
52
  @options[:format] == :html5
53
53
  end
54
54
 
55
- # The source code that is evaluated to produce the Haml document.
56
- #
57
- # In Ruby 1.9, this is automatically converted to the correct encoding
58
- # (see {file:HAML_REFERENCE.md#encoding-option the `:encoding` option}).
59
- #
60
- # @return [String]
61
- def precompiled
62
- return @precompiled if ruby1_8?
63
- encoding = Encoding.find(@options[:encoding])
64
- return @precompiled.force_encoding(encoding) if encoding == Encoding::BINARY
65
- return @precompiled.encode(encoding)
55
+ if RUBY_VERSION < "1.9"
56
+ # The source code that is evaluated to produce the Haml document.
57
+ #
58
+ # In Ruby 1.9, this is automatically converted to the correct encoding
59
+ # (see {file:REFERENCE.md#encodings the `:encoding` option}).
60
+ #
61
+ # @return [String]
62
+ def precompiled
63
+ @precompiled
64
+ end
65
+ else
66
+ def precompiled
67
+ encoding = Encoding.find(@options[:encoding])
68
+ return @precompiled.force_encoding(encoding) if encoding == Encoding::BINARY
69
+ return @precompiled.encode(encoding)
70
+ end
66
71
  end
67
72
 
68
73
  # Precompiles the Haml template.
69
74
  #
70
75
  # @param template [String] The Haml template
71
76
  # @param options [{Symbol => Object}] An options hash;
72
- # see {file:HAML_REFERENCE.md#haml_options the Haml options documentation}
77
+ # see {file:REFERENCE.md#options the Haml options documentation}
73
78
  # @raise [Haml::Error] if there's a Haml syntax error in the template
74
79
  def initialize(template, options = {})
75
80
  @options = {
76
- :suppress_eval => false,
77
- :attr_wrapper => "'",
78
-
79
- # Don't forget to update the docs in doc-src/HAML_REFERENCE.md
81
+ :suppress_eval => false,
82
+ :attr_wrapper => "'",
83
+ # Don't forget to update the docs in doc-src/REFERENCE.md
80
84
  # if you update these
81
- :autoclose => %w[meta img link br hr input area param col base],
82
- :preserve => %w[textarea pre code],
83
-
84
- :filename => '(haml)',
85
- :line => 1,
86
- :ugly => false,
87
- :format => :xhtml,
88
- :escape_html => false,
89
- :escape_attrs => true,
85
+ :autoclose => %w[meta img link br hr input area param col base],
86
+ :preserve => %w[textarea pre code],
87
+ :filename => '(haml)',
88
+ :line => 1,
89
+ :ugly => false,
90
+ :format => :xhtml,
91
+ :escape_html => false,
92
+ :escape_attrs => true,
93
+ :hyphenate_data_attrs => true,
90
94
  }
91
95
 
96
+ @index = nil # explicitily initialize to avoid warnings
92
97
 
93
98
  template = check_haml_encoding(template) do |msg, line|
94
99
  raise Haml::Error.new(msg, line)
95
100
  end
96
101
 
97
- unless ruby1_8?
98
- @options[:encoding] = Encoding.default_internal || template.encoding
99
- @options[:encoding] = "utf-8" if @options[:encoding].name == "US-ASCII"
100
- end
102
+ set_up_encoding(options, template)
103
+
101
104
  @options.merge! options.reject {|k, v| v.nil?}
102
105
  @index = 0
103
106
 
107
+ @options[:format] = :xhtml if @options[:mime_type] == 'text/xml'
108
+
104
109
  unless [:xhtml, :html4, :html5].include?(@options[:format])
105
110
  raise Haml::Error, "Invalid output format #{@options[:format].inspect}"
106
111
  end
107
112
 
108
- if @options[:encoding] && @options[:encoding].is_a?(Encoding)
109
- @options[:encoding] = @options[:encoding].name
110
- end
111
-
112
113
  # :eod is a special end-of-document marker
113
114
  @template = (template.rstrip).split(/\r\n|\r|\n/) + [:eod, :eod]
114
115
  @template_index = 0
@@ -171,7 +172,8 @@ module Haml
171
172
  # @param block [#to_proc] A block that can be yielded to within the template
172
173
  # @return [String] The rendered template
173
174
  def render(scope = Object.new, locals = {}, &block)
174
- buffer = Haml::Buffer.new(scope.instance_variable_get('@haml_buffer'), options_for_buffer)
175
+ parent = scope.instance_variable_defined?('@haml_buffer') ? scope.instance_variable_get('@haml_buffer') : nil
176
+ buffer = Haml::Buffer.new(parent, options_for_buffer)
175
177
 
176
178
  if scope.is_a?(Binding) || scope.is_a?(Proc)
177
179
  scope_object = eval("self", scope)
@@ -285,24 +287,39 @@ module Haml
285
287
  # All of the values here are such that when `#inspect` is called on the hash,
286
288
  # it can be `Kernel#eval`ed to get the same result back.
287
289
  #
288
- # See {file:HAML_REFERENCE.md#haml_options the Haml options documentation}.
290
+ # See {file:REFERENCE.md#options the Haml options documentation}.
289
291
  #
290
292
  # @return [{Symbol => Object}] The options hash
291
293
  def options_for_buffer
292
294
  {
293
- :autoclose => @options[:autoclose],
294
- :preserve => @options[:preserve],
295
- :attr_wrapper => @options[:attr_wrapper],
296
- :ugly => @options[:ugly],
297
- :format => @options[:format],
298
- :encoding => @options[:encoding],
299
- :escape_html => @options[:escape_html],
300
- :escape_attrs => @options[:escape_attrs],
295
+ :autoclose => @options[:autoclose],
296
+ :preserve => @options[:preserve],
297
+ :attr_wrapper => @options[:attr_wrapper],
298
+ :ugly => @options[:ugly],
299
+ :format => @options[:format],
300
+ :encoding => @options[:encoding],
301
+ :escape_html => @options[:escape_html],
302
+ :escape_attrs => @options[:escape_attrs],
303
+ :hyphenate_data_attrs => @options[:hyphenate_data_attrs],
301
304
  }
302
305
  end
303
306
 
304
307
  private
305
308
 
309
+ if RUBY_VERSION < "1.9"
310
+ def set_up_encoding(options, template)
311
+ options
312
+ end
313
+ else
314
+ def set_up_encoding(options, template)
315
+ @options.tap do |ops|
316
+ ops[:encoding] = Encoding.default_internal || template.encoding
317
+ ops[:encoding] = "utf-8" if ops[:encoding].name == "US-ASCII"
318
+ ops[:encoding] = ops[:encoding].name if ops[:encoding].is_a?(Encoding)
319
+ end
320
+ end
321
+ end
322
+
306
323
  def set_locals(locals, scope, scope_object)
307
324
  scope_object.send(:instance_variable_set, '@_haml_locals', locals)
308
325
  set_locals = locals.keys.map { |k| "#{k} = @_haml_locals[#{k.inspect}]" }.join("\n")