/// <summary> /// Processes link markup into HTML /// </summary> /// <param name="markup">markup</param> /// <returns>markup with [[foo]] translated into <a href></a></returns> private string _processLinkCreole(string markup) { var iPos = _indexOfWithSkip(markup, "[[", 0); while (iPos >= 0) { var iEnd = _indexOfWithSkip(markup, "]]", iPos); if (iEnd > iPos) { iPos += 2; // get the contents of the cell var cell = markup.Substring(iPos, iEnd - iPos); var link = cell; var href = cell; //default to assuming it's the href var text = href; // as well as the text var iSplit = cell.IndexOf('|'); // unless of course there is a splitter if (iSplit > 0) { // href is the front href = cell.Substring(0, iSplit); link = href; // text is the creole processed fragment left over text = _processCreoleFragment(cell.Substring(iSplit + 1)); } // handle interwiki links iSplit = href.IndexOf(':'); if (iSplit > 0) { var scheme = href.Substring(0, iSplit); if (InterWiki.ContainsKey(scheme)) { href = InterWiki[scheme] + href.Substring(iSplit + 1); } } // default to external var linkEventArgs = new LinkEventArgs(link, href, text, LinkEventArgs.TargetEnum.External); if (OnLink != null) { OnLink(this, linkEventArgs); } markup = markup.Substring(0, iPos - 2) + String.Format("<A href=\"{0}\" {2} {3}>{1}</A>", linkEventArgs.Href, linkEventArgs.Text, (linkEventArgs.Target == LinkEventArgs.TargetEnum.External) ? "target=_blank " : "", (linkEventArgs.Target == LinkEventArgs.TargetEnum.Unknown) ? "style='border-bottom:1px dashed #000000; text-decoration:none'" : "") + markup.Substring(iEnd + 2); } else { break; } iPos = _indexOfWithSkip(markup, "[[", iPos); } return(markup); }
/// <summary> /// Processes link markup into HTML /// </summary> /// <param name="markup">markup</param> /// <returns>markup with [[foo]] translated into <a href></a></returns> private string _processLinkCreole(string markup) { var iPos = _indexOfWithSkip(markup, "[[", 0); while (iPos >= 0) { var iEnd = _indexOfWithSkip(markup, "]]", iPos); if (iEnd > iPos) { iPos += 2; // get the contents of the cell var cell = markup.Substring(iPos, iEnd - iPos); var link = cell; var href = cell; //default to assuming it's the href var text = href; // as well as the text var iSplit = cell.IndexOf('|'); // unless of course there is a splitter if (iSplit > 0) { // href is the front href = cell.Substring(0, iSplit); link = href; // text is the creole processed fragment left over text = _processCreoleFragment(cell.Substring(iSplit + 1)); } // handle interwiki links iSplit = href.IndexOf(':'); if (iSplit > 0) { var scheme = href.Substring(0, iSplit); if (InterWiki.ContainsKey(scheme)) { href = InterWiki[scheme] + href.Substring(iSplit + 1); } } // default to external var linkEventArgs = new LinkEventArgs(link, href, text, LinkEventArgs.TargetEnum.External); if (OnLink != null) OnLink(this, linkEventArgs); markup = markup.Substring(0, iPos - 2) + String.Format("<A href=\"{0}\" {2} {3}>{1}</A>", linkEventArgs.Href, linkEventArgs.Text, (linkEventArgs.Target == LinkEventArgs.TargetEnum.External) ? "target=_blank " : "", (linkEventArgs.Target == LinkEventArgs.TargetEnum.Unknown) ? "style='border-bottom:1px dashed #000000; text-decoration:none'" : "") + markup.Substring(iEnd + 2); } else break; iPos = _indexOfWithSkip(markup, "[[", iPos); } return markup; }