X-Git-Url: http://git.rot13.org/?p=sysadmin-cookbook-html;a=blobdiff_plain;f=bin%2Fhtml.pl;h=537ded0cace4b39ccd07bcdaa90bbcb958f3781a;hp=cd9485dd7bfcef053c81061da450f6c72e8e947c;hb=7cd12d88f74e84a75343307994f105e90ddc0933;hpb=bace34e122e1331e987af50ddad063ce136416a5 diff --git a/bin/html.pl b/bin/html.pl index cd9485d..537ded0 100755 --- a/bin/html.pl +++ b/bin/html.pl @@ -8,6 +8,8 @@ my $recepies = '/srv/sysadmin-cookbook/recepies'; use File::Find; use File::Slurp; use Data::Dump qw/dump/; +use XML::Simple; +use Regexp::Common qw /URI/; my @html; sub html { push @html, @_ } @@ -20,9 +22,26 @@ sub file { my $content = read_file $path; $content =~ s{[\n\r\s]+$}{}s; $content =~ s/($escape_re)/$escape{$1}/gs; + $content =~ s[$RE{URI}{HTTP}{-keep}][$1]gs; + + my $log = XMLin( scalar `svn log --xml $path`, + ForceArray => [ 'logentry' ], + ); + my $changes = join("\n", + map { + my $d = $_->{date}; + $d =~ s{:\d\d\.\d+Z}{}; + $d =~ s{T}{ }; + my $r = $_->{revision}; + qq|
  • $_->{msg} $d
  • | + } reverse @{ $log->{logentry} } + ); + + $path =~ s{^$recepies/*(.*?[^/]+)$}{$1} || next; return '' - . "
    " . `svn log $path` . "
    " - . "
    $content
    " + . qq|| + . ( $path =~ m{(\.sh|Makefile)$}i ? qq|$path| : '' ) + . qq|
    $content
    | ; } @@ -35,32 +54,40 @@ my $last_level = 0; my $toc_html = ''; sub header { my ($level, $content) = @_; + my $display = $content; + $display =~ s{^\d+[\.-]}{}; + $display =~ s{-}{ }g; + $display =~ s{\.\w+$}{}; + $content =~ s{\W+}{_}g; html qq||; - html qq|$content|; + html qq|$display|; if ( $last_level > $level ) { $toc_html .= ""; } elsif ( $last_level < $level ) { $toc_html .= "