markdown :: MDLine :: check_html
value
contains valid XML markup?
# Does `value` contains valid XML markup?
private fun check_html: Bool do
var tags = new Array[String]
var tmp = new FlatBuffer
var pos = leading
if pos + 1 < value.length and value[pos + 1] == '!' then
if read_xml_comment(self, pos) > 0 then return true
end
pos = value.read_xml(tmp, pos, false)
var tag: String
if pos > -1 then
tag = tmp.xml_tag
if not tag.is_html_block then
return false
end
if tag == "hr" then
xml_end_line = self
return true
end
tags.add tag
var line: nullable MDLine = self
while line != null do
while pos < line.value.length and line.value[pos] != '<' do
pos += 1
end
if pos >= line.value.length then
if pos - 2 >= 0 and line.value[pos - 2] == '/' then
tags.pop
if tags.is_empty then
xml_end_line = line
break
end
end
line = line.next
pos = 0
else
tmp = new FlatBuffer
var new_pos = line.value.read_xml(tmp, pos, false)
if new_pos > 0 then
tag = tmp.xml_tag
if tag.is_html_block and not tag == "hr" then
if tmp[1] == '/' then
if tags.last != tag then
return false
end
tags.pop
else
tags.add tag
end
end
if tags.is_empty then
xml_end_line = line
break
end
pos = new_pos
else
pos += 1
end
end
end
return tags.is_empty
end
return false
end
lib/markdown/markdown.nit:1536,2--1599,4