package kkmarkdown

  1. Overview
  2. Docs
A safe markdown engine

Install

Dune Dependency

Authors

Maintainers

Sources

1.0.0.tar.gz
md5=cc8056af18a204bf68d60f50be5a9de7
sha512=452ef12429aa68606e79b82d883275abd05659fec52509dfa18d7de0edcfa0afba7fa9001d9643c5ad072a494ad8593c6f127e382b06d6c224964b3a7969f388

doc/src/kkmarkdown.lib/FirstChar.ml.html

Source file FirstChar.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
type t = Any | One of char | OneOf of char list

module Map (Elt : sig
  module type Rule

  val first_char : (module Rule) -> t
end) =
struct
  module M = Map.Make (Char)

  type t = (module Elt.Rule) list M.t

  let add c rule x =
    M.update c (fun rules -> Some (rule :: Option.value rules ~default:[])) x

  let mem = M.mem
  let find c x = Option.value (M.find_opt c x) ~default:[]

  let init all =
    List.fold_right
      (fun rule (map, any) ->
        match Elt.first_char rule with
        | Any -> (map, rule :: any)
        | One c -> (add c rule map, any)
        | OneOf cs ->
            let map = List.fold_left (fun map c -> add c rule map) map cs in
            (map, any))
      all (M.empty, [])
end
OCaml

Innovation. Community. Security.