Omd_utils
This module does not have a toplevel documentation block.
let debug: bool
Equals true
if the environment variable DEBUG is set, or if the environment variable OMD_DEBUG is set to a string that is not "false"
.
let trackfix: bool
let raise: exn => 'a
Same as Pervasives.raise
except if debug
equals true, in which case it prints a trace on stderr before raising the exception.
let warn: (~?we: option(bool), string) => unit
warn we x
prints a warning with the message x
if we
is true, else raises Omd_utils.Error x
.
module StringSet
type split('a) = list('a) => split_action('a)
Type of a split function
type split_action('a) = | Continue | Continue_with(list('a), list('a)) | Split(list('a), list('a))
let fsplit_rev: ( ~?excl: option(list('a) => bool), ~f: split('a), list('a) ) => option((list('a), list('a)))
fsplit_rev ?excl ~f l
returns Some(x,y)
where x
is the **reversed** list of the consecutive elements of l
that obey the split function f
. Note that f
is applied to a list of elements and not just an element, so that f
can look farther in the list when applied. f l
returns Continue
if there're more elements to consume, Continue_with(left,right)
if there's more elements to consume but we want to choose what goes to the left part and what remains to process (right part), and returns Split(left,right)
if the splitting is decided. When f
is applied to an empty list, if it returns Continue
then the result will be None
.
If excl
is given, then excl
is applied before f
is, to check if the splitting should be stopped right away. When the split fails, it returns None
.
let fsplit: ( ~?excl: option(list('a) => bool), ~f: split('a), list('a) ) => option((list('a), list('a)))
fsplit ?excl ~f l
returns Some(List.rev x, y)
if fsplit ?excl ~f l
returns Some(x,y)
, else it returns None
.
let id_of_string: ( < mangle : string -> string; .. >, string ) => string
id_of_string ids id
returns a mangled version of id
, using the method ids#mangle
. If you don't need mangling, you may use object method mangle x = x end
for ids
. However, the name ids
also means that your object should have knowledge of all IDs it has issued, in order to avoid collision. This is why id_of_string
asks for an object rather than "just a function".
let htmlentities: (~?md: option(bool), string) => string
htmlentities s
returns a new string in which html-significant characters have been converted to html entities. For instance, "<Foo&Bar>" is converted to "<Foo&Bar>".
let minimalize_blanks: string => string
minimalize_blanks s
returns a copy of s
in which the first and last characters are never blank, and two consecutive blanks never happen.
let eat: ('a => bool, list('a)) => list('a)
eat f l
returns l
where elements satisfying f
have been removed, but it stops removing as soon as one element doesn't satisfy f
.
let extract_html_attributes: string => list( (string, string) )
Takes some HTML and returns the list of attributes of the first ML tag. tes: Doesn't check the validity of HTML tags or attributes. Doesn't support backslash escaping. Attribute names are delimited by the space and equal characters. Attribute values are either delimited by the double quote or the simple quote character.
let extract_inner_html: string => string
Takes an HTML node and returns the contents of the node. If it's not given a node, it returns something rubbish.
let html_void_elements: StringSet.t
HTML void elements
let @: (list('a), list('a)) => list('a)
Tail-recursive version of Pervasives.(@)
.