Library
Module
Module type
Parameter
Class
Class type
Modules shared between multiple parsers.
Kitchen-sink module for functions shared by multiple parsers.
include module type of Delimited_kernel.Shared
type ('a, 'b) reader =
?strip:bool ->
?skip_lines:int ->
?on_parse_error:
[ `Raise
| `Handle of string Core_kernel.Queue.t -> exn -> [ `Continue | `Finish ] ] ->
header:'a ->
'b
If strip is true (default is false) then spaces will be stripped from the beginning and end of fields.
If skip_lines
is given then that number of lines will be read and discarded from the top of the file or Reader.t given.
If on_parse_error
is `Raise any lines that fail to parse will raise an exception. If `Handle is given the offending line will be passed to the function given, which may then indicate that processing should continue or finish.
Recommendation based on the largest reads and writes observed off a disk or socket.
val strip_buffer : Core_kernel.Buffer.t -> string
val make_emit_field :
strip:bool ->
string Core_kernel.Queue.t ->
Core_kernel.Buffer.t ->
(unit -> unit) Core_kernel.Staged.t
make_emit_field ~strip row buffer
returns a closure which enqueues buffer
into row
, stripping leading and trailing whitespace if strip = true
.
val make_emit_row :
string Core_kernel.Queue.t ->
Delimited_kernel__.Row.t Core_kernel.Queue.t ->
[ `No
| `Yes
| `Require of string list
| `Replace of string list
| `Add of string list
| `Transform of string list -> string list
| `Filter_map of string list -> string option list ] ->
lineno:int Core_kernel.ref ->
[ `on_eof of unit -> unit ] * (unit -> unit)
make_emit_row row rows header ~lineno
returns (`on_eof on_eof, emit_row)
. After zero or more calls to emit_row
and a call to on_eof
, rows
will contain the parsed file.
Note that rows
may have fewer elements than the number of calls to emit_row
, if header
specifies that the first row
is a header line.
val drop_lines : Async.Reader.t -> int -> unit Async.Deferred.t
drop_lines r n
reads and discards up to and including the n
th newline from r
.