public DocumentLocationFragment Resolve(DocumentLocationFragment fragment) { var current = fragment; UnresolvedMacros = Enumerable.Empty <string>(); foreach (var resolver in myResolvers) { current = resolver.Resolve(current); UnresolvedMacros = resolver.UnresolvedMacros; } return(current); }
public DocumentLocationFragment Resolve(DocumentLocationFragment fragment) { Contract.RequiresNotNull(fragment, "fragment"); myUnresolvedMacros.Clear(); var matches = myMacroPattern.Value.Matches(fragment.UrlString); if (matches.Count == 0) { // no macro found return(fragment); } var url = fragment.UrlString; foreach (Match match in matches) { var macro = match.Value; var value = GetMacroValue(macro.Substring(2, macro.Length - 3)); if (value == null) { myUnresolvedMacros.Add(macro); } else { url = url.Replace(macro, value); } } if (url == fragment.UrlString) { return(fragment); } else { return(CreateFragment(fragment.GetType(), url)); } }
private int CalculateLocationUID(DocumentLocationFragment fragment) { var matches = myMacroPattern.Value.Matches(fragment.UrlString); if (matches.Count == 0) { // no macro found return(fragment.UrlString.GetHashCode()); } var url = fragment.UrlString; foreach (Match match in matches) { var macro = match.Value; var value = GetMacroValue(macro.Substring(2, macro.Length - 3)); if (value != null) { url = url.Replace(macro, value); } } return(url.GetHashCode()); }
private void OnDeleteUrl(DocumentLocationFragment url) { Urls.Remove(url); }
public DocumentLocationFragment Resolve(DocumentLocationFragment fragment) { return(fragment); }