haml 3.1.0.alpha.33 → 3.1.0.alpha.36

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 (61) hide show
  1. data/EDGE_GEM_VERSION +1 -1
  2. data/VERSION +1 -1
  3. data/vendor/sass/doc-src/SASS_CHANGELOG.md +177 -2
  4. data/vendor/sass/doc-src/SASS_REFERENCE.md +140 -3
  5. data/vendor/sass/lib/sass/cache_stores.rb +14 -0
  6. data/vendor/sass/lib/sass/cache_stores/active_support.rb +28 -0
  7. data/vendor/sass/lib/sass/cache_stores/base.rb +84 -0
  8. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +56 -0
  9. data/vendor/sass/lib/sass/cache_stores/memory.rb +51 -0
  10. data/vendor/sass/lib/sass/cache_stores/null.rb +25 -0
  11. data/vendor/sass/lib/sass/engine.rb +86 -25
  12. data/vendor/sass/lib/sass/exec.rb +10 -1
  13. data/vendor/sass/lib/sass/importers/rails.rb +75 -0
  14. data/vendor/sass/lib/sass/less.rb +1 -1
  15. data/vendor/sass/lib/sass/plugin/compiler.rb +4 -1
  16. data/vendor/sass/lib/sass/plugin/configuration.rb +4 -2
  17. data/vendor/sass/lib/sass/plugin/rack.rb +15 -2
  18. data/vendor/sass/lib/sass/plugin/rails.rb +89 -9
  19. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +30 -2
  20. data/vendor/sass/lib/sass/script/css_parser.rb +1 -1
  21. data/vendor/sass/lib/sass/script/functions.rb +126 -5
  22. data/vendor/sass/lib/sass/script/lexer.rb +1 -1
  23. data/vendor/sass/lib/sass/script/list.rb +76 -0
  24. data/vendor/sass/lib/sass/script/literal.rb +10 -1
  25. data/vendor/sass/lib/sass/script/number.rb +1 -1
  26. data/vendor/sass/lib/sass/script/operation.rb +3 -2
  27. data/vendor/sass/lib/sass/script/parser.rb +25 -12
  28. data/vendor/sass/lib/sass/scss/css_parser.rb +0 -5
  29. data/vendor/sass/lib/sass/scss/parser.rb +46 -7
  30. data/vendor/sass/lib/sass/scss/static_parser.rb +1 -1
  31. data/vendor/sass/lib/sass/tree/charset_node.rb +37 -0
  32. data/vendor/sass/lib/sass/tree/directive_node.rb +2 -2
  33. data/vendor/sass/lib/sass/tree/each_node.rb +54 -0
  34. data/vendor/sass/lib/sass/tree/if_node.rb +19 -0
  35. data/vendor/sass/lib/sass/tree/media_node.rb +75 -0
  36. data/vendor/sass/lib/sass/tree/prop_node.rb +1 -1
  37. data/vendor/sass/lib/sass/tree/root_node.rb +37 -5
  38. data/vendor/sass/lib/sass/tree/rule_node.rb +4 -6
  39. data/vendor/sass/lib/sass/util.rb +18 -1
  40. data/vendor/sass/test/sass/cache_test.rb +7 -7
  41. data/vendor/sass/test/sass/conversion_test.rb +28 -0
  42. data/vendor/sass/test/sass/engine_test.rb +214 -11
  43. data/vendor/sass/test/sass/functions_test.rb +69 -0
  44. data/vendor/sass/test/sass/plugin_test.rb +13 -4
  45. data/vendor/sass/test/sass/results/import_charset.css +4 -0
  46. data/vendor/sass/test/sass/results/import_charset_1_8.css +4 -0
  47. data/vendor/sass/test/sass/results/import_charset_ibm866.css +4 -0
  48. data/vendor/sass/test/sass/script_conversion_test.rb +27 -25
  49. data/vendor/sass/test/sass/script_test.rb +12 -1
  50. data/vendor/sass/test/sass/scss/css_test.rb +27 -8
  51. data/vendor/sass/test/sass/scss/scss_test.rb +77 -0
  52. data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +4 -0
  53. data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +4 -0
  54. data/vendor/sass/test/sass/templates/import_charset.sass +7 -0
  55. data/vendor/sass/test/sass/templates/import_charset_1_8.sass +4 -0
  56. data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +9 -0
  57. data/vendor/sass/test/sass/templates/script.sass +2 -2
  58. data/vendor/sass/test/test_helper.rb +8 -0
  59. metadata +27 -10
  60. data/REVISION +0 -1
  61. data/vendor/sass/lib/sass/cache_store.rb +0 -208
@@ -599,6 +599,75 @@ MSG
599
599
  assert_error_message("#ff0000 is not a number for `comparable'", "comparable(1px, #f00)")
600
600
  end
601
601
 
602
+ def test_length
603
+ assert_equal("5", evaluate("length(1 2 3 4 5)"))
604
+ assert_equal("4", evaluate("length((foo, bar, baz, bip))"))
605
+ assert_equal("3", evaluate("length((foo, bar, baz bip))"))
606
+ assert_equal("3", evaluate("length((foo, bar, (baz, bip)))"))
607
+ assert_equal("1", evaluate("length(#f00)"))
608
+ end
609
+
610
+ def test_nth
611
+ assert_equal("1", evaluate("nth(1 2 3, 1)"))
612
+ assert_equal("2", evaluate("nth(1 2 3, 2)"))
613
+ assert_equal("3", evaluate("nth((1, 2, 3), 3)"))
614
+ assert_equal("foo", evaluate("nth(foo, 1)"))
615
+ assert_equal("bar baz", evaluate("nth(foo (bar baz) bang, 2)"))
616
+ assert_error_message("List index 0 must be greater than or equal to 1 for `nth'", "nth(foo, 0)")
617
+ assert_error_message("List index -10 must be greater than or equal to 1 for `nth'", "nth(foo, -10)")
618
+ assert_error_message("List index 1.5 must be an integer for `nth'", "nth(foo, 1.5)")
619
+ assert_error_message("List index is 5 but list is only 4 items long for `nth'", "nth(1 2 3 4, 5)")
620
+ assert_error_message("List index is 2 but list is only 1 item long for `nth'", "nth(foo, 2)")
621
+ end
622
+
623
+ def test_join
624
+ assert_equal("1 2 3", evaluate("join(1 2, 3)"))
625
+ assert_equal("1 2 3", evaluate("join(1, 2 3)"))
626
+ assert_equal("1 2 3 4", evaluate("join(1 2, 3 4)"))
627
+ assert_equal("true", evaluate("(1 2 3 4) == join(1 2, 3 4)"))
628
+ assert_equal("false", evaluate("(1 2 (3 4)) == join(1 2, 3 4)"))
629
+ assert_equal("1, 2, 3", evaluate("join((1, 2), 3)"))
630
+ assert_equal("1, 2, 3", evaluate("join(1, (2, 3))"))
631
+ assert_equal("1, 2, 3, 4", evaluate("join((1, 2), (3, 4))"))
632
+ assert_equal("true", evaluate("(1, 2, 3, 4) == join((1, 2), (3, 4))"))
633
+ assert_equal("false", evaluate("(1, 2, (3, 4)) == join((1, 2), (3, 4))"))
634
+
635
+ assert_equal("1 2", evaluate("join(1, 2)"))
636
+ assert_equal("1 2 3 4", evaluate("join(1 2, (3, 4))"))
637
+ assert_equal("1, 2, 3, 4", evaluate("join((1, 2), 3 4)"))
638
+
639
+ assert_equal("1 2", evaluate("join(1, 2, auto)"))
640
+ assert_equal("1, 2, 3, 4", evaluate("join(1 2, 3 4, comma)"))
641
+ assert_equal("1 2 3 4", evaluate("join((1, 2), (3, 4), space)"))
642
+ assert_equal("1, 2", evaluate("join(1, 2, comma)"))
643
+
644
+ assert_error_message("Separator name must be space, comma, or auto for `join'", "join(1, 2, baboon)")
645
+ end
646
+
647
+ def test_append
648
+ assert_equal("1 2 3", evaluate("append(1 2, 3)"))
649
+ assert_equal("1 2 3 4", evaluate("append(1 2, 3 4)"))
650
+ assert_equal("false", evaluate("(1 2 3 4) == append(1 2, 3 4)"))
651
+ assert_equal("true", evaluate("(1 2 (3 4)) == append(1 2, 3 4)"))
652
+ assert_equal("1, 2, 3", evaluate("append((1, 2), 3)"))
653
+ assert_equal("1, 2, 3, 4", evaluate("append((1, 2), (3, 4))"))
654
+ assert_equal("false", evaluate("(1, 2, 3, 4) == append((1, 2), (3, 4))"))
655
+ assert_equal("true", evaluate("(1, 2, (3, 4)) == append((1, 2), (3, 4))"))
656
+
657
+ assert_equal("1 2", evaluate("append(1, 2)"))
658
+ assert_equal("1 2 3, 4", evaluate("append(1 2, (3, 4))"))
659
+ assert_equal("true", evaluate("(1 2 (3, 4)) == append(1 2, (3, 4))"))
660
+ assert_equal("1, 2, 3 4", evaluate("append((1, 2), 3 4)"))
661
+ assert_equal("true", evaluate("(1, 2, 3 4) == append((1, 2), 3 4)"))
662
+
663
+ assert_equal("1 2", evaluate("append(1, 2, auto)"))
664
+ assert_equal("1, 2, 3 4", evaluate("append(1 2, 3 4, comma)"))
665
+ assert_equal("1 2 3, 4", evaluate("append((1, 2), (3, 4), space)"))
666
+ assert_equal("1, 2", evaluate("append(1, 2, comma)"))
667
+
668
+ assert_error_message("Separator name must be space, comma, or auto for `append'", "append(1, 2, baboon)")
669
+ end
670
+
602
671
  def test_keyword_args_rgb
