fixup
authorPranshu Sharma <pranshu@bauherren.ovh>
Wed, 18 Dec 2024 02:18:43 +1000
changeset 14 31e45dd2a894
parent 13 da3b9ba1a7f0
child 15 c8e6e4e514f3
fixup
genorg.pl
--- a/genorg.pl	Wed Dec 18 00:58:13 2024 +1000
+++ b/genorg.pl	Wed Dec 18 02:18:43 2024 +1000
@@ -37,34 +37,24 @@
 my $domain = "p.bauherren.ovh";
 my $max_rss = 30;
 # The first page has one less article.  Think of it as a feature.
-my $max_cat = 10;
+my $max_cat = 30;
 my $blog_title = "Pranshu's blog";
 my ($home, $about) = ("home.html", "about.html");
 my $etc_files;
 my $nav_id = "nav";
+my $rdesc = "description";
 
 my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid ($<);
 my $template = <<"END";
 #+title: Test document
 #+subtitle: This is the subtitle
+#+date: IMPORANT
 #+author: $username
-#+keywords: tag thing | related
+#+keywords: tag->thing | rel->a
 #+options: html-link-use-abs-url:nil html-postamble:auto
 #+options: html-preamble:t html-scripts:nil html-style:t
 #+options: html5-fancy:nil tex:t
-#+options: tex:mathjax
 #+html_doctype: html5
-#+html_container: div
-#+html_content_class: content
-#+html_link_home:
-#+html_link_up:
-#+html_mathjax:
-#+html_equation_reference_format: \eqref{%s}
-#+html_head:
-#+html_head_extra:
-#+infojs_opt:
-#+creator: <a href="https://www.gnu.org/software/emacs/">Emacs</a> 31.0.50 (<a href="https://orgmode.org">Org</a> mode 9.7.11)
-#+latex_header:
 END
 
 my $req_config = <<"END";
@@ -153,7 +143,8 @@
 VAR VALUE
 where VAR can be:
  emacs-path : The value should be path of emacs. 'emacs' by default.
- css        : The path of the css file to use.
+ acss       : The path of the css file to use for articles.
+ ccss       : Path of css to use for cataogry pages.
  in_dir     : The directory that contains the files.
  out_dir    : the output directory.
  no_name_dir: The directory for generate files.  This means in_dir/no_name_dir
@@ -164,6 +155,8 @@
  about      : about file
  domain     : domain (for rss)
  title      : title of the blog
+ max_rss    : max_rss entries
+ max_cat    : max catagory entries before next page
 
 As soon as config file comes accross '>>---', the rest of the file
 is now the elisp code used in emacs startup.
@@ -174,15 +167,16 @@
 <?xml version=\"1.0\" encoding=\"UTF-8\" ?>
 <rss version=\"2.0\">
  <channel>
-  <title>W3Schools Home Page</title>
-  <link>https://www.w3schools.com</link>
-  <description>Free web building tutorials</description>"
+  <title>TITLE</title>
+  <link>BLINK</link>
+   <description>RDESC</description>"
 END
   
 my %config_vars =
   (
    'emacs-path' => \$emacs,
-   css => \$art_css,
+   acss => \$art_css,
+   ccss => \$cat_css,
    indir => \$dir,
    outdir => \$outdir,
    no_name_dir => \$no_name_dir,
@@ -191,7 +185,10 @@
    home => \$home,
    about => \$about,
    domain => \$domain,
-   title => \&blog_title
+   title => \$blog_title,
+   rdesc => \$rdesc,
+   max_rss => \$max_rss,
+   max_cat => \$max_cat
   );
 
 
@@ -206,10 +203,10 @@
     }
     chomp;
     my ($directive, $rest) = split /\s+/, $_, 2;
-    if (exists($config_vars{$directive})) {
+    if (exists $config_vars{$directive}) {
       ${$config_vars{$directive}} = $rest;
     } else {
-      print "Unknown variable $directive\n";
+      die "Unknown variable $directive\n";
     }
   }
   close $fh;
