#!/usr/bin/perl

use v5.36;

use File::Basename;

use LWP::UserAgent;
use HTML::TreeBuilder::XPath;

my $me = basename($0);
die "usage: $me <challenge number>\n" unless @ARGV == 1;
my $url = 'https://theweeklychallenge.org/blog/perl-weekly-challenge-'
        . $ARGV[0] . '/';
my $user_agent = LWP::UserAgent->new();
my $response = $user_agent->request(HTTP::Request->new(GET => $url));
my $tree = HTML::TreeBuilder::XPath->new();
$tree->parse($response->content());
my $task1 = "//h2[\@id='TASK2']/preceding::pre/code[contains(text(), 'Input')]";
my $task2 = "//h2[\@id='TASK2']/following::pre/code[contains(text(), 'Input')]";
foreach my $task ([$task1, 'ch-1.pl'], [$task2, 'ch-2.pl']) {
    die "$me: file already exists: $task->[1]\n" if -e $task->[1];
    my @l;
    foreach ($tree->findvalues($task->[0])) {
        my ($input, $output) = /Input: (.*)\n.*Output: (.*)\n/;
        $input =~ s/[\$@%]\w+ = //g;
        $input =~ tr/()/[]/;
        push @l, [ $input, $output ];
    }
    my $n = @l;
    open my $f, '>', $task->[1];
    print $f "#!/usr/bin/perl\n\nuse v5.36;\n\nuse Test::More tests => $n;\n\n";
    print $f "sub solve_task {\n    1;\n}\n\n";
    print $f "is(solve_task($_->[0]), $_->[1]);\n" foreach (@l);
    close $f;
    chmod 0755, $task->[1];
}
