Code refactoring

This commit is contained in:
Jaex 2022-04-13 08:47:57 +03:00
parent 6d980e60db
commit e0904c0488
2 changed files with 21 additions and 13 deletions

View file

@ -63,8 +63,13 @@ public override string Parse(string text)
return base.Parse(text);
}
protected override string CallFunction(string functionName, string[] parameters)
protected override string CallFunction(string functionName, string[] parameters = null)
{
if (string.IsNullOrEmpty(functionName))
{
throw new Exception("Function name cannot be empty.");
}
foreach (CustomUploaderFunction function in Functions)
{
if (function.Name.Equals(functionName, StringComparison.OrdinalIgnoreCase))

View file

@ -43,13 +43,12 @@ public virtual string Parse(string text)
return "";
}
return ParseSyntax(text, false, 0, out _);
return Parse(text, false, 0, out _);
}
private string ParseSyntax(string text, bool isFunction, int startPosition, out int endPosition)
private string Parse(string text, bool isFunction, int startPosition, out int endPosition)
{
StringBuilder sbResult = new StringBuilder();
List<string> parameters = new List<string>();
StringBuilder sbOutput = new StringBuilder();
bool escape = false;
int i;
@ -61,8 +60,8 @@ private string ParseSyntax(string text, bool isFunction, int startPosition, out
{
if (c == SyntaxStart)
{
string parsed = ParseSyntax(text, true, i + 1, out i);
sbResult.Append(parsed);
string parsed = Parse(text, true, i + 1, out i);
sbOutput.Append(parsed);
continue;
}
else if (c == SyntaxEnd || c == SyntaxParameterDelimiter)
@ -76,30 +75,34 @@ private string ParseSyntax(string text, bool isFunction, int startPosition, out
}
else if (isFunction && c == SyntaxParameterStart)
{
List<string> parameters = new List<string>();
do
{
string parsed = ParseSyntax(text, false, i + 1, out i);
string parsed = Parse(text, false, i + 1, out i);
parameters.Add(parsed);
} while (i < text.Length && text[i] == SyntaxParameterDelimiter);
break;
endPosition = i;
return CallFunction(sbOutput.ToString(), parameters.ToArray());
}
}
escape = false;
sbResult.Append(c);
sbOutput.Append(c);
}
endPosition = i;
if (isFunction)
{
return CallFunction(sbResult.ToString(), parameters.ToArray());
return CallFunction(sbOutput.ToString());
}
return sbResult.ToString();
return sbOutput.ToString();
}
protected abstract string CallFunction(string functionName, string[] parameters);
protected abstract string CallFunction(string functionName, string[] parameters = null);
}
}