
TODO: markdown & gemini coming git-svn-id: file:///srv/svn/repo/text_parse/trunk@1 cb476dc4-a1c2-9446-a177-162899b6b847
33 lines
886 B
OCaml
33 lines
886 B
OCaml
module type Fn = sig
|
|
val bold: string -> 'a -> 'a
|
|
val italic: string -> 'a -> 'a
|
|
val underline: string -> 'a -> 'a
|
|
val inline_monospace: string -> 'a -> 'a
|
|
end
|
|
|
|
open Text_parse.Cursor
|
|
|
|
module Bold (F : Fn) = struct
|
|
let s _cursor = function '*' -> true | _ -> false
|
|
let e = s
|
|
let parse cur acc = F.bold (segment_string (unwrap 1 cur)) acc
|
|
end
|
|
|
|
module Italic (F : Fn) = struct
|
|
let s _cursor = function '/' -> true | _ -> false
|
|
let e = s
|
|
let parse cur acc = F.italic (segment_string (unwrap 1 cur)) acc
|
|
end
|
|
|
|
module Underline (F : Fn) = struct
|
|
let s _cursor = function '_' -> true | _ -> false
|
|
let e = s
|
|
let parse cur acc = F.underline (segment_string (unwrap 1 cur)) acc
|
|
end
|
|
|
|
module Inline_monospace (F : Fn) = struct
|
|
let s _cursor = function '`' -> true | _ -> false
|
|
let e = s
|
|
let parse cur acc = F.inline_monospace (segment_string (unwrap 1 cur)) acc
|
|
end
|