Changeset 10891


Ignore:
Timestamp:
2005-11-14T14:30:03+13:00 (18 years ago)
Author:
kjdon
Message:

when parsing options, once something has been set in , then don't override it with a superclass option. what was happening was that when processing the option lists (and setting default values for options that weren't specified by user) any superclass args were overriding the subclass args. eg. PSPlug, convert_to default is text, COnvertToPlug default is auto, so self->convert_to was getting set to text, then to auto. once its set to text, then we ignore any other defaults.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/parse2.pm

    r10620 r10891  
    286286    {
    287287    my $strArgName = $hashOneArg->{"name"};
    288    
     288
    289289    # If the strArgName has defined in the %hashInputArg,
    290290    # this means users has give this argument, store the
     
    292292    if(defined $hashInputArg{$strArgName})
    293293    {
    294         if(defined $hashOneArg->{"range"})
     294        if(defined $hashOneArg->{"range"}) 
    295295        {
    296296        if(checkRange($hashOneArg->{"range"},$hashInputArg{$strArgName},$strArgName) == 0){ return 0;}
     
    302302        $self->{"$strArgName"} = $hashInputArg{"$strArgName"};
    303303    }
    304 
    305     # Else use the default value of the arguments,
    306     # if there is no default value, then it must be a flag,
    307     # then set it to 0 (which is false)
    308     else
    309     {
     304    elsif (!defined $self->{$strArgName})
     305    {
     306        # don't want to override default with superclass value
     307     
     308        # Else use the default value of the arguments,
     309        # if there is no default value, then it must be a flag,
     310        # then set it to 0 (which is false)
     311   
    310312        if(defined $hashOneArg->{"deft"})
    311313        {
     
    314316        else
    315317        {
    316         if($hashOneArg->{"type"} eq "flag"){ $self->{"$strArgName"} = 0;}
    317         elsif($hashOneArg->{"type"} eq "string"){ $self->{"$strArgName"} = "";}
    318         elsif($hashOneArg->{"type"} eq "int"){ $self->{"$strArgName"} = "";}
    319         elsif($hashOneArg->{"type"} eq "enum"){ $self->{"$strArgName"} = "";}
    320         elsif($hashOneArg->{"type"} eq "metadata"){ $self->{"$strArgName"} = "";}
    321         else{die "other type without default value:$hashOneArg->{\"type\"}\n";}
    322         }
    323     }
    324    
     318        if($hashOneArg->{"type"} eq "flag"){
     319            $self->{"$strArgName"} = 0;
     320        }
     321        else {
     322            # all other cases, use "" as default
     323            $self->{"$strArgName"} = "";
     324        }
     325        }
     326    }
    325327    }
    326328
Note: See TracChangeset for help on using the changeset viewer.