603
672
  assert_equal(%Q{white}, evaluate("rgb($red: 255, $green: 255, $blue: 255)"))
604
673
  end
@@ -10,8 +10,10 @@ class SassPluginTest < Test::Unit::TestCase
10
10
  subdir/subdir subdir/nested_subdir/nested_subdir
11
11
  options
12
12
  }
13
+ @@templates += %w[import_charset import_charset_ibm866] unless Sass::Util.ruby1_8?
14
+ @@templates << 'import_charset_1_8' if Sass::Util.ruby1_8?
13
15
 
14
- @@cache_store = Sass::InMemoryCacheStore.new
16
+ @@cache_store = Sass::CacheStores::Memory.new
15
17
 
16
18
  def setup
17
19
  FileUtils.mkdir_p tempfile_loc
@@ -279,11 +281,18 @@ CSS
279
281
  prefix = options[:prefix]
280
282
  result_name = arguments.shift
281
283
  tempfile_name = arguments.shift || result_name
282
- expected_lines = File.read(result_loc(result_name, prefix)).split("\n")
283
- actual_lines = File.read(tempfile_loc(tempfile_name, prefix)).split("\n")
284
+
285
+ expected_str = File.read(result_loc(result_name, prefix))
286
+ actual_str = File.read(tempfile_loc(tempfile_name, prefix))
287
+ unless Sass::Util.ruby1_8?
288
+ expected_str = expected_str.force_encoding('IBM866') if result_name == 'import_charset_ibm866'
289
+ actual_str = actual_str.force_encoding('IBM866') if tempfile_name == 'import_charset_ibm866'
290
+ end
291
+ expected_lines = expected_str.split("\n")
292
+ actual_lines = actual_str.split("\n")
284
293
 
285
294
  if actual_lines.first == "/*" && expected_lines.first != "/*"
286
- assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n"))
295
+ assert(false, actual_lines[0..Sass::Util.enum_with_index(actual_lines).find {|l, i| l == "*/"}.last].join("\n"))
287
296
  end
288
297
 
289
298
  expected_lines.zip(actual_lines).each_with_index do |pair, line|
@@ -0,0 +1,4 @@
1
+ @charset "UTF-8";
2
+ .foo { a: b; }
3
+
4
+ .bar { a: щ; }
@@ -0,0 +1,4 @@
1
+ @charset "IBM866";
2
+ .foo { a: b; }
3
+
4
+ .bar { a: �; }
@@ -0,0 +1,4 @@
1
+ @charset "IBM866";
2
+ .foo { a: b; }
3
+
4
+ .bar { a: �; }
@@ -82,28 +82,6 @@ WARN
82
82
  assert_renders "$foo !important"
83
83
  end
84
84
 
