package forester

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

Source file Range.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
(*
 * SPDX-FileCopyrightText: 2024 The Forester Project Contributors
 *
 * SPDX-License-Identifier: GPL-3.0-or-later
 *)

include Asai.Range

let pp_located pp_arg fmt (x : 'a located) =
  pp_arg fmt x.value

let map f node = {node with value = f node.value}

type string_source = Asai.Range.string_source = {
  title: string option;
  content: string;
}
[@@deriving repr]

type source = [
  | `File of string
  | `String of string_source
]
[@@deriving repr]

type position = Asai.Range.position = {
  source: source;
  offset: int;
  start_of_line: int;
  line_num: int;
}
[@@deriving repr]

let t : t Repr.t =
  let open Repr in
  variant
    "t"
    begin
      fun range end_of_file t ->
        match view t with
        | `Range (x, y) -> range (x, y)
        | `End_of_file x -> end_of_file x
    end
  |~ case1 "Range" (pair position_t position_t) make
  |~ case1 "End_of_file" position_t eof
  |> sealv

type 'a located = 'a Asai.Range.located = {loc: t option; value: 'a}
[@@deriving repr]
OCaml

Innovation. Community. Security.