Perl6-Pugs
view release on metacpan or search on metacpan
ext/Rosetta/lib/Rosetta/Shell.pm view on Meta::CPAN
use v6-alpha;
# External packages used by packages in this file, that don't export symbols:
use Locale::KeyedText-(1.72.0...);
use Rosetta-(0.722.0...);
###########################################################################
###########################################################################
# Constant values used by packages in this file:
my Str $EMPTY_STR is readonly = q{};
###########################################################################
###########################################################################
module Rosetta::Shell-0.1.3 {
# External packages used by the Rosetta::Shell module, that do export symbols:
# (None Yet)
# State variables used by the Rosetta::Shell module:
my Locale::KeyedText::Translator $translator;
my Rosetta::Interface::DBMS $dbms;
###########################################################################
sub main (Str :$engine_name!, Str :@user_lang_prefs? = 'en') {
$translator .= new(
set_names => [
'Rosetta::Shell::L::',
'Rosetta::L::',
'Rosetta::Model::L::',
'Locale::KeyedText::L::',
$engine_name ~ '::L::',
],
member_names => @user_lang_prefs,
);
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_HELLO' ) );
try {
$dbms = Rosetta::Interface::DBMS.new(
engine_name => $engine_name );
};
if ($!) {
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_DBMS_INIT_FAIL',
msg_vars => {
'ENGINE_NAME' => $engine_name,
},
) );
}
else {
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_DBMS_INIT_SUCCESS',
msg_vars => {
'ENGINE_NAME' => $engine_name,
},
) );
_command_loop();
}
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_GOODBYE' ) );
return;
}
###########################################################################
my sub _command_loop () {
# INPUT_LINE:
while (1) {
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_PROMPT' ) );
my Str $user_input = =$*IN;
# user simply hits return on an empty line to quit the program
# last INPUT_LINE
last
if $user_input eq $EMPTY_STR;
try {
_show_message( Locale::KeyedText::Message.new(
msg_key => 'ROS_S_TODO_RESULT' ) );
};
_show_message( $! )
if $!; # input error, detected by library
}
return;
}
###########################################################################
( run in 1.551 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )