The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Config::Trivial::JSON - Very simple tool for reading and writing very simple JSON configuration files

VERSION

This documentation refers to Config::Trivial::JSON version 0.01_01

SYNOPSIS

  use Config::Trivial::JSON;
  my $config = Config::Trivial::JSON->new(
    config_file => '/path/to/my/config.json' );
  my $settings = $config->retrieve;
  say "Setting Colour is:\t", $settings->{'colour'};
  $settings->{'new-item'} = "New Setting";
  $settings->store;

DESCRIPTION

Use this module when you want use "Yet Another" very simple, light weight configuration file reader. The module extends Config::Trivial by providing JSON Support. See those modules for more details.

Here Be Dragons - this software is very much ALPHA quality, patches and feedback are very welcome.

SUBROUTINES/METHODS

store

The store method outputs a JSON representation of the configuration rather than a plain text version that the write version would.

There are two optional parameters that can be passed, a file name to use instead of the current one, and a reference of a hash to write out instead of the currently loaded one.

  $config->store(
    file_name => "/path/to/somewhere/else",
    configuration => $settings);

The method returns true on success. If the file already exists then it is backed up first. If the file cannot be written to then it will die.

Configuration data passed by this method is only written to file, it is not stored in the internal configuration object. To store data in the internal use the set_configuration data method. The option to pass a hash_ref in this method may be removed in future versions.

If you do not specify a file name then the module will default to writing to the calling file - which is obviously silly and it will try to avoid doing this - hence the error message: "Can't retrieve store from the calling file.".

retrieve

This is the analogue to read, only it reads data from a JSON file.

  $config->retrieve;

If both JSON and traditional text configuration files are set then retrieve will use the JSON version in preference, but if the text version is newer then that will be used instead. Thus you can easily edit the text version and any code using this module will automatically switch to using it.

set_json_file

If you want to explicitly set the file name of a JSON file you may use this method. If you set a file name by both set_json_file and set_config_file, then the retrieve method will "magically" decided which to use. The read method will ignore any json settings.

CONFIG FORMAT

About The Configuration File Format

This module extends Config::Trivial with optional support for using JSON file format, rather than plain text files.

The format of the text files is as with Config::Trivial and remains unchanged, as this module inherits from that one. The json format is offered so that modules can simply "retrieve" their configuration without the use of any particular configuration module.

This module extends Config::Trivial so that they can be used to quickly read configuration in one format and convert to another.

DEPENDENCIES

At the moment the module only uses core modules, plus Config::Trivial and JSON::MaybeXS. The test suite optionally uses POD::Coverage, Test::Pod::Coverage, Test::Pod and IO::Warnings which will be skipped if you do not have them.

BUGS AND LIMITATIONS

Patches very welcome... ;-)

MISC

History

See Changes file.

EXPORT

None.

AUTHOR

Adam Trickett, <atrickett@cpan.org>

SEE ALSO

perl, Config::Trivial, JSON::MaybeXS.

LICENSE AND COPYRIGHT

This version as Config::Trivial::JSON, Copyright Adam John Trickett 2014

OSI Certified Open Source Software. Free Software Foundation Free Software.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.