Ask
view release on metacpan or search on metacpan
lib/Ask/STDIO.pm view on Meta::CPAN
use 5.008008;
use strict;
use warnings;
package Ask::STDIO;
our $AUTHORITY = 'cpan:TOBYINK';
our $VERSION = '0.015';
use Moo;
use namespace::autoclean;
with 'Ask::API';
sub is_usable {
my ( $self ) = @_;
-t STDIN and -t STDOUT;
}
sub quality {
( -t STDIN and -t STDOUT ) ? 80 : 20;
}
sub entry {
my ( $self, %o ) = @_;
$self->info( text => $o{text} ) if exists $o{text};
my ( $line, $tio );
if (
$o{hide_text}
and do { require POSIX; $tio = 'POSIX::Termios'->new }
)
{
require POSIX;
my $tio = POSIX::Termios->new;
$tio->getattr( 0 );
$tio->setlflag( $tio->getlflag & ~POSIX::ECHO() );
$tio->setattr( 0 );
chomp( $line = <STDIN> );
$tio->setlflag( $tio->getlflag | POSIX::ECHO() );
$tio->setattr( 0 );
} #/ if ( $o{hide_text} and...)
else {
chomp( $line = <STDIN> );
}
return $line;
} #/ sub entry
sub info {
my ( $self, %o ) = @_;
print STDOUT "$o{text}\n";
}
sub warning {
my ( $self, %o ) = @_;
print STDERR "WARNING: $o{text}\n";
}
sub error {
my ( $self, %o ) = @_;
print STDERR "ERROR: $o{text}\n";
}
1;
__END__
=head1 NAME
( run in 0.685 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )