Ask

 view release on metacpan or  search on metacpan

lib/Ask/Clui.pm  view on Meta::CPAN

use 5.008008;
use strict;
use warnings;

package Ask::Clui;

our $AUTHORITY = 'cpan:TOBYINK';
our $VERSION   = '0.015';

use Moo;
use Term::Clui 1.65 ();
use Path::Tiny 'path';
use namespace::autoclean;

with 'Ask::API';

sub BUILD {
	STDOUT->autoflush( 1 );
}

sub is_usable {
	my ( $self ) = @_;
	-t STDIN and -t STDOUT;
}

sub quality {
	my ( $self ) = ( shift );
	( -t STDIN and -t STDOUT ) ? 91 : 30;
}

sub info {
	my ( $self, %opts ) = ( shift, @_ );
	chomp( my $text = $opts{text} );
	Term::Clui::inform( $opts{text} );
	return;
}

sub warning {
	my ( $self, %opts ) = ( shift, @_ );
	chomp( my $text = $opts{text} );
	Term::Clui::inform( 'WARNING: ' . $opts{text} );
	return;
}

sub error {
	my ( $self, %opts ) = ( shift, @_ );
	chomp( my $text = $opts{text} );
	Term::Clui::inform( 'ERROR: ' . $opts{text} );
	return;
}

sub entry {
	my ( $self, %opts ) = ( shift, @_ );
	
	if ( $opts{hide_text} ) {
		return Term::Clui::ask_password( $opts{text} );
	}
	
	return Term::Clui::ask( $opts{text}, $opts{default} || '' );
}

sub question {
	my ( $self, %opts ) = ( shift, @_ );
	chomp( my $text = $opts{text} );
	return Term::Clui::confirm( $opts{text} );
}

my $_choices = sub {
	my $ref = shift;
	map $_->[0], @$ref;
};

sub single_choice {



( run in 0.900 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )