1107 lines
42 KiB
Plaintext
1107 lines
42 KiB
Plaintext
2.65 - fix rt.cpan.org#132893: clarified license, now licensed
|
||
under the Artistic License 2.0.
|
||
- fix rt.cpan.org#139261: correctly include directories.
|
||
|
||
- fix rt.cpan.org#118746: remove the comma from legal
|
||
variable names, added mandatory start characters a-zA-Z0-9,
|
||
added a section in the POD to clarify this.
|
||
|
||
- fix rt.cpan.org#119160: fix IfDefine code. Thanks for the patch.
|
||
|
||
2.64 - fix rt.cpan.org#142095: copy default hash, avoid modification.
|
||
|
||
- the Catalyst folks who hosted the source of this module
|
||
closed or moved the repository, I have not been informed and
|
||
have therefore lost all history of the module. So I moved
|
||
to github (https://github.com/TLINDEN/Config-General).
|
||
Thanks for nothing, Catalyst.
|
||
|
||
2.63 - fix for rt.cpan.org#116340: do only consider a backslash
|
||
as meta escape char, but not if it appears on it's own,
|
||
as it happens on windows platforms. Thanks to for finding
|
||
and tracking it down.
|
||
|
||
2.62 - fix rt.cpan.org#115326: Callback on 'pre_open' not called
|
||
when glob expands to one include file
|
||
|
||
- added patch by Niels van Dijke, which adds apache IFDefine
|
||
support. Use -UseApacheIfDefine=>1 to enable, add defines
|
||
with -Define and add <IFDefine ...> to your config, see
|
||
pod for details.
|
||
|
||
- added test case for the code.
|
||
|
||
- fixed unindented half of the pod, which was largely no
|
||
readable because of this. However, I wonder why this hasn't
|
||
reported, seems nobody reads the docs :)
|
||
|
||
- fixed tab/space issues here and there
|
||
|
||
2.61 - fix rt.cpan.org#113671: ignore utf BOM, if any and turn on
|
||
UTF8 support if not yet enabled.
|
||
|
||
2.60 - fix rt.cpan.org#107929: added missing test config.
|
||
|
||
2.59 - fix rt.cpan.org#107108 by adding support for IncludeOptional.
|
||
- clarified documentation on StoreDelimiter.
|
||
|
||
2.58 - bumbp version
|
||
|
||
2.57 - fix rt.cpan.org#104548, dont allow special chars like newline
|
||
or < in keys, which leads to faile when saving.
|
||
|
||
2.56 - fix rt.cpan.org#95325
|
||
|
||
2.55 - fix rt.cpan.org#95314
|
||
|
||
2.54 - fixed rt.cpan.org#39814. changed the order of pre-processing
|
||
in _read(): 1) remove comments, 2) check for continuation,
|
||
3) remove empty lines.
|
||
|
||
2.53 - applied patch rt.cpan.org#68153, which adds a find() method to
|
||
Config::General::Extended.
|
||
|
||
- fixed rt.cpan.org#79869 (in fact it has been fixed in 2.52
|
||
but I forgot to mention it here).
|
||
|
||
- applied spelling fixes rt.cpan.org 87072+87080.
|
||
|
||
- fixed rt.cpan.org#89379
|
||
|
||
2.52 - applied pod patch rt.cpan.org#79603
|
||
|
||
- fixed rt.cpan.org#80006, it tolerates now whitespaces
|
||
after the block closing >
|
||
|
||
- added -Plug parameter, which introduces plugin closures.
|
||
idea from rt.cpan.org#79694.
|
||
Currently available hooks are:
|
||
pre_open, pre_read, post_read, pre_parse_value, post_parse_value
|
||
|
||
- applied patch by Ville Skytt<74>, spelling fixes.
|
||
|
||
- fixed rt.cpan.org#85080, more spelling fixes.
|
||
|
||
- applied patch rt.cpan.org#85132, which fixes a deprecation
|
||
warning in perl 5.18 and above. Fixes #85668 as well.
|
||
|
||
- applied patch rt.cpan.org#85538, c-style comments
|
||
are ignored inside here-docs.
|
||
|
||
- fixed rt.cpan.org#82637, don't use indirect object syntax
|
||
in pod and code.
|
||
|
||
2.51 - fixed rt.cpan.org#77667 which resulted in invalid configs
|
||
written to file when using save_file() and a named block,
|
||
whose 2nd part starts with a /.
|
||
|
||
- fixed rt.cpan.org#64169 by applying patch by Dulaunoy Fabrice.
|
||
adds -NoEscape switch which turns off escaping of anything.
|
||
|
||
- implemented suggestion of rt.cpan.org#67564 by adding 3 new
|
||
parameters: -NormalizeOption, -NormalizeBlock and -NormalizeValue,
|
||
which take a subroutine reference and change the block,
|
||
option or value accordingly.
|
||
|
||
- fixed rt.cpan.org#65860+76953 undefined value error.
|
||
|
||
|
||
2.50
|
||
- fixed rt.cpan.org#63487 documentation error.
|
||
|
||
- fixed rt.cpan.org#61302, now croak if the config file
|
||
parameter is a directory and directory include is not
|
||
turned on.
|
||
|
||
- fixed rt.cpan.org#60429 META.yml typo
|
||
|
||
- added new option -AllowSingleQuoteInterpolation, which
|
||
turns on interpolation for variables inside single quotes.
|
||
|
||
- added test case for the new option
|
||
|
||
|
||
2.49
|
||
- fixed rt.cpan.org#56532, '#' missed during fix for
|
||
56370 in 2.45.
|
||
|
||
- added test case for this too
|
||
|
||
|
||
2.48
|
||
- arg, uploaded the wrong file to pause, so another version
|
||
bump up.
|
||
|
||
- fixed typos in pod section for -ForceArray.
|
||
|
||
|
||
2.47
|
||
- fixed rt.cpan.org#53759 by adding new option -ForceArray.
|
||
when enabled a single config value enclosed in [] will become
|
||
an array forcefully.
|
||
|
||
- fixed typo in license: it is "artistic", not "artificial".
|
||
|
||
|
||
2.46
|
||
- fixed rt.cpan.org#56370: there was a sort() call in _store()
|
||
left, which lead to sorted arrays even if -SaveSorted were
|
||
turned off.
|
||
|
||
|
||
2.45
|
||
- fixed rt.cpan.org#50647 escaping bug. Now escaped $ or
|
||
backslash characters are handled correctly (across save too)
|
||
|
||
- fixed rt.cpan.org#52047, tied hash will remain tied
|
||
when savong to a file.
|
||
|
||
- fixed rt.cpan.org#54580, preserve single quotes during
|
||
variable interpolation corrected. No more using rand()
|
||
to mark single quotes but an incrementor instead.
|
||
|
||
- fixed rt.cpan.org#42721+54583, empty config values will no
|
||
more handed over to interpreting methods (as interpolate
|
||
or autotrue and the like) but returned as undef untouched.
|
||
|
||
|
||
2.44
|
||
- fixed rt.cpan.org#49023 by rolling back change in 2.43
|
||
in line 158, regarding GLOB support.
|
||
|
||
2.43
|
||
- fixed rt.cpan.org#40925, $indichar replaced by internal
|
||
configuration variable EOFseparator, which contains
|
||
a 256 bit SHA checksum of the date I fixed the bug.
|
||
This will prevent future conflicts hopefully. In addition
|
||
it makes it possible to make it customizable, if necessary,
|
||
in a future release.
|
||
|
||
- fixed rt.cpan.org#42721, return undef for empty values
|
||
|
||
- fixed rt.cpan.org#42331, return undef for empty objects
|
||
|
||
- fixed rt.cpan.org#44600, comments after blockname
|
||
causes parser failure.
|
||
|
||
- fixed rt.cpan.org#42287, whitespace at beginning or end
|
||
of a quoted value gets lost after save().
|
||
|
||
- fixed rt.cpan.org#46184, variables that were not previously
|
||
defined are deleted when -InterPolateEnv is enabled.
|
||
|
||
- fixed bug in config loader for FileHandle objects, it
|
||
supports now any compatible object. Hint by Ingo Schmiegel.
|
||
|
||
- applied spelling- and speedup patches by Ville Skytt<74>.
|
||
|
||
- applied documentation patch by Jordan Macdonald.
|
||
|
||
|
||
2.42
|
||
- dist tarball for 2.41 missed t/Tie/LxHash.pm. Dammit.
|
||
the File to the MANIFEST.
|
||
|
||
|
||
2.41
|
||
- fixed rt.cpan.org#38635. apache-like include now supports
|
||
quoted strings.
|
||
|
||
- fixed rt.cpan.org#41748. saving config with -tie enabled
|
||
now keeps the tie as documented.
|
||
|
||
- added unit test for -tie. For this to work, a copy of
|
||
Tie::LxHash module is delivered with Config::General
|
||
source, but will not installed, in fact, it is only
|
||
used for 'make test' (number 50)
|
||
|
||
- fixed rt.cpan.org#39159. documentation of functional interface
|
||
now reflects that qw$method) is now required.
|
||
|
||
- applied patch by AlexK fixing rt.cpan.org#41030:
|
||
if files are included by means of a glob pattern having the -IncludeGlob
|
||
option activated, paths specified by the -ConfigPath option are being
|
||
neglected when trying to spot the files. This patch fixes this
|
||
|
||
- applied patch by fbicknel, fixes rt.cpan.org#41570:
|
||
An array of scalars (eg: option = [1,2,3]) cannot
|
||
be used for interpolation (which element shall we use?!), so
|
||
we ignore those types of lists and don't build a __stack for them.
|
||
|
||
|
||
|
||
2.40
|
||
- fixed SplitDelimiter parser regex, it does no more consider
|
||
non-whitespaces (\S+?) as the option name but anything
|
||
before the delimiter (.+?), this fixes bug rt.cpan.org#36607,
|
||
the fix of 2.39 were not sufficient. Thanks to
|
||
Jeffrey Ratcliffe for pointing it out.
|
||
|
||
- added new parameter -SaveSorted. The default value is 0,
|
||
that means configs will be saved unsorted (as always),
|
||
however if you want to save it sorted, turn this parameter
|
||
to 1. Thanks to Herbert Breunung for the hint.
|
||
|
||
- added complexity test, which checks a combination
|
||
of various complex features of the parser.
|
||
|
||
2.39
|
||
- fixed rt.cpan.org#35122. This one was one of the most
|
||
intriguing bugs I've ever observed in my own code. The
|
||
internal temporary __stack hashref were copied from one
|
||
subhash to another to enable inheritance of variables.
|
||
However, the hashes were copied by reference, so once a
|
||
value changed later, that value were overwritten because
|
||
the __stack in question were just a reference. I introduced
|
||
a simple function _copy() which copies the contents of
|
||
the __stack by value, which solved the bug.
|
||
Conclusion: beware of perl hash refs!
|
||
|
||
- fixed rt.cpan.org#36607, accept whitespaces in heredoc
|
||
names if split delimiter is gues (equalsign or whitespace)
|
||
|
||
- fixed rt.cpan.org#34080 (typo)
|
||
|
||
- fixed rt.cpan.org#35766. Variables inside single quoted
|
||
strings will no more interpolated (as the docu states).
|
||
Also added test case for this.
|
||
|
||
- fixed bug rt.cpan.org#33766. Checking for defined not true
|
||
in ::Extended::AUTOLOAD().
|
||
|
||
- added -UTF8 flag, which opens files in utf8 mode
|
||
(suggested by KAORU, rt.cpan.org#35583)
|
||
I decided not to add a test case for this, since perls
|
||
utf8 support is not stable with all versions.
|
||
|
||
|
||
2.38
|
||
- fixed rt.cpan.org#31529 variable inheritance failed
|
||
with multiple named blocks.
|
||
|
||
- fixed rt.cpan.org#33447, regex to catch variable
|
||
names were too strict, now - . + or : are allowed too.
|
||
|
||
- fixed rt.cpan.org#33385 and #32978 - using arrayrefs
|
||
as param to -String didn't work anymore (sic)
|
||
|
||
- fixed rt.cpan.org#33216 - variable stack were not properly
|
||
re-constructed for pre-existing variables if
|
||
-MergeDuplicateOptions is turned on.
|
||
|
||
|
||
2.37
|
||
- "fixed" rt.cpan.org#30199 - check for invalid and
|
||
unsupported structures, especially mixing blocks
|
||
and scalars with identical names.
|
||
|
||
- added checks to 'make test' to test for the above
|
||
checks.
|
||
|
||
- revoked patch of rt.cpan.org#27225, it broke running
|
||
code.
|
||
|
||
- fixed rt.cpan.org#30063 (and #27225!) by reimplementing
|
||
the whole interpolation code. The internal stack is
|
||
no more a class variable of the module but stored
|
||
directly within the generated config hash and cleaned
|
||
before returning to the user.
|
||
|
||
- added (modified) patch rt.cpan.org#30063 to check
|
||
if interpolation works with supplied default config
|
||
works.
|
||
|
||
|
||
2.36
|
||
- oh my goodness! For some unknown reason I deleted the
|
||
Makefile.PL before packaging. Dammit. So, here it is
|
||
again.
|
||
|
||
2.35
|
||
- 'make test' failed under perl 5.5 because some prequisite
|
||
modules were not found. So now I added all requirements
|
||
to Makefile.PL, even if those modules are part of
|
||
recent perls (beginning with 5.6). I could have also
|
||
added a 'use 5.6' to the code but this would users
|
||
of perl5 exclude. This way they have the possibility
|
||
to fix their installation. Hopefully.
|
||
|
||
No code changes otherwise.
|
||
|
||
|
||
2.34
|
||
- fixed rt.cpan.org#27271 - removed output file from
|
||
manifest.
|
||
|
||
- fixed rt.cpan.org#27225 - clear vars off the stack
|
||
if entering a new block, so old vars get not re-used.
|
||
|
||
- fixed rt.cpan.org#27110 - re-implemented support
|
||
for arrayref as -String parameter.
|
||
|
||
- fixed rt.cpan.org#24155 - relative include bug fixed.
|
||
|
||
- applied patch by GWYN, (see fixed rt.cpan.org#27622)
|
||
which allows the same file included multiple times.
|
||
there is no loop detection if turned on. new option
|
||
introduced: -IncludeAgain => 1 (default turned off).
|
||
|
||
- added support for -IncludeAgain to directory include
|
||
code too.
|
||
|
||
- the directory globbing code used slashes to join
|
||
directory and file names. changed this to use catfile()
|
||
instead.
|
||
|
||
|
||
2.33
|
||
- fixed rt.cpan.org#26333 - just return $con if env var
|
||
is undefined.
|
||
|
||
- applied part of a patch supplied by Vincent Rivellino <vince@cuz.cx>
|
||
which turns off explicit empty block support if in
|
||
apache compatibility mode, see next.
|
||
|
||
- added new option -ApacheCompatible, which makes the
|
||
module behave really apache compatible by setting the
|
||
required options.
|
||
|
||
- a little bit re-organized the code, most of the stuff
|
||
in new() is now outsourced into several extra subs to
|
||
make maintenance of the code easier. The old new() sub
|
||
in fact was a nightmare.
|
||
|
||
- fixed a bug reported by Otto Hirr <otto.hirr@olabinc.com>:
|
||
the _store() sub used sort() to sort the keys, which conflicts
|
||
with sorted hashes (eg. tied using Tie::IxHash).
|
||
|
||
- fixed tie bug reported by King, Jason <kingj@newsltd.com.au>,
|
||
loading of the tie module didn't work.
|
||
|
||
|
||
2.32
|
||
- fixed rt.cpan.org#24232 - import ENV vars only if defined
|
||
|
||
- fixed rt.cpan.org#20742 - dont' overwrite a var if re-defined
|
||
in current scope, interpolation failed for re-defined vars and used
|
||
the value of the var defined in outer scope, not the current one.
|
||
|
||
- fixed rt.cpan.org#17852 - a 0 as blockname were ignored. applied
|
||
patch by SCOP to t/run.t to test for 0 in blocks.
|
||
|
||
- applied most hints Perl::Critic had about Config::General:
|
||
o the functions ParseConfig SaveConfig SaveConfigString must
|
||
now imported implicitly. This might break existing code, but
|
||
is easily to fix.
|
||
o using IO::File instead of open().
|
||
o General.pm qualifies for "stern" level after all.
|
||
|
||
- added much more tests to t/run.t for 'make test'.
|
||
|
||
- using Test::More now.
|
||
|
||
|
||
|
||
2.31
|
||
- applied patches by Jason Rhinelander <jagerman@jagerman.com>:
|
||
o bugfix: multiple levels if include files didn't
|
||
work properly.
|
||
|
||
o new option -IncludeDirectories, which allows
|
||
to include all files of a directory. The directory
|
||
must be specified by -ConfigFile as usual.
|
||
|
||
o new option -IncludeGlob, which allows to
|
||
use globs (wildcards) to include multiple files.
|
||
|
||
o -ConfigPath can be speciefied using a single
|
||
scalar value instead of an array if there is only
|
||
one path.
|
||
|
||
o bugfix: quotes from quoted block names were
|
||
not removed properly.
|
||
|
||
o fixes and updates for tests (make test) for
|
||
the above patches.
|
||
|
||
Thanks a lot Jason.
|
||
|
||
- fixed number of tests in run.t
|
||
|
||
- applied suggestion by Eric Kisiel <eric.kisiel@adelphia.com>:
|
||
::Extended::keys() returns an empty hash if the
|
||
referring object is not hash.
|
||
|
||
- fixed bug #14770, "Use of uninitialized value.." during
|
||
environment variable interpolation.
|
||
|
||
|
||
2.30
|
||
- applied patch by Branislav Zahradnik
|
||
<brano@blueorange.sk> which adds -InterPolateEnv.
|
||
This allows to use environment variables too. It
|
||
implies -InterPolateVars.
|
||
|
||
- added object list capability for the ::Extended::obj()
|
||
method. If a certain key points to an array of
|
||
hashrefs, then the whole arrayref is returned.
|
||
Suggested by Alan Hodgkinson <alan@softxs.ch>.
|
||
|
||
2.29
|
||
- applied patch by brian@kronos.com via rt.cpan.org
|
||
#11211.
|
||
|
||
- applied patch by plasmaball@pchome.com.tw via
|
||
rt.cpan.org #5846
|
||
|
||
- added new files to MANIFEST file.
|
||
|
||
- added example.cfg to show the config format.
|
||
|
||
|
||
2.28
|
||
- fixed bug in save(), now blocks containing whitespaces
|
||
will be saved using quotes, in addition the parser observes
|
||
the quoting feature, added portion about this to the pod
|
||
doc. pointed out by Jeff Murphy <jcmurphy@jeffmurphy.org>.
|
||
|
||
- added internal list of files opened so far to avoid
|
||
reading in the same file multiple times.
|
||
Suggested by Michael Graham.
|
||
|
||
- added new method files() which returns the above list.
|
||
|
||
- added workaround for foolish perl installation on
|
||
debian systems (croak() doesn't work anymore as of
|
||
5.8.4, it's a shame!)
|
||
|
||
- applied patch by Michael Graham which fixes IncludeRelative
|
||
feature, now an included file is being included relative
|
||
to the calling config file, not the first one.
|
||
|
||
- added 'make test' targets for files() and include
|
||
stuff. (by Michael too)
|
||
|
||
|
||
2.27
|
||
- bugfix in _store, which caused warning when saving
|
||
a config containing empty hashes. Reported by
|
||
herbert breunung <deirdre_skye@web.de>.
|
||
|
||
- removed applied patch (added in 2.20), there are no more
|
||
calls to binmode(), this destroys portability, because
|
||
perls determines itself wether it uses \n or \r\n as newline.
|
||
Reported by herbert breunung too.
|
||
|
||
- applied patch by Danial Pearce <danial@infoxchange.net.au>,
|
||
scalars containing a backslash as the last character will
|
||
be written out as here-doc when storing a config to disk.
|
||
|
||
|
||
2.26
|
||
- fixed invalid regexp in _open() which circumvented
|
||
explicit empty block to work when the block statement
|
||
included whitespaces.
|
||
|
||
- more finetuning in Makefile.PL for cleaning emacs'
|
||
~ files.
|
||
|
||
|
||
2.25
|
||
- fixed bug with not working -IncludeRelative setting when
|
||
including a config file. It were only included from the
|
||
location relative to the underlying config if it were
|
||
non-existent. reported by Dmitry Koteroff <dmitry@koteroff.ru>.
|
||
|
||
- applied patch by Danial Pearce <danial@infoxchange.net.au>
|
||
which adds the -BackslashEscape parameter to enable
|
||
general escaping of special characters using the
|
||
backslash.
|
||
|
||
- fixed bug reported by Harold van Oostrom <cpan@lanceerplaats.nl>:
|
||
according to the documentation one can call new() with
|
||
a hash-ref as its single parameter which would then
|
||
used as the config. This didn't work and were fixed.
|
||
|
||
- added feature suggested by Eric Andreychek <eric@openthought.net>:
|
||
now block statements like this are allowed: "<directory blah/>"
|
||
which is called an explicit empty block. This generates just
|
||
an empty hash-ref and saves writing. In fact, internally it
|
||
will be converted to:
|
||
<directory blah>
|
||
</directory>
|
||
|
||
- fixed Makefile.PL: it cleans now files generated by 'make test'
|
||
properly. reported by: Dagfinn Ilmari Manns<6E>ker <ilmari@ilmari.org>
|
||
|
||
- updated MANIFEST (in fact I did this some years ago the last time!)
|
||
also reported by: Dagfinn Ilmari Manns<6E>ker <ilmari@ilmari.org>
|
||
|
||
|
||
2.24
|
||
- fixed Bug #3869 (rt.cpan.org) reported by
|
||
"Mike Depot" <mdepot@comcast.net>
|
||
|
||
- applied patch by Roland Huss <Roland.Huss@consol.de>,
|
||
which fixes a bug with the -Tie option, sub-hashes of
|
||
named blocks were not properly created (in fact, not
|
||
tied).
|
||
|
||
- added documentation to Interpolated.pm that it does not
|
||
interpolate variables in keys, see bug #3773 (rt.cpan.org).
|
||
|
||
|
||
2.23
|
||
- still versioning problem, stupid white man ;-)
|
||
Extended.pm is now 2.00 which *is* higher than 1.10.
|
||
|
||
2.22
|
||
- incremented all version numbers because of cpan problem.
|
||
no further changes. See Bug #3347 (rt.cpan.org).
|
||
|
||
2.21
|
||
- fixed bug in new() used $this instead of $self for empty
|
||
hashref creation if no config file given.
|
||
|
||
2.20
|
||
- fixed bug reported by Stefano di Sandro <stedis@ulis.it>: in
|
||
OOP mode (extended access) the obj() method returned the whole
|
||
config object if the given key does not exist. Now it returns
|
||
a new empty object.
|
||
|
||
- added patch by David Dick <david_dick@iprimus.com.au> which
|
||
sets $/ if it is unset.
|
||
|
||
- added patch by David Dick <david_dick@iprimus.com.au> which
|
||
calls the binmode() function in case the modules is being
|
||
used under win32 systems. Read perldoc -f binmode for more
|
||
informations on this issue.
|
||
|
||
- added feature suggested by Chase Phillips <cmp@uiuc.edu>:
|
||
the new() method has a new parameter -Tie which takes the
|
||
name of a Tie class that each new hash should be based off
|
||
of. This makes it possible to create a config hash with
|
||
ordered contents across nested structures.
|
||
|
||
2.19
|
||
- forgot to import 'catfile' from File::Spec. Bug reported by
|
||
various people.
|
||
|
||
- applied patch by Peter Tandler <Peter.Tandler@ipsi.fhg.de>
|
||
which adds a search-path feature for include files.
|
||
|
||
- applied patch by David Dick <david_dick@iprimus.com.au> which
|
||
adds an auto launder capability to the module which makes it
|
||
possible to use variables read by Config::General in a
|
||
tainted perlscript (executed with -T) for open(), backtick calls
|
||
or something which the taintmode considers to be dangerous.
|
||
|
||
2.18
|
||
- fixed Bug #2325 (rt.cpan.org). The subs exported by File::Spec
|
||
will now imported explicitly.
|
||
- fixed warning about double my'ed variable $dummi, changed it
|
||
to undef because it was unused anyway.
|
||
|
||
2.17
|
||
- added File::Spec support which makes the modules more portable
|
||
(i.e. on win32 systems),
|
||
as suggested by Peter Tandler <Peter.Tandler@ipsi.fhg.de>.
|
||
|
||
2.16
|
||
- applied patch by Michael Gray <mjg17@eng.cam.ac.uk> which
|
||
fixes a bug in the Interpolate.pm submodule. A second variable,
|
||
when immediately following the first, did not get interpolated,
|
||
i.e. ${var1}${var2}.
|
||
|
||
2.15 - fixed Bug in SaveConfig***, which didn't work.
|
||
- applied patch by Robb Canfield <robb@canfield.com>,
|
||
which fixes a bug in the variable interpolation
|
||
scheme. It did not interpolate blocks nor
|
||
blocknames. This patch fixes this. Patch slightly
|
||
modified by me(interpolation on block and blocknames).
|
||
- enhanced test for variable interpolation to
|
||
reflect this.
|
||
- added check if a named block occurs after the underlying
|
||
block is already an array, which is not possible.
|
||
perl cannot add a hashref to an array. i.e.:
|
||
<bl>
|
||
a = 1
|
||
</bl>
|
||
<bl>
|
||
b = 1
|
||
</bl>
|
||
<bl blubber>
|
||
c = 1
|
||
</bl>
|
||
As you can see, "<bl>" will be an array, and "blubber"
|
||
cannot be stored in any way on this array.
|
||
The module croaks now if such construct occurs.
|
||
|
||
2.14 - fixed bug reported by Francisco Olarte Sanz
|
||
<folarte@peoplecall.com>, which caused _parse to
|
||
ignore blocks with the name "0":
|
||
<0> .. </0>, because it checked just if $block (the name
|
||
between < and >) is true, and from the perl point
|
||
of view "0" is not. Changed it to check for defined.
|
||
Normally I avoid using 'defined' but in this case
|
||
it will not be possible that $block contains the
|
||
empty string, so defined is ok here.
|
||
|
||
2.13 - fixed bug reported by Steffen Schwigon <schwigon@webit.de>.
|
||
the parser was still active inside a here-doc, which
|
||
cause weird results if the here-doc contained
|
||
multiple <<XXX strings.
|
||
this bug has been fixed by re-organizing the _read()
|
||
method. now the parser is only active outside of
|
||
here-docs.
|
||
|
||
- here-doc parsing bug fixed, which ignored the
|
||
-SplitPolicy settings completely, now it is aware
|
||
of the split policy
|
||
|
||
2.12 - fixed cpan bugid #1768, stuff inside a hash given
|
||
by the -DefaultConfig parameter was ignored by
|
||
the new interpolation code, this has been fixed.
|
||
|
||
- fixed another bug in the new interpolation code,
|
||
which made variable global, the variable scope
|
||
were ignored. Now a special constructed hash
|
||
exists, which makes sure, that variables only
|
||
valid within its correct scope.
|
||
|
||
2.11 - heavy change in the variable interpolation code.
|
||
Peter Sergeant <pete@clueball.com> reported this
|
||
mis-behavior. The problem was that the whole hash
|
||
was feeded to ::Interpolated.pm, but as we all
|
||
know, perl hashes doesn't preserve the order. So,
|
||
in our case the module sometimes was unable to
|
||
resolve variablenames, because they were stored
|
||
in a different location as it occurred in the config.
|
||
The change is, that Config::General now calls
|
||
::Interpolate.pm (new sub: _interpolate()) itself
|
||
directly on a per-key/value pair basis. The internal
|
||
varstack is now stored on $this globally. So, now
|
||
a variable will be known when it occurs. period :-)
|
||
|
||
|
||
2.10 - added -StrictVars documentation section to the POD,
|
||
which was missing.
|
||
|
||
- fixed a formatting error in the POD documentation.
|
||
|
||
|
||
2.09 - added bugfix in '#' comment parsing. If current state
|
||
was within a block, then /^ #/ was not ignored as
|
||
comment but instead added as variable. Reported by
|
||
Lupe Christoph <lupe@lupe-christoph.de>
|
||
|
||
- added -StrictObjects parameter support in the following
|
||
::Extended methods: hash() and value().
|
||
|
||
- added better parameter checks in the ::Extended::obj()
|
||
method. Its now no more possible to create a new (sub-)
|
||
object from an undefined key or a key which does not
|
||
point to a hash reference.
|
||
|
||
- simplified storing of ConfigFile and ConfigHash in new()
|
||
removed my variable $configfile.
|
||
|
||
- the original parameter list will now be saved, which is
|
||
required for ::Extended to create new objects with the
|
||
same config as their parents.
|
||
|
||
2.08 - added option -StrictVars, which causes Interpolate.pm to
|
||
ignore undefined variables and replaces such occurrences
|
||
with the emppty string.
|
||
|
||
- applied patch by Stefan Moser <sm@open.ch>, which fixes
|
||
some weird bevavior if -MergeDuplicateOptions was turned
|
||
on, the parser croaked regardless -MergeDuplicateBlocks
|
||
was set or not. Now the two options behave almost independent
|
||
from each other, which allows one to merge duplicate
|
||
blocks but duplicate options not.
|
||
|
||
- changed behavior of setting -MergeDuplicateOptions which
|
||
implied in previous versions -AllowMultiOptions to be
|
||
false. Now this will only be done if the user does not
|
||
set -AllowMultiOptions by himself. This allows one to
|
||
have duplicate blocks which will be turned into an
|
||
array but duplicate options to be merged.
|
||
|
||
- applied patch by Matthias Pitzl <matthias@izb.net>, which
|
||
fixes a bug at parsing apache-like include directive
|
||
(Include ...). It did not properly trim unnecessary whitespaces
|
||
so that the filename to be included became invalid. This
|
||
bug espessially occurred if one saved a hash containing
|
||
a key/value pair like this: "Include" => "/etc/grs.cfg",
|
||
which was then saved as "Include /etc/grs.cfg", the
|
||
parser returned " /etc/grs.cfg" which, of course, does
|
||
not exists. odd...
|
||
|
||
2.07 - fixed cpan bugid #1351, SaveConfig contained a deprecated
|
||
function call which caused the module to croak.
|
||
- added feature request, if in extended mode (OOP turned
|
||
on with -ExtendedAccess => 1 access to non-existent keys
|
||
caused a croak. While this is still the default behavior
|
||
it is now possible to turn this off using -StrictObjects => 0.
|
||
- added this to the related pod section in ::Extended.
|
||
- fixed bug in new() which caused a couple of errors
|
||
if the ConfigFile parameter is not set, or is set to
|
||
undef. In this case it will now simply create an empty
|
||
object.
|
||
- fixed related bug in save_file() which will save "" to
|
||
a file now if the config is uninitialized (i.e. the case
|
||
mentioned below arrived).
|
||
|
||
2.06 - added -SplitPolicy, -SplitDelimiter and -StoreDelimiter
|
||
- removed whitespace support in keys in the default parser
|
||
SplitPolicy 'guess', which was introduced in 2.02. Now
|
||
I (re-)use the old regex I used before. if you need
|
||
whitespaces in keys, use 'equalsign' as SplitPolicy.
|
||
- the write_scalar() method uses the StoreDelimiter for
|
||
separating options from values.
|
||
- added -CComments to make it possible to turn c-comment
|
||
parsing off.
|
||
- added support for FileHandle objects as parameter to the
|
||
-ConfigFile parameter. This makes it possible to use locking.
|
||
|
||
2.05 - fixed bug in ::Extended. It exported for some weird
|
||
reason I can't remember all of its methods. This included
|
||
keys() exists() and delete(), which are perl internals.
|
||
If one used keys() on a normal hash, then the ::Extended
|
||
own keys() were used instead of perls own one. I removed
|
||
the export line.
|
||
|
||
2.04 - added RFE from rt.cpan.org (ID: 1218). the ::Interpolate
|
||
module populates now uses of uninitialized variables in
|
||
config files itself instead of just letting perl die().
|
||
The other suggestion of the RFE was declined.
|
||
|
||
2.03 - fixed bug in the _parse() routine (better: design flaw).
|
||
after the last patch for allowing whitespaces in
|
||
option names, it had a problem with here-docs which
|
||
contained equal signs. option/value splitting resulted
|
||
in weird output.
|
||
|
||
- as a side effect of the bug fix below it is now
|
||
possible to use equal signs inside quoted values, which
|
||
will then be ignored, thus not used for splitting
|
||
the line into an option/value assignment.
|
||
|
||
- added a new test, which tests for all possible notations
|
||
of option/value lines.
|
||
|
||
2.02 - added patch by Jens Heunemann, which allows to use
|
||
whitespaces in option names.
|
||
|
||
- changed the save() calls in the test script (t/run.t)
|
||
to save_file()
|
||
|
||
- removed new() from ::Interpolated and ::Extended.
|
||
This may break existing code (they will need to
|
||
move to the flags of Config::General::new() ), but
|
||
this decision must be made. The problem was that
|
||
both the old way of directly using the subclasses
|
||
and the enw way did not work together. So, now
|
||
subclasses are only method holders and used by
|
||
Config::General on request. Direct use of subclasses
|
||
is prohibited. (you receive a warning if you do).
|
||
|
||
|
||
2.01 - added -ConfigFile (in replace for -file) and
|
||
-ConfigHash (in replace for -hash) to get a consistent
|
||
parameter naming scheme. The old names are still
|
||
supported for backward compatibility, but no more
|
||
documented.
|
||
|
||
- the parameter -BaseHash has been dropped because
|
||
-DefaultConfig already has the capabilities of
|
||
defining a custom backing hash. The pod section for
|
||
-DefaultConfig has been enhanced to reflect this.
|
||
|
||
- README changed something. Removed the 'small' keyword,
|
||
because the module isn't really small anymore :-)
|
||
At least IMHO.
|
||
|
||
2.00 - fixed a bug in the ::Extended::keys() method, which
|
||
caused a beloved "use of uninitialized ..." message.
|
||
Reported by Danial Pearce <danial@infoxchange.net.au>.
|
||
|
||
- Removed all deprecated methods (in fact, they are still
|
||
there for shouting out a warn that its deprecated. But
|
||
the pod sections are removed. These are NoMultiOptions()
|
||
and save().
|
||
|
||
- added two new parameters to new(): -InterPolateVars and
|
||
-ExtendedAccess, which allows one to use the functionalites
|
||
of the supplied submodules without the need to decide
|
||
for one of them. This makes it possible to use variable
|
||
interpolation and oop access in the same time. Suggested
|
||
by Jared Rhine <jared@wordzoo.com>.
|
||
|
||
- added new parameter -BaseHash which makes it possible
|
||
to supply your own hash which stores the parsed contents
|
||
of the config. This can be a tied hash o the like.
|
||
Suggested by Jared Rhine <jared@wordzoo.com> too.
|
||
|
||
- switched to release 2.00 because the above is a major
|
||
change.
|
||
|
||
1.36 - simplified new() parameter parsing, should be now a little
|
||
bit better to understand.
|
||
|
||
- added new parameter -DefaultConfig, which can hold a hashref
|
||
or a string, which will be used to pre-define values
|
||
of the resulting hash after parsing a config.
|
||
Thanks to Mark Hampton <mark.hampton@qualis.com> for the
|
||
suggestion.
|
||
|
||
- added new parameter -MergeDuplicateOptions, which allows
|
||
one to overwrite duplicate options, which is required,
|
||
if you turn on -DefaultConfig, because otherwise a
|
||
array would be created, which is probably not what you
|
||
wanted.
|
||
|
||
- added patch by Danial Pearce <danial@infoxchange.net.au>
|
||
to Config::General::Extended::keys(), which allows to
|
||
retrieve the keys of the object itself (which was not
|
||
directly possible before)
|
||
|
||
- added patch by Danial Pearce <danial@infoxchange.net.au>
|
||
to Config::General::Extended::value(), which allows to
|
||
set a value to a (perlish-) nontrue value. This was a
|
||
bug.
|
||
|
||
- added patch by Danial Pearce <danial@infoxchange.net.au>
|
||
to Config::General::_parse_value, which fixes a bug in
|
||
this method, which in prior versions caused values of
|
||
"0" (zero digit) to be wiped out of the config.
|
||
|
||
- added tests in t/run.t for the new default config feature.
|
||
|
||
|
||
|
||
1.35 - the here-doc identifier in saved configs will now created
|
||
in a way which avoids the existence of this identifier
|
||
inside the here-doc, which if it happens results in
|
||
weird behavior in the resulting config.
|
||
|
||
1.34 - Danial Pearce <danial@infoxchange.net.au> reported a bug
|
||
in _store(), which caused the module to create scalar
|
||
entries even if the entry contained newlines. While
|
||
Danial supplied a patch to fix this - thx(TM) - I
|
||
did not apply it, because I "outsourced" this kind of
|
||
stuff to the subroutine _write_scalar(), see next.
|
||
|
||
- added internal methods _write_scalar() and _write_hash()
|
||
to simplify _store(), which did the same thing more
|
||
than once, which is a good time to create a sub which
|
||
does the job.
|
||
|
||
- fixed cut'n paste bug in General/Extended.pm reported by
|
||
Danial Pearce <danial@infoxchange.net.au>, which caused
|
||
Config::General::Extended::is_scalar() to return true even
|
||
when the key you pass in is an array.
|
||
|
||
- added new method Config::General::Extended::delete() suggested
|
||
by Danial Pearce <danial@infoxchange.net.au>, which deletes
|
||
the given key from the config.
|
||
|
||
1.33 - fixed bug in _parse_value() which caused perl to complain
|
||
with "Use of uninitialized value in..." if a value was
|
||
empty.
|
||
|
||
|
||
1.32 - *argl* ... I forgot Interpolated.pm, don't know how that
|
||
could happen, in 1.29 it was "lost". However -
|
||
I added it again now.
|
||
- added patch by Peder Stray <peder@linpro.no> to
|
||
the _store() method, which makes it possible to catch
|
||
arrays of hashes to be stored correctly.
|
||
- cleaned up the t/run.t testscript to reflect the
|
||
changes (in fact I did not touch it since 1.18 or so).
|
||
- added test number 16 to test variable interpolation
|
||
using ::Interpolated in t/run.t.
|
||
- fixed bug with new() parameter -AllowMultiOptions which
|
||
generated a croak() if set to something other than "no".
|
||
- changed Extended::save() to reflect the API change,
|
||
it calls now save_file().
|
||
|
||
1.31: - i'm such a moron ... I forgot to do a make clean
|
||
in 1.30, pf. So this is 1.31, which is clean.
|
||
|
||
1.30: - fixed typo, which made 1.29 unusable (undefined var %config)
|
||
- added code to check if unknown parameters to new()
|
||
has been supplied.
|
||
|
||
1.29:
|
||
- added 2 procedural functions ParseConf and SaveConf
|
||
- added new parameters -AutoTrue and -FlagBits
|
||
- added save_file() which replaces save(), which was
|
||
weird implemented. If the user only supplied a hash
|
||
as parameter to save(), then the first key was
|
||
used as the filename and the rest was used
|
||
as a config hash (which was then of an uneven size).
|
||
- save_file() takes now instead of a hash a hash-ref
|
||
and a filename. And the hashref is optional, since
|
||
the object already contains a complete hash.
|
||
- new method save_string() added, which returns the
|
||
ready generated string instead of writing it to
|
||
disk. The user can then save it himself.
|
||
- POD updated.
|
||
|
||
1.28:
|
||
- added contributed sub module Config::General::Interpolated
|
||
by "Wei-Hon Chen" <plasmaball@pchome.com.tw> with
|
||
help from "Autrijus Tang" <autrijus@autrijus.org>
|
||
which makes it possible to use variables inside
|
||
config files.
|
||
- _read() accepts now c-comments inside c-comments if
|
||
they are on a single line.
|
||
- _read() is now more tolerant to here-identifiers
|
||
(the ends of here-docs), whitespaces right after
|
||
such an identifier are allowed (i.e. "EOF ").
|
||
- _read() does now behave somewhat different with
|
||
C-comments, they will be the first thing being
|
||
processed in a config, so the parser really
|
||
ignores everything inside C-comments. Previously
|
||
it did not do that, for example here-docs has
|
||
not been ignored.
|
||
|
||
1.27: - "make test" complained about uninitialized value
|
||
in :146, which is now fixed.
|
||
|
||
1.26: - added filehandle capability to -file.
|
||
- added -String parameter to new(), which allows
|
||
one to supply the whole config as a string.
|
||
- added -MergeDuplicateBlocks option, which causes
|
||
duplicate blocks to be merged.
|
||
|
||
1.25: - include statements are now case insensitive
|
||
- include statements may now also being used with
|
||
indentation(leading and following whitespaces are
|
||
allowed)
|
||
- changed the end here-doc regexp from .+? to \S+?
|
||
so " <<include..." works as expected (this was a bug, imo)
|
||
- added new option -IncludeRelative (idea contributed
|
||
by Valerio_Valdez Paolini <paolini@students.cs.unibo.it>
|
||
and Anton Luht <luht@ank.ru> :-)
|
||
This allows to include files from the location of
|
||
the configfile instead from the working directory.
|
||
|
||
1.24: - AllowMultiOptions printed out the value and not the
|
||
option itself, if more than one of this particular
|
||
option occurred.
|
||
- added -UseApacheInclude feature, contributed by
|
||
Thomas Klausner <domm@zsi.at>
|
||
- fixed bug with multiple options stuff, which did not
|
||
work with blocks or named blocks. Pointed out by
|
||
Thomas Klausner <domm@zsi.at>, who meant it being
|
||
feature request, but in fact it was a bug (IMHO).
|
||
- Config::General does now contain also it's OO-sister
|
||
Config::General::Extended, which is from now on
|
||
no more available as an extra module, because it
|
||
lived a shadowy existence.
|
||
- finally(!) created a Changelog file (this one, yes).
|
||
|
||
1.23: - fixed bug, which removed trailing or leading " even
|
||
no matching " was there.
|
||
|
||
1.22: - added a new option to new(): -LowerCaseNames, which
|
||
lowercases all option-names (feature request)
|
||
|
||
1.21: - lines with just one "#" became an option array named
|
||
"#" with empty entries, very weird, fixed
|
||
|
||
1.20: - added an if(exists... to new() for checking of the
|
||
existence of -AllowMultiOptions.
|
||
- use now "local $_" because it caused weird results
|
||
if a user used $_ with the module.
|
||
|
||
1.19: - you can escape "#" characters using a backslash: "\#"
|
||
which will now no more treated as a comment.
|
||
- comments inside here-documents will now remain in the
|
||
here-doc value.
|
||
|
||
history logs 1.17+1.18 are lost in space :-(
|
||
|
||
older history logs (stripped from CVS):
|
||
|
||
revision 1.16
|
||
date: 2000/08/03 16:54:58; author: jens; state: Exp; lines: +4 -1
|
||
# Local Variables: ***
|
||
# perl-master-file: ../../webmin/index.pl ***
|
||
# End: ***
|
||
|
||
rangeh<EFBFBD>ngt, damit ich mit C-c d das debugging von jedem File aus
|
||
einschalten kann
|
||
(siehe mein .emacs file)
|
||
----------------------------
|
||
revision 1.15
|
||
date: 2000/08/01 09:12:52; author: tom; state: Exp; lines: +57 -68
|
||
added comments to _open() and _parse()
|
||
----------------------------
|
||
revision 1.14
|
||
date: 2000/07/31 18:07:12; author: tom; state: Exp; lines: +44 -19
|
||
added <<include ... >> capability
|
||
----------------------------
|
||
revision 1.13
|
||
date: 2000/07/16 18:35:33; author: tom; state: Exp; lines: +135 -10
|
||
added here-doc and multi-line feature, updated perlpod
|
||
----------------------------
|
||
revision 1.12
|
||
date: 2000/07/14 14:56:09; author: tom; state: Exp; lines: +2 -2
|
||
bug fixed, it did not ignore options inside c-comments with a # comment
|
||
@ the end of line
|
||
----------------------------
|
||
revision 1.11
|
||
date: 2000/07/14 11:26:04; author: tom; state: Exp; lines: +42 -6
|
||
added C-Style comments and allow also comments after a statement.
|
||
----------------------------
|
||
revision 1.10
|
||
date: 2000/07/12 14:04:51; author: tom; state: Exp; lines: +2 -1
|
||
i woas ned
|
||
----------------------------
|
||
revision 1.9
|
||
date: 2000/07/12 10:59:53; author: jens; state: Exp; lines: +5 -3
|
||
hehe :)
|
||
----------------------------
|
||
revision 1.8
|
||
date: 2000/07/12 10:43:20; author: tom; state: Exp; lines: +5 -2
|
||
fixed bug in getall(), which doubled %config if called more than onse.
|
||
----------------------------
|
||
revision 1.7
|
||
date: 2000/07/12 09:09:33; author: tom; state: Exp; lines: +22 -24
|
||
100% Apache Config complete ;-) it supports now "named blocks"!
|
||
----------------------------
|
||
revision 1.6
|
||
date: 2000/07/11 23:43:03; author: tom; state: Exp; lines: +72 -19
|
||
added named block support (<server holland>)
|
||
----------------------------
|
||
revision 1.5
|
||
date: 2000/07/11 20:49:47; author: tom; state: Exp; lines: +2 -2
|
||
typo in pod corrected
|
||
----------------------------
|
||
revision 1.4
|
||
date: 2000/07/11 17:07:04; author: tom; state: Exp; lines: +61 -7
|
||
a config file can now contain an option more than once and will be
|
||
returned as array
|
||
----------------------------
|
||
revision 1.3
|
||
date: 2000/07/07 11:27:38; author: cvs; state: Exp; lines: +2 -2
|
||
folgende Parameterform geht jetzt auch:
|
||
parameter= blabla
|
||
|
||
vorher musste man
|
||
parameter = blabla
|
||
schreiben
|
||
----------------------------
|
||
revision 1.2
|
||
date: 2000/07/04 13:21:12; author: tom; state: Exp; lines: +9 -4
|
||
added better failurehandling in case of missing block start/end statements
|
||
----------------------------
|
||
revision 1.1
|
||
date: 2000/07/04 12:52:09; author: tom; state: Exp;
|
||
implemented module and method getall, works as expected.
|
||
|