Skip to content

Commit 1e52b74

Browse files
committed
Revert "Upgrade sass2scss to version 1.1.2"
This reverts commit ca89d73. This bump caused some regressions that are preventing implementors from upgrading. See #2637 #2638
1 parent 8a6ba8f commit 1e52b74

File tree

1 file changed

+14
-45
lines changed

1 file changed

+14
-45
lines changed

src/sass2scss.cpp

+14-45
Original file line numberDiff line numberDiff line change
@@ -154,21 +154,6 @@ namespace Sass
154154

155155
}
156156

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-
172157
// check if there is some char data
173158
// will ignore everything in comments
174159
static bool hasCharData (std::string& sass)
@@ -602,7 +587,6 @@ namespace Sass
602587
sass.substr(pos_left, 5) == "@warn" ||
603588
sass.substr(pos_left, 6) == "@debug" ||
604589
sass.substr(pos_left, 6) == "@error" ||
605-
sass.substr(pos_left, 6) == "@value" ||
606590
sass.substr(pos_left, 8) == "@charset" ||
607591
sass.substr(pos_left, 10) == "@namespace"
608592
) { sass = indent + sass.substr(pos_left); }
@@ -622,38 +606,23 @@ namespace Sass
622606
{
623607
// get positions for the actual import url
624608
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) + "\"";
652623
}
653-
start = findFirstCharacter(sass, pos + 1);
654624
}
655625
}
656-
while (sass[pos++] != 0);
657626

658627
}
659628
else if (

0 commit comments

Comments
 (0)