From: Phil Pennock Date: Thu, 6 Dec 2012 13:37:54 +0000 (-0500) Subject: Just work on numbered chapters. X-Git-Tag: exim-4_89_1~39 X-Git-Url: https://git.exim.org/exim-website.git/commitdiff_plain/fa1923456d030387391eb3c13a5e27c3021b9935 Just work on numbered chapters. We want to move to named chapters. This tool relies upon directory walking to get the chapters in order. So, get _just_ the numbered chapters, sort, then chase any links. --- diff --git a/script/eximhtml2txt.pl b/script/eximhtml2txt.pl index 0f03ea4..38892e1 100755 --- a/script/eximhtml2txt.pl +++ b/script/eximhtml2txt.pl @@ -3,6 +3,7 @@ use strict; use warnings; +use File::Spec; use HTML::FormatText; use HTML::TreeBuilder; @@ -19,8 +20,30 @@ sub process_chapter { return $text; } +sub chapters_in_order { + my $dir = shift; + + opendir DIR, $dir or die "opendir($dir) failed: $!\n"; + my @numeric = sort grep {/^ch\d+\.html$/} readdir(DIR); + closedir(DIR) or die "closedir($dir) failed: $!\n"; + + my @results = map { + $_ = File::Spec->catfile($dir, $_); + if (-l $_) { + my $t; + eval { $t = readlink $_ }; + $_ = File::Spec->rel2abs($t, $dir) if defined $t; + } + $_ + } @numeric; + return @results; +} + + my $dir = shift; -foreach my $fn ( glob("$dir/ch*.html") ) { +die "Need a directory\n" unless defined $dir; + +foreach my $fn ( chapters_in_order($dir) ) { print "=" x 72, "\n"; print $fn, "\n"; print "=" x 72, "\n";