131 {
132
133 assert(rule);
134
135 Array *selectorSequences = $$(Array, arrayWithCapacity, 8);
136 assert(selectorSequences);
137
139
140 const char *c = rule;
141 while (*c) {
142 const size_t size = strcspn(c,
" \n\t>+~");
144 char *sequence = calloc(1,
size + 1);
145 assert(sequence);
146
147 strncpy(sequence, c,
size);
148
150 assert(selectorSequence);
151
153 assert(selectorSequence->
right);
154
155 selectorSequence->
left = left;
156 left = selectorSequence->
right;
157
158 $(selectorSequences, addObject, selectorSequence);
159
160 release(selectorSequence);
161 free(sequence);
162 }
163
165 c += strspn(c, " \n\t>+~");
166 }
167
168 return (Array *) selectorSequences;
169}
static SDL_Size size(const Image *self)
static SequenceCombinator sequenceCombinator(const char *c)
SequenceCombinator
Combinators are operators for chaining SelectorSequences.
SequenceCombinator left
The combinators.