Changeset 2447
- Timestamp:
- 10/27/20 08:49:06 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Cli/Object.pm
r2446 r2447 380 380 }, 381 381 }); 382 $self->add_func('sed', { 383 help => 'Apply regular expression on curent attribute', 384 code => sub { 385 my ($env, $attr, $reg) = @_; 382 383 =head3 show 384 385 grep ATTRIBUTE REGEXP 386 387 Show value on specified attribute matching RE 388 389 =cut 390 391 $self->add_func('grep', { 392 help => 'Find value matching regular expression on given attribute', 393 code => sub { 394 my ($env, @args) = @_; 395 my ( $attr, $reg ) = $self->getoption( 396 { 397 'i' => \my $icase, 398 }, @args 399 ); 386 400 $reg or do { 387 401 $self->print( "attribute and value must be specified\n" ); 388 402 return; 389 403 }; 404 my $reopt = ''; 405 $reopt .= 'i' if($icase); 406 my $re = eval"qr/$reg/$reopt"; 407 if ($@) { 408 $self->print($@); 409 return; 410 } 411 foreach (@{$env->{_objects}}) { 412 foreach my $val ($_->get_attributes($attr)) { 413 if ($@) { 414 $self->print("$@No change done\n"); 415 $env->rollback; 416 return; 417 } 418 if ($val =~ $re) { 419 $self->printf("%s: %s\n", $_->id, $val); 420 } 421 } 422 } 423 }, 424 completion => sub { 425 my ($env, $lastw, @args) = @_; 426 if (!$args[0]) { 427 return $env->base->list_canonical_fields($env->{_otype}, 'w') 428 } 429 }, 430 }); 431 432 =head3 sed 433 434 sed ATTRIBUTE REGEXP VALUE 435 436 Replace matching REGEXP by VALUE for specified ATTRIBUTE. 437 If the resulting value is empty the value is deleted. 438 439 =cut 440 441 $self->add_func('sed', { 442 help => 'Apply regular expression on given attribute to modify it', 443 code => sub { 444 my ($env, @args) = @_; 445 my ( $attr, $reg, $subst ) = $self->getoption( 446 { 447 'i' => \my $icase, 448 }, @args 449 ); 450 $subst or do { 451 $self->print( "attribute and value must be specified\n" ); 452 return; 453 }; 454 my $reopt = ''; 455 $reopt .= 'i' if($icase); 456 my $re = eval"qr/$reg/$reopt"; 457 if ($@) { 458 $self->print($@); 459 return; 460 } 390 461 foreach (@{$env->{_objects}}) { 391 462 my @newvalues; … … 393 464 foreach my $val ($_->get_attributes($attr)) { 394 465 my $nval = $val; 395 eval "\$nval =~ $reg;"; 396 if ($@) { 397 $self->print("$@No change done\n"); 398 $env->rollback; 399 return; 400 } 466 $nval =~ s/$re/$subst/; 401 467 if ($val ne $nval) { 402 468 $self->printf("%s: %s => %s\n", $_->id, $val, $nval);
Note: See TracChangeset
for help on using the changeset viewer.