package toml
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=1d4e9c16ed9e24d46dd757ce94adc7fc8b2068eb5ff7cd2a70fce08135a752ef
sha512=9cb98e4a9c4a01acf5ceeac836fe0dc4d341662f9b3ce6803e9d14499bcb450441111247159bdbc5c25d4618b8c1f088d206da702bef12ea1ca8781607d26774
doc/toml/Toml/Lenses/index.html
Module Toml.LensesSource
Partial 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 42Replaces 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.