summaryrefslogtreecommitdiff
path: root/gemini/mimeTextGemini.mli
diff options
context:
space:
mode:
authorRyan Kavanagh <rak@rak.ac>2020-05-30 19:16:03 -0400
committerRyan Kavanagh <rak@rak.ac>2020-05-31 00:04:48 -0400
commitc760484c1abfed9cd85db8ec5eb4d659ad16ba2a (patch)
tree3997432e131028c5947687b0722304fb739558db /gemini/mimeTextGemini.mli
parentInitial 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.mli43
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