r3666 - in /packages/libconfig-file-perl: ./ branches/ branches/upstream/ branches/upstream/current/ branches/upstream/current/lib/ branches/upstream/current/lib/Config/ branches/upstream/current/t/ tags/

gwolf at users.alioth.debian.org gwolf at users.alioth.debian.org
Thu Sep 7 23:14:00 UTC 2006


Author: gwolf
Date: Thu Sep  7 23:13:59 2006
New Revision: 3666

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=3666
Log:
[svn-inject] Installing original source of libconfig-file-perl

Added:
    packages/libconfig-file-perl/
    packages/libconfig-file-perl/branches/
    packages/libconfig-file-perl/branches/upstream/
    packages/libconfig-file-perl/branches/upstream/current/
    packages/libconfig-file-perl/branches/upstream/current/MANIFEST
    packages/libconfig-file-perl/branches/upstream/current/META.yml
    packages/libconfig-file-perl/branches/upstream/current/Makefile.PL
    packages/libconfig-file-perl/branches/upstream/current/lib/
    packages/libconfig-file-perl/branches/upstream/current/lib/Config/
    packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm   (with props)
    packages/libconfig-file-perl/branches/upstream/current/lib/ConfigFile.pm
    packages/libconfig-file-perl/branches/upstream/current/t/
    packages/libconfig-file-perl/branches/upstream/current/t/config
    packages/libconfig-file-perl/branches/upstream/current/t/test.t   (with props)
    packages/libconfig-file-perl/tags/

Added: packages/libconfig-file-perl/branches/upstream/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/MANIFEST?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/MANIFEST (added)
+++ packages/libconfig-file-perl/branches/upstream/current/MANIFEST Thu Sep  7 23:13:59 2006
@@ -1,0 +1,7 @@
+Makefile.PL
+t/config
+t/test.t
+MANIFEST
+lib/Config/File.pm
+lib/ConfigFile.pm
+META.yml                                 Module meta-data (added by MakeMaker)

Added: packages/libconfig-file-perl/branches/upstream/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/META.yml?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/META.yml (added)
+++ packages/libconfig-file-perl/branches/upstream/current/META.yml Thu Sep  7 23:13:59 2006
@@ -1,0 +1,10 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
+name:         Config-File
+version:      1.4
+version_from: lib/Config/File.pm
+installdirs:  site
+requires:
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.30_01

Added: packages/libconfig-file-perl/branches/upstream/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/Makefile.PL?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/Makefile.PL (added)
+++ packages/libconfig-file-perl/branches/upstream/current/Makefile.PL Thu Sep  7 23:13:59 2006
@@ -1,0 +1,7 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+    'NAME'              => 'Config::File',
+    'VERSION_FROM'      => 'lib/Config/File.pm', # finds $VERSION
+);

