App-Greple-subst
view release on metacpan or search on metacpan
lib/App/Greple/subst/Dict.pm view on Meta::CPAN
}
}
sub to_text {
my $obj = shift;
my $text;
open my $fh, ">:encoding(utf8)", \$text or die;
select do {
my $old = select $fh;
$obj->print;
close $fh;
$old;
};
decode 'utf8', $text;
}
sub select {
my $obj = shift;
my $select = shift;
my $max = @$obj;
use Getopt::EX::Numbers;
my $numbers = Getopt::EX::Numbers->new(max => $max);
my @select = do {
map { $_ - 1 }
sort { $a <=> $b }
grep { $_ <= $max }
map { $numbers->parse($_)->sequence }
split /,/, $select;
};
@$obj = do {
my @tmp = (undef) x $max;
@tmp[@select] = @{$obj}[@select];
@tmp;
};
$obj;
}
}
package App::Greple::subst::Dict::Ent {
use v5.18;
use warnings;
use Exporter 'import';
our @EXPORT_OK = qw(print_dict);
use Carp;
use Getopt::EX::Module;
use App::Greple::Common;
use App::Greple::Pattern;
our @ISA = 'App::Greple::Pattern';
sub new {
my $class = shift;
if (@_ < 2) {
return bless {}, $class;
}
my($pattern, $correct) = splice @_, 0, 2;
my $obj = $class->SUPER::new($pattern, @_);
$obj->correct($correct);
$obj;
}
sub correct {
my $obj = shift;
@_ ? $obj->{CORRECT} = shift : $obj->{CORRECT};
}
sub new_comment {
my $class = shift;
my $comment = shift;
my $obj = $class->SUPER::new();
$obj->comment($comment);
$obj;
}
sub comment {
my $obj = shift;
@_ ? $obj->{COMMENT} = shift : $obj->{COMMENT};
}
sub is_comment {
my $obj = shift;
defined $obj->{COMMENT};
}
}
1;
( run in 3.836 seconds using v1.01-cache-2.11-cpan-c221a9de4ec )