public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.Append("<p>");
			args.Encoding.Transform(args, match.Matches[0]);
			args.Output.AppendUnixLine("</p>");
			args.Output.AppendUnixLine();
		}
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var text = match.Text;
			var ch = text[0];
			if (ch == '<')
				args.Output.Append("&lt;");
			else if (ch == '>')
				args.Output.Append("&gt;");
			else if (ch == '\"')
				args.Output.Append("&quot;");
			else if (ch == '&')
				args.Output.Append("&amp;");
			else if (ch == '\r')
				args.Output.Append('\n');
			else if (ch == '\t')
				args.Output.Append("    ");
			else if (ch == '\\')
			{
				ch = text[1];
				if (ch == '<')
					args.Output.Append("&lt;");
				else if (ch == '>')
					args.Output.Append("&gt;");
				else if (ch == 'r')
					args.Output.AppendUnixLine();
				else
					args.Output.Append(ch);
			}
			else
				args.Output.Append(text);
		}
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var html = match.Matches[0];
			var text = html.Text;
			if (text.StartsWith("<script") || text.Contains("javascript:"))
			{
				args.Output.AppendUnixLine(MarkdownEncoding.Encode(text));
				return;
			}

			int last = 0;
			var matches = html.Matches;
			for (int i = 0; i < matches.Count; i++)
			{
				var content = matches[i];
				if (content.Index - match.Index > last)
				{
					args.Output.Append(text, last, content.Index - match.Index - last);
				}
				last = content.Index - match.Index + content.Length;

				args.Encoding.Transform(args, content);
			}
			if (last < text.Length)
				args.Output.Append(text, last, text.Length - last);
		}
Example #4
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var html = match.Matches[0];
            var text = html.Text;

            if (text.StartsWith("<script") || text.Contains("javascript:"))
            {
                args.Output.AppendUnixLine(MarkdownEncoding.Encode(text));
                return;
            }

            int last    = 0;
            var matches = html.Matches;

            for (int i = 0; i < matches.Count; i++)
            {
                var content = matches[i];
                if (content.Index - match.Index > last)
                {
                    args.Output.Append(text, last, content.Index - match.Index - last);
                }
                last = content.Index - match.Index + content.Length;

                args.Encoding.Transform(args, content);
            }
            if (last < text.Length)
            {
                args.Output.Append(text, last, text.Length - last);
            }
        }
Example #5
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     args.Output.Append("<p>");
     args.Encoding.Transform(args, match.Matches[0]);
     args.Output.AppendUnixLine("</p>");
     args.Output.AppendUnixLine();
 }
		public void AddReference(Match match, MarkdownReplacementArgs args)
		{
			var reference = new MarkdownReference { Url = match.Matches[1].Text };
			if (match.Matches.Count > 2)
				reference.Title = match.Matches[2].StringValue;
			args.References[match.Matches[0].Text] = reference;
		}
Example #7
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var text  = match.Text;
            int start = 0;
            int end   = text.Length - 1;

            while (start < text.Length && text[start] == '`')
            {
                start++;
            }
            while (end >= 0 && text[end] == '`')
            {
                end--;
            }
            var len = end - start + 1;

            end = text.Length - end - 1;
            var count = Math.Min(start, end);

            args.Output.Append("<code>");
            if (start > count)
            {
                args.Output.Append(text, 0, start - count);
            }
            var lines = text.Substring(start, len).Trim(' ');

            args.Output.Append(Encode(lines));
            if (end > count)
            {
                args.Output.Append(text, start + len, end - count);
            }
            args.Output.Append("</code>");
        }
Example #8
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var text = match.Text;
			if (text.Contains("<script") || text.Contains("javascript:"))
				args.Output.AppendUnixLine(MarkdownEncoding.Encode(text));
			else
				args.Output.AppendUnixLine(text);
		}
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.Append("<em>");
			if (match.HasMatches)
				args.Encoding.ReplaceEncoding(match.Index + 1, match.Index + match.Length - 1, match.Scanner, match.Matches, args);
			else
				args.Output.Append(match.Scanner.Substring(match.Index + 1, match.Length - 2));
			args.Output.Append("</em>");
		}
