Skip to content

Commit 21a37a1

Browse files
committed
Rename Complex_Selector AST node to Sequence_Selector
This better matches the Ruby Sass implementation.
1 parent ad6f0cb commit 21a37a1

22 files changed

+309
-309
lines changed

src/ast.cpp

Lines changed: 79 additions & 79 deletions
Large diffs are not rendered by default.

src/ast.hpp

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2224,15 +2224,15 @@ namespace Sass {
22242224
ATTACH_OPERATIONS()
22252225
};
22262226

2227-
struct Complex_Selector_Pointer_Compare {
2228-
bool operator() (const Complex_Selector* const pLeft, const Complex_Selector* const pRight) const;
2227+
struct Sequence_Selector_Pointer_Compare {
2228+
bool operator() (const Sequence_Selector* const pLeft, const Sequence_Selector* const pRight) const;
22292229
};
22302230

22312231
////////////////////////////////////////////////////////////////////////////
22322232
// Simple selector sequences. Maintains flags indicating whether it contains
22332233
// any parent references or placeholders, to simplify expansion.
22342234
////////////////////////////////////////////////////////////////////////////
2235-
typedef std::set<Complex_Selector*, Complex_Selector_Pointer_Compare> SourcesSet;
2235+
typedef std::set<Sequence_Selector*, Sequence_Selector_Pointer_Compare> SourcesSet;
22362236
class Compound_Selector : public Selector, public Vectorized<Simple_Selector*> {
22372237
private:
22382238
SourcesSet sources_;
@@ -2263,7 +2263,7 @@ namespace Sass {
22632263
return length() == 1 && (*this)[0]->is_universal();
22642264
}
22652265

2266-
Complex_Selector* to_complex(Memory_Manager& mem);
2266+
Sequence_Selector* to_complex(Memory_Manager& mem);
22672267
Compound_Selector* unify_with(Compound_Selector* rhs, Context& ctx);
22682268
// virtual Placeholder_Selector* find_placeholder();
22692269
virtual bool has_parent_ref();
@@ -2280,7 +2280,7 @@ namespace Sass {
22802280
return 0;
22812281
}
22822282
virtual bool is_superselector_of(Compound_Selector* sub, std::string wrapped = "");
2283-
virtual bool is_superselector_of(Complex_Selector* sub, std::string wrapped = "");
2283+
virtual bool is_superselector_of(Sequence_Selector* sub, std::string wrapped = "");
22842284
virtual bool is_superselector_of(CommaSequence_Selector* sub, std::string wrapped = "");
22852285
virtual size_t hash()
22862286
{
@@ -2334,24 +2334,24 @@ namespace Sass {
23342334
// CSS selector combinators (">", "+", "~", and whitespace). Essentially a
23352335
// linked list.
23362336
////////////////////////////////////////////////////////////////////////////
2337-
class Complex_Selector : public Selector {
2337+
class Sequence_Selector : public Selector {
23382338
public:
23392339
enum Combinator { ANCESTOR_OF, PARENT_OF, PRECEDES, ADJACENT_TO, REFERENCE };
23402340
private:
23412341
ADD_PROPERTY(Combinator, combinator)
23422342
ADD_PROPERTY(Compound_Selector*, head)
2343-
ADD_PROPERTY(Complex_Selector*, tail)
2343+
ADD_PROPERTY(Sequence_Selector*, tail)
23442344
ADD_PROPERTY(String*, reference);
23452345
public:
23462346
bool contains_placeholder() {
23472347
if (head() && head()->contains_placeholder()) return true;
23482348
if (tail() && tail()->contains_placeholder()) return true;
23492349
return false;
23502350
};
2351-
Complex_Selector(ParserState pstate,
2351+
Sequence_Selector(ParserState pstate,
23522352
Combinator c = ANCESTOR_OF,
23532353
Compound_Selector* h = 0,
2354-
Complex_Selector* t = 0,
2354+
Sequence_Selector* t = 0,
23552355
String* r = 0)
23562356
: Selector(pstate),
23572357
combinator_(c),
@@ -2363,7 +2363,7 @@ namespace Sass {
23632363
}
23642364
virtual bool has_parent_ref();
23652365

2366-
Complex_Selector* skip_empty_reference()
2366+
Sequence_Selector* skip_empty_reference()
23672367
{
23682368
if ((!head_ || !head_->length() || head_->is_empty_reference()) &&
23692369
combinator() == Combinator::ANCESTOR_OF)
@@ -2383,36 +2383,36 @@ namespace Sass {
23832383
combinator() == Combinator::ANCESTOR_OF;
23842384
}
23852385

2386-
Complex_Selector* context(Context&);
2386+
Sequence_Selector* context(Context&);
23872387

23882388

23892389
// front returns the first real tail
23902390
// skips over parent and empty ones
2391-
const Complex_Selector* first() const;
2391+
const Sequence_Selector* first() const;
23922392

23932393
// last returns the last real tail
2394-
const Complex_Selector* last() const;
2394+
const Sequence_Selector* last() const;
23952395

23962396
CommaSequence_Selector* tails(Context& ctx, CommaSequence_Selector* tails);
23972397

23982398
// unconstant accessors
2399-
Complex_Selector* first();
2400-
Complex_Selector* last();
2399+
Sequence_Selector* first();
2400+
Sequence_Selector* last();
24012401

24022402
// some shortcuts that should be removed
2403-
const Complex_Selector* innermost() const { return last(); };
2404-
Complex_Selector* innermost() { return last(); };
2403+
const Sequence_Selector* innermost() const { return last(); };
2404+
Sequence_Selector* innermost() { return last(); };
24052405

24062406
size_t length() const;
24072407
CommaSequence_Selector* resolve_parent_refs(Context& ctx, CommaSequence_Selector* parents, bool implicit_parent);
24082408
virtual bool is_superselector_of(Compound_Selector* sub, std::string wrapping = "");
2409-
virtual bool is_superselector_of(Complex_Selector* sub, std::string wrapping = "");
2409+
virtual bool is_superselector_of(Sequence_Selector* sub, std::string wrapping = "");
24102410
virtual bool is_superselector_of(CommaSequence_Selector* sub, std::string wrapping = "");
24112411
// virtual Placeholder_Selector* find_placeholder();
2412-
CommaSequence_Selector* unify_with(Complex_Selector* rhs, Context& ctx);
2412+
CommaSequence_Selector* unify_with(Sequence_Selector* rhs, Context& ctx);
24132413
Combinator clear_innermost();
2414-
void append(Context&, Complex_Selector*);
2415-
void set_innermost(Complex_Selector*, Combinator);
2414+
void append(Context&, Sequence_Selector*);
2415+
void set_innermost(Sequence_Selector*, Combinator);
24162416
virtual size_t hash()
24172417
{
24182418
if (hash_ == 0) {
@@ -2440,9 +2440,9 @@ namespace Sass {
24402440
if (tail_ && tail_->has_wrapped_selector()) return true;
24412441
return false;
24422442
}
2443-
bool operator<(const Complex_Selector& rhs) const;
2444-
bool operator==(const Complex_Selector& rhs) const;
2445-
inline bool operator!=(const Complex_Selector& rhs) const { return !(*this == rhs); }
2443+
bool operator<(const Sequence_Selector& rhs) const;
2444+
bool operator==(const Sequence_Selector& rhs) const;
2445+
inline bool operator!=(const Sequence_Selector& rhs) const { return !(*this == rhs); }
24462446
SourcesSet sources()
24472447
{
24482448
//s = Set.new
@@ -2452,7 +2452,7 @@ namespace Sass {
24522452
SourcesSet srcs;
24532453

24542454
Compound_Selector* pHead = head();
2455-
Complex_Selector* pTail = tail();
2455+
Sequence_Selector* pTail = tail();
24562456

24572457
if (pHead) {
24582458
SourcesSet& headSources = pHead->sources();
@@ -2468,7 +2468,7 @@ namespace Sass {
24682468
}
24692469
void addSources(SourcesSet& sources, Context& ctx) {
24702470
// members.map! {|m| m.is_a?(SimpleSequence) ? m.with_more_sources(sources) : m}
2471-
Complex_Selector* pIter = this;
2471+
Sequence_Selector* pIter = this;
24722472
while (pIter) {
24732473
Compound_Selector* pHead = pIter->head();
24742474

@@ -2480,7 +2480,7 @@ namespace Sass {
24802480
}
24812481
}
24822482
void clearSources() {
2483-
Complex_Selector* pIter = this;
2483+
Sequence_Selector* pIter = this;
24842484
while (pIter) {
24852485
Compound_Selector* pHead = pIter->head();
24862486

@@ -2491,25 +2491,25 @@ namespace Sass {
24912491
pIter = pIter->tail();
24922492
}
24932493
}
2494-
Complex_Selector* clone(Context&) const; // does not clone Compound_Selector*s
2495-
Complex_Selector* cloneFully(Context&) const; // clones Compound_Selector*s
2494+
Sequence_Selector* clone(Context&) const; // does not clone Compound_Selector*s
2495+
Sequence_Selector* cloneFully(Context&) const; // clones Compound_Selector*s
24962496
// std::vector<Compound_Selector*> to_vector();
24972497
ATTACH_OPERATIONS()
24982498
};
24992499

2500-
typedef std::deque<Complex_Selector*> ComplexSelectorDeque;
2501-
typedef Subset_Map<std::string, std::pair<Complex_Selector*, Compound_Selector*> > ExtensionSubsetMap;
2500+
typedef std::deque<Sequence_Selector*> ComplexSelectorDeque;
2501+
typedef Subset_Map<std::string, std::pair<Sequence_Selector*, Compound_Selector*> > ExtensionSubsetMap;
25022502

25032503
///////////////////////////////////
25042504
// Comma-separated selector groups.
25052505
///////////////////////////////////
2506-
class CommaSequence_Selector : public Selector, public Vectorized<Complex_Selector*> {
2506+
class CommaSequence_Selector : public Selector, public Vectorized<Sequence_Selector*> {
25072507
ADD_PROPERTY(std::vector<std::string>, wspace)
25082508
protected:
2509-
void adjust_after_pushing(Complex_Selector* c);
2509+
void adjust_after_pushing(Sequence_Selector* c);
25102510
public:
25112511
CommaSequence_Selector(ParserState pstate, size_t s = 0)
2512-
: Selector(pstate), Vectorized<Complex_Selector*>(s), wspace_(0)
2512+
: Selector(pstate), Vectorized<Sequence_Selector*>(s), wspace_(0)
25132513
{ }
25142514
std::string type() { return "list"; }
25152515
// remove parent selector references
@@ -2519,7 +2519,7 @@ namespace Sass {
25192519
// virtual Placeholder_Selector* find_placeholder();
25202520
CommaSequence_Selector* resolve_parent_refs(Context& ctx, CommaSequence_Selector* parents, bool implicit_parent = true);
25212521
virtual bool is_superselector_of(Compound_Selector* sub, std::string wrapping = "");
2522-
virtual bool is_superselector_of(Complex_Selector* sub, std::string wrapping = "");
2522+
virtual bool is_superselector_of(Sequence_Selector* sub, std::string wrapping = "");
25232523
virtual bool is_superselector_of(CommaSequence_Selector* sub, std::string wrapping = "");
25242524
CommaSequence_Selector* unify_with(CommaSequence_Selector*, Context&);
25252525
void populate_extends(CommaSequence_Selector*, Context&, ExtensionSubsetMap&);
@@ -2544,12 +2544,12 @@ namespace Sass {
25442544
}
25452545
virtual void set_media_block(Media_Block* mb) {
25462546
media_block(mb);
2547-
for (Complex_Selector* cs : elements()) {
2547+
for (Sequence_Selector* cs : elements()) {
25482548
cs->set_media_block(mb);
25492549
}
25502550
}
25512551
virtual bool has_wrapped_selector() {
2552-
for (Complex_Selector* cs : elements()) {
2552+
for (Sequence_Selector* cs : elements()) {
25532553
if (cs->has_wrapped_selector()) return true;
25542554
}
25552555
return false;
@@ -2573,7 +2573,7 @@ namespace Sass {
25732573
// members of a SimpleSequence (Compound_Selector)).
25742574
//
25752575
// Due to the reliance on operator== and operater< behavior, this templated method is currently only intended for
2576-
// use with Compound_Selector and Complex_Selector objects.
2576+
// use with Compound_Selector and Sequence_Selector objects.
25772577
if (simpleSelectorOrderDependent) {
25782578
return !(one < two) && !(two < one);
25792579
} else {
@@ -2582,7 +2582,7 @@ namespace Sass {
25822582
}
25832583

25842584
// compare function for sorting and probably other other uses
2585-
struct cmp_complex_selector { inline bool operator() (const Complex_Selector* l, const Complex_Selector* r) { return (*l < *r); } };
2585+
struct cmp_complex_selector { inline bool operator() (const Sequence_Selector* l, const Sequence_Selector* r) { return (*l < *r); } };
25862586
struct cmp_compound_selector { inline bool operator() (const Compound_Selector* l, const Compound_Selector* r) { return (*l < *r); } };
25872587
struct cmp_simple_selector { inline bool operator() (const Simple_Selector* l, const Simple_Selector* r) { return (*l < *r); } };
25882588

src/ast_factory.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ namespace Sass {
8484
Pseudo_Selector* new_Pseudo_Selector(std::string p, size_t l, std::string n, Expression* expr = 0);
8585
Wrapped_Selector* new_Wrapped_Selector(std::string p, size_t l, std::string n, Simple_Base* sel);
8686
Compound_Selector* new_Compound_Selector(std::string p, size_t l, size_t s = 0);
87-
Complex_Selector* new_Complex_Selector(std::string p, size_t l, Complex_Selector::Combinator c, Complex_Selector* ctx, Compound_Selector* sel);
87+
Sequence_Selector* new_Sequence_Selector(std::string p, size_t l, Sequence_Selector::Combinator c, Sequence_Selector* ctx, Compound_Selector* sel);
8888
CommaSequence_Selector* new_CommaSequence_Selector(std::string p, size_t l, size_t s = 0);
8989
};
9090
}

src/ast_fwd_decl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ namespace Sass {
8080
class Pseudo_Selector;
8181
class Wrapped_Selector;
8282
class Compound_Selector;
83-
class Complex_Selector;
83+
class Sequence_Selector;
8484
class CommaSequence_Selector;
8585

8686
// common classes

src/context.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ namespace Sass {
5050
std::vector<char*> strings;
5151
std::vector<Resource> resources;
5252
std::map<const std::string, const StyleSheet> sheets;
53-
Subset_Map<std::string, std::pair<Complex_Selector*, Compound_Selector*> > subset_map;
53+
Subset_Map<std::string, std::pair<Sequence_Selector*, Compound_Selector*> > subset_map;
5454
std::vector<Sass_Import_Entry> import_stack;
5555

5656
struct Sass_Compiler* c_compiler;

src/debugger.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ inline void debug_ast(AST_Node* node, std::string ind, Env* env)
108108
std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">" << std::endl;
109109
// debug_ast(selector->selector(), ind + "->", env);
110110

111-
} else if (dynamic_cast<Complex_Selector*>(node)) {
112-
Complex_Selector* selector = dynamic_cast<Complex_Selector*>(node);
113-
std::cerr << ind << "Complex_Selector " << selector
111+
} else if (dynamic_cast<Sequence_Selector*>(node)) {
112+
Sequence_Selector* selector = dynamic_cast<Sequence_Selector*>(node);
113+
std::cerr << ind << "Sequence_Selector " << selector
114114
<< " (" << pstate_source_position(node) << ")"
115115
<< " <" << selector->hash() << ">"
116116
<< " [weight:" << longToHex(selector->specificity()) << "]"
@@ -122,11 +122,11 @@ inline void debug_ast(AST_Node* node, std::string ind, Env* env)
122122
<< " -- ";
123123
std::string del;
124124
switch (selector->combinator()) {
125-
case Complex_Selector::PARENT_OF: del = ">"; break;
126-
case Complex_Selector::PRECEDES: del = "~"; break;
127-
case Complex_Selector::ADJACENT_TO: del = "+"; break;
128-
case Complex_Selector::ANCESTOR_OF: del = " "; break;
129-
case Complex_Selector::REFERENCE: del = "//"; break;
125+
case Sequence_Selector::PARENT_OF: del = ">"; break;
126+
case Sequence_Selector::PRECEDES: del = "~"; break;
127+
case Sequence_Selector::ADJACENT_TO: del = "+"; break;
128+
case Sequence_Selector::ANCESTOR_OF: del = " "; break;
129+
case Sequence_Selector::REFERENCE: del = "//"; break;
130130
}
131131
// if (del = "/") del += selector->reference()->perform(&to_string) + "/";
132132
std::cerr << " <" << prettyprint(selector->pstate().token.ws_before()) << ">" << std::endl;
@@ -682,11 +682,11 @@ inline void debug_node(Node* node, std::string ind = "")
682682
std::cerr << node << " ";
683683
if (node->got_line_feed) std::cerr << "[LF] ";
684684
switch (node->combinator()) {
685-
case Complex_Selector::ADJACENT_TO: std::cerr << "{+} "; break;
686-
case Complex_Selector::PARENT_OF: std::cerr << "{>} "; break;
687-
case Complex_Selector::PRECEDES: std::cerr << "{~} "; break;
688-
case Complex_Selector::REFERENCE: std::cerr << "{@} "; break;
689-
case Complex_Selector::ANCESTOR_OF: std::cerr << "{ } "; break;
685+
case Sequence_Selector::ADJACENT_TO: std::cerr << "{+} "; break;
686+
case Sequence_Selector::PARENT_OF: std::cerr << "{>} "; break;
687+
case Sequence_Selector::PRECEDES: std::cerr << "{~} "; break;
688+
case Sequence_Selector::REFERENCE: std::cerr << "{@} "; break;
689+
case Sequence_Selector::ANCESTOR_OF: std::cerr << "{ } "; break;
690690
}
691691
std::cerr << std::endl;
692692
// debug_ast(node->combinator(), ind + " ");
@@ -742,7 +742,7 @@ inline void debug_subset_map(Sass::ExtensionSubsetMap& map, std::string ind = ""
742742
if (ind == "") std::cerr << "#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
743743
}
744744

745-
typedef std::pair<Complex_Selector*, Compound_Selector*> ExtensionPair;
745+
typedef std::pair<Sequence_Selector*, Compound_Selector*> ExtensionPair;
746746
typedef std::vector<ExtensionPair> SubsetMapEntries;
747747

748748
inline void debug_subset_entries(SubsetMapEntries* entries, std::string ind = "")

src/eval.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1644,7 +1644,7 @@ namespace Sass {
16441644
}
16451645

16461646

1647-
CommaSequence_Selector* Eval::operator()(Complex_Selector* s)
1647+
CommaSequence_Selector* Eval::operator()(Sequence_Selector* s)
16481648
{
16491649
bool implicit_parent = !exp.old_at_root_without_rule;
16501650
return s->resolve_parent_refs(ctx, selector(), implicit_parent);

src/eval.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ namespace Sass {
7171

7272
// these will return selectors
7373
CommaSequence_Selector* operator()(CommaSequence_Selector*);
74-
CommaSequence_Selector* operator()(Complex_Selector*);
74+
CommaSequence_Selector* operator()(Sequence_Selector*);
7575
Attribute_Selector* operator()(Attribute_Selector*);
7676
// they don't have any specific implementatio (yet)
7777
Element_Selector* operator()(Element_Selector* s) { return s; };

src/expand.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ namespace Sass {
106106
// do some special checks for the base level rules
107107
if (r->is_root()) {
108108
if (CommaSequence_Selector* selector_list = dynamic_cast<CommaSequence_Selector*>(r->selector())) {
109-
for (Complex_Selector* complex_selector : selector_list->elements()) {
110-
Complex_Selector* tail = complex_selector;
109+
for (Sequence_Selector* complex_selector : selector_list->elements()) {
110+
Sequence_Selector* tail = complex_selector;
111111
while (tail) {
112112
if (tail->head()) for (Simple_Selector* header : tail->head()->elements()) {
113113
if (dynamic_cast<Parent_Selector*>(header) == NULL) continue; // skip all others
@@ -555,8 +555,8 @@ namespace Sass {
555555
void Expand::expand_selector_list(Selector* s, CommaSequence_Selector* extender) {
556556

557557
if (CommaSequence_Selector* sl = dynamic_cast<CommaSequence_Selector*>(s)) {
558-
for (Complex_Selector* complex_selector : sl->elements()) {
559-
Complex_Selector* tail = complex_selector;
558+
for (Sequence_Selector* complex_selector : sl->elements()) {
559+
Sequence_Selector* tail = complex_selector;
560560
while (tail) {
561561
if (tail->head()) for (Simple_Selector* header : tail->head()->elements()) {
562562
if (dynamic_cast<Parent_Selector*>(header) == NULL) continue; // skip all others
@@ -572,21 +572,21 @@ namespace Sass {
572572
CommaSequence_Selector* contextualized = dynamic_cast<CommaSequence_Selector*>(s->perform(&eval));
573573
if (contextualized == NULL) return;
574574
for (auto complex_sel : contextualized->elements()) {
575-
Complex_Selector* c = complex_sel;
575+
Sequence_Selector* c = complex_sel;
576576
if (!c->head() || c->tail()) {
577577
std::string sel_str(contextualized->to_string(ctx.c_options));
578578
error("Can't extend " + sel_str + ": can't extend nested selectors", c->pstate(), backtrace());
579579
}
580580
Compound_Selector* placeholder = c->head();
581581
if (contextualized->is_optional()) placeholder->is_optional(true);
582582
for (size_t i = 0, L = extender->length(); i < L; ++i) {
583-
Complex_Selector* sel = (*extender)[i];
583+
Sequence_Selector* sel = (*extender)[i];
584584
if (!(sel->head() && sel->head()->length() > 0 &&
585585
dynamic_cast<Parent_Selector*>((*sel->head())[0])))
586586
{
587587
Compound_Selector* hh = SASS_MEMORY_NEW(ctx.mem, Compound_Selector, (*extender)[i]->pstate());
588588
hh->media_block((*extender)[i]->media_block());
589-
Complex_Selector* ssel = SASS_MEMORY_NEW(ctx.mem, Complex_Selector, (*extender)[i]->pstate());
589+
Sequence_Selector* ssel = SASS_MEMORY_NEW(ctx.mem, Sequence_Selector, (*extender)[i]->pstate());
590590
ssel->media_block((*extender)[i]->media_block());
591591
if (sel->has_line_feed()) ssel->has_line_feed(true);
592592
Parent_Selector* ps = SASS_MEMORY_NEW(ctx.mem, Parent_Selector, (*extender)[i]->pstate());
@@ -611,7 +611,7 @@ namespace Sass {
611611
if (schema->has_parent_ref()) s = eval(schema);
612612
}
613613
if (CommaSequence_Selector* sl = dynamic_cast<CommaSequence_Selector*>(s)) {
614-
for (Complex_Selector* cs : *sl) {
614+
for (Sequence_Selector* cs : *sl) {
615615
if (cs != NULL && cs->head() != NULL) {
616616
cs->head()->media_block(media_block_stack.back());
617617
}

0 commit comments

Comments
 (0)