Config-Model
view release on metacpan or search on metacpan
lib/Config/Model/AnyId.pm view on Meta::CPAN
return;
}
sub get ($self, @args) {
my %args = _resolve_arg_shortcut(\@args, 'path');
my $path = delete $args{path};
my $autoadd = 1;
$autoadd = $args{autoadd} if defined $args{autoadd};
my $get_obj = delete $args{get_obj} || 0;
$path =~ s!^/!!;
my ( $item, $new_path ) = split m!/!, $path, 2;
my $dcm = $args{dir_char_mockup};
# $item =~ s($dcm)(/)g if $dcm ;
if ($dcm) {
while (1) {
my $i = index( $item, $dcm );
last if $i == -1;
substr $item, $i, length($dcm), '/';
}
lib/Config/Model/AnyId.pm view on Meta::CPAN
$logger->trace("get: path $path, item $item");
my $obj = $self->fetch_with_id( index => $item, %args );
return $obj if ( ( $get_obj or $obj->get_type ne 'leaf' ) and not defined $new_path );
return $obj->get( path => $new_path, get_obj => $get_obj, %args );
}
sub set ($self, $path, @args) {
$path =~ s!^/!!;
my ( $item, $new_path ) = split m!/!, $path, 2;
return $self->fetch_with_id($item)->set( $new_path, @args );
}
sub copy ( $self, $from, $to ) {
Config::Model::Exception::User->throw(
object => $self,
message => "move: unknow from key $from"
) unless $self->exists($from);
lib/Config/Model/Loader.pm view on Meta::CPAN
sub __data_from_vector {
my ($data, @vector) = @_;
for my $step (@vector) {
$data = (ref($data) eq 'HASH') ? $data->{$step} : $data->[$step];
}
return $data;
}
sub __get_file_from_vector {
my ($self, $element,$instructions,$raw_vector) = @_;
my @vector = split m![/]+!m, $raw_vector;
my $cur = path('.');
my $file;
while (my $subpath = shift @vector) {
my $new_path = $cur->child($subpath);
if ($new_path->is_file) {
$file = $new_path;
last;
}
elsif ($new_path->is_dir) {
$cur = $new_path;
lib/Config/Model/Node.pm view on Meta::CPAN
sub is_element_defined ($self, $elt_name) {
return defined $self->{element}{ $elt_name };
}
sub get ($self, @args) {
my %args = _resolve_arg_shortcut(\@args, 'path');
my $path = delete $args{path};
my $get_obj = delete $args{get_obj} || 0;
$path =~ s!^/!!;
return $self unless length($path);
my ( $item, $new_path ) = split m!/!, $path, 2;
$logger->trace("get: path $path, item $item");
my $elt = $self->fetch_element( name => $item, %args );
return unless defined $elt;
return $elt if ( ( $elt->get_type ne 'leaf' or $get_obj ) and not defined $new_path );
return $elt->get( path => $new_path, get_obj => $get_obj, %args );
}
sub set ($self, $path, @args) {
$path =~ s!^/!!;
my ( $item, $new_path ) = split m!/!, $path, 2;
if ( $item =~ /([\w\-]+)\[(\d+)\]/ ) {
return $self->fetch_element($1)->fetch_with_id($2)->set( $new_path, @args );
}
else {
return $self->fetch_element($item)->set( $new_path, @args );
}
}
sub load ($self, @args) {
my $loader = Config::Model::Loader->new( start_node => $self );
lib/Config/Model/TermUI.pm view on Meta::CPAN
check => $completion_sub,
fix => $fix_completion_sub,
clear => $completion_sub,
set => $leaf_completion_sub,
delete => $leaf_completion_sub,
reset => $completion_sub,
);
sub completion ($self, $text, $line, $start) {
my $space_idx = index $line, ' ';
my ( $main, $cmd ) = split m/\s+/, $line, 2; # /;
#warn " comp main cmd is '$main' (space_idx $space_idx)\n";
if ( $space_idx > 0 and defined $completion_dispatch{$main} ) {
my $i = $self->{current_node}->instance;
# say "Input: ['$text', '$line', $start], ";
my @choices = $completion_dispatch{$main}->( $self, $text, $line, $start );
# say "Choices: ['", join("', '",@choices),"']";
return @choices;
}
( run in 1.964 second using v1.01-cache-2.11-cpan-71847e10f99 )