Example #10
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.Append("<strong>");
			//args.Encoding.Transform(args, match, 2, -4);
			if (match.HasMatches)
				args.Encoding.ReplaceEncoding(match.Index + 2, match.Index + match.Length - 2, match.Scanner, match.Matches, args);
			else
				args.Output.Append(match.Scanner.Substring(match.Index + 2, match.Length - 4));
			args.Output.Append("</strong>");
		}
Example #11
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var text = match.Text;
            var ch   = text[0];

            if (ch == '<')
            {
                args.Output.Append("&lt;");
            }
            else if (ch == '>')
            {
                args.Output.Append("&gt;");
            }
            else if (ch == '\"')
            {
                args.Output.Append("&quot;");
            }
            else if (ch == '&')
            {
                args.Output.Append("&amp;");
            }
            else if (ch == '\r')
            {
                args.Output.Append('\n');
            }
            else if (ch == '\t')
            {
                args.Output.Append("    ");
            }
            else if (ch == '\\')
            {
                ch = text[1];
                if (ch == '<')
                {
                    args.Output.Append("&lt;");
                }
                else if (ch == '>')
                {
                    args.Output.Append("&gt;");
                }
                else if (ch == 'r')
                {
                    args.Output.AppendUnixLine();
                }
                else
                {
                    args.Output.Append(ch);
                }
            }
            else
            {
                args.Output.Append(text);
            }
        }
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var level = match.Matches[1];
			args.Output.Append("<");
			args.Output.Append(level.Name);
			args.Output.Append(">");
			args.Encoding.Transform(args, match.Matches[0]);
			args.Output.Append("</");
			args.Output.Append(level.Name);
			args.Output.AppendUnixLine(">");
			args.Output.AppendUnixLine();
		}
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var level = Math.Min(match.Matches[0].Length, 6);
			args.Output.Append("<h");
			args.Output.Append(level);
			args.Output.Append(">");
			args.Encoding.Transform(args, match.Matches[1]);
			args.Output.Append("</h");
			args.Output.Append(level);
			args.Output.AppendUnixLine(">");
			args.Output.AppendUnixLine();
		}
Example #14
0
        public void AddReference(Match match, MarkdownReplacementArgs args)
        {
            var reference = new MarkdownReference {
                Url = match.Matches[1].Text
            };

            if (match.Matches.Count > 2)
            {
                reference.Title = match.Matches[2].StringValue;
            }
            args.References[match.Matches[0].Text] = reference;
        }
Example #15
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var level = match.Matches[1];

            args.Output.Append("<");
            args.Output.Append(level.Name);
            args.Output.Append(">");
            args.Encoding.Transform(args, match.Matches[0]);
            args.Output.Append("</");
            args.Output.Append(level.Name);
            args.Output.AppendUnixLine(">");
            args.Output.AppendUnixLine();
        }
Example #16
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var text = match.Text;

            if (text.Contains("<script") || text.Contains("javascript:"))
            {
                args.Output.AppendUnixLine(MarkdownEncoding.Encode(text));
            }
            else
            {
                args.Output.AppendUnixLine(text);
            }
        }
Example #17
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            var level = Math.Min(match.Matches[0].Length, 6);

            args.Output.Append("<h");
            args.Output.Append(level);
            args.Output.Append(">");
            args.Encoding.Transform(args, match.Matches[1]);
            args.Output.Append("</h");
            args.Output.Append(level);
            args.Output.AppendUnixLine(">");
            args.Output.AppendUnixLine();
        }
Example #18
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     args.Output.Append("<em>");
     if (match.HasMatches)
     {
         args.Encoding.ReplaceEncoding(match.Index + 1, match.Index + match.Length - 1, match.Scanner, match.Matches, args);
     }
     else
     {
         args.Output.Append(match.Scanner.Substring(match.Index + 1, match.Length - 2));
     }
     args.Output.Append("</em>");
 }
