mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-04 22:21:23 +12:00
Improve custom uploader parser escaping
This commit is contained in:
parent
bdfbebfe37
commit
5141777523
|
@ -86,54 +86,58 @@ public string Parse(string text)
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder result = new StringBuilder();
|
StringBuilder sbResult = new StringBuilder();
|
||||||
|
StringBuilder sbSyntax = new StringBuilder();
|
||||||
bool syntaxStart = false;
|
bool escapeNext = false;
|
||||||
int syntaxStartIndex = 0;
|
bool parsingSyntax = false;
|
||||||
bool escape = false;
|
|
||||||
|
|
||||||
for (int i = 0; i < text.Length; i++)
|
for (int i = 0; i < text.Length; i++)
|
||||||
{
|
{
|
||||||
if (!escape && text[i] == SyntaxChar)
|
if (!escapeNext && text[i] == SyntaxChar)
|
||||||
{
|
{
|
||||||
if (!syntaxStart)
|
if (!parsingSyntax)
|
||||||
{
|
{
|
||||||
syntaxStart = true;
|
parsingSyntax = true;
|
||||||
syntaxStartIndex = i + 1;
|
|
||||||
|
sbSyntax.Clear();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
syntaxStart = false;
|
parsingSyntax = false;
|
||||||
int syntaxLength = i - syntaxStartIndex;
|
|
||||||
|
|
||||||
if (syntaxLength > 0)
|
string syntax = sbSyntax.ToString();
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(syntax))
|
||||||
{
|
{
|
||||||
string syntax = text.Substring(syntaxStartIndex, syntaxLength);
|
|
||||||
string syntaxResult = ParseSyntax(syntax);
|
string syntaxResult = ParseSyntax(syntax);
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(syntaxResult))
|
if (!string.IsNullOrEmpty(syntaxResult))
|
||||||
{
|
{
|
||||||
result.Append(syntaxResult);
|
sbResult.Append(syntaxResult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!escape && text[i] == SyntaxEscapeChar)
|
else if (!escapeNext && text[i] == SyntaxEscapeChar)
|
||||||
{
|
{
|
||||||
escape = true;
|
escapeNext = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!syntaxStart)
|
escapeNext = false;
|
||||||
{
|
|
||||||
result.Append(text[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
escape = false;
|
if (!parsingSyntax)
|
||||||
|
{
|
||||||
|
sbResult.Append(text[i]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbSyntax.Append(text[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result.ToString();
|
return sbResult.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ParseSyntax(string syntax)
|
private string ParseSyntax(string syntax)
|
||||||
|
|
Loading…
Reference in a new issue