@@ -154,21 +154,6 @@ namespace Sass
154
154
155
155
}
156
156
157
- static size_t findFirstCharacter (std::string& sass, size_t pos)
158
- {
159
- return sass.find_first_not_of (SASS2SCSS_FIND_WHITESPACE, pos);
160
- }
161
-
162
- static size_t findLastCharacter (std::string& sass, size_t pos)
163
- {
164
- return sass.find_last_not_of (SASS2SCSS_FIND_WHITESPACE, pos);
165
- }
166
-
167
- static bool isUrl (std::string& sass, size_t pos)
168
- {
169
- return sass[pos] == ' u' && sass[pos+1 ] == ' r' && sass[pos+2 ] == ' l' && sass[pos+3 ] == ' (' ;
170
- }
171
-
172
157
// check if there is some char data
173
158
// will ignore everything in comments
174
159
static bool hasCharData (std::string& sass)
@@ -602,7 +587,6 @@ namespace Sass
602
587
sass.substr (pos_left, 5 ) == " @warn" ||
603
588
sass.substr (pos_left, 6 ) == " @debug" ||
604
589
sass.substr (pos_left, 6 ) == " @error" ||
605
- sass.substr (pos_left, 6 ) == " @value" ||
606
590
sass.substr (pos_left, 8 ) == " @charset" ||
607
591
sass.substr (pos_left, 10 ) == " @namespace"
608
592
) { sass = indent + sass.substr (pos_left); }
@@ -622,38 +606,23 @@ namespace Sass
622
606
{
623
607
// get positions for the actual import url
624
608
size_t pos_import = sass.find_first_of (SASS2SCSS_FIND_WHITESPACE, pos_left + 7 );
625
- size_t pos = sass.find_first_not_of (SASS2SCSS_FIND_WHITESPACE, pos_import);
626
- size_t start = pos;
627
- bool in_dqstr = false ;
628
- bool in_sqstr = false ;
629
- bool is_escaped = false ;
630
- do {
631
- if (is_escaped) {
632
- is_escaped = false ;
633
- }
634
- else if (sass[pos] == ' \\ ' ) {
635
- is_escaped = true ;
636
- }
637
- else if (sass[pos] == ' "' ) {
638
- if (!in_sqstr) in_dqstr = ! in_dqstr;
639
- }
640
- else if (sass[pos] == ' \' ' ) {
641
- if (!in_dqstr) in_sqstr = ! in_sqstr;
642
- }
643
- else if (in_dqstr || in_sqstr) {
644
- // skip over quoted stuff
645
- }
646
- else if (sass[pos] == ' ,' || sass[pos] == 0 ) {
647
- if (sass[start] != ' "' && sass[start] != ' \' ' && !isUrl (sass, start)) {
648
- size_t end = findLastCharacter (sass, pos - 1 ) + 1 ;
649
- sass = sass.replace (end, 0 , " \" " );
650
- sass = sass.replace (start, 0 , " \" " );
651
- pos += 2 ;
609
+ size_t pos_quote = sass.find_first_not_of (SASS2SCSS_FIND_WHITESPACE, pos_import);
610
+ // leave proper urls untouched
611
+ if (sass.substr (pos_quote, 4 ) != " url(" )
612
+ {
613
+ // check if the url appears to be already quoted
614
+ if (sass.substr (pos_quote, 1 ) != " \" " && sass.substr (pos_quote, 1 ) != " \' " )
615
+ {
616
+ // get position of the last char on the line
617
+ size_t pos_end = sass.find_last_not_of (SASS2SCSS_FIND_WHITESPACE);
618
+ // assertion check for valid result
619
+ if (pos_end != std::string::npos)
620
+ {
621
+ // add quotes around the full line after the import statement
622
+ sass = sass.substr (0 , pos_quote) + " \" " + sass.substr (pos_quote, pos_end - pos_quote + 1 ) + " \" " ;
652
623
}
653
- start = findFirstCharacter (sass, pos + 1 );
654
624
}
655
625
}
656
- while (sass[pos++] != 0 );
657
626
658
627
}
659
628
else if (
0 commit comments