Perl6 basic type validating IO prompting for command line tools.
Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 9 commits ahead of pnu:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib/IO Renamed META file, updated README and added Numeric again Feb 9, 2016
t Renamed META file, updated README and added Numeric again Feb 9, 2016
.gitignore
.travis.yml
LICENSE basic docstuff Apr 28, 2009
META6.json Use SPDX identifier in license field of META6.json Apr 26, 2017
README.pod
TODO Wrote down some todo issues Apr 28, 2009
example.p6 Localization subclassing example added Apr 28, 2009

README.pod

IO::Prompt -- Interactive validating terminal prompt

SYNOPSIS

use v6;
use IO::Prompt;

my $a = ask( "Defaults to 42, type Num?", 42, :type(Num) );
say $a.perl;
say '------------------------------';

$a = ask( "Defaults to false?", Bool::False );
say $a.perl;
say '------------------------------';

$a = ask( "No default but type Bool?", :type(Bool) );
say $a.perl;
say '------------------------------';


## OO style ##
my $prompt = IO::Prompt.new();

$a = $prompt.ask( "Dot notation?", Bool::False );
say $a.perl;
say '------------------------------';


## You can override the IO methods for testing purposes
class IO::Prompt::Testable is IO::Prompt {
    method !do_say( Str $question ) returns Bool {
        say "Testable saying    '$question'";
        say 'Please do not continue questioning';
        return Bool::False; # do not continue
    }   
    method !do_prompt( Str $question ) returns Str {
        say "Testable saying    '$question'";
        say "Testable answering 'daa'";
        return 'daa';
    }
}

my $prompt_test = IO::Prompt::Testable.new();
$a = $prompt_test.ask_yn( "Testable, defaults to false?", Bool::False );
say $a.perl;
say '------------------------------';


## You can override the language class attributes
class IO::Prompt::Finnish is IO::Prompt {
    our $.lang_prompt_Yn        = 'K/e';
    our $.lang_prompt_yN        = 'k/E';
    our $.lang_prompt_yn        = 'k/e';
    our $.lang_prompt_yn_retry  = 'Sano kyllä tai ei';
    our $.lang_prompt_match_y   = m/ ^^ <[kK]> /;
    our $.lang_prompt_match_n   = m/ ^^ <[eE]> /;
    our $.lang_prompt_int       = 'Int';
    our $.lang_prompt_int_retry = 'Anna kokonaisluku';
    our $.lang_prompt_num       = 'Num';
    our $.lang_prompt_num_retry = 'Anna luku';
    our $.lang_prompt_str       = 'Str';
    our $.lang_prompt_str_retry = 'Anna merkkijono';
}

my $prompt_fi = IO::Prompt::Finnish.new();
$a = $prompt_fi.ask( "Suomeksi Bool?", :type(Bool) );
say $a.perl;
say '------------------------------';
$a = $prompt_fi.ask( "Suomeksi Num?", :type(Num) );
say $a.perl;
say '------------------------------';
$a = $prompt_fi.ask( "Suomeksi Str?", :type(Str) );
say $a.perl;
say '------------------------------';

DESCRIPTION

This is a generic module for interactive prompting from the console.

The build-in function prompt is great, but sometimes it is convenient to have default values and/or the control over the return type.

IO::Prompt provides both.

Original written bei pnu.

FUNCTIONAL METHODS

IO::Prompt provides method ask to set the question string, a default answer and/or a return type.

Examples:

use IO::Prompt;

my $answer = ask("What do you want for Christmas?", "Perl6");
$answer = Whatever the user entered or if just Enter was pressed the string Perl6

OO

IO::Prompt provides also a OO interface.

Example:

use IO::Prompt;

my $asker = IO::Prompt.new;
my $answer = $asker.ask("Wanna some money?", 2e9, :type(Num));

COPYRIGHT

Written by pnu, maintained by wbiker

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 58:

Non-ASCII character seen before =encoding in 'kyllä'. Assuming UTF-8