@@ -185,14 +185,15 @@ namespace Sass
185
185
{
186
186
187
187
size_t col_pos = 0 ;
188
+ bool apoed = false ;
188
189
bool quoted = false ;
189
190
bool comment = false ;
190
191
191
192
while (col_pos != string::npos)
192
193
{
193
194
194
195
// process all interesting chars
195
- col_pos = sass.find_first_of (" \" /\\ *" , col_pos);
196
+ col_pos = sass.find_first_of (" \"\' /\\ *" , col_pos);
196
197
197
198
// assertion for valid result
198
199
if (col_pos != string::npos)
@@ -201,34 +202,43 @@ namespace Sass
201
202
if (sass.at (col_pos) == ' \" ' )
202
203
{
203
204
// invert quote bool
204
- quoted = !quoted;
205
+ if (!apoed && !comment) quoted = !quoted;
205
206
}
206
- else if (sass.at (col_pos) == ' / ' )
207
+ else if (sass.at (col_pos) == ' \' ' )
207
208
{
208
- if (col_pos > 0 && sass.at (col_pos - 1 ) == ' *' )
209
+ // invert quote bool
210
+ if (!quoted && !comment) apoed = !apoed;
211
+ }
212
+ else if (col_pos > 0 && sass.at (col_pos) == ' /' )
213
+ {
214
+ if (sass.at (col_pos - 1 ) == ' *' )
209
215
{
210
216
comment = false ;
211
217
}
212
218
// next needs to be a slash too
213
- else if (col_pos > 0 && sass.at (col_pos - 1 ) == ' /' )
219
+ else if (sass.at (col_pos - 1 ) == ' /' )
214
220
{
215
- // only found if not in quote or comment
216
- if (!quoted && !comment) return col_pos - 1 ;
221
+ // maybe it looks like a url scheme?
222
+ if (col_pos < 2 || sass.at (col_pos - 2 ) != ' :' )
223
+ {
224
+ // only found if not in quote or comment
225
+ if (!quoted && !apoed && !comment) return col_pos - 1 ;
226
+ }
217
227
}
218
228
}
219
229
else if (sass.at (col_pos) == ' \\ ' )
220
230
{
221
231
// skip next char if in quote
222
- if (quoted) col_pos ++;
232
+ if (quoted || apoed ) col_pos ++;
223
233
}
224
234
// this might be a comment opener
225
- else if (sass.at (col_pos) == ' *' )
235
+ else if (col_pos > 0 && sass.at (col_pos) == ' *' )
226
236
{
227
237
// opening a multiline comment
228
- if (col_pos > 0 && sass.at (col_pos - 1 ) == ' /' )
238
+ if (sass.at (col_pos - 1 ) == ' /' )
229
239
{
230
240
// we are now in a comment
231
- if (!quoted) comment = true ;
241
+ if (!quoted && !apoed ) comment = true ;
232
242
}
233
243
}
234
244
@@ -254,6 +264,7 @@ namespace Sass
254
264
size_t col_pos = 0 ;
255
265
size_t open_pos = 0 ;
256
266
size_t close_pos = 0 ;
267
+ bool apoed = false ;
257
268
bool quoted = false ;
258
269
bool comment = false ;
259
270
@@ -262,7 +273,7 @@ namespace Sass
262
273
{
263
274
264
275
// process all interesting chars
265
- col_pos = sass.find_first_of (" \" /\\ *" , col_pos);
276
+ col_pos = sass.find_first_of (" \"\' /\\ *" , col_pos);
266
277
267
278
// assertion for valid result
268
279
if (col_pos != string::npos)
@@ -271,7 +282,11 @@ namespace Sass
271
282
// found quoted string delimiter
272
283
if (sass.at (col_pos) == ' \" ' )
273
284
{
274
- if (!comment) quoted = !quoted;
285
+ if (!apoed && !comment) quoted = !quoted;
286
+ }
287
+ else if (sass.at (col_pos) == ' \' ' )
288
+ {
289
+ if (!quoted && !comment) apoed = !apoed;
275
290
}
276
291
// found possible comment closer
277
292
else if (sass.at (col_pos) == ' /' )
@@ -285,13 +300,13 @@ namespace Sass
285
300
else if (sass.at (col_pos) == ' \\ ' )
286
301
{
287
302
// skip escaped char
288
- if (quoted) col_pos ++;
303
+ if (quoted || apoed ) col_pos ++;
289
304
}
290
305
// this might be a comment opener
291
306
else if (sass.at (col_pos) == ' *' )
292
307
{
293
308
// look back to see if it is actually an opener
294
- if (!quoted && col_pos > 0 && sass.at (col_pos - 1 ) == ' /' )
309
+ if (!quoted && !apoed && col_pos > 0 && sass.at (col_pos - 1 ) == ' /' )
295
310
{
296
311
comment = true ; open_pos = col_pos - 1 ;
297
312
clean += sass.substr (close_pos, open_pos - close_pos);
0 commit comments