haml 3.1.0.alpha.19 → 3.1.0.alpha.22

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 (33) hide show
  1. data/EDGE_GEM_VERSION +1 -1
  2. data/VERSION +1 -1
  3. data/lib/haml/precompiler.rb +1 -0
  4. data/lib/haml/template/plugin.rb +16 -6
  5. data/vendor/sass/doc-src/SASS_CHANGELOG.md +41 -0
  6. data/vendor/sass/doc-src/SASS_REFERENCE.md +37 -6
  7. data/vendor/sass/lib/sass.rb +7 -3
  8. data/vendor/sass/lib/sass/engine.rb +4 -4
  9. data/vendor/sass/lib/sass/environment.rb +24 -15
  10. data/vendor/sass/lib/sass/less.rb +31 -12
  11. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +1 -1
  12. data/vendor/sass/lib/sass/script/funcall.rb +51 -9
  13. data/vendor/sass/lib/sass/script/functions.rb +189 -57
  14. data/vendor/sass/lib/sass/script/node.rb +7 -1
  15. data/vendor/sass/lib/sass/script/number.rb +21 -15
  16. data/vendor/sass/lib/sass/script/operation.rb +10 -5
  17. data/vendor/sass/lib/sass/script/parser.rb +61 -17
  18. data/vendor/sass/lib/sass/script/string.rb +2 -3
  19. data/vendor/sass/lib/sass/script/variable.rb +6 -0
  20. data/vendor/sass/lib/sass/scss/parser.rb +8 -5
  21. data/vendor/sass/lib/sass/selector/sequence.rb +2 -2
  22. data/vendor/sass/lib/sass/tree/mixin_node.rb +25 -5
  23. data/vendor/sass/lib/sass/tree/node.rb +2 -2
  24. data/vendor/sass/lib/sass/tree/prop_node.rb +9 -6
  25. data/vendor/sass/lib/sass/tree/rule_node.rb +9 -8
  26. data/vendor/sass/lib/sass/util.rb +5 -3
  27. data/vendor/sass/test/sass/conversion_test.rb +14 -0
  28. data/vendor/sass/test/sass/engine_test.rb +85 -0
  29. data/vendor/sass/test/sass/functions_test.rb +89 -0
  30. data/vendor/sass/test/sass/less_conversion_test.rb +24 -3
  31. data/vendor/sass/test/sass/script_conversion_test.rb +65 -0
  32. data/vendor/sass/test/sass/scss/scss_test.rb +63 -0
  33. metadata +2 -2
@@ -326,7 +326,14 @@ foo {
326
326
  d: 1 + 2 - 3 + 4;
327
327
  e: 1 / 2 - 3 / 4;
328
328
  f: 1 - 2 / 3 - 4;
329
- g: 1 / 2 * 3 / 4; }
329
+ g: 1 / 2 * 3 / 4;
330
+ h: (1 + 2) * (3 + 4);
331
+ i: 1 * (2 + 3) * 4;
332
+ j: 1 - (2 + 2) - 4;
333
+ k: 1 + 2 - (3 + 4);
334
+ l: 1 / (2 - 3) / 4;
335
+ m: (1 - 2) / (3 - 4);
336
+ n: 1 / (2 * 3) / 4; }
330
337
  SCSS
331
338
  foo {
332
339
  a: 1 + 2 * 3 + 4;
@@ -335,7 +342,14 @@ foo {
335
342
  d: 1 + 2 - 3 + 4;
336
343
  e: 1 / 2 - 3 / 4;
337
344
  f: 1 - 2 / 3 - 4;
338
- g: 1 / 2 * 3 / 4; }
345
+ g: 1 / 2 * 3 / 4;
346
+ h: (1 + 2) * (3 + 4);
347
+ i: 1 * (2 + 3) * 4;
348
+ j: 1 - (2 + 2) - 4;
349
+ k: 1 + 2 - (3 + 4);
350
+ l: 1 / (2 - 3) / 4;
351
+ m: (1 - 2) / (3 - 4);
352
+ n: 1 / (2 * 3) / 4; }
339
353
  LESS
