Changeset 2227 for trunk


Ignore:
Timestamp:
02/27/19 23:11:17 (5 years ago)
Author:
nanardon
Message:

Improve queryformat (like rpm macro: ? ?\!)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Bases/Objects.pm

    r2219 r2227  
    310310    $fmt =~ s/\\n/\n/g; 
    311311    $fmt =~ s/\\t/\t/g; 
    312     $fmt =~ s! 
    313         (?:%\{([^:}]*)(?::([^}]+))?\}) 
    314         ! 
    315         my $val = $self->get_c_field($1); 
    316         sprintf('%' . ($2 || 's'), ref $val ? join(',', @$val) : (defined($val) ? $val : '')) 
    317         !egx; 
     312 
     313    my $old; 
     314    do { 
     315        $old = $fmt; 
     316        $fmt =~ s&(?:%\{([\?!]+)?([^:}%]*)(?::([^}%]*))?\})& 
     317            my $op = $1; 
     318            my $val = $self->get_c_field($2); 
     319            my $modifier = $3 || ''; 
     320            my $res = ''; 
     321 
     322            if (!$op) { 
     323                for ($modifier) { 
     324                    /upper/ and do { 
     325                        $res = uc($val); 
     326                        last; 
     327                    }; 
     328                    /lower/ and do { 
     329                        $res = lc($val); 
     330                        last; 
     331                    }; 
     332                    $res = sprintf('%' . ($3 || 's'), ref $val ? join(',', @$val) : (defined($val) ? $val : '')) 
     333                } 
     334            } elsif ($op eq '?') { 
     335                $res = $val ? $3 : ''; 
     336            } elsif ($op eq '?!') { 
     337                $res = $val ? '' : $3; 
     338            } 
     339            $res 
     340        &egx; 
     341    } while($old ne $fmt); 
    318342    $fmt; 
    319343} 
Note: See TracChangeset for help on using the changeset viewer.