package biocaml

  1. Overview
  2. Docs
The OCaml Bioinformatics Library

Install

Dune Dependency

Authors

Maintainers

Sources

v0.11.0.tar.gz
md5=486aeb3e552dabae85839e2af30d6c52
sha512=4ed2df0b7cbd80bd6e29bd8fee9d2dacd9379ad0f4ff142bd8e16ade3f1507f6cc7cbe4c614943b8feb8fa4705935695cb458606b0da813dbf255b1e566a43cf

doc/src/biocaml.base/lines.ml.html

Source file lines.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
module Parser = struct

  type state =
    | Current_line of { n : int ; value : Line.t }
    | Finished of { n : int }
    (* [n] represents the number of completed lines *)

  let initial_state = Current_line {
      n = 0 ;
      value = Line.empty ;
    }

  let line_number = function
    | Current_line { n ; value } ->
      if (String.equal (value :> string) "") then n else n + 1
    | Finished { n } -> n

  let step st i = match st, i with
    | Finished _, _ -> st, []
    | Current_line { n ; value }, None ->
      Finished { n },
      if Line.is_empty value then [] else [ value ]
    | Current_line { n ; value }, Some input ->
      match Line.rightmost input with
      | None, line ->
        let value = Line.append value line in
        Current_line { n ; value }, []
      | Some left, right ->
        match Line.parse_string left with
        | [] -> assert false (* [Line.parse_string] never returns an empty list *)
        | h :: t ->
          Current_line {
            n = n + List.length t + 1 ;
            value = right
          },
          (Line.append value h) :: t
end
OCaml

Innovation. Community. Security.