340
354
  end
341
355
 
@@ -628,5 +642,12 @@ LESS
628
642
  end
629
643
 
630
644
  rescue LoadError => e
631
- puts "\nCouldn't require less, skipping some tests."
645
+ unless defined?(Gem)
646
+ begin
647
+ require 'rubygems'
648
+ retry
649
+ rescue Exception
650
+ end
651
+ end
652
+ puts "\nCouldn't require less, skipping some tests."
632
653
  end
@@ -53,6 +53,11 @@ class SassScriptConversionTest < Test::Unit::TestCase
53
53
  assert_renders "-foo(12px)"
54
54
  end
55
55
 
56
+ def test_funcall_with_keyword_args
57
+ assert_renders "foo(arg1, arg2, $karg1: val, $karg2: val2)"
58
+ assert_renders "foo($karg1: val, $karg2: val2)"
59
+ end
60
+
56
61
  def test_url
57
62
  assert_renders "url(foo.gif)"
58
63
  assert_renders "url($var)"
@@ -118,6 +123,52 @@ WARN
118
123
  RUBY
119
124
  end
120
125
 
126
+ def self.assert_associative(op_name, sibling_name)
127
+ op = separator_for(op_name)
128
+ sibling = separator_for(sibling_name)
129
+ class_eval <<RUBY
130
+ def test_associative_#{op_name}_#{sibling_name}
131
+ assert_renders "$foo#{op}$bar#{op}$baz"
132
+
133
+ assert_equal "$foo#{op}$bar#{op}$baz",
134
+ render("$foo#{op}($bar#{op}$baz)")
135
+ assert_equal "$foo#{op}$bar#{op}$baz",
136
+ render("($foo#{op}$bar)#{op}$baz")
137
+
138
+ assert_equal "$foo#{op}$bar#{sibling}$baz",
139
+ render("$foo#{op}($bar#{sibling}$baz)")
140
+ assert_equal "$foo#{sibling}$bar#{op}$baz",
141
+ render("($foo#{sibling}$bar)#{op}$baz")
142
+ end
143
+ RUBY
144
+ end
145
+
146
+ def self.separator_for(op_name)
147
+ case op_name
148
+ when :comma; ", "
149
+ when :concat; " "
150
+ else; " #{Sass::Script::Lexer::OPERATORS_REVERSE[op_name]} "
151
+ end
152
+ end
153
+
154
+ def self.assert_non_associative(op_name, sibling_name)
155
+ op = Sass::Script::Lexer::OPERATORS_REVERSE[op_name]
156
+ sibling = Sass::Script::Lexer::OPERATORS_REVERSE[sibling_name]
157
+ class_eval <<RUBY
158
+ def test_non_associative_#{op_name}_#{sibling_name}
159
+ assert_renders "$foo #{op} $bar #{op} $baz"
160
+
161
+ assert_renders "$foo #{op} ($bar #{op} $baz)"
162
+ assert_equal "$foo #{op} $bar #{op} $baz",
163
+ render("($foo #{op} $bar) #{op} $baz")
164
+
165
+ assert_renders "$foo #{op} ($bar #{sibling} $baz)"
166
+ assert_equal "$foo #{sibling} $bar #{op} $baz",
167
+ render("($foo #{sibling} $bar) #{op} $baz")
168
+ end
169
+ RUBY
170
+ end
171
+
121
172
  test_precedence :or, :and
122
173
  test_precedence :and, :eq
123
174
  test_precedence :and, :neq
@@ -131,6 +182,20 @@ RUBY
131
182
  test_precedence :plus, :div
132
183
  test_precedence :plus, :mod
133
184
 
