see: md_line_*
# The type of line.
# see: `md_line_*`
fun line_kind(md: MDLine): Line do
var value = md.value
var leading = md.leading
var trailing = md.trailing
if md.is_empty then return new LineEmpty
if md.leading > 3 then return new LineCode
if value[leading] == '#' then return new LineHeadline
if value[leading] == '>' then return new LineBlockquote
if ext_mode then
if value.length - leading - trailing > 2 then
if value[leading] == '`' and md.count_chars_start('`') >= 3 then
return new LineFence
end
if value[leading] == '~' and md.count_chars_start('~') >= 3 then
return new LineFence
end
end
end
if value.length - leading - trailing > 2 and
(value[leading] == '*' or value[leading] == '-' or value[leading] == '_') then
if md.count_chars(value[leading]) >= 3 then
return new LineHR
end
end
if value.length - leading >= 2 and value[leading + 1] == ' ' then
var c = value[leading]
if c == '*' or c == '-' or c == '+' then return new LineUList
end
if value.length - leading >= 3 and value[leading].is_digit then
var i = leading + 1
while i < value.length and value[i].is_digit do i += 1
if i + 1 < value.length and value[i] == '.' and value[i + 1] == ' ' then
return new LineOList
end
end
if value[leading] == '<' and md.check_html then return new LineXML
var next = md.next
if next != null and not next.is_empty then
if next.count_chars('=') > 0 then
return new LineHeadline1
end
if next.count_chars('-') > 0 then
return new LineHeadline2
end
end
return new LineOther
end
lib/markdown/markdown.nit:327,2--381,4