Rosetta Code/Run examples: Difference between revisions

Content added Content deleted
(→‎{{header|Perl 6}}: More switches & updates, roughed in multi-language code, will now run Perl & Python as well as Perl6)
(→‎{{header|Perl 6}}: bug fixes and updates)
Line 286: Line 286:
unit sub MAIN(
unit sub MAIN(
Str $run = '', # Task or file name
Str $run = '', # Task or file name
Str :$lang = 'perl6', # Language, default perl6 - should be same as in the <lang *> tags
Str :$lang = 'perl6', # Language, default perl6 - should be same as in <lang *> markup
Int :$skip = 0, # Skip # to continue partially into a list
Int :$skip = 0, # Skip # to continue partially into a list
Bool :f(:$force), # Override any task-skip parameter in %resource hash
Bool :f(:$force), # Override any task skip parameter in %resource hash
Bool :l(:$local), # Only use task code from local cache
Bool :l(:$local), # Only use code from local cache
Bool :r(:$remote), # Only use code from remote server (refresh local cache)
Bool :r(:$remote), # Only use code from remote server (refresh local cache)
Bool :q(:$quiet), # Less verbose, don't display source code
Bool :q(:$quiet), # Less verbose, don't display source code
Bool :d(:$deps), # Load dependencies if necessary
Bool :d(:$deps), # Load dependencies
Bool :p(:$pause), # pause after each task
Bool :p(:$pause), # pause after each task
Bool :b(:$broken), # pause after each task marked broken
);
);


Line 310: Line 311:


my $view = 'xdg-open'; # image viewer, this will open default under Linux
my $view = 'xdg-open'; # image viewer, this will open default under Linux
my %l = load-lang($lang); # load languge paramters
my %l = load-lang($lang); # load languge parameters
my %resource = load-resources($lang);
my %resource = load-resources($lang);
my $get-tasks = True;
my $get-tasks = True;
Line 317: Line 318:


run('clear');
run('clear');

note 'Retrieving tasks';


if $run {
if $run {
Line 325: Line 326:
@tasks = ($run); # treat it so
@tasks = ($run); # treat it so
}
}
$get-tasks = False; # don't need to retreive task names from web
$get-tasks = False; # don't need to retrieve task names from web
}
}


if $get-tasks { # load tasks from web if no cache is not found, older than one day or forced
if $get-tasks { # load tasks from web if cache is not found, older than one day or forced
if !"%l<language>.tasks".IO.e or ("%l<language>.tasks".IO.modified - now) > 86400 or $remote {
if !"%l<dir>.tasks".IO.e or ("%l<dir>.tasks".IO.modified - now) > 86400 or $remote {
note 'Retrieving task list from site.';
@tasks = mediawiki-query( # get tasks from web
@tasks = mediawiki-query( # get tasks from web
$url, 'pages',
$url, 'pages',
Line 338: Line 340:
:prop<title>
:prop<title>
)»<title>.grep( * !~~ /^'Category:'/ ).sort;
)»<title>.grep( * !~~ /^'Category:'/ ).sort;
"%l<exe>.tasks".IO.spurt: @tasks.sort.join("\n");
"%l<dir>.tasks".IO.spurt: @tasks.sort.join("\n");
} else {
} else {
note 'Using cached task list.';
@tasks = "%l<language>.tasks".IO.slurp; # load tasks from file
@tasks = "%l<dir>.tasks".IO.slurp.lines; # load tasks from file
}
}
}
}
Line 354: Line 357:
my $taskdir = "./rc/%l<dir>/$name";
my $taskdir = "./rc/%l<dir>/$name";


my $modified = "$taskdir/name.txt".IO.e ?? "$taskdir/name.txt".IO.modified !! 0;
my $modified = "$taskdir/$name.txt".IO.e ?? "$taskdir/$name.txt".IO.modified !! 0;


my $entry;
my $entry;
if $remote or !"$taskdir/name.txt".IO.e or (($modified - now) > 86400 * 7) {
if $remote or !"$taskdir/$name.txt".IO.e or (($modified - now) > 86400 * 7) {
my $page = $client.get("{ $url }/index.php?title={ uri-escape $title }&action=raw").content;
my $page = $client.get("{ $url }/index.php?title={ uri-escape $title }&action=raw").content;


Line 397: Line 400:
if %resource{"$name$n"}<skip> ~~ /'broken'/ {
if %resource{"$name$n"}<skip> ~~ /'broken'/ {
uh-oh(%resource{"$name$n"}<skip>);
uh-oh(%resource{"$name$n"}<skip>);
pause if $broken;
} else {
} else {
say "Skipping $name$n: ", %resource{"$name$n"}<skip>, "\n"
say "Skipping $name$n: ", %resource{"$name$n"}<skip>, "\n";
}
}
next;
next;
Line 407: Line 411:
say %c<delim>, '=' x 79, %c<clr>;
say %c<delim>, '=' x 79, %c<clr>;
pause if $pause;
pause if $pause;

}
}


Line 440: Line 445:


sub pause {
sub pause {
prompt "Press enter to procede: >";
prompt "Press enter to procede:>";
# or
# or
# sleep 5;
# sleep 5;