Skip to content

Commit fed9ac9

Browse files
committed
Merge pull request #1879 from mgreter/bugfix/issue_1793_ci
Improve parsing for complex number units
2 parents aed868a + 31eeac0 commit fed9ac9

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

src/expand.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ namespace Sass {
188188
mq = Parser::from_c_str(mq->to_string(ctx.c_options).c_str(), ctx, mq->pstate()).parse_media_queries();
189189
Media_Block* mm = SASS_MEMORY_NEW(ctx.mem, Media_Block,
190190
m->pstate(),
191-
static_cast<List*>(mq),
191+
static_cast<List*>(mq->perform(&eval)),
192192
m->block()->perform(this)->block(),
193193
0);
194194
mm->tabs(m->tabs());

src/prelexer.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ namespace Sass {
154154
>(src);
155155
}
156156

157-
// Match CSS unit identifier.
158-
const char* unit_identifier(const char* src)
157+
// Match a single CSS unit
158+
const char* one_unit(const char* src)
159159
{
160160
return sequence <
161161
optional < exactly <'-'> >,
@@ -170,6 +170,34 @@ namespace Sass {
170170
>(src);
171171
}
172172

173+
// Match numerator/denominator CSS units
174+
const char* multiple_units(const char* src)
175+
{
176+
return
177+
sequence <
178+
one_unit,
179+
zero_plus <
180+
sequence <
181+
exactly <'*'>,
182+
one_unit
183+
>
184+
>
185+
>(src);
186+
}
187+
188+
// Match complex CSS unit identifiers
189+
const char* unit_identifier(const char* src)
190+
{
191+
return sequence <
192+
multiple_units,
193+
optional <
194+
sequence <
195+
exactly <'/'>,
196+
multiple_units
197+
> >
198+
>(src);
199+
}
200+
173201
const char* identifier_alnums(const char* src)
174202
{
175203
return one_plus< identifier_alnum >(src);

src/prelexer.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ namespace Sass {
200200
const char* strict_identifier_alpha(const char* src);
201201
const char* strict_identifier_alnum(const char* src);
202202
// Match a CSS unit identifier.
203+
const char* one_unit(const char* src);
204+
const char* multiple_units(const char* src);
203205
const char* unit_identifier(const char* src);
204206
// const char* strict_identifier_alnums(const char* src);
205207
// Match reference selector.

0 commit comments

Comments
 (0)