diff options
Diffstat (limited to 'swn.pl')
-rwxr-xr-x | swn.pl | 199 |
1 files changed, 0 insertions, 199 deletions
@@ -1,199 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; - -use File::Path qw(make_path remove_tree); -use Path::Class; -use Getopt::Std; - -# Root in directory. -my $dir; -my $VERSION = "v0.1"; - -sub help { - print<<EOF -$0 [switches] - -v print version and exits - -h print this help and exits - -d set the input directory (by default in/) -EOF -} - -sub version { - print <<EOF -$0 $VERSION -EOF -} - -sub styles { - # Unset $/, the Input Record Separator, to make <> give you the whole file at once. - local $/=undef; - open FILE, "styles.css" or die "Cannot open file $!"; - my $styles = <FILE>; - close FILE; - - return $styles; -} - -sub markdown { - my ($file) = @_; - my $filename = "$file"; - $filename =~ s/\.html$/.md/g; - return `markdown "$filename"`; -} - -sub generate_page { - my $file = $_[0]; - my $sidebar = transverse($dir, $file); - my $styles = styles; - my $body = markdown $file; - my $page = <<EOF -<!doctype html> -<html> -<head> -<title>Deprecated</title> -<link rel="icon" href="/favicon.png" type="image/png"/> -<meta charset="UTF-8"> -<style> -$styles -</style> -</head> -<body> -<div class="header"> -<h1 class="headerTitle"> -<a href="/">Deprecated</a> <span class="headerSubtitle">Just coding for fun</span> -</h1> -</div> - -<div id="side-bar"> -$sidebar -</div> - -<div id="main"> -$body -</div> - - -<div id="footer"> -<div class="right">Powered by <a href="https://github.com/jroimartin/sw">swn</a></div> -</div> -</body> -</html> -EOF -; - return $page; -} - -sub generate_link { - my ($file, $options) = @_; - $options->{hl} = 0 if !exists($options->{hl}); - - # Get the path. - my $path = $file->stringify; - $path =~ s/^$dir//g; - $path =~ s/\.md$/.html/g; - - # String to show - my $str = $file->basename; - $str =~ s/\.md$//g; - - # Higlight? - my $hl = ""; - if($options->{hl} eq 1) { - $hl = "class='hl'"; - } - - return "<li><a $hl href='$path'>$str</a></li>"; -} - -sub transverse { - my ($directory, $file_needed) = @_; - my $retval = ""; - - $retval = "<ul>"; - while(my $file = $directory->next) { - my $filename = $file->stringify; - - # Some conditions - next if $filename =~ /(\.|\.\.)$/; - next if $filename eq $directory; - - if($file_needed eq $file) { - $retval = "$retval" . generate_link($file, { hl => 1 }); - } else { - $retval = "$retval" . generate_link($file); - } - - if($file->is_dir()) { - my $d = $file_needed->dir->stringify; - if($file =~ /$d/ and !($d eq $directory)) { - $retval = "$retval" . transverse($file, $file_needed); - } - } - } - $retval = "$retval</ul>"; - - return $retval; -} - -sub run_on { - my $mddir = $_[0] || dir($dir); - remove_tree $mddir; - - while(my $file = $mddir->next) { - my $outfile = $file->stringify; - - # Some conditions - next if $outfile =~ /(\.|\.\.)$/; - next if $outfile eq $mddir; - - $outfile =~ s/$dir\//out\//g; - !($outfile =~ m/^$dir/) or die "$outfile =~ m/$dir/"; - - if($file->is_dir()) { - # make a directory - make_path $outfile; - run_on($file); - next; - } - - $outfile =~ s/md$/html/g; - print STDERR "* writing: $outfile\n"; - my $contents = generate_page $file; - - open FD, ">$outfile"; - - print FD $contents; - - close FD; - } -} - -sub main { - my %opts = ( - 'v' => 0, - 'h' => 0, - 'd' => "in" - ); - getopts('vhd:', \%opts); - - if($opts{h}) - { - help; - exit 0; - } - elsif($opts{v}) - { - version; - exit 0; - } - elsif($opts{d}) - { - $dir = dir $opts{d}; - } - - run_on dir($dir); -} - -main @ARGV; - |