blob: aa8d4621ea615f17594b6bec3ceed35c29081fbe (
plain) (
tree)
|
|
(* Copyright (C) 2020 Ryan Kavanagh <rak@rak.ac> *)
(* 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 *)
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_gemini : string -> gemini
end
module MimeTextGemini : MIME_TEXT_GEMINI
|