Sage.UrlGenerator.FormatPattern C# (CSharp) Method

FormatPattern() private method

private FormatPattern ( string pattern, NameValueCollection parameters ) : string
pattern string
parameters System.Collections.Specialized.NameValueCollection
return string
        private string FormatPattern(string pattern, NameValueCollection parameters, params string[] visitedFormats)
        {
            List<string> visited = new List<string>(visitedFormats);
            return linkPlaceholder.Replace(pattern, delegate(Match match)
            {
                string key = match.Groups[1].Value;
                if (this.Formats.ContainsKey(key))
                {
                    if (visited.Contains(key))
                    {
                        log.ErrorFormat("Skipping processing link format '{0}' the second time because it would cause recursion.", key);
                        return string.Empty;
                    }

                    visited.Add(key);
                    return this.FormatPattern(this.Formats[key].Value, parameters, visited.ToArray());
                }

                if (parameters[key] != null)
                {
                    string value = parameters[key];
                    parameters.Remove(key);
                    return value;
                }

                return string.Empty;
            });
        }