/[cvs]/nfo/perl/libs/Getopt/Easy.pm
ViewVC logotype

Contents of /nfo/perl/libs/Getopt/Easy.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Sat Feb 1 02:59:59 2003 UTC (21 years, 3 months ago) by joko
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +6 -3 lines
+ modified option/argument-detection regex

1 ## ------------------------------------------------------------------------
2 ## $Id: Easy.pm,v 1.1 2003/02/01 01:57:56 joko Exp $
3 ## ------------------------------------------------------------------------
4 ## $Log: Easy.pm,v $
5 ## Revision 1.1 2003/02/01 01:57:56 joko
6 ## + initial commit - partly refactored replace_cvs/replace_cvs.pl
7 ##
8 ## ------------------------------------------------------------------------
9
10
11 package Getopt::Easy;
12
13 use strict;
14 use warnings;
15
16 use base qw( DesignPattern::Object );
17
18
19 use Data::Dumper;
20 #use Getopt::Long;
21 use Hash::Merge qw( merge );
22
23 # TODO: remember last used behaviour and restore to it after usage
24 Hash::Merge::set_behavior( 'RIGHT_PRECEDENT' );
25
26
27 sub merge_defaults {
28 my $self = shift;
29 my $defaults = shift;
30 my $prefs = {};
31 $self->{_meta} = merge($prefs, $defaults);
32 }
33
34 sub merge_cli_arguments {
35 my $self = shift;
36 #my $prefs = $self->{_meta};
37 #print Dumper($self->{_meta});
38 # read arguments from cli
39 #my $settings = {};
40 my $settings_tmp = {};
41 #my $args = [];
42 my $args;
43 while (my $arg = shift @ARGV) {
44 next if !$arg;
45 if ($arg =~ m/^--([\w|\-|\.]+)(=.+?)??$/) {
46 my $val = $2;
47 if ($val) {
48 $val =~ s/^=//;
49 } else {
50 $val = 1;
51 }
52 $settings_tmp->{options}->{$1} = $val;
53 next;
54 }
55 #push @{$settings_tmp->{args}}, $arg;
56 push @{$args}, $arg;
57 }
58 #print Dumper($settings_tmp);
59 my $new = merge($self->{_meta}, $settings_tmp);
60 $new->{args} = $args if $args;
61 #print Dumper($new);
62 #return $new;
63 $self->{_meta} = $new;
64 }
65
66 sub getOptions {
67 my $self = shift;
68 return $self->{_meta};
69 }
70
71 1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed