Rosetta Code/Run examples: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Perl 6}}: More switches & updates, roughed in multi-language code, will now run Perl & Python as well as Perl6) |
Thundergnat (talk | contribs) (→{{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 |
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 |
Bool :f(:$force), # Override any task skip parameter in %resource hash |
||
Bool :l(:$local), # Only use |
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 |
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 |
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'); |
||
⚫ | |||
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 |
$get-tasks = False; # don't need to retrieve task names from web |
||
} |
} |
||
if $get-tasks { # load tasks from web if |
if $get-tasks { # load tasks from web if cache is not found, older than one day or forced |
||
if !"%l< |
if !"%l<dir>.tasks".IO.e or ("%l<dir>.tasks".IO.modified - now) > 86400 or $remote { |
||
⚫ | |||
@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< |
"%l<dir>.tasks".IO.spurt: @tasks.sort.join("\n"); |
||
} else { |
} else { |
||
note 'Using cached task list.'; |
|||
@tasks = "%l< |
@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; |