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.
- data/EDGE_GEM_VERSION +1 -1
- data/VERSION +1 -1
- data/lib/haml/precompiler.rb +1 -0
- data/lib/haml/template/plugin.rb +16 -6
- data/vendor/sass/doc-src/SASS_CHANGELOG.md +41 -0
- data/vendor/sass/doc-src/SASS_REFERENCE.md +37 -6
- data/vendor/sass/lib/sass.rb +7 -3
- data/vendor/sass/lib/sass/engine.rb +4 -4
- data/vendor/sass/lib/sass/environment.rb +24 -15
- data/vendor/sass/lib/sass/less.rb +31 -12
- data/vendor/sass/lib/sass/plugin/staleness_checker.rb +1 -1
- data/vendor/sass/lib/sass/script/funcall.rb +51 -9
- data/vendor/sass/lib/sass/script/functions.rb +189 -57
- data/vendor/sass/lib/sass/script/node.rb +7 -1
- data/vendor/sass/lib/sass/script/number.rb +21 -15
- data/vendor/sass/lib/sass/script/operation.rb +10 -5
- data/vendor/sass/lib/sass/script/parser.rb +61 -17
- data/vendor/sass/lib/sass/script/string.rb +2 -3
- data/vendor/sass/lib/sass/script/variable.rb +6 -0
- data/vendor/sass/lib/sass/scss/parser.rb +8 -5
- data/vendor/sass/lib/sass/selector/sequence.rb +2 -2
- data/vendor/sass/lib/sass/tree/mixin_node.rb +25 -5
- data/vendor/sass/lib/sass/tree/node.rb +2 -2
- data/vendor/sass/lib/sass/tree/prop_node.rb +9 -6
- data/vendor/sass/lib/sass/tree/rule_node.rb +9 -8
- data/vendor/sass/lib/sass/util.rb +5 -3
- data/vendor/sass/test/sass/conversion_test.rb +14 -0
- data/vendor/sass/test/sass/engine_test.rb +85 -0
- data/vendor/sass/test/sass/functions_test.rb +89 -0
- data/vendor/sass/test/sass/less_conversion_test.rb +24 -3
- data/vendor/sass/test/sass/script_conversion_test.rb +65 -0
- data/vendor/sass/test/sass/scss/scss_test.rb +63 -0
- 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
|
-
|
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.
|
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-
|
13
|
+
date: 2010-10-19 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|