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 sass#2637 sass#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

Lines changed: 14 additions & 45 deletions
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)