# -*- coding: utf-8 -*-
# Copyright (C) 2011-2012, 2014-2015 Rocky Bernstein <rocky@cpan.org>
use warnings; no warnings 'redefine'; no warnings 'once';
use rlib '../../../../../..';
package Devel::Trepan::CmdProcessor::Command::Show::Display::Eval;
use Devel::Trepan::CmdProcessor::Command::Subcmd::Subsubcmd;
use strict;
use vars qw(@ISA @SUBCMD_VARS);
@ISA = qw(Devel::Trepan::CmdProcessor::Command::Subsubcmd);
# Values inherited from parent
use vars @Devel::Trepan::CmdProcessor::Command::Subsubcmd::SUBCMD_VARS;
## FIXME: do automatically.
our $CMD = 'show display eval';
our $HELP = <<"EOH";
B<show display eval> [B<long>]
Shows which of Data::Printer ('ddp'),
Data::Dumper ('dumper'), Data::Dumper::Concise,
Data::Dumper::Perltidy ('tidy') is used to format evaluation results.
For Data::Dumper, if B<long> is given the configuration will be show.
=head2 See also:
L<C<set display eval>|Devel::Trepan::CmdProcessor::Command::Set::Display::Eval>,
L<C<eval>|Devel::Trepan::CmdProcessor::Command::Eval>,
L<C<set auto eval>|Devel::Trepan::CmdProcessor::Command::Set::Auto::Eval>,
L<C<set auto eval>|Devel::Trepan::CmdProcessor::Command::Set::Auto::Eval>,
L<Data::Dumper::Perltidy>, and
L<Data::Printer>.
EOH
our $SHORT_HELP = 'Show how the evaluation results are displayed';
our $MIN_ABBREV = length('ev');
sub run($$)
{
my ($self, $args) = @_;
my $proc = $self->{proc};
my $key = $self->{subcmd_setting_key};
my $val = $proc->{settings}{$key};
my $msg = sprintf "Eval result display style is %s.", $val;
$proc->msg($msg);
if ($val eq 'tidy') {
$proc->msg("Perlidy options: " . $Data::Dumper::Perltidy::ARGV);
} elsif ($val eq 'ddp') {
my @args = @{$args};
if (scalar @args > 3 && $args[3] eq 'long') {
$proc->msg("Data::Printer options:");
my $opts = Data::Printer::p($Data::Printer::properties);
$proc->msg($opts);
}
}
}
unless (caller) {
# Demo it.
# FIXME: DRY the below code
require Devel::Trepan::CmdProcessor;
my $cmdproc = Devel::Trepan::CmdProcessor->new();
my $subcmd = Devel::Trepan::CmdProcessor::Command::Show->new($cmdproc,
'show');
my $dispcmd = Devel::Trepan::CmdProcessor::Command::Show::Display->new($subcmd, 'display');
my $cmd = Devel::Trepan::CmdProcessor::Command::Show::Display::Eval->new($dispcmd, 'eval');
# Add common routine
foreach my $field (qw(min_abbrev name)) {
printf "Field %s is: %s\n", $field, $cmd->{$field};
}
$cmd->run(['show', 'display', 'eval']);
$cmd->run(['show', 'display', 'eval', 'long']);
}
1;