Added: packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm (added)
+++ packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm Thu Sep  7 23:13:59 2006
@@ -1,0 +1,180 @@
+#!/usr/bin/perl -w
+
+package Config::File;
+
+use strict;
+use Carp;
+use Exporter;
+use IO::File;
+
+our ($VERSION, @ISA, @EXPORT_OK);
+ at ISA = qw/Exporter/;
+ at EXPORT_OK = qw/read_config_file/;
+$VERSION='1.4';
+
+
+sub read_config_file($) {
+    my ($conf, $file, $fh, $line_num);
+    $file = shift;
+    $fh = IO::File->new($file, 'r') or
+        croak "Can't read configuration in $file: $!\n";
+
+    while (++$line_num and my $line = $fh->getline) {
+        my ($orig_line, $conf_ele, $conf_data);
+        chomp $line;
+	$orig_line = $line;
+
+        next if $line =~ m/^\s*#/;
+        $line =~ s/(?<!\\)#.*$//;
+        $line =~ s/\\#/#/g;
+        next if $line =~ m/^\s*$/;
+        $line =~ s{\$(\w+)}{
+            exists($conf->{$1}) ? $conf->{$1} : "\$$1"
+            }gsex;
+        
+
+	unless ($line =~ m/\s*([^\s=]+)\s*=\s*(.*?)\s*$/) {
+	    warn "Line format invalid at line $line_num: '$orig_line'";
+	    next;
+	}
+
+        ($conf_ele, $conf_data) = ($1, $2);
+        unless ($conf_ele =~ /^[\]\[A-Za-z0-9_-]+$/) {
+            warn "Invalid characters in key $conf_ele at line $line_num" .
+		" - Ignoring";
+            next;
+        }
+        $conf_ele = '$conf->{' . join("}->{", split /[][]+/, $conf_ele) . "}";
+        $conf_data =~ s!([\\\'])!\\$1!g;
+        eval "$conf_ele = '$conf_data'";
+    }
+
+    return $conf;
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+Config::File - Parse a simple configuration file
+
+=head1 SYNOPSIS
+
+use Config::File;
+
+my $config_hash = Config::File::read_config_file($configuration_file);
+
+=head1 DESCRIPTION
+
+C<read_config_file> parses a simple configuration file and stores its
+values in an anonymous hash reference. The syntax of the configuration
+file is quite simple:
+
+    # This is a comment
+    VALUE_ONE = foo
+    VALUE_TWO = $VALUE_ONE/bar
+    VALUE_THREE = The value contains a \# (hash). # This is a comment.
+
+Options can be clustered when creating groups:
+
+    CLUSTER_ONE[data] = data cluster one
+    CLUSTER_ONE[value] = value cluster one
+    CLUSTER_TWO[data] = data cluster two
+    CLUSTER_TWO[value] = value cluster two
+
+Then values can be fetched using this syntax:
+
+    $hash_config->{CLUSTER_ONE}{data};
+
+There can be as many sub-options in a cluster as needed.
+
+    BIG_CLUSTER[part1][part2][part3] = data
+
+is fetched by:
+    $hash_config->{BIG_CLUSTER}{part1}{part2}{part3};
+
+There are a couple of restrictions as for the names of the keys. First of all,
+all the characters should be alphabetic, numeric, underscores or hyphens, with
+square brackets allowed for the clustering. That is, the keys should conform
+to /^[A-Za-z0-9_-]+$/
+
+This means also that no space is allowed in the key part of the line.
+
+    CLUSTER_ONE[data] = data cluster one      # Right
+    CLUSTER_ONE[ data ] = data cluster one    # Wrong
+
+
+=head1 Function C<read_config_file>
+
+=head2 Syntax
+
+    Config::File::read_config_file($file);
+
+=head2 Arguments
+
+C<$file> is the configuration file.
+
+=head2 Return value
+
+This function returns a hash reference. Each key of the hash is a
+value defined in the configuration file.
+
+=head2 Description
+
+C<read_config_file> parses a configuration file a sets up some values 
+in a hash reference.
+
+=head1 NOTES
+
+=head2 Function not exported by default
+
+In versions up to 1.0, the function read_config_file was exported to the
+calling program's namespace - Starting in version 1.1, nothing is exported
+by default. You can either fully qualify read_config_file or explicitly
+import it into your namespace:
+
+=over 4
+
+=item Fully qualifying read_config_file
+
+  use Config::File;
+
+  my $config_hash = Config::File::read_config_file($configuration_file);
+
+=item Explicitly importing read_config_file
+
+  use Config::File qw(read_config_file);
+
+  my $config_hash = read_config_file($configuration_file);
+
+=back
+
+=head2 Migrated away from ConfigFile into Config::File
+
+As of version 1.4, in order to include this module in the CPAN, I decided to
+move away from the highly unstandard name of ConfigFile and rename the module
+to Config::File. A small redirecting module is put in place, so current code
+using this module does not break, but the ConfigFile namespace usage is
+deprecated (and will thus issue a warning). Please update your code!
+
+=head1 AUTHOR
+
+Development was started by Sebastien J. Gross <seb at sjgross.org>, and since 
+2003 it is maintained by Gunnar Wolf <gwolf at gwolf.org>.
+
+All rights reserved.  This program is free software; you can redistribute
+it and/or modify it under the terms of the GPL.
+
+=head1 VERSION
+
+Version 1.4
+Copyright (c) 2002 Sebastien J. Gross. All rights reserved.
+Copyright (c) 2003,2006 Gunnar Wolf. All rights reserved.
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GPL.
+
+=cut

Propchange: packages/libconfig-file-perl/branches/upstream/current/lib/Config/File.pm
------------------------------------------------------------------------------
    svn:executable = 

Added: packages/libconfig-file-perl/branches/upstream/current/lib/ConfigFile.pm
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/lib/ConfigFile.pm?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/lib/ConfigFile.pm (added)
+++ packages/libconfig-file-perl/branches/upstream/current/lib/ConfigFile.pm Thu Sep  7 23:13:59 2006
@@ -1,0 +1,32 @@
+package ConfigFile;
+use Config::File qw/read_config_file/;
+use Carp;
+use strict;
+
+our (@ISA, @EXPORT_OK);
+ at ISA = qw/Config::File/;
+ at EXPORT_OK = qw/read_config_file/;
+
+carp "Direct ConfigFile usage is deprecated, please use Config::File instead";
+
+1;
+
+=head1 NAME
+
+ConfigFile - Temporary wrapper to still let you use Config::File 
+
+=head1 SYNOPSIS
+
+This module evolved as ConfigFile, but was renamed into L<Config::File> in order
+to conform with CPAN's guidelines.
+
+ConfigFile will still be temporarily packaged, but its usage is deprecated.
+
+=head1 AUTHOR
+
+This module was written by Gunnar Wolf <gwolf at gwolf.org>.
+
+All rights reserved.  This program is free software; you can redistribute
+it and/or modify it under the terms of the GPL.
+
+=cut

Added: packages/libconfig-file-perl/branches/upstream/current/t/config
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/t/config?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/t/config (added)
+++ packages/libconfig-file-perl/branches/upstream/current/t/config Thu Sep  7 23:13:59 2006
@@ -1,0 +1,11 @@
+# This is a comment
+foo = bar
+bar = $foo/bar
+foobar = $bar \# variable \# #comment
+dummy[1] = data 1
+dummy[2] = data 2
+dummy[3] = data 3
+quoted = "foo 'bar baz'"
+comment_limit = Complete value#this is discarded
+to'be^ignored = This should not exist
+malformed line that should be also dropped (no equal sign)

Added: packages/libconfig-file-perl/branches/upstream/current/t/test.t
URL: http://svn.debian.org/wsvn/pkg-perl/packages/libconfig-file-perl/branches/upstream/current/t/test.t?rev=3666&op=file
==============================================================================
--- packages/libconfig-file-perl/branches/upstream/current/t/test.t (added)
+++ packages/libconfig-file-perl/branches/upstream/current/t/test.t Thu Sep  7 23:13:59 2006
@@ -1,0 +1,41 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Test;
+#use warnings;
+
+# First check that the module loads OK.
+use vars qw($loaded);
+BEGIN {  $| = 1;  plan tests => 11; }
+END {print "not ok 1\n" unless $loaded;}
+
+use Config::File;
+print "! Testing module load ...\n";
+ok(++$loaded);
+
+print "! Testing constructor ...\n";
+my $config = Config::File::read_config_file("t/config");
+ok($config);
+
+print "! Testing simple values ...\n";
+ok($config->{foo}, 'bar');
+
+print "! Testing embeded values ...\n";
+ok($config->{bar}, 'bar/bar');
+
+print "! Testing comments do not affect prior characters ...\n";
+ok($config->{comment_limit}, 'Complete value');
+
+print "! Testing embeded values with comment...\n";
+ok($config->{foobar}, 'bar/bar # variable #');
+
+print "! Testing quotes within values...\n(got: $config->{quoted}\n\n";
+ok($config->{quoted}, '"foo \'bar baz\'"');
+
+print "! Testing clustered values...\n";
+ok($config->{dummy}->{1}, 'data 1');
+ok($config->{dummy}->{2}, 'data 2');
+ok($config->{dummy}->{3}, 'data 3');
+
+print "! Testing whether we correctly ignore invalid keys\n";
+ok(scalar(keys %$config), 6);

Propchange: packages/libconfig-file-perl/branches/upstream/current/t/test.t
------------------------------------------------------------------------------
    svn:executable = 




More information about the Pkg-perl-cvs-commits mailing list