Example #1
0
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			writer.AppendRawLine("<table>");
			if (headers != null)
			{
				writer.AppendRawLine("    <thead>");
				writer.AppendRawLine("        <tr>");
				foreach (var header in headers)
					writer.AppendRawLine("            <th>{0}</th>", parser.ParseInlines(header.Trim()));
				writer.AppendRawLine("        </tr>");
				writer.AppendRawLine("    <thead>");
			}
			foreach (var row in rows)
			{
				writer.AppendRawLine("    <tr>");
				for (var i = 0; i < row.Length; i++)
				{
					var cell = row[i];

					if (i == 0 && cell.StartsWith("="))
						writer.AppendRawLine("        <td>{0}</td>", parser.ParseInlines(cell.Substring(1).Trim()));
					else
						writer.AppendRawLine("        <td>{0}</td>", parser.ParseInlines(cell.Trim()));
				}
				writer.AppendRawLine("    </tr>");
			}
			writer.AppendRawLine("</table>");
		}
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			if (string.IsNullOrEmpty(content))
				return;

			writer.AppendRaw("<em>");
			writer.AppendRaw(parser.ParseInlines(content));
			writer.AppendRaw("</em>");
		}
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			if (string.IsNullOrWhiteSpace(content))
				return;

			writer.AppendRaw("<p>");
			writer.AppendRaw(parser.ParseInlines(content));
			writer.AppendRawLine("</p>");
		}
Example #4
0
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			var resolvedUrl = parser.ResolveLink(url);

			var isExternal = resolvedUrl.StartsWith("http://") || resolvedUrl.StartsWith("https://") || resolvedUrl.StartsWith("ftp://");

			writer.AppendRaw("<a href=\"{0}\"{1}>", HttpUtility.UrlPathEncode(resolvedUrl), isExternal ? " target=\"_blank\"" : string.Empty);
			if (parseContent)
				writer.AppendRaw(parser.ParseInlines(content, TryParse));
			else
				writer.Append(content);
			writer.AppendRaw("</a>");
		}
Example #5
0
		private void RenderList(CreoleParser parser, CreoleWriter writer, CreoleReader reader, int level)
		{
			var indent = "";
			for (int i = 1; i < level * 2 - 1; i++)
				indent += "    ";

			while (!reader.EndOfMarkup)
			{
				var type = reader.Peek(level);
				if (type.Any(c => c != type[0]))
					break;
				type = type[0].ToString();

				if (type == "*") writer.AppendRawLine("{0}<ul>", indent);
				else if (type == "#") writer.AppendRawLine("{0}<ol>", indent);
				else throw new InvalidOperationException("Invalid list type");

				while (!reader.EndOfMarkup)
				{
					var nextType = reader.Peek(level);
					if (nextType.Any(c => c != type[0]))
						break;

					reader.Skip(level);
					var line = reader.ReadLine();
					var indentEndLi = false;

					writer.AppendRaw("{0}    <li>", indent);
					writer.AppendRaw(parser.ParseInlines(line).Trim());
					if (!reader.EndOfMarkup)
					{
						var next = reader.Peek(level + 1);
						if (next.Length == level + 1 && (!next.Any(c => c != '*') || !next.Any(c => c != '#')))
						{
							writer.AppendRawLine("");
							RenderList(parser, writer, reader, level + 1);
							indentEndLi = true;
						}
					}
					if (indentEndLi)
						writer.AppendRawLine("{0}    </li>", indent);
					else
						writer.AppendRawLine("</li>");
				}

				if (type == "*") writer.AppendRawLine("{0}</ul>", indent);
				else if (type == "#") writer.AppendRawLine("{0}</ol>", indent);
				else throw new InvalidOperationException("Invalid list type");
			}
		}
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			writer.AppendRaw("<pre>");
			writer.Append(content);
			writer.AppendRawLine("</pre>");
		}
Example #7
0
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			RenderList(parser, writer, new CreoleReader(markup), 1);
		}
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			writer.AppendRawLine("<hr />");
		}
Example #9
0
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			writer.Append(content);
		}
Example #10
0
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			var resolvedUrl = parser.ResolveImage(url);

			writer.AppendRaw(@"<img src=""{0}"" alt=""{1}"" />", HttpUtility.UrlPathEncode(resolvedUrl), HttpUtility.HtmlEncode(alt));
		}
		public abstract void Render(CreoleParser parser, CreoleWriter writer);
		public override void Render(CreoleParser parser, CreoleWriter writer)
		{
			writer.AppendRaw("<h{0}>", level);
			writer.Append(content);
			writer.AppendRaw("</h{0}>", level);
		}