diff options
author | Ryan Kavanagh <rak@rak.ac> | 2020-05-30 19:16:03 -0400 |
---|---|---|
committer | Ryan Kavanagh <rak@rak.ac> | 2020-05-31 00:04:48 -0400 |
commit | c760484c1abfed9cd85db8ec5eb4d659ad16ba2a (patch) | |
tree | 3997432e131028c5947687b0722304fb739558db /gemini/mimeTextGemini.mli | |
parent | Initial import of a text/gemini parser (diff) |
Added a build system and adopt modules
Diffstat (limited to 'gemini/mimeTextGemini.mli')
-rw-r--r-- | gemini/mimeTextGemini.mli | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gemini/mimeTextGemini.mli b/gemini/mimeTextGemini.mli new file mode 100644 index 0000000..aa8d462 --- /dev/null +++ b/gemini/mimeTextGemini.mli @@ -0,0 +1,43 @@ +(* 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 |