--- nfo/perl/libs/Getopt/Simple.pm 2002/12/22 14:16:23 1.1 +++ nfo/perl/libs/Getopt/Simple.pm 2002/12/23 04:27:03 1.2 @@ -1,7 +1,10 @@ ## ------------------------------------------------------------------------ -## $Id: Simple.pm,v 1.1 2002/12/22 14:16:23 joko Exp $ +## $Id: Simple.pm,v 1.2 2002/12/23 04:27:03 joko Exp $ ## ------------------------------------------------------------------------ ## $Log: Simple.pm,v $ +## Revision 1.2 2002/12/23 04:27:03 joko +## + refactored, more oo-style now +## ## Revision 1.1 2002/12/22 14:16:23 joko ## + initial check-in ## @@ -19,6 +22,15 @@ my $opt; +sub _cb_readOption { + #my $self = shift; + my $opt_name = shift; + my $opt_value = shift; + $opt_value ||= 1; + $opt->{$opt_name} = $opt_value; + #$self->{$opt_name} = $opt_value; +} + sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; @@ -29,35 +41,37 @@ my @fields = @_; # build mapping (hash with argument as key and callback (CODEref) as value) - my $getopt_optionmapping = []; + $self->{__possible} = []; + $self->{__available} = []; + $self->{__result} = {}; + $self->{__getopt_mapping} = []; #foreach (@$fields) { foreach (@fields) { - #$option_mapping->{$_} = \&rOpt; - push @$getopt_optionmapping, $_; - push @$getopt_optionmapping, \&rOpt; + + my $key = $_; + $key =~ s/=.*$//; + push @{$self->{__possible}}, $key; + + + #$option_mapping->{$_} = \&readOption; + push @{$self->{__getopt_mapping}}, $_; + push @{$self->{__getopt_mapping}}, \&_cb_readOption; } - # V1: - # GetOptions( - # 'force' => \&rOpt, - # ); - - # V2: - GetOptions(@$getopt_optionmapping); + GetOptions(@{$self->{__getopt_mapping}}); foreach my $key (keys %{$opt}) { + push @{$self->{__available}}, $key; + $self->{__result}->{$key} = $opt->{$key}; + # for convenience: store inside object itself, too $self->{$key} = $opt->{$key}; } return $self; } -sub rOpt { - #my $self = shift; - my $opt_name = shift; - my $opt_value = shift; - $opt_value ||= 1; - $opt->{$opt_name} = $opt_value; - #$self->{$opt_name} = $opt_value; +sub getOptions { + my $self = shift; + return $self->{__result}; } 1;