Example #19
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            string suffix    = null;
            bool   lastSpace = false;
            var    count     = match.Matches.Count;

            for (int i = 0; i < count; i++)
            {
                var item = match.Matches[i];
                if (i == 0)
                {
                    if (item["num"])
                    {
                        args.Output.AppendUnixLine("<ol>");
                        suffix = "</ol>";
                    }
                    else
                    {
                        args.Output.AppendUnixLine("<ul>");
                        suffix = "</ul>";
                    }
                }
                var inner = item["inner"];

                var hasInnerList = inner.Success && inner.HasMatches && inner.Matches[0].Name == Name;
                var addSpace     = (inner.Success && !hasInnerList) || (i < count - 1 && item["spacing"].Length > 0);
                args.Output.Append("<li>");
                if (addSpace || lastSpace)
                {
                    args.Output.Append("<p>");
                }
                var content = item.Matches["content"];
                //args.Encoding.Transform(args, content);
                args.Encoding.ReplaceEncoding(args, content);
                if (addSpace || lastSpace)
                {
                    args.Output.Append("</p>");
                }

                if (inner.Success)
                {
                    args.Grammar.Transform(inner, args);
                }
                args.Output.AppendUnixLine("</li>");
                lastSpace = addSpace;
            }
            args.Output.AppendUnixLine(suffix);
            args.Output.AppendUnixLine();
            args.Output.AppendUnixLine();
        }
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.AppendUnixLine("<blockquote>");
			var str = new StringBuilder(match.Length);
			for (int i = 0; i < match.Matches.Count - 1; i += 2)
			{
				var prefix = match.Matches[i];
				var line = match.Matches[i+1];
				str.AppendUnixLine(line.Text);
				//args.Encoding.Replace(line.Text, args);
			}
			args.Output.Append(grammar.Transform(str.ToString()));
			args.Output.AppendUnixLine("</blockquote>");
		}
Example #21
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     args.Output.Append("<strong>");
     //args.Encoding.Transform(args, match, 2, -4);
     if (match.HasMatches)
     {
         args.Encoding.ReplaceEncoding(match.Index + 2, match.Index + match.Length - 2, match.Scanner, match.Matches, args);
     }
     else
     {
         args.Output.Append(match.Scanner.Substring(match.Index + 2, match.Length - 4));
     }
     args.Output.Append("</strong>");
 }
Example #22
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            args.Output.AppendUnixLine("<blockquote>");
            var str = new StringBuilder(match.Length);

            for (int i = 0; i < match.Matches.Count - 1; i += 2)
            {
                var prefix = match.Matches[i];
                var line   = match.Matches[i + 1];
                str.AppendUnixLine(line.Text);
                //args.Encoding.Replace(line.Text, args);
            }
            args.Output.Append(grammar.Transform(str.ToString()));
            args.Output.AppendUnixLine("</blockquote>");
        }
Example #23
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.Append("<pre><code>");
			var count = match.Matches.Count;
			for (int i = 0; i < count; i++)
			{
				var line = match.Matches[i];
				if (line.Name == "sep")
					args.Output.AppendUnixLine();
				else
					args.Output.Append(CodeEncoding.Encode(line.Text));
			}
			args.Output.AppendUnixLine();
			args.Output.AppendUnixLine("</code></pre>");
			args.Output.AppendUnixLine();
		}
Example #24
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			string suffix = null;
			bool lastSpace = false;
			var count = match.Matches.Count;
			for (int i = 0; i < count; i++)
			{
				var item = match.Matches[i];
				if (i == 0)
				{
					if (item["num"])
					{
						args.Output.AppendUnixLine("<ol>");
						suffix = "</ol>";
					}
					else
					{
						args.Output.AppendUnixLine("<ul>");
						suffix = "</ul>";
					}
				}
				var inner = item["inner"];

				var hasInnerList = inner.Success && inner.HasMatches && inner.Matches[0].Name == Name;
				var addSpace = (inner.Success && !hasInnerList) || (i < count - 1 && item["spacing"].Length > 0);
				args.Output.Append("<li>");
				if (addSpace || lastSpace)
					args.Output.Append("<p>");
				var content = item.Matches["content"];
				//args.Encoding.Transform(args, content);
				args.Encoding.ReplaceEncoding(args, content);
				if (addSpace || lastSpace)
					args.Output.Append("</p>");

				if (inner.Success)
				{
					args.Grammar.Transform(inner, args);
				}
				args.Output.AppendUnixLine("</li>");
				lastSpace = addSpace;
			}
			args.Output.AppendUnixLine(suffix);
			args.Output.AppendUnixLine();
			args.Output.AppendUnixLine();
		}
Example #25
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			var text = match.Text;
			int start = 0;
			int end = text.Length - 1;
			while (start < text.Length && text[start] == '`')
				start++;
			while (end >= 0 && text[end] == '`')
				end--;
			var len = end - start + 1;
			end = text.Length - end - 1;
			var count = Math.Min(start, end);
			args.Output.Append("<code>");
			if (start > count)
				args.Output.Append(text, 0, start - count);
			var lines = text.Substring(start, len).Trim(' ');
			args.Output.Append(Encode(lines));
			if (end > count)
				args.Output.Append(text, start + len, end - count);
			args.Output.Append("</code>");
		}
Example #26
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            args.Output.Append("<pre><code>");
            var count = match.Matches.Count;

            for (int i = 0; i < count; i++)
            {
                var line = match.Matches[i];
                if (line.Name == "sep")
                {
                    args.Output.AppendUnixLine();
                }
                else
                {
                    args.Output.Append(CodeEncoding.Encode(line.Text));
                }
            }
            args.Output.AppendUnixLine();
            args.Output.AppendUnixLine("</code></pre>");
            args.Output.AppendUnixLine();
        }
Example #27
0
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.AppendUnixLine("<hr />");
		}
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			// blank!
		}
Example #29
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     args.Output.AppendUnixLine("<hr />");
 }
		public void Transform(Match match, MarkdownReplacementArgs args)
		{
			args.Output.Append("<br />\n");
		}
Example #31
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     args.Output.Append("<br />\n");
 }
Example #32
0
        public void Transform(Match match, MarkdownReplacementArgs args)
        {
            Match  link;
            string linkValue, nameValue;
            var    count = match.Matches.Count;

            if (count == 1)
            {
                link      = match.Matches[0];
                linkValue = nameValue = link.StringValue;
            }
            else
            {
                nameValue = match.Matches[0].Text;
                link      = match.Matches[1];
                linkValue = link.StringValue;
            }
            MarkdownReference reference;
            string            url;
            string            title;

            if (link.Name == "ref" || link.Name == "name")
            {
                if (string.IsNullOrEmpty(linkValue))
                {
                    linkValue = nameValue;
                }
                if (args.References.TryGetValue(linkValue, out reference))
                {
                    url   = reference.Url;
                    title = reference.Title;
                }
                else
                {
                    url = title = null;
                }
            }
            else
            {
                url = linkValue;
                if (count > 2)
                {
                    title = match.Matches[2].StringValue;
                }
                else
                {
                    title = null;
                }
            }
            if (url != null)
            {
                var isImage = match.Scanner.Substring(match.Index, 1) == "!";
                if (isImage)
                {
                    args.Output.Append("<img src=\"");
                }
                else
                {
                    args.Output.Append("<a href=\"");
                }
                args.Output.Append(MarkdownEncoding.EncodeAttribute(url));
                args.Output.Append("\"");
                if (isImage)
                {
                    var alt = nameValue;
                    if (!string.IsNullOrEmpty(alt))
                    {
                        args.Output.Append(" alt=\"");
                        args.Output.Append(MarkdownEncoding.EncodeAttribute(alt));
                        args.Output.Append("\"");
                    }
                }
                if (!string.IsNullOrEmpty(title))
                {
                    args.Output.Append(" title=\"");
                    args.Output.Append(MarkdownEncoding.EncodeAttribute(title));
                    args.Output.Append("\"");
                }
                if (isImage)
                {
                    args.Output.Append(" />");
                }
                else
                {
                    args.Output.Append(">");
                    args.Encoding.Transform(args, nameValue);
                    args.Output.Append("</a>");
                }
            }
            else
            {
                args.Output.Append(match.Text);
            }
        }
Example #33
0
 public void Transform(Match match, MarkdownReplacementArgs args)
 {
     // blank!
 }