diff options
Diffstat (limited to '')
-rwxr-xr-x | debian/lynx-dump-postprocess | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/debian/lynx-dump-postprocess b/debian/lynx-dump-postprocess new file mode 100755 index 0000000..e1ebbf9 --- /dev/null +++ b/debian/lynx-dump-postprocess @@ -0,0 +1,49 @@ +#!/usr/bin/perl + +open IN, '<&STDIN'; +#open IN, 'dump'; +{ + local $/; + $content=<IN>; +} +close IN; + +($title,$body,$links) = + ($content =~ + /^(.*)\n\s+_+\n\n + (\s+Table\ of\ Contents.*) + (References\n\n\s+1\..*)/sx); + +die unless ($title); + +print "$title\n".'-' x length($title)."\n\n"; + +# Sort out local links. +# The regex might not be entirely accurate. +foreach (split /\n/, $links) { + ($index, $url) = /^\s*(\d+)\. (.+)$/; + if ($url !~ /file:\/\/.*#.*$/) { + $links[$index] = $url; + } +} + +$linkno=0; +# Split paragraphs +foreach (split /\n(?:\s+_+\n)?\n/, $body) { + my $footnote = ''; + my $rest = $_; + while ( $rest =~ /^(.*?)\[(\d+)\](.*)$/s ) { + print $1; + if (defined $links[$2]) { + $linkno++; + print "[$linkno]"; + $footnote.=" $linkno. $links[$2]\n"; + } + $rest = $3; + } + print $rest; + print "\n\n"; + if ($footnote ne '') { + print "$footnote\n"; + } +} |