(* Copyright (C) 2020 Ryan Kavanagh *) (* Implements a parser for the text/gemini mime-type specified on https://gemini.circumlunar.space/docs/spec-spec.txt . *) module type MIME_TEXT_GEMINI = sig exception ParseError of string type gemini_line = | H1 of string (* # header *) | H2 of string (* ## header *) | H3 of string (* ### header *) | Link of string * (string option) (* link with url and optional name *) | Pre of string (* preformatted text line *) | Text of string (* plain text line *) | Ul of string (* unordered list item *) | Quoted of string (* quoted text *) type gemini = gemini_line list val gemini_line_to_str : gemini_line -> string val gemini_to_str : gemini -> string val gemini_line_to_canon_str : gemini_line -> string val gemini_to_canon_str : gemini -> string val str_to_header_line : string -> gemini_line val str_to_link_line : string -> gemini_line val str_to_text_line : string -> gemini_line val str_to_pre_line : string -> gemini_line val str_to_pre_block : string -> gemini_line list val str_to_list_line : string -> gemini_line val str_to_quoted_line : string -> gemini_line val str_to_gemini : string -> gemini end module MimeTextGemini : MIME_TEXT_GEMINI