wsd: tokenize symbol "_('') _("")"

Change-Id: I9c0e7f30a96a355f6d69b2c5a5244dbfbd863e08
This commit is contained in:
Henry Castro
2019-02-10 13:40:38 -04:00
parent d3e8385fbb
commit 6144d55f44
2 changed files with 29 additions and 2 deletions

View File

@ -567,7 +567,7 @@ constexpr char BRANDING[] = "branding";
constexpr char BRANDING_UNSUPPORTED[] = "branding-unsupported";
#endif
void FileServerRequestHandler::getToken(std::istream& istr, std::string& token)
void FileServerRequestHandler::getToken(std::istringstream& istr, std::string& token)
{
token.clear();
int chr = istr.get();
@ -583,6 +583,33 @@ void FileServerRequestHandler::getToken(std::istream& istr, std::string& token)
token += "%>";
istr.get();
}
else if (chr == '_' && istr.peek() == '(')
{
token += "_(";
istr.get();
chr = istr.peek();
switch (chr)
{
case '\"':
chr = istr.get();
token += (char) chr;
break;
case '\'':
chr = istr.get();
token += (char) chr;
break;
}
}
else if (chr == '"' && istr.peek() == ')')
{
token += "\")";
istr.get();
}
else if (chr == '\'' && istr.peek() == ')')
{
token += "')";
istr.get();
}
else token += (char) chr;
}
}