85
- def test_comma_operator
86
- assert_renders "$foo, $bar $baz"
87
- assert_renders "$foo $bar, $baz"
88
-
89
- assert_renders "($foo, $bar) $baz"
90
- assert_renders "$foo ($bar, $baz)"
91
-
92
- assert_equal "$foo, $bar $baz", render("$foo, ($bar $baz)")
93
- assert_equal "$foo $bar, $baz", render("($foo $bar), $baz")
94
- end
95
-
96
- def test_concat_operator
97
- assert_renders "$foo $bar or $baz"
98
- assert_renders "$foo or $bar $baz"
99
-
100
- assert_renders "($foo $bar) or $baz"
101
- assert_renders "$foo or ($bar $baz)"
102
-
103
- assert_equal "$foo $bar or $baz", render("$foo ($bar or $baz)")
104
- assert_equal "$foo or $bar $baz", render("($foo or $bar) $baz")
105
- end
106
-
107
85
  def self.test_precedence(outer, inner)
108
86
  op_outer = Sass::Script::Lexer::OPERATORS_REVERSE[outer]
109
87
  op_inner = Sass::Script::Lexer::OPERATORS_REVERSE[inner]
@@ -146,7 +124,7 @@ RUBY
146
124
  def self.separator_for(op_name)
147
125
  case op_name
148
126
  when :comma; ", "
149
- when :concat; " "
127
+ when :space; " "
150
128
  else; " #{Sass::Script::Lexer::OPERATORS_REVERSE[op_name]} "
151
129
  end
152
130
  end
@@ -182,8 +160,6 @@ RUBY
182
160
  test_precedence :plus, :div
183
161
  test_precedence :plus, :mod
184
162
 
185
- assert_associative :comma, :concat
186
- assert_associative :concat, :or
187
163
  assert_associative :plus, :minus
188
164
  assert_associative :times, :div
189
165
  assert_associative :times, :mod
@@ -196,6 +172,32 @@ RUBY
196
172
  assert_non_associative :lt, :lte
197
173
  assert_non_associative :lte, :gt
198
174
 
175
+ def test_comma_precedence
176
+ assert_renders "$foo, $bar, $baz"
177
+
178
+ assert_renders "$foo ($bar, $baz)"
179
+ assert_renders "($foo, $bar) $baz"
180
+
181
+ assert_equal "$foo, $bar $baz", render("$foo, ($bar $baz)")
182
+ assert_equal "$foo $bar, $baz", render("($foo $bar), $baz")
183
+
184
+ assert_equal "$foo, ($bar, $baz)", render("$foo, ($bar, $baz)")
185
+ assert_equal "($foo, $bar), $baz", render("($foo, $bar), $baz")
186
+ end
187
+
188
+ def test_space_precedence
189
+ assert_renders "$foo $bar $baz"
190
+
191
+ assert_renders "$foo or ($bar $baz)"
192
+ assert_renders "($foo $bar) or $baz"
193
+
194
+ assert_equal "$foo $bar or $baz", render("$foo ($bar or $baz)")
195
+ assert_equal "$foo or $bar $baz", render("($foo or $bar) $baz")
196
+
197
+ assert_equal "$foo ($bar $baz)", render("$foo ($bar $baz)")
198
+ assert_equal "($foo $bar) $baz", render("($foo $bar) $baz")
199
+ end
200
+
199
201
  def test_unary_op
200
202
  assert_renders "-12px"
201
203
  assert_renders '/"foo"'
@@ -103,7 +103,6 @@ class SassScriptTest < Test::Unit::TestCase
103
103
 
104
104
  def test_implicit_strings
105
105
  assert_equal Sass::Script::String.new("foo"), eval("foo")
106
- assert_equal Sass::Script::String.new("foo bar"), eval("foo bar")
107
106
  assert_equal Sass::Script::String.new("foo/bar"), eval("foo/bar")
108
107
  end
109
108
 
@@ -235,6 +234,10 @@ SASS
235
234
  def test_ruby_equality
236
235
  assert_equal eval('"foo"'), eval('"foo"')
237
236
  assert_equal eval('1'), eval('1.0')
237
+ assert_equal eval('1 2 3.0'), eval('1 2 3')
238
+ assert_equal eval('1, 2, 3.0'), eval('1, 2, 3')
239
+ assert_equal eval('(1 2), (3, 4), (5 6)'), eval('(1 2), (3, 4), (5 6)')
240
+ assert_not_equal eval('1, 2, 3'), eval('1 2 3')
238
241
  assert_not_equal eval('1'), eval('"1"')