@@ -221,7 +218,7 @@
 }
 
 sub template ($file) {
-  $file // die "-t needs an argument.\n";
+  $file // do {print $template; exit(1)};
   $file =~ s/\.org$//;
   open my $fh, '>', $file . ".org" or die $file . " couldn't be opened\n";
   print $fh $template;
@@ -230,7 +227,7 @@
 
 # Reletive file from the perspect of file1, to file2
 sub prel_path ($from, $to) {
-  return $to =~ s/^.//r if $from eq $to;
+  return $to if $from eq $to;
   my \(@f1, @f2) = map [m{/[^/]+}g], ($from, $to);
   # return substr($f1[$#f1], 1) if $from =~ $to;
   while (@f1 && @f2 && $f1[0] =~ $f2[0]) {
@@ -304,35 +301,35 @@
 my $cache_dom;
 
 sub main {
-    s!/*$!/! for ($outdir, $dir);
-    -d $cdir or help_and_bye;
-    mkdir $outdir;
-    chdir $cdir or die "Couldn't access $cdir\n";
-    read_config $config_file;
-    my @navify_files = map {"$dir$_"} ($about, $home, $etc_files ? split(/[ \t]+/, $etc_files) : ());
-    -d $dir or die "$dir doesn't exist \n";
-    find (\&wanted, $dir);
-    for my $f (@files_to_move) {
-      my $dest = $f =~ s#$dir/?#$outdir#er;
-      if (grep(m#^$f$#, @navify_files)) {
-	# YAY we have to sub navbar and copy whoop whoop
-	open my $file_tc, '<', $f or die "file no open, grrr!";
-	open my $file_out, '>', $dest;
-	local $/;
-	print $file_out ((<$file_tc>) =~ s/NAV/nav_up("$dest" =~ s%.+?\/%%r,1)/er);
-	map \&close, ($file_tc, $file_out);
-      } else {
-	copy $f, $dest;
-      }
+  -d $cdir or help_and_bye;
+  mkdir $outdir;
+  chdir $cdir or die "Couldn't access $cdir\n";
+  read_config $config_file;
+  s!/*$!/! for ($outdir, $dir);
+  my @navify_files = map {"$dir$_"} ($about, $home, $etc_files ? split(/[ \t]+/, $etc_files) : ());
+  -d $dir or die "$dir doesn't exist \n";
+  find (\&wanted, $dir);
+  for my $f (@files_to_move) {
+    my $dest = $f =~ s#$dir/?#$outdir#er;
+    if (grep(m#^$f$#, @navify_files)) {
+      # YAY we have to sub navbar and copy whoop whoop
+      open my $file_tc, '<', $f or die "file no open, grrr!";
+      open my $file_out, '>', $dest;
+      local $/;
+      print $file_out ((<$file_tc>) =~ s/NAV/nav_up("$dest" =~ s%.+?\/%%r,1)/er);
+      map \&close, ($file_tc, $file_out);
+    } else {
+      copy $f, $dest;
     }
-    mkdir for @files_to_make;
-    values %{conv_files()};
-    $cache_dom = XML::LibXML->load_xml(location => $cache_file) if $cache && -f $cache_file;
-    chdir $outdir;
-    @arts = sort { $b->{date} <=> $a->{date}} map { html_fixup($_) } @org_exps;
-    finalise_html();
-    chdir '..';
-    populate_cache();
+  }
+  mkdir for @files_to_make;
+  values %{conv_files()};
+  $cache_dom = XML::LibXML->load_xml(location => $cache_file) if $cache && -f $cache_file;
+  chdir $outdir;
+  @arts = sort { $b->{date} <=> $a->{date}} map { html_fixup($_) } @org_exps;
+  finalise_html();
+  chdir '..';
+  populate_cache();
 }
 
 sub populate_cache {
@@ -460,14 +457,14 @@
 sub nav_up {
   my ($path) = @_;
   my @links = ($home, 'c/1.html', $about);
-  my $nav = shift ? $navbar : "<div class\"$nav_id\">$navbar</div>";
+  my $nav = shift ? "<div class=\"$nav_id\">$navbar</div>" : $navbar;
   $nav =~ s#LINK#prel_path("/$path", "/". shift @links)#ger;
 }
 
 sub cssbs($s,$t,$p){
   $s =~ s|CSS|prel_path("/$p","/$cat_css")|er
     =~ s/TITLE|BTIT/$t/ger
-    =~ s/NAV/nav_up($p)/er;
+    =~ s/NAV/nav_up($p,1)/er;
 }
 
 sub modify_art ($file, $dom) {
@@ -478,7 +475,7 @@
   for ($dom->findnodes('/html/body')) {
     # my @cds = $_->childNodes;
     my $nav_el = $dom->createElement('div');
-    $nav_el->{id} = $nav_id;
+    $nav_el->{class} = $nav_id;
     $nav_el->appendWellBalancedChunk(nav_up($file));
     $_->insertBefore($nav_el, $_->childNodes->[0])
   }
@@ -491,11 +488,18 @@
   $dom;
 }
 
+sub rss_st {
+  $rss_entry
+    =~ s/TITLE/$blog_title/er
+    =~ s/BLINK/$domain/er
+    =~ s/RDESC/$rdesc/er;
+}
+
 sub finalise_html {
   mkdir $no_name_dir;
   open my $fh, '>', "$no_name_dir/1.html";
   open my $mrss, '>', "$no_name_dir/rss.xml"; # The master rss file
-  print $mrss $rss_entry;
+  print $mrss rss_st();
   print $fh cssbs($h_intro . $h_c_intro, $blog_title, "a/c");
   my (%c_files, %r_files);	# Cataogry files and rss
   
@@ -508,7 +512,7 @@
     mkdir "$no_name_dir/$cat";
     open $c_files{$cat}, '>', "$no_name_dir/$cat/1.html";
     open $r_files{$cat}, '>', "$no_name_dir/$cat/rss.xml";
-    print {$r_files{$cat}} $rss_entry;
+    print {$r_files{$cat}} rss_st();
     print {$c_files{$cat}}
       cssbs($h_intro, "$cat  <a id=\"rss\" href=\"rss.xml\">(rss)</span> ", "a/b/c");
   }