Module Topkg_care.Text

module Text: sig .. end
Text processing helpers.


Marked-up text files

Warning. Some of the following functions are not serious and can break on certain valid inputs in all sorts of fashion. To understand breakage bear in mind that they operate line-wise.

type flavour = [ `Asciidoc | `Markdown ] 
The type for text document formats.
val flavour_of_fpath : Fpath.t -> flavour option
flavour_of_fpath p determines a flavour according to the extension of p as follows:
val head : ?flavour:flavour -> string -> (string * string) option
head ~flavour text extracts the head of the document text of flavour flavour (defaults to `Markdown).

The head is defined as follows:


val header_title : ?flavour:flavour -> string -> string
header_title ~flavour text extract the title of a header text of flavour flavour (defaults to `Markdown).

Toy change log parsing


val change_log_last_entry : ?flavour:flavour ->
string -> (string * (string * string)) option
change_log_last_version ~flavour text tries to parse the last change log entry of text (i.e. the Topkg_care.Text.head of text) into Some (version, (header, text)), where (header,text) is the result of Topkg_care.Text.head and version a version number extracted from header (see topkg-log(2) for details).
val change_log_file_last_entry : Fpath.t -> (string * (string * string), Bos_setup.R.msg) Bos_setup.result
change_log_file_last_entry file tries to parse the last change log entry of the file file using Topkg_care.Text.flavour_of_fpath and and Topkg_care.Text.change_log_last_entry.

Toy URI parsing


val split_uri : ?rel:bool -> string -> (string * string * string) option
split_uri uri splits uri into a triple (scheme, host, path). If rel is true (defaults to false), a leading "/" in path is removed.

Edit and page text


val edit_file : Fpath.t -> (int, Bos_setup.R.msg) Bos_setup.result
edit_file f invokes the tool mentioned in the EDITOR environment variable with f and returns the exit code of the program.
val find_pager : don't:bool -> (Bos_setup.Cmd.t option, Bos_setup.R.msg) Bos_setup.result
find ~no_pager is an optional pager command. If don't is true returns None. Otherwise first consults the PAGER environment variable, then tries less or more in that order. If the TERM environment variable is "dumb" or undefined unconditionaly returns None.