(* HTML5 tree builder insertion modes *)
type t =
| Initial
| Before_html
| Before_head
| In_head
| In_head_noscript
| After_head
| In_body
| Text
| In_table
| In_table_text
| In_caption
| In_column_group
| In_table_body
| In_row
| In_cell
| In_select
| In_select_in_table
| In_template
| After_body
| In_frameset
| After_frameset
| After_after_body
| After_after_frameset
let to_string = function
| Initial -> "initial"
| Before_html -> "before html"
| Before_head -> "before head"
| In_head -> "in head"
| In_head_noscript -> "in head noscript"
| After_head -> "after head"
| In_body -> "in body"
| Text -> "text"
| In_table -> "in table"
| In_table_text -> "in table text"
| In_caption -> "in caption"
| In_column_group -> "in column group"
| In_table_body -> "in table body"
| In_row -> "in row"
| In_cell -> "in cell"
| In_select -> "in select"
| In_select_in_table -> "in select in table"
| In_template -> "in template"
| After_body -> "after body"
| In_frameset -> "in frameset"
| After_frameset -> "after frameset"
| After_after_body -> "after after body"
| After_after_frameset -> "after after frameset"