Commit 7094397e by Aaron Leung

singleton detection

parent 9e8b930e
...@@ -152,32 +152,53 @@ namespace Sass { ...@@ -152,32 +152,53 @@ namespace Sass {
Node Document::parse_selector_group() Node Document::parse_selector_group()
{ {
Node group(Node::selector_group, line_number, 1); // Node group(Node::selector_group, line_number, 1);
group << parse_selector(); // group << parse_selector();
// while (lex< exactly<','> >()) group << parse_selector();
// return group;
Node sel1(parse_selector());
if (!lex< exactly<','> >()) return sel1;
Node group(Node::selector_group, line_number, 2);
group << sel1;
while (lex< exactly<','> >()) group << parse_selector(); while (lex< exactly<','> >()) group << parse_selector();
return group; return group;
} }
Node Document::parse_selector() Node Document::parse_selector()
{ {
Node selector(Node::selector, line_number, 1); // Node selector(Node::selector, line_number, 1);
if (lex< exactly<'+'> >() || // if (lex< exactly<'+'> >() ||
lex< exactly<'~'> >() || // lex< exactly<'~'> >() ||
lex< exactly<'>'> >()) { // lex< exactly<'>'> >()) {
selector << Node(Node::selector_combinator, line_number, lexed); // selector << Node(Node::selector_combinator, line_number, lexed);
} // }
Node s(parse_simple_selector_sequence()); // Node s(parse_simple_selector_sequence());
if (s.has_backref) selector.has_backref = true; // if (s.has_backref) selector.has_backref = true;
selector << s; // selector << s;
while (lex< exactly<'+'> >() || // while (lex< exactly<'+'> >() ||
lex< exactly<'~'> >() || // lex< exactly<'~'> >() ||
lex< exactly<'>'> >() || // lex< exactly<'>'> >() ||
lex< ancestor_of >() /*|| // lex< ancestor_of >() /*||
s.terminal_backref && lex< no_spaces >()*/) { // s.terminal_backref && lex< no_spaces >()*/) {
selector << Node(Node::selector_combinator, line_number, lexed); // selector << Node(Node::selector_combinator, line_number, lexed);
s = parse_simple_selector_sequence(); // s = parse_simple_selector_sequence();
if (s.has_backref) selector.has_backref = true; // if (s.has_backref) selector.has_backref = true;
selector << s; // selector << s;
// }
// return selector;
Node seq1(parse_simple_selector_sequence());
if (!lex< exactly<','> >()) return seq1;
Node selector(Node::selector, line_number, 2);
if (seq1.has_backref) selector.has_backref = true;
selector << seq1;
while (lex< exactly<','> >()) {
Node seq(parse_simple_selector_sequence());
if (seq.has_backref) selector.has_backref = true;
selector << seq;
} }
return selector; return selector;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment