internal static string GetSelfFunction(SageContext context, params string[] arguments)
{
var linkArguments = new LinkArguments(arguments, false, "encode", "absolute");
var currentUrl = linkArguments.Switches["absolute"]
? context.Url.RawUrl
: context.Url.RawPathAndQuery;
var paramQuery = new QueryString(parameterSeparators);
if (currentUrl.Contains("?"))
{
var questionIndex = currentUrl.IndexOf("?", StringComparison.Ordinal);
paramQuery.Parse(currentUrl.Substring(questionIndex + 1));
currentUrl = currentUrl.Substring(0, questionIndex);
}
paramQuery.Merge(linkArguments.QueryString);
var result = string.Concat(currentUrl, paramQuery.ToString("?"), string.IsNullOrEmpty(linkArguments.HashString)
? string.Empty
: string.Concat("#", linkArguments.HashString));
if (linkArguments.Switches["encode"] && !string.IsNullOrEmpty(result))
result = HttpUtility.UrlEncode(result);
return result;
}