Property definitions

markdown $ LineList :: defaultinit
# A markdown list line.
# Mainly used to factorize code between ordered and unordered lists.
abstract class LineList
	super Line

	redef fun process(v) do
		var line = v.current_line
		# go to list end
		while line != null do
			var t = v.line_kind(line)
			if not line.is_empty and (line.prev_empty and line.leading == 0 and
			   not t isa LineList) then break
			line = line.next
		end
		# build list block
		var current_block = v.current_block.as(not null)
		var list: MDBlock
		if line != null then
			list = current_block.split(line.prev.as(not null))
		else
			list = current_block.split(current_block.last_line.as(not null))
		end
		var kind = block_kind(list)
		list.kind = kind
		list.first_line.as(not null).prev_empty = false
		list.last_line.as(not null).next_empty = false
		list.remove_surrounding_empty_lines
		list.first_line.as(not null).prev_empty = false
		list.last_line.as(not null).next_empty = false
		kind.init_block(v)
		var block = list.first_block
		while block != null do
			block.remove_list_indent(v)
			v.recurse(block, true)
			block = block.next
		end
		kind.expand_paragraphs(list)
		v.current_line = line
	end

	# Create a new block kind based on this line.
	protected fun block_kind(block: MDBlock): BlockList is abstract

	# Extract string value from `MDLine`.
	protected fun extract_value(line: MDLine): String is abstract
end
lib/markdown/markdown.nit:1886,1--1931,3