239
242
  end
240
243
 
@@ -313,6 +316,14 @@ SASS
313
316
  assert_equal "true", resolve("false != true")
314
317
  assert_equal "false", resolve("1em == 1px")
315
318
  assert_equal "false", resolve("12 != 12")
319
+ assert_equal "true", resolve("(foo bar baz) == (foo bar baz)")
320
+ assert_equal "true", resolve("(foo, bar, baz) == (foo, bar, baz)")
321
+ assert_equal "true", resolve('((1 2), (3, 4), (5 6)) == ((1 2), (3, 4), (5 6))')
322
+ assert_equal "true", resolve('((1 2), (3 4)) == (1 2, 3 4)')
323
+ assert_equal "false", resolve('((1 2) 3) == (1 2 3)')
324
+ assert_equal "false", resolve('(1 (2 3)) == (1 2 3)')
325
+ assert_equal "false", resolve('((1, 2) (3, 4)) == (1, 2 3, 4)')
326
+ assert_equal "false", resolve('(1 2 3) == (1, 2, 3)')
316
327
  end
317
328
 
318
329
  def test_operation_precedence
@@ -49,11 +49,34 @@ baz {bar: baz}
49
49
  SCSS
50
50
  end
51
51
 
52
- def test_unicode
53
- assert_parses <<SCSS
52
+ if Sass::Util.ruby1_8?
53
+ def test_unicode
54
+ assert_parses <<SCSS
55
+ @charset "UTF-8";
56
+ foo {
57
+ bar: föö bâr; }
58
+ SCSS
59
+ assert_parses <<SCSS
54
60
  foo {
55
61
  bar: föö bâr; }
56
62
  SCSS
63
+ end
64
+ else
65
+ def test_unicode
66
+ assert_parses <<SCSS
67
+ @charset "UTF-8";
68
+ foo {
69
+ bar: föö bâr; }
70
+ SCSS
71
+ assert_equal <<CSS, render(<<SCSS)
72
+ @charset "UTF-8";
73
+ foo {
74
+ bar: föö bâr; }
75
+ CSS
76
+ foo {
77
+ bar: föö bâr; }
78
+ SCSS
79
+ end
57
80
  end
58
81
 
59
82
  def test_invisible_comments
@@ -429,10 +452,6 @@ SCSS
429
452
 
430
453
  ## Directives
431
454
 
432
- def test_charset_directive
433
- assert_parses '@charset "utf-8";'
434
- end
435
-
436
455
  def test_namespace_directive
437
456
  assert_parses '@namespace "http://www.w3.org/Profiles/xhtml1-strict";'
438
457
  assert_parses '@namespace url(http://www.w3.org/Profiles/xhtml1-strict);'
@@ -508,11 +527,11 @@ SCSS
508
527
  end
509
528
 
510
529
  def test_blockless_directive_without_semicolon
511
- assert_equal "@charset \"utf-8\";\n", render('@charset "utf-8"')
530
+ assert_equal "@foo \"bar\";\n", render('@foo "bar"')
512
531
  end
513
532
 
514
533
  def test_directive_with_lots_of_whitespace
515
- assert_equal "@charset \"utf-16\";\n", render('@charset "utf-16" ;')
534
+ assert_equal "@foo \"bar\";\n", render('@foo "bar" ;')
516
535
  end
517
536
 
518
537
  def test_empty_blockless_directive
@@ -235,6 +235,33 @@ $i: 1;
235
235
  SCSS
236
236
  end
237
237
 
238
+ def test_each_directive
239
+ assert_equal <<CSS, render(<<SCSS)
240
+ a {
241
+ b: 1px;
242
+ b: 2px;
243
+ b: 3px;
244
+ b: 4px; }
245
+
246
+ c {
247
+ d: foo;
248
+ d: bar;
249
+ d: baz;
250
+ d: bang; }
251
+ CSS
252
+ a {
253
+ @each $number in 1px 2px 3px 4px {
254
+ b: $number;
255
+ }
256
+ }
257
+ c {
258
+ @each $str in foo, bar, baz, bang {
259
+ d: $str;
260
+ }
261
+ }
262
+ SCSS
263
+ end
264
+
238
265
  def test_css_import_directive
