let rec string_of_line line =
let buf = Buffer.create 512 in
let add = Buffer.add_string buf in
let rec loop = function
| h::t -> (match h with
| CData s -> add s
| Emphasis (_, l)
| Strong (_, l)
| Italic (_, l)
| Bold (_, l)
| Citation (_, l)
| Deleted (_, l)
| Inserted (_, l)
| Superscript (_, l)
| Subscript (_, l)
| Span (_, l) ->
add (string_of_line l)
| Acronym (s, _)
| Code (_, s) ->
add s
| Notextile s ->
add s
| Image _ -> ()
| Link ((_, l), _, _) ->
add (string_of_line l)
| Reference i ->
Printf.bprintf buf "[%d]" i);
loop t
| [] -> Buffer.contents buf in
loop line