cvsuser     05/01/07 05:04:38

  Modified:    App-Options/lib/App Options.pm
  Log:
  nesting one-line sections, allow prefix to be set in prog_dir/app.conf
  
  Revision  Changes    Path
  1.11      +18 -11    p5ee/App-Options/lib/App/Options.pm
  
  Index: Options.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/lib/App/Options.pm,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Options.pm        28 Dec 2004 22:32:44 -0000      1.10
  +++ Options.pm        7 Jan 2005 13:04:38 -0000       1.11
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: Options.pm,v 1.10 2004/12/28 22:32:44 spadkins Exp $
  +## $Id: Options.pm,v 1.11 2005/01/07 13:04:38 spadkins Exp $
   #############################################################################
   
   package App::Options;
  @@ -14,7 +14,7 @@
   use File::Spec;
   use Config;
   
  -$VERSION = "0.91";
  +$VERSION = "0.93";
   
   =head1 NAME
   
  @@ -195,7 +195,7 @@
   
       Or we could have used a more full-featured version ...
   
  -    App::Options->init(
  +    use App::Options (
           values => \%MyPackage::options,
           options => [ "option_file", "prefix", "app",
                        "perlinc", "debug_options", "import", ],
  @@ -423,6 +423,7 @@
       my $prog_cat = "";                   # start with no catalog
       my $prog_dir = $0;                   # start with the full script path
       if ($is_unix) {
  +        # i.e. /usr/local/bin/app, /app
           if ($prog_dir =~ m!^/!) {            # absolute path
               # i.e. /usr/local/bin/app, /app
               $prog_dir =~ s!/[^/]+$!!;        # trim off the program name
  @@ -434,7 +435,7 @@
           }
       }
       else {
  -        # i.e. /usr/local/bin/app, /app
  +        # i.e. C:\perl\bin\app, \app
           my ($file);
           ($prog_cat, $prog_dir, $file) = File::Spec->splitpath($prog_dir);
       }
  @@ -541,7 +542,14 @@
           my ($cond, @cond, $exclude);
           while ($#option_file > -1) {
               $option_file = shift(@option_file);
  -            $option_file =~ s!\$\{prefix\}!$prefix!;
  +            if ($option_file =~ m!\$\{prefix\}!) {
  +                if ($values->{prefix}) {
  +                    $option_file =~ s!\$\{prefix\}!$values->{prefix}!;
  +                }
  +                else {
  +                    $option_file =~ s!\$\{prefix\}!$prefix!;
  +                }
  +            }
               $exclude_section = 0;
               print STDERR "   Looking for Option File [$option_file]\n" if 
($debug_options >= 2);
               if (open(App::Options::FILE, "< $option_file")) {
  @@ -551,7 +559,7 @@
                       print STDERR "   [$exclude_section] $_\n" if 
($debug_options >= 5);
                       # for lines that are like "[regexp]" or even "[regexp] 
var = value"
                       # or "[value;var=value]" or 
"[/regexp/;var1=value1;var2=/regexp2/]"
  -                    if (s|^ *\[([^\[\]]*)\] *||) {
  +                    if (s!^ *\[(.*)\] *!!) {
                           print STDERR "     Section : [$1]\n" if 
($debug_options >= 6);
                           @cond = split(/;/,$1);   # separate the conditions 
that must be satisfied
                           $exclude = 0;            # assume the condition 
allows inclusion (! $exclude)
  @@ -566,7 +574,7 @@
                               }
                               if ($value =~ m!^/(.*)/$!) {  # variable's value 
must match the regexp
                                   $regexp = $1;
  -                                $exclude = ((defined $values->{$var} ? 
$values->{$var} : "") !~ /$regexp/);
  +                                $exclude = ((defined $values->{$var} ? 
$values->{$var} : "") !~ /$regexp/) ? 1 : 0;
                                   print STDERR "       Cond var=[$var] 
value=[$value] : exclude=($exclude) regexp=[$regexp]\n"
                                       if ($debug_options >= 6);
                               }
  @@ -576,7 +584,7 @@
                                       if ($debug_options >= 6);
                               }
                               else {  # a variable's value must match exactly
  -                                $exclude = ((defined $values->{$var} ? 
$values->{$var} : "") ne $value);
  +                                $exclude = ((defined $values->{$var} ? 
$values->{$var} : "") ne $value) ? 1 : 0;
                                   print STDERR "       Cond var=[$var] 
value=[$value] : exclude=($exclude) equals\n"
                                       if ($debug_options >= 6);
                               }
  @@ -593,9 +601,8 @@
                               next;
                           }
                       }
  -                    else {
  -                        next if ($exclude_section);
  -                    }
  +                    next if ($exclude_section);
  +
                       s/#.*$//;        # delete comments
                       s/^ +//;         # delete leading spaces
                       s/ +$//;         # delete trailing spaces
  
  
  

Reply via email to