Math-Formula
view release on metacpan or search on metacpan
lib/Math/Formula/Config/JSON.pod view on Meta::CPAN
=encoding utf8
=head1 NAME
Math::Formula::Config::JSON - load/save formulas to file
=head1 INHERITANCE
Math::Formula::Config::JSON
is a Math::Formula::Config
=head1 SYNOPSIS
my $context = Math::Formula::Content->new(name => 'test');
my $config = Math::Formula::Config::JSON->new(directory => $dir);
$config->save($context);
my $context = $config->load('test');
=head1 DESCRIPTION
Save and load a L<Math::Formula::Context|Math::Formula::Context> to JSON files.
You need to B<have installed Cpanel::JSON::XS>. That module is not in the
dependencies of this packages, because we do not want to add complications
to the main code.
Extends L<"DESCRIPTION" in Math::Formula::Config|Math::Formula::Config/"DESCRIPTION">.
=head1 METHODS
Extends L<"METHODS" in Math::Formula::Config|Math::Formula::Config/"METHODS">.
=head2 Constructors
Extends L<"Constructors" in Math::Formula::Config|Math::Formula::Config/"Constructors">.
=over 4
=item $class-E<gt>B<new>(%options)
Inherited, see L<Math::Formula::Config/"Constructors">
=back
=head2 Attributes
Extends L<"Attributes" in Math::Formula::Config|Math::Formula::Config/"Attributes">.
=over 4
=item $obj-E<gt>B<directory>()
Inherited, see L<Math::Formula::Config/"Attributes">
=item $obj-E<gt>B<path_for>($file)
Inherited, see L<Math::Formula::Config/"Attributes">
=back
=head2 Actions
Extends L<"Actions" in Math::Formula::Config|Math::Formula::Config/"Actions">.
=over 4
=item $obj-E<gt>B<load>($name, %options)
Load a L<Math::Formula::Context|Math::Formula::Context> for a file in JSON serialization.
Improves base, see L<Math::Formula::Config/"Actions">
-Option --Default
filename <directory/$name.json>
=over 2
=item filename => FILENAME
=back
=item $obj-E<gt>B<save>($context, %options)
Serialize the C<$context> to JSON files, as storage or to be edited by hand.
This is a useful method when default configuration templates need to be generated.
Improves base, see L<Math::Formula::Config/"Actions">
-Option --Default
filename $context->name .json
=over 2
=item filename => STRING
Save under a different filename than derived from the name of the context.
=back
=back
=head1 DETAILS
JSON seems to be everyone's favorite serialization syntax, nowadays. It natively
supports integers, floats, booleans, and strings. Formulas get a leading C<=>
(not configurable (yet)).
B<. Example>
{
"created" : "2023-02-28T16:30:27+0000",
"formulas" : {
"expr1" : "=1 + 2 * 3",
"expr2" : "=\"abc\".size + 3k; returns='MF::INTEGER'",
"fakes" : false,
"float" : 3.14,
"int" : 42,
"longer" : "abc def yes no",
"no_quotes" : "abc",
"some_truth" : true,
"string" : "true"
},
"mf_version" : "",
"name" : "test",
"updated" : "2023-02-28T16:30:27+0000",
"version" : 1.0
}
=head1 DIAGNOSTICS
=over 4
=item Fault: Error on close while saving '$name' to $file: $!
Z<>
=item Error: Save directory '$dir' does not exist
Z<>
=item Error: Save directory required
Z<>
=item Fault: Trying to save context '$name' to $file: $!
Z<>
=item Warning: cannot (yet) save CODE, skipped '$name'
Z<>
=back
=head1 SEE ALSO
This module is part of Math-Formula version 0.18,
built on August 19, 2025. Website: F<http://perl.overmeer.net/CPAN/>
=head1 LICENSE
For contributors see file ChangeLog.
This software is copyright (c) 2023-2025 by Mark Overmeer.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
( run in 0.920 second using v1.01-cache-2.11-cpan-13bb782fe5a )