txt2html: use Getopt::Long for saner command line arg handling
authorAmin Bandali <bandali@gnu.org>
Sun, 10 Oct 2021 02:08:37 +0000 (22:08 -0400)
committerAmin Bandali <bandali@gnu.org>
Sun, 10 Oct 2021 02:08:37 +0000 (22:08 -0400)
GNUmakefile
txt2html

index 2330e5d..f5b4014 100644 (file)
@@ -9,7 +9,7 @@
 
 
 gen = perl txt2html < $< > $@
-gen_fa = perl txt2html 'fa' < $< > $@
+gen_fa = perl txt2html --lang='fa' < $< > $@
 port := $(if $(port),$(port),8000)
 
 TXT := $(filter-out bandali-pubkey.txt bandali.txt,$(wildcard *.txt))
index 128995c..f2a23d9 100644 (file)
--- a/txt2html
+++ b/txt2html
 
 use strict;
 use warnings 'all';
+use Getopt::Long;
+
+my $opt_lang = 'en';
+GetOptions ('lang=s' => \$opt_lang)
+    or die("bad command line arguments\n");
 
 my $link_re =
     qr{([\('!])?\b((?:ftps?|https?|nntps?|imaps?|s?news|gopher)://
@@ -91,7 +96,7 @@ sub linkify {
 my $txt = do { local $/; <STDIN> };
 my $title = html_esc($txt =~ /\A([^\n]+)/);
 $title =~ s/^\s+|\s+$//g;
-if ($ARGV[0] and $ARGV[0] eq 'fa') {
+if ($opt_lang eq 'fa') {
     $title .= ' &mdash; بندعلی' if $title !~ /بندعلی/;
 } else {
     $title .= ' &mdash; bandali' if $title !~ /bandali/;
@@ -100,16 +105,14 @@ if ($ARGV[0] and $ARGV[0] eq 'fa') {
 $txt = linkify(html_esc($txt));
 
 print('<!doctype html>',
-      ($ARGV[0] and $ARGV[0] eq 'fa')
-      ? '<html lang="fa" dir="rtl">'
-      : '<html>',
-      '<head>',
-      '<meta
+      qq(<html lang="$opt_lang"),
+      $opt_lang eq 'fa' ? ' dir="rtl"' : '', '>',
+      '<head><meta
 http-equiv="Content-Type"
 content="text/html; charset=utf-8"
 />',
       "<title>$title</title>",
-      ($ARGV[0] and $ARGV[0] eq 'fa')
+      $opt_lang eq 'fa'
       ? "\n<style>\@font-face{font-family:sahel;font-weight:normal;
 src:local('Sahel WOL'),local('Sahel'),
 url('sahel.woff2')format('woff2');}pre{font-family:sahel}</style>\n"