185
+ assert_associative :comma, :concat
186
+ assert_associative :concat, :or
187
+ assert_associative :plus, :minus
188
+ assert_associative :times, :div
189
+ assert_associative :times, :mod
190
+
191
+ assert_non_associative :minus, :plus
192
+ assert_non_associative :div, :times
193
+ assert_non_associative :mod, :times
194
+ assert_non_associative :gt, :gte
195
+ assert_non_associative :gte, :lt
196
+ assert_non_associative :lt, :lte
197
+ assert_non_associative :lte, :gt
198
+
134
199
  def test_unary_op
135
200
  assert_renders "-12px"
136
201
  assert_renders '/"foo"'
@@ -1072,6 +1072,69 @@ ul li\#{$bar} a span.label { foo: bar; }
1072
1072
  SCSS
1073
1073
  end
1074
1074
 
1075
+ def test_mixin_with_keyword_args
1076
+ assert_equal <<CSS, render(<<SCSS)
1077
+ .mixed {
1078
+ required: foo;
1079
+ arg1: default-val1;
1080
+ arg2: non-default-val2; }
1081
+ CSS
1082
+ @mixin a-mixin($required, $arg1: default-val1, $arg2: default-val2) {
1083
+ required: $required;
1084
+ arg1: $arg1;
1085
+ arg2: $arg2;
1086
+ }
1087
+ .mixed { @include a-mixin(foo, $arg2: non-default-val2); }
1088
+ SCSS
1089
+ end
1090
+
1091
+ def test_passing_required_args_as_a_keyword_arg
1092
+ assert_equal <<CSS, render(<<SCSS)
1093
+ .mixed {
1094
+ required: foo;
1095
+ arg1: default-val1;
1096
+ arg2: default-val2; }
1097
+ CSS
1098
+ @mixin a-mixin($required, $arg1: default-val1, $arg2: default-val2) {
1099
+ required: $required;
1100
+ arg1: $arg1;
1101
+ arg2: $arg2; }
1102
+ .mixed { @include a-mixin($required: foo); }
1103
+ SCSS
1104
+ end
1105
+
1106
+ def test_passing_all_as_keyword_args_in_opposite_order
1107
+ assert_equal <<CSS, render(<<SCSS)
1108
+ .mixed {
1109
+ required: foo;
1110
+ arg1: non-default-val1;
1111
+ arg2: non-default-val2; }
1112
+ CSS
1113
+ @mixin a-mixin($required, $arg1: default-val1, $arg2: default-val2) {
1114
+ required: $required;
1115
+ arg1: $arg1;
1116
+ arg2: $arg2; }
1117
+ .mixed { @include a-mixin($arg2: non-default-val2, $arg1: non-default-val1, $required: foo); }
1118
+ SCSS
1119
+ end
1120
+
1121
+ def test_keyword_args_in_functions
1122
+ assert_equal <<CSS, render(<<SCSS)
1123
+ .keyed {
1124
+ color: rgba(170, 119, 204, 0.4); }
1125
+ CSS
1126
+ .keyed { color: rgba($color: #a7c, $alpha: 0.4) }
1127
+ SCSS
1128
+ end
1129
+
1130
+ def test_unknown_keyword_arg_raises_error
1131
+ assert_raise_message(Sass::SyntaxError, "Mixin a doesn't have an argument named $c") {render <<SCSS}
1132
+ @mixin a($b: 1) { a: $b; }
1133
+ div { @include a(1, $c: 3); }
1134
+ SCSS
1135
+ end
1136
+
1137
+
1075
1138
  def test_newlines_removed_from_selectors_when_compressed
1076
1139
  assert_equal <<CSS, render(<<SCSS, :style=>:compressed)
1077
1140
  z a,z b{display:block}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.alpha.19
4
+ version: 3.1.0.alpha.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Weizenbaum
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-10-12 00:00:00 -04:00
13
+ date: 2010-10-19 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency