Render self as Markdown

Property definitions

markdown2 :: markdown_md_rendering $ MdNode :: render_md
	# Render `self` as Markdown
	fun render_md(v: MarkdownRenderer) do visit_all(v)
lib/markdown2/markdown_md_rendering.nit:71,2--72,51

markdown2 :: markdown_md_rendering $ MdCode :: render_md
	redef fun render_md(v) do
		v.add_raw delimiter
		v.add_raw literal
		v.add_raw delimiter
	end
lib/markdown2/markdown_md_rendering.nit:292,2--296,4

markdown2 :: markdown_md_rendering $ MdDelimited :: render_md
	redef fun render_md(v) do
		v.add_raw delimiter
		visit_all(v)
		v.add_raw delimiter
	end
lib/markdown2/markdown_md_rendering.nit:305,2--309,4

markdown2 :: markdown_md_rendering $ MdHtmlInline :: render_md
	redef fun render_md(v) do
		v.add_raw literal
	end
lib/markdown2/markdown_md_rendering.nit:318,2--320,4

markdown2 :: markdown_md_rendering $ MdLinkOrImage :: render_md
	redef fun render_md(v) do
		var title = self.title
		v.add_raw "["
		visit_all(v)
		v.add_raw "]"
		v.add_raw "("
		if has_brackets then
			v.add_raw "<"
		end
		v.add_raw destination
		if has_brackets then
			v.add_raw ">"
		end
		if title != null and not title.is_empty then
			v.add_raw " \""
			v.add_raw title.replace("\"", "\\\"")
			v.add_raw "\""
		end
		v.add_raw ")"
	end
lib/markdown2/markdown_md_rendering.nit:328,2--347,4

markdown2 :: markdown_md_rendering $ MdText :: render_md
	redef fun render_md(v) do
		v.add_raw literal
	end
lib/markdown2/markdown_md_rendering.nit:371,2--373,4

markdown2 :: markdown_md_rendering $ MdDocument :: render_md
	redef fun render_md(v) do
		var node = first_child
		while node != null do
			v.enter_visit(node)
			node = node.next
			if node != null then
				v.add_line
			end
		end
	end
lib/markdown2/markdown_md_rendering.nit:78,2--87,4

markdown2 :: markdown_md_rendering $ MdBlockQuote :: render_md
	redef fun render_md(v) do
		v.in_quote += 1
		var node = first_child
		while node != null do
			v.add_indent
			v.add_raw "> "
			v.enter_visit(node)
			node = node.next
		end
		v.in_quote -= 1
	end
lib/markdown2/markdown_md_rendering.nit:93,2--103,4

markdown2 :: markdown_md_rendering $ MdHeading :: render_md
	redef fun render_md(v) do
		if is_setext then
			visit_all(v)
			var length_visitor = new TextLengthVisitor
			length_visitor.enter_visit(self)
			v.add_line
			if level == 1 then
				v.add_raw "=" * length_visitor.length
			else
				v.add_raw "-" * length_visitor.length
			end
		else
			v.add_raw "#" * level
			v.add_raw " "
			visit_all(v)
			if has_atx_trailing then
				v.add_raw " "
				v.add_raw "#" * level
			end
		end
		v.add_line
	end
lib/markdown2/markdown_md_rendering.nit:151,2--172,4

markdown2 :: markdown_md_rendering $ MdHtmlBlock :: render_md
	redef fun render_md(v) do
		v.add_raw literal or else ""
		v.add_line
	end
lib/markdown2/markdown_md_rendering.nit:252,2--255,4

markdown2 :: markdown_md_rendering $ MdListItem :: render_md
	redef fun render_md(v) do
		var parent = self.parent
		var is_tight = parent.as(MdListBlock).is_tight

		v.add_indent
		if parent isa MdUnorderedList then
			v.add_raw parent.bullet_marker.to_s
			v.indent += 2
		else if parent isa MdOrderedList then
			v.add_raw "{parent.md_numbering}{parent.delimiter.to_s}"
			v.indent += 3
		end

		var node = first_child
		if node != null then
			v.add_raw " "
		else
			v.add_line
		end
		while node != null do
			v.enter_visit(node)
			node = node.next
			if node != null and not is_tight then
				v.add_line
			end
		end

		if next != null and not is_tight then
			v.add_line
		end

		if parent isa MdUnorderedList then
			v.indent -= 2
		else if parent isa MdOrderedList then
			parent.md_numbering += 1
			v.indent -= 3
		end
	end
lib/markdown2/markdown_md_rendering.nit:181,2--218,4

markdown2 :: markdown_md_rendering $ MdParagraph :: render_md
	redef fun render_md(v) do
		if not parent isa MdBlockQuote and not parent isa MdListItem or prev != null then
			v.add_indent
		end
		# if parent isa MdBlockQuote then
			# v.add_raw "> "
			# var node = first_child
			# while node != null do
				# v.enter_visit(node)
				# if node isa MdSoftLineBreak or node isa MdHardLineBreak then
					# v.add_raw "> "
				# end
				# node = node.next
			# end
			# v.add_line
			# return
		# end
		visit_all(v)
		v.add_line
	end
lib/markdown2/markdown_md_rendering.nit:222,2--241,4

markdown2 :: markdown_md_rendering $ MdThematicBreak :: render_md
	redef fun render_md(v) do
		v.add_raw original_pattern
		v.add_line
	end
lib/markdown2/markdown_md_rendering.nit:245,2--248,4

markdown2 :: markdown_md_rendering $ MdHardLineBreak :: render_md
	redef fun render_md(v) do
		if has_backslash then
			v.add_raw "\\"
		else
			v.add_raw "  "
		end
		v.add_line
		v.add_indent
		v.add_raw "> " * v.in_quote
	end
lib/markdown2/markdown_md_rendering.nit:261,2--270,4

markdown2 :: markdown_md_rendering $ MdSoftLineBreak :: render_md
	redef fun render_md(v) do
		v.add_line
		v.add_indent
		v.add_raw "> " * v.in_quote
	end
lib/markdown2/markdown_md_rendering.nit:279,2--283,4

markdown2 :: markdown_md_rendering $ MdImage :: render_md
	redef fun render_md(v) do
		v.add_raw "!"
		super
	end
lib/markdown2/markdown_md_rendering.nit:352,2--355,4

markdown2 :: markdown_md_rendering $ MdIndentedCodeBlock :: render_md
	redef fun render_md(v) do
		var literal = self.literal
		if literal == null then return

		var lines = literal.split("\n")
		for i in [0..lines.length[ do
			if i == lines.length - 1 then continue
			var line = lines[i]
			if line.is_empty then
				v.add_raw "\n"
			else
				v.add_indent
				if use_tabs then
					v.add_raw "\t"
				else
					v.add_raw " " * 4
				end
				v.add_raw line
				v.add_line
			end
		end
	end
lib/markdown2/markdown_md_rendering.nit:107,2--128,4

markdown2 :: markdown_md_rendering $ MdFencedCodeBlock :: render_md
	redef fun render_md(v) do
		var info = self.info
		v.add_indent
		v.add_raw fence_char.to_s * fence_length
		v.add_raw info or else ""
		for line in (literal or else "").split("\n") do
			v.add_line
			if not line.is_empty then
				v.add_indent
			end
			v.add_raw line
		end
		v.add_indent
		v.add_raw fence_char.to_s * fence_length
		v.add_line
	end
lib/markdown2/markdown_md_rendering.nit:132,2--147,4