Module Markdown
type ref={src : string;desc : string;}type paragraph=|Normal of par_text|Pre of string * string option|Heading of int * par_text|Quote of paragraph list|Ulist of paragraph list * paragraph list list|Olist of paragraph list * paragraph list listand par_text= text listand text=|Text of string|Emph of string|Bold of string|Struck of par_text|Code of string|Link of href|Anchor of string|Image of img_refand href={href_target : string;href_desc : string;}and img_ref={img_src : string;img_alt : string;}and par_list= paragraph listtype parse_state={max : int;current : Stdlib.Buffer.t;fragments : text list;}
val indentation : ?ts:int -> string -> intval unescape : string -> stringval unescape_slice : string -> first:int -> last:int -> stringval snd_is : string -> char -> boolval snd_is_space : string -> boolval collect : ('a -> 'b option) -> 'a -> 'b listval push_remainder : ?first:int -> int -> string -> (int * string * bool) BatEnum.t -> unitval adds : Stdlib.Buffer.t -> string -> unitval addc : Stdlib.Buffer.t -> char -> unitval new_fragment : unit -> Stdlib.Buffer.tval push_current : parse_state -> text listval read_paragraph : ?skip_blank:bool -> int -> (int * string * bool) BatEnum.t -> paragraph optionval skip_blank_line : (int * string * bool) BatEnum.t -> unitval read_nonempty : int -> (int * string * bool) BatEnum.t -> string -> paragraph optionval read_heading : string -> paragraph optionval read_ul : int -> char -> (int * string * bool) BatEnum.t -> paragraph optionval read_ol : int -> (int * string * bool) BatEnum.t -> paragraph optionval read_list : (paragraph list -> paragraph list list -> paragraph) -> (string -> bool) -> int -> (int * string * bool) BatEnum.t -> paragraph optionval read_pre : string -> (int * string * bool) BatEnum.t -> paragraph optionval read_quote : int -> (int * string * bool) BatEnum.t -> paragraph optionval read_normal : (int * string * bool) BatEnum.t -> paragraph optionval parse_text : string -> par_textval scan : string -> parse_state -> int -> par_textval delimited : (first:int -> last:int -> text) -> string -> string -> parse_state -> int -> par_textval maybe_link : string -> (ref -> text) -> string -> parse_state -> int -> par_textval scan_past : delim:string -> string -> max:int -> int -> int optionval scan_link : string -> max:int -> int -> (ref * int) optionval matches_at : string -> max:int -> int -> string -> boolval parse_enum : string BatEnum.t -> paragraph listval parse_lines : string list -> paragraph listval parse_text : string -> paragraph list