Rand Stats

Config::TOML

zef:raku-community-modules

Actions Status Actions Status Actions Status

NAME

Config::TOML - TOML file parser and writer

DESCRIPTION

Config::TOML exports two subroutines: from-toml and to-toml.

SYNOPSIS

TOML to Raku:

use Config::TOML;

# parse toml from string
my $toml = Q:to/EOF/;
[server]
host = "192.168.1.1"
ports = [ 8001, 8002, 8003 ]
EOF
my %toml = from-toml($toml);

# parse toml from file
my $file = 'config.toml';
my %toml = from-toml(:$file);

Raku to TOML:

use Config::TOML;
my %h = :a<alpha>, :b<bravo>, :c<charlie>;
to-toml(%h);

ADVANCED USAGE

Specifying a custom local offset for TOML date values

TOML date values can take three different forms:

Config::TOML builds Raku Dates from standard calendar dates.

By default, Config::TOML builds Raku DateTimes from TOML datetime values that do not include a local offset using the host machine's local offset. To override the default behavior of using the host machine's local offset for date values where the offset is omitted, pass the date-local-offset named argument (with an integer value) to from-toml:

my $cfg = slurp 'config.toml';

# assume UTC when local offset unspecified in TOML dates
my %toml = from-toml($cfg, :date-local-offset(0));

To calculate a target timezone's local offset for the date-local-offset named argument value, multiply its UTC offset hours by 60, add to this its UTC offset minutes, and multiply the result by 60.

TimezoneUTC OffsetCalculation
Africa/JohannesburgUTC+02:00((2 * 60)0) * 60 = 7200
America/Los_AngelesUTC-07:00((-7 * 60)0) * 60 = -25200
Asia/SeoulUTC+09:00((9 * 60)0) * 60 = 32400
Australia/SydneyUTC+10:00((10 * 60)0) * 60 = 36000
Europe/BerlinUTC+01:00((1 * 60)0) * 60 = 3600
UTCUTC±00:00((0 * 60)0) * 60 = 0

To more easily ascertain your host machine's local offset, open a Raku repl and print the value of $*TZ.

AUTHOR

Andy Weidenbaum

COPYRIGHT AND LICENSE

Copyright 2015 - 2022 Andy Weidenbaum

Copyright 2024 Raku Community

This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.