NAME

MooseX::ConfigCascade::Util - utility module for MooseX::ConfigCascade

SYNOPSIS

use MooseX::ConfigCascade::Util;

MooseX::ConfigCascade::Util->path(      # set the path to the config file

    '/path/to/config.json' 

);  


MooseX::ConfigCascade::Util->conf(      # set the config hash directly

    \%conf 

); 


MooseX::ConfigCascade::Util->parser(    # set the sub that parses the 
                                        # config file
    $subroutine_reference

);

DESCRIPTION

This is module is the workhorse of MooseX::ConfigCascade. See the MooseX::ConfigCascade documentation for a general overview of how to implement MooseX::ConfigCascade in your project.

METHODS

MooseX provides an attribute conf which stores a hash of config directives, and 2 attributes path and parser which control how conf is loaded

conf

This is a hashref containing config information. See the documentation for MooseX::ConfigCascade to learn how this should be structured. It can be set directly

MooseX::ConfigCascade::Util->conf( \%conf );

Alternatively it is set indirectly when 'path' is changed

path

Call this to set the path to your config file. For more information about the format of your config file, see the documentation for MooseX::ConfigCascade.

MooseX::ConfigCascade::Util->path( '/path/to/my_config.json' );

When path is changed it reads the specified file and overwrites conf with the new values. Any new objects created after that will get the new values.

parser

This is the subroutine responsible for converting the file specified in path to a hashref. Setting this to a new value means you can use MooseX::ConfigCascade with a config file of arbitrary format. But look at the expected format of this sub below, and use with caution:

Your parser subroutine should collect path from the input arguments, do whatever is necessary to convert the file, and finally output the hashref which will be stored in conf':

my $parser = sub {
    my $path = shift;

    open my $fh, '<', $path or die "Could not open $path: $!";


    my %conf;

    # .... read the values into %conf


    return \%conf;
}

SEE ALSO

MooseX::ConfigCascade::Util Moose MooseX::ClassAttribute

AUTHOR

Tom Gracey <tomgracey@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2017 by Tom Gracey

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.