239
266
  assert_equal "@import url(foo.css);\n", render('@import "foo.css";')
240
267
  assert_equal "@import url(foo.css);\n", render("@import 'foo.css';")
@@ -441,6 +468,22 @@ baz {
441
468
  SCSS
442
469
  end
443
470
 
471
+ def test_trailing_comma_in_selector
472
+ assert_equal <<CSS, render(<<SCSS)
473
+ #foo #bar,
474
+ #baz #boom {
475
+ a: b; }
476
+
477
+ #bip #bop {
478
+ c: d; }
479
+ CSS
480
+ #foo #bar,,
481
+ ,#baz #boom, {a: b}
482
+
483
+ #bip #bop, ,, {c: d}
484
+ SCSS
485
+ end
486
+
444
487
  def test_parent_selectors
445
488
  assert_equal <<CSS, render(<<SCSS)
446
489
  foo:hover {
@@ -1023,6 +1066,14 @@ MESSAGE
1023
1066
  SCSS
1024
1067
  end
1025
1068
 
1069
+ def test_no_lonely_else
1070
+ assert_raise_message(Sass::SyntaxError, <<MESSAGE.rstrip) {render <<SCSS}
1071
+ Invalid CSS: @else must come after @if
1072
+ MESSAGE
1073
+ @else {foo: bar}
1074
+ SCSS
1075
+ end
1076
+
1026
1077
  # Regression
1027
1078
 
1028
1079
  def test_weird_added_space
@@ -1146,6 +1197,32 @@ b {
1146
1197
  }
1147
1198
  }
1148
1199
  SCSS
1200
+ end
1201
+
1202
+ def test_if_error_line
1203
+ assert_raise_line(2) {render(<<SCSS)}
1204
+ @if true {foo: bar}
1205
+ }
1206
+ SCSS
1207
+ end
1149
1208
 
1209
+ def test_multiline_var
1210
+ assert_equal <<CSS, render(<<SCSS)
1211
+ foo {
1212
+ a: 3;
1213
+ b: false;
1214
+ c: a b c; }
1215
+ CSS
1216
+ foo {
1217
+ $var1: 1 +
1218
+ 2;
1219
+ $var2: true and
1220
+ false;
1221
+ $var3: a b
1222
+ c;
1223
+ a: $var1;
1224
+ b: $var2;
1225
+ c: $var3; }
1226
+ SCSS
1150
1227
  end
1151
1228
  end
@@ -0,0 +1,4 @@
1
+ @charset "IBM866"
2
+
3
+ .bar
4
+ a: �
@@ -0,0 +1,4 @@
1
+ @charset "UTF-8"
2
+
3
+ .bar
4
+ a: щ
@@ -0,0 +1,7 @@
1
+ .foo
2
+ a: b
3
+
4
+ // Even though the imported file is in IBM866,
5
+ // since the root file is in UTF-8/ASCII
6
+ // the output will end up being UTF-8.
7
+ @import "imported_charset_ibm866"
@@ -0,0 +1,4 @@
1
+ .foo
2
+ a: b
3
+
4
+ @import "imported_charset_ibm866"
@@ -0,0 +1,9 @@
1
+ @charset "IBM866"
2
+
3
+ .foo
4
+ a: b
5
+
6
+ // Even though the imported file is in UTF-8,
7
+ // since the root file is in IBM866
8
+ // the output will end up being IBM866.
9
+ @import "imported_charset_utf8"
@@ -9,7 +9,7 @@ $esc: 10\+12
9
9
  $str: Hello\!
10
10
  $qstr: "Quo\"ted\"!"
11
11
  $hstr: Hyph-en\!
12
- $concat: #{5 + 4} hi there
12
+ $space: #{5 + 4} hi there
13
13
  $percent: 11%
14
14
  $complex: 1px/1em
15
15
 
@@ -22,7 +22,7 @@ $complex: 1px/1em
22
22
  :color $main_text
23
23
  :short-color #123
24
24
  :named-color olive
25
- :con "foo" bar ($concat "boom")
25
+ :con "foo" bar ($space "boom")
26
26
  :con2 "noquo" quo
27
27
  #sidebar
28
28
  :background-color $color