NAME
Config::Maker::Config - This class represents the parsed configuration data.
SYNOPSIS
use Config::Maker::Config
$config = Config::Maker::Config->new($file);
DESCRIPTION
This module parses the configuration data. It contains the (relatively large) Parse::RecDescent parser for parsing the configuration files and a simple constructor for parsing files.
The parser has two major parametrized rules: the body and the value.
Rule body
The body rule takes a list of arguments, where the first one is the body type to be used and the rest are lists of arguments for possible subrules. There are three types of body defined:
simple-
The
body_simplerule describes simple options (without suboptions). It has one additional argument -- the argument list for avalue. The value has to be terminated with a semicolon. anon_group-
The
body_anon_grouprule describes blocks with no indentifier/value, that contain more options. It has no extra arguments. named_group-
The
body_named_grouprule describes an option with an identifier/value and suboptions. It has one additional argument -- the argument list for avalue.
Rule value
This describes various types of values that can be given to options. There are simple values and complex values. For now, all simple values are manipulated as strings, but the more precise specification allows to check them during parsing of the configuration. The complex values are represented by complex perl data structures. Currently these can only be used from [{perl code}] in templates. They are primarily designed for use in metaconfig.
- Simple values
-
None of the simple values takes extra arguments.
void-
No option at all.
string-
Either a single or double quoted string, or, if it does not contain too funny characters a bareword.
identifier-
Starts with an alphabetic character and continues with alphanumerics, dashes and underscores. Unicode word characters are recognized as alphabetic.
dns_name-
Just ASCII letters, numbers and dashes.
dns_zone-
Sequence of
dns_names separated, and possibly terminated, with dots. ipv4-
A dotted deciaml IPv4 address. Only four-byte notation is recognized. The shorthand ones are not.
port-
A decimal integer from 0 through 65535.
ipv4_port-
An
ipv4and aportseparated with a colon. ipv4_mask-
And
ipv4, a slash and an integer from 0 to 32. mac-
Six tuples of hex digits, separated by colons.
perlcode-
A piece of perl code enclosed in curly braces (
{}). Represented as a string.
- Complex values
-
The complex values consist of other value types. They take arguments that shall be passed to the
valuesubrules.list-
A space separated list of values. Remaining arguments are passed to the recursive calls of
valuerules. zero_list-
Like above, but empty list is valid.
nested_list-
A space separated list of values or sublists in square brackets (
[]). Remaining arguments are, again, passed to the recursive calls ofvaluerules. nestlist_elem-
This is the actual type of elements in the nested list. It is either a single element of specified type, or a nested_list containing that type.
pair-
Space separated pair of values. Takes two array arguments, the respective types of the two values.
AUTHOR
Jan Hudec <bulb@ucw.cz>
COPYRIGHT AND LICENSE
Copyright 2004 Jan Hudec. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SEE ALSO
perl(1), Config::Maker(3pm), Parse::RecDescent(3pm).