Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Toml.Lenses
SourcePartial lenses (returns option
) for accessing TOML structures. They make it possible to read/write deeply nested immutable values.
Extracts a value from some Toml data using a lens. Returns Some value
if the underlying data matched the lens, or None
.
Example:
utop # let toml_data = Toml.Parser.(from_string "
[this.is.a.deeply.nested.table]
answer=42" |> unsafe);;
val toml_data : Types.table = <abstr>
utop # Toml.Lenses.(get toml_data (
key "this" |-- table
|-- key "is" |-- table
|-- key "a" |-- table
|-- key "deeply" |-- table
|-- key "nested" |-- table
|-- key "table" |-- table
|-- key "answer"|-- int ));;
- : int option = Some 42
Replaces an existing value in some Toml data using a lens. Returns Some value
if the underlying data matched the lens, or None
.
Example:
utop # let toml_data = Toml.Parser.(from_string "
[this.is.a.deeply.nested.table]
answer=42" |> unsafe);;
val toml_data : Types.table = <abstr>
utop # let maybe_toml_data' = Toml.Lenses.(set 2015 toml_data (
key "this" |-- table
|-- key "is" |-- table
|-- key "a" |-- table
|-- key "deeply" |-- table
|-- key "nested" |-- table
|-- key "table" |-- table
|-- key "answer"|-- int ));;
val maybe_toml_data' : Types.table option = Some <abstr>
utop # let (Some toml_data') = maybe_toml_data';;
val toml_data' : Types.table = <abstr>
utop # Toml.Printer.string_of_table toml_data';;
- : bytes = "[this.is.a.deeply.nested.table]\nanswer = 2015\n"
Applies a function on an existing value in some Toml data. Returns Some value
if the underlying data matched the lens, or None
.
Example:
utop # let toml_data = Toml.Parser.(from_string "
[[table.of.mixed_values]]
int=0
str=\"a\"
[[table.of.mixed_values]]
str=\"b\"
[[table.of.mixed_values]]
int=3
" |> unsafe);;
val toml_data : Types.table = <abstr>
utop # let maybe_toml_data' = Toml.Lenses.(update
(fun ts -> Some (
List.map (fun t ->
(** Add 'int=42' to each table which doesn't already have an 'int' key *)
if not (Types.Table.mem (Toml.key "int") t) then
Types.Table.add (Toml.key "int") (Types.TInt 42) t
else t) ts))
toml_data
(key "table" |-- table
|-- key "of" |-- table
|-- key "mixed_values" |-- array |-- tables));;
val maybe_toml_data' : Types.table option = Some <abstr>
utop # let (Some toml_data') = maybe_toml_data';;
val toml_data' : Types.table = <abstr>
utop # print_endline @@ Toml.Printer.string_of_table toml_data';;
[[table.of.mixed_values]]
int = 0
str = "a"
[[table.of.mixed_values]]
int = 42
str = "b"
[[table.of.mixed_values]]
int = 3
- : unit = ()
Lens to a particular value in a table.
Combines the key
and table
lenses, for the common case of nested tables.
Lens to a string value.
Lens to a boolean value.
Lens to an int value.
Lens to a float value.
Lens to a date value.
Lens to an array value.
Lens to a table value.
Lens to an array of strings.
Lens to an array of booleans.
Lens to an array of ints.
Lens to an array of floats.
Lens to an array of dates.
Lens to an array of tables.
Lens to an array of arrays.