HTML blocks patterns

Property definitions

markdown2 :: markdown_block_parsing $ Sys :: re_html_blocks
	# HTML blocks patterns
	var re_html_blocks: Array[Array[nullable Regex]] do
		var blocks = new Array[Array[nullable Regex]]

		var re0_opening = "^<(script|pre|style)(\\s|>|$)".to_re
		re0_opening.ignore_case = true
		var re0_closing = "</(script|pre|style)>".to_re
		re0_closing.ignore_case = true
		blocks.add([re0_opening, re0_closing])

		blocks.add([
			"^<!--".to_re,
			"-->".to_re
		])

		blocks.add([
			"^<[?]".to_re,
			"\\?>".to_re
		])

		blocks.add([
			"^<![A-Z]".to_re,
			">".to_re
		])

		blocks.add([
			"^<!\\[CDATA\\[".to_re,
			"\\]\\]>".to_re
		])

		var re5_opening = "^</?(address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(\\s|[/]?[>]|$)".to_re
		re5_opening.ignore_case = true
		blocks.add([re5_opening, null])

		var p_tagname = "[A-Za-z][A-Za-z0-9-]*"
		var p_attribute_name = "[a-zA-Z_:][a-zA-Z0-9:._-]*"
		var p_uquoted_value = "[^\"'=<>`\\x00-\\x20]+"
		var p_squoted_value = "'[^']*'"
		var p_dquoted_value = "\"[^\"]*\""
		var p_attribute_value = "({p_uquoted_value}|{p_squoted_value}|{p_dquoted_value})"
		var p_attribute_value_spec = "(\\s*=\\s*{p_attribute_value})"
		var p_attribute = "(\\s{p_attribute_name}{p_attribute_value_spec}?)"
		var p_opentag = "<{p_tagname}{p_attribute}*\\s*/?>"
		var p_closetag = "</{p_tagname}\\s*[>]"
		var re6_opening = "^({p_opentag}|{p_closetag})\\s*$".to_re
		re6_opening.ignore_case = true
		blocks.add([re6_opening, null])

		return blocks
	end
lib/markdown2/markdown_block_parsing.nit:1420,2--1469,4