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

NAME

Config::Dot::Array - Module for simple configure file parsing with arrays.

SYNOPSIS

 my $cnf = Config::Dot::Array->new(%params);
 my $struct_hr = $cnf->parse($string);
 $cnf->reset;
 my $serialized = $cnf->serialize;

METHODS

new(%params)
 Constructor.
  • callback

     Callback code for adding parameter.
     Callback arguments are:
     $key_ar - Reference to array with keys.
     $value - Key value.
     Default is undef.
  • config

     Reference to hash structure with default config data.
     This is hash of hashes or arrays structure.
     Default value is reference to blank hash.
  • set_conflicts

     Set conflicts detection as error.
     Default value is 1.
parse($string_or_array_ref)

Parse string $string_or_array_ref or reference to array $string_or_array_ref and returns hash structure.

reset()

Reset content in class (config parameter).

serialize()

Serialize 'config' hash to output.

PARAMETER_FILE

 # Comment.
 # blabla

 # White space.
 /^\s*$/

 # Parameters.
 # Key must be '[-\w\.:,]+'.
 # Separator is '='.
 key=val
 key2.subkey.subkey=val

 # Arrays.
 key3=val1
 key3=val2

ERRORS

 Mine:
         Bad 'config' parameter.
         Parameter 'callback' isn't code reference.

 From Config::Utils::conflict():
         Conflict in '%s'.

 From Class::Utils::set_params():
         Unknown parameter '%s'.

EXAMPLE1

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Config::Dot::Array;
 use Dumpvalue;

 # Object.
 my $struct_hr = Config::Dot::Array->new->parse(<<'END');
 key1=value1
 key2=value2
 key2=value3
 key3.subkey1=value4
 key3.subkey1=value5
 END

 # Dump
 my $dump = Dumpvalue->new;
 $dump->dumpValues($struct_hr);

 # Output:
 # 0  HASH(0x9970430)
 #    'key1' => 'value1'
 #    'key2' => ARRAY(0x9970660)
 #       0  'value2'
 #       1  'value3'
 #    'key3' => HASH(0x9970240)
 #       'subkey1' => ARRAY(0xa053658)
 #          0  'value4'
 #          1  'value5'

EXAMPLE2

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Config::Dot::Array;

 # Object with data.
 my $c = Config::Dot::Array->new(
         'config' => {
                 'key1' => {
                         'subkey1' => 'value1',
                 },
                 'key2' => [
                         'value2',
                         'value3',
                 ],
         },
 );

 # Serialize.
 print $c->serialize."\n";

 # Output:
 # key1=subkey1.value1
 # key2=value2
 # key2=value3

EXAMPLE3

 # Pragmas.
 use strict;
 use warnings;

 # Modules.
 use Config::Dot::Array;
 use Dumpvalue;

 # Object.
 my $struct_hr = Config::Dot::Array->new(
         'callback' => sub {
                my ($key_ar, $value) = @_;
                if ($key_ar->[0] eq 'key3' && $key_ar->[1] eq 'subkey1'
                        && $value eq 'value3') {

                        return 'FOOBAR';
                }
                return $value;
         },
 )->parse(<<'END');
 key1=value1
 key2=value2
 key3.subkey1=value3
 key3.subkey1=value4
 END

 # Dump
 my $dump = Dumpvalue->new;
 $dump->dumpValues($struct_hr);

 # Output:
 # 0  HASH(0x87d05e8)
 #    'key1' => 'value1'
 #    'key2' => 'value2'
 #    'key3' => HASH(0x87e3840)
 #       'subkey1' => ARRAY(0x87e6f68)
 #          0  'FOOBAR'
 #          1  'value4'

DEPENDENCIES

Class::Utils, Config::Utils, English, Error::Pure, Readonly.

SEE ALSO

Cnf, Cnf::More.

REPOSITORY

https://github.com/tupinek/Config-Dot-Array

AUTHOR

Michal Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

BSD license.

VERSION

0.01