bliper-generate.pl (4749B)
1 #!/usr/bin/perl -w 2 3 use strict; 4 use Cwd; 5 6 my $main_dir = getcwd; 7 my $main_page = 'output/index.html'; 8 my $indir = 'main-articles'; # The input directory name 9 my $outdir = 'output'; # The output directory name 10 my $pagedir = 'pages'; # Individual pages directory 11 my $pages_b = 'pages-b'; # Pages that do not show at menu 12 my @maint = qx(cat template/main-top); # Top section for main page 13 my @mainb = qx(cat template/main-bottom); # Bottom section for main page 14 my @footer = qx(cat template/footer); # Footer for every page incl main 15 my @paget = qx(cat template/page-top); # Top section for every page in pages/ 16 my @pageb = qx(cat template/page-bottom); # Bottom section for every page in pages/ 17 my @articlet = qx(cat template/article-top); # Top section for every article in main-articles/ 18 my @articleb = qx(cat template/article-bottom); # Bottom section for every article in main-articles/ 19 my $previewnum = 3; # Article number preview for frontpage 20 my $cssfile = 'output/style.css'; 21 22 unlink glob "output/*.html"; # Remove old pages 23 unlink "output/tmp"; # File which stores menu 24 open (OUT, '>', "$outdir/index.html") or die $!; # Create the index.html page 25 print OUT @maint; 26 27 chdir($pagedir) or die "Can't change path to $pagedir $!\n"; 28 print "\n\t\t\tblipper (BLog In PERl) v0.1\n\n"; 29 print "Entering " . getcwd . "\n\n"; 30 open (OUT, '>>', "../$outdir/tmp") or die $!; # Begin creating menu for individual pages in a file 31 print OUT "<ul class=\"menu\">"; # Begin list for menu items 32 print OUT "<li><a href=\"index.html\">home</a></li>"; 33 34 my @pages = <*>; # Create individual pages 35 foreach my $page (@pages) { 36 print "Generating page: "; 37 printf("%-30s", $page); 38 my @array = qx(cat $page); 39 my $html = qx(Markdown.pl $page); 40 $page =~ s/\.[^\.]*$//; 41 print "\t==> output page:\t" . "../$outdir/$page.html\n"; 42 open (OUT, '>', "../$outdir/$page.html") or die $!; 43 print OUT @paget; 44 print OUT $html; 45 print OUT @pageb; 46 close OUT; 47 48 open (OUT, '>>', "../$outdir/tmp") or die $!; # Append page links to tmp file 49 print OUT "<li><a href=\"$page.html\">$page</a></li>"; 50 } 51 52 print OUT "</ul>"; 53 print OUT "<br>"; 54 close OUT or die $!; 55 56 chdir($main_dir) or die "Can't change path to $main_dir $!\n"; 57 # open (OUT, '>>', "$outdir/index.html") or die $!; # Create the index.html page 58 # print OUT "<p class=\"latart\">Latest articles:</p>"; 59 # close OUT or die $!; 60 print "\nIndividual page generation completed. "; 61 chdir($indir) or die "Can't change path to $indir $!\n"; 62 print "\nEntering " . getcwd . "\n\n"; 63 64 my @files = <*>; 65 @files = reverse @files; 66 my $i = 0; 67 foreach my $file (@files) { # Read each file(post) from indir, cat to $outdir/$file.html 68 print "Processing file: "; 69 printf ("%-30s", $file); 70 my $array = qx(cat $file); 71 my $html = qx(Markdown.pl $file); 72 $file =~ s/\.[^\.]*$//; 73 print "\t==> output file:\t" . "../$outdir/$file.html\n"; 74 75 open (OUT, '>', "../$outdir/$file.html") or die $!; 76 print OUT @articlet; 77 print OUT $html; # Append content 78 print OUT @articleb; 79 close OUT; 80 81 my @preview_array = split(/\n{2,}/, $html); # Pull title and first paragraph from article. 82 $preview_array[0] =~ s/h1>/h3>/g; # Change h1 to h3 for the index page. 83 $preview_array[0] =~ s/<h3>/<a href=\"$file.html\"><h3>/g; 84 $preview_array[0] =~ s/<\/h3>/<\/h3><\/a>/g; 85 86 if ($i < $previewnum) { # Append links to stories in index.html 87 open (OUT, '>>', "../$outdir/index.html") or die $!; 88 print OUT "<div class=\"preview\"> 89 $preview_array[0] 90 $preview_array[1]<br> 91 $preview_array[2]<br> 92 <p><a class=\"previewlink\" href=\"$file.html\"> 93 <em>read more... →</em></a></p></div>"; 94 print OUT "\n"; 95 print OUT "<br>"; 96 } 97 $i++; 98 } 99 100 chdir($main_dir) or die "Can't change path to $main_dir $!\n"; 101 print "\nArticle generation completed. "; 102 chdir($pages_b) or die "Can't change path to $indir $!\n"; 103 print "\nEntering " . getcwd . "\n\n"; 104 105 my @ind_pages = <*>; 106 foreach my $file (@ind_pages) { # Read each page that we do not want to add in our menu 107 print "Processing pages:"; 108 printf ("%-30s", $file); 109 my @array = qx(cat $file); 110 my $html = qx(Markdown.pl $file); # Markdown to html 111 $file =~ s/\.[^\.]*$//; 112 print "\t==> output file:\t" . "../$outdir/$file.html\n"; 113 open (OUT, '>', "../$outdir/$file.html") or die $!; 114 print OUT @articlet; 115 print OUT $html; # Append content 116 print OUT @articleb; 117 close OUT; 118 } 119 120 open (OUT, '>>', "../$outdir/index.html") or die $!; # Close all tags in index.html 121 print OUT @mainb; 122 print OUT @footer; 123 close OUT; 124 125 print "\nPages in pages_b/ generation completed. "; 126 print "\nLeaving " . getcwd . "\n"; 127 chdir($main_dir) or die "Can't change path to $main_dir $!\n"; 128 print "Site generation completed. Files are in output/ dir.\n";