package kkmarkdown

  1. Overview
  2. Docs

Source file Utils.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
30
let is_empty_line =
  let re = Str.regexp "[ \t]*$" in
  fun line -> Str.string_match re line 0

let re_spaces_upto_four = Str.regexp "    \\|   \\|  \\| "

let read_classes =
  let re_space = Str.regexp "[ \t]+" in
  let re_class = Str.regexp "\\.\\(.+\\)" in
  fun s ->
    String.trim s |> Str.split re_space
    |> List.filter_map (fun class_ ->
           if Str.string_match re_class class_ 0 then
             Some (Str.matched_group 1 class_)
           else None)

let remove_trailing_chars cond s =
  let len = String.length s in
  let exception Done of string in
  try
    for i = len - 1 downto 0 do
      if not (cond s.[i]) then raise (Done (String.sub s 0 (i + 1)))
    done;
    ""
  with Done s -> s

let remove_trailing_spaces s =
  remove_trailing_chars (fun c -> c = ' ' || c = '\t') s

let remove_trailing_sharps s = remove_trailing_chars (fun c -> c = '#') s
OCaml

Innovation. Community. Security.