text_parse/parsers/emphasis.ml
fox cec56ea18c Applicative text parser
TODO: markdown & gemini coming

git-svn-id: file:///srv/svn/repo/text_parse/trunk@1 cb476dc4-a1c2-9446-a177-162899b6b847
2021-02-25 23:22:35 +00:00

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