self as Markdown
	# Render `self` as Markdown
	fun render_md(v: MarkdownRenderer) do visit_all(v)
					lib/markdown2/markdown_md_rendering.nit:71,2--72,51
				
	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
				
	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
				
	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
				
	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
				
	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
				
	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
				
	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