示例#1
0
 public static string AutoHyperlinkHtml(string html, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator)
 {
     return(FullATagOrTagOrInformalUrlRegex.Replace(html,
                                                    delegate(Match match) {
         if (!FullATagOrTagRegex.IsMatch(match.Value))
         {
             return HyperlinkUrl(match.Value, noFollow, htmlLinkEvaluator);
         }
         return match.Value;
     }));
 }
示例#2
0
        private static string HyperlinkUrl(string url, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator)
        {
            string        linkText = url;
            string        linkUrl;
            StringBuilder linkAttributes = null;

            if (InformalUrlPrefixRegex.IsMatch(linkText))
            {
                linkUrl = linkText;
            }
            else if (InformalUrlEmailRegex.IsMatch(linkText))
            {
                linkUrl = Uri.UriSchemeMailto + Colon + linkText;
            }
            else if (string.Compare(linkText.Substring(0, 3), Uri.UriSchemeFtp, true, CultureInfo.InvariantCulture).Equals(0))
            {
                linkUrl = Uri.UriSchemeFtp + Uri.SchemeDelimiter + linkText;
            }
            else
            {
                linkUrl = Uri.UriSchemeHttp + Uri.SchemeDelimiter + linkText;
            }
            if (htmlLinkEvaluator != null)
            {
                var htmlLink = htmlLinkEvaluator(new HtmlLink(linkUrl, linkText));
                linkUrl  = htmlLink.Url;
                linkText = htmlLink.Text;
                if (!htmlLink.Attributes.Count.Equals(0))
                {
                    linkAttributes = new StringBuilder();
                    foreach (string attribute in htmlLink.Attributes.Keys)
                    {
                        linkAttributes.AppendFormat(CultureInfo.InvariantCulture,
                                                    FormatAttribute,
                                                    attribute,
                                                    htmlLink.Attributes[attribute]);
                    }
                }
            }
            return(string.Format(CultureInfo.InvariantCulture,
                                 FormatReplaceUrl,
                                 noFollow ? NoFollowAttribute : string.Empty,
                                 linkAttributes,
                                 linkUrl,
                                 linkText));
        }
示例#3
0
		public static string AutoHyperlinkHtml(string html, HtmlLinkEvaluator htmlLinkEvaluator) {
			return AutoHyperlinkHtml(html, false, htmlLinkEvaluator);
		}
示例#4
0
		public static string AutoHyperlinkText(string text, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator) {
			return InformalUrlRegex.Replace(text, match => HyperlinkUrl(match.Value, noFollow, htmlLinkEvaluator));
		}
示例#5
0
		public static string AutoHyperlinkText(string text, HtmlLinkEvaluator htmlLinkEvaluator) {
			return AutoHyperlinkText(text, false, htmlLinkEvaluator);
		}
示例#6
0
		private static string HyperlinkUrl(string url, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator) {
			string linkText = url;
			string linkUrl;
			StringBuilder linkAttributes = null;
			if(InformalUrlPrefixRegex.IsMatch(linkText)) {
				linkUrl = linkText;
			} else if(InformalUrlEmailRegex.IsMatch(linkText)) {
				linkUrl = Uri.UriSchemeMailto + Colon + linkText;
			} else if(string.Compare(linkText.Substring(0, 3), Uri.UriSchemeFtp, true, CultureInfo.InvariantCulture).Equals(0)) {
				linkUrl = Uri.UriSchemeFtp + Uri.SchemeDelimiter + linkText;
			} else {
				linkUrl = Uri.UriSchemeHttp + Uri.SchemeDelimiter + linkText;
			}
			if(htmlLinkEvaluator != null) {
				var htmlLink = htmlLinkEvaluator(new HtmlLink(linkUrl, linkText));
				linkUrl = htmlLink.Url;
				linkText = htmlLink.Text;
				if(!htmlLink.Attributes.Count.Equals(0)) {
					linkAttributes = new StringBuilder();
					foreach(string attribute in htmlLink.Attributes.Keys) {
						linkAttributes.AppendFormat(CultureInfo.InvariantCulture,
						                            FormatAttribute,
						                            attribute,
						                            htmlLink.Attributes[attribute]);
					}
				}
			}
			return string.Format(CultureInfo.InvariantCulture,
			                     FormatReplaceUrl,
			                     noFollow ? NoFollowAttribute : string.Empty,
			                     linkAttributes,
			                     linkUrl,
			                     linkText);
		}
示例#7
0
		public static string AutoHyperlinkHtml(string html, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator) {
			return FullATagOrTagOrInformalUrlRegex.Replace(html,
			                                               delegate(Match match) {
			                                               	if(!FullATagOrTagRegex.IsMatch(match.Value)) {
			                                               		return HyperlinkUrl(match.Value, noFollow, htmlLinkEvaluator);
			                                               	}
			                                               	return match.Value;
			                                               });
		}
示例#8
0
 public static string AutoHyperlinkText(string text, bool noFollow, HtmlLinkEvaluator htmlLinkEvaluator)
 {
     return(InformalUrlRegex.Replace(text, match => HyperlinkUrl(match.Value, noFollow, htmlLinkEvaluator)));
 }
示例#9
0
 public static string AutoHyperlinkText(string text, HtmlLinkEvaluator htmlLinkEvaluator)
 {
     return(AutoHyperlinkText(text, false, htmlLinkEvaluator));
 }
示例#10
0
 public static string AutoHyperlinkHtml(string html, HtmlLinkEvaluator htmlLinkEvaluator)
 {
     return(AutoHyperlinkHtml(html, false, htmlLinkEvaluator));
 }