package oniguruma

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file oniguruma.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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
type _ t

exception Error of string

external initialize : unit -> unit = "ocaml_onig_initialize"

external cleanup : unit -> unit = "ocaml_onig_end"

let () =
  Callback.register_exception
    "Oniguruma.Error" (Error "");
  Callback.register_exception
    "Oniguruma.Invalid_argument" (Invalid_argument "");
  Callback.register_exception
    "Oniguruma.Failure" (Failure "");
  initialize ();
  at_exit cleanup

module Encoding = struct
  type _ t

  type ascii
  external get_ascii : unit -> ascii t = "ocaml_get_onig_encoding_ascii"
  let ascii = get_ascii ()

  type utf8
  external get_utf8 : unit -> utf8 t = "ocaml_get_onig_encoding_utf8"
  let utf8 = get_utf8 ()
end

module Options = struct
  type _ t = int

  external option : int -> 'a t = "ocaml_onig_option"

  let (<+>) = (lor)
  let none = option 0

  type compile_time

  let singleline = option 1
  let multiline = option 2
  let ignorecase = option 3
  let extend = option 4
  let find_longest = option 5
  let find_not_empty = option 6
  let negate_singleline = option 7
  let dont_capture_group = option 8
  let capture_group = option 9

  type search_time

  let notbol = option 10
  let noteol = option 11
end

module Syntax = struct
  type t

  external get_asis : unit -> t =
    "ocaml_get_onig_syntax_asis"
  let asis = get_asis ()

  external get_posix_basic : unit -> t =
    "ocaml_get_onig_syntax_posix_basic"
  let posix_basic = get_posix_basic ()

  external get_posix_extended : unit -> t =
    "ocaml_get_onig_syntax_posix_extended"
  let posix_extended = get_posix_extended ()

  external get_emacs : unit -> t =
    "ocaml_get_onig_syntax_emacs"
  let emacs = get_emacs ()

  external get_grep : unit -> t =
    "ocaml_get_onig_syntax_grep"
  let grep = get_grep ()

  external get_gnu_regex : unit -> t =
    "ocaml_get_onig_syntax_gnu_regex"
  let gnu_regex = get_gnu_regex ()

  external get_java : unit -> t =
    "ocaml_get_onig_syntax_java"
  let java = get_java ()

  external get_perl : unit -> t =
    "ocaml_get_onig_syntax_perl"
  let perl = get_perl ()

  external get_perl_ng : unit -> t =
    "ocaml_get_onig_syntax_perl_ng"
  let perl_ng = get_perl_ng ()

  external get_default : unit -> t =
    "ocaml_get_onig_syntax_default"
  let default = get_default ()
end

module Region = struct
  type t

  external length : t -> int = "ocaml_onig_region_length"

  external capture_beg : t -> int -> int = "ocaml_onig_capture_beg"

  external capture_end : t -> int -> int = "ocaml_onig_capture_end"
end

external create
  : string -> Options.compile_time Options.t -> 'enc Encoding.t -> Syntax.t
  -> ('enc t, string) result
  = "ocaml_onig_new"

external search
  : 'enc t -> string -> int -> int -> Options.search_time Options.t
  -> Region.t option
  = "ocaml_onig_search"

external match_
  : 'enc t -> string -> int -> Options.search_time Options.t -> Region.t option
  = "ocaml_onig_match"

external num_captures : _ t -> int = "ocaml_onig_num_captures"

external name_to_group_numbers
  : _ t -> string -> int array
  = "ocaml_onig_name_to_group_numbers"

external version_f : unit -> string = "ocaml_onig_version"
let version = version_f ()