Add @while.
This commit is contained in:
parent
473fd84d3b
commit
b4b6ce2c29
|
@ -324,6 +324,8 @@ END
|
|||
parse_if(line, root, value)
|
||||
elsif directive == "for"
|
||||
parse_for(line, root, value)
|
||||
elsif directive == "while"
|
||||
parse_while(line, root, value)
|
||||
else
|
||||
Tree::DirectiveNode.new(line.text, @options)
|
||||
end
|
||||
|
@ -366,6 +368,14 @@ END
|
|||
tree
|
||||
end
|
||||
|
||||
def parse_while(line, root, text)
|
||||
tree = []
|
||||
while Sass::Constant.parse(text, @constants, line.index).to_bool
|
||||
append_children(tree, line.children, root)
|
||||
end
|
||||
tree
|
||||
end
|
||||
|
||||
def parse_mixin_definition(line)
|
||||
name, args = line.text.scan(/^=\s*([^(]+)(\([^)]*\))?$/).first
|
||||
raise SyntaxError.new("Invalid mixin \"#{line.text[1..-1]}\".", @line) if name.nil?
|
||||
|
|
|
@ -491,6 +491,31 @@ CSS
|
|||
SASS
|
||||
end
|
||||
|
||||
def test_while
|
||||
assert_equal(<<CSS, render(<<SASS))
|
||||
a-5 {
|
||||
blooble: gloop; }
|
||||
|
||||
a-4 {
|
||||
blooble: gloop; }
|
||||
|
||||
a-3 {
|
||||
blooble: gloop; }
|
||||
|
||||
a-2 {
|
||||
blooble: gloop; }
|
||||
|
||||
a-1 {
|
||||
blooble: gloop; }
|
||||
CSS
|
||||
!a = 5
|
||||
@while !a ~= 0
|
||||
a-\#{!a}
|
||||
blooble: gloop
|
||||
!a = !a - 1
|
||||
SASS
|
||||
end
|
||||
|
||||
def test_argument_error
|
||||
assert_raise(Sass::SyntaxError) { render("a\n b = hsl(1)") }
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue