stop bugging the server for a favicon; i don't have one right now
[~bandali/bndl.org] / txt2html
index 128995c..10de15d 100644 (file)
--- a/txt2html
+++ b/txt2html
 
 use strict;
 use warnings 'all';
 
 use strict;
 use warnings 'all';
+use Getopt::Long;
+
+my $opt_lang = 'en';
+my $opt_index;
+GetOptions ('lang=s' => \$opt_lang,
+            'index' => \$opt_index)
+    or die("bad command line arguments\n");
 
 my $link_re =
     qr{([\('!])?\b((?:ftps?|https?|nntps?|imaps?|s?news|gopher)://
 
 my $link_re =
     qr{([\('!])?\b((?:ftps?|https?|nntps?|imaps?|s?news|gopher)://
@@ -91,28 +98,44 @@ sub linkify {
 my $txt = do { local $/; <STDIN> };
 my $title = html_esc($txt =~ /\A([^\n]+)/);
 $title =~ s/^\s+|\s+$//g;
 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/;
 }
     $title .= ' &mdash; بندعلی' if $title !~ /بندعلی/;
 } else {
     $title .= ' &mdash; bandali' if $title !~ /bandali/;
 }
+my ($url) = $txt =~ /(?:plain text|متن ساده): (.*)\r?\n?\z/;
+$url = 'https://bndl.org/bandali-cv.txt'
+    if (!$url and $title =~ /curriculum vitae/);
+$url = html_esc($url) if $url;
 
 $txt = linkify(html_esc($txt));
 
 
 $txt = linkify(html_esc($txt));
 
-print('<!doctype html>',
-      ($ARGV[0] and $ARGV[0] eq 'fa')
-      ? '<html lang="fa" dir="rtl">'
-      : '<html>',
-      '<head>',
-      '<meta
-http-equiv="Content-Type"
-content="text/html; charset=utf-8"
-/>',
-      "<title>$title</title>",
-      ($ARGV[0] and $ARGV[0] eq 'fa')
-      ? "\n<style>\@font-face{font-family:sahel;font-weight:normal;
+print("<!doctype html>",
+      qq(<html lang="$opt_lang"),
+      $opt_lang eq 'fa' ? ' dir="rtl"' : '',
+      ">",
+      qq(<head>
+<meta http-equiv="Content-Type"
+content="text/html; charset=utf-8" />\n),
+      "<title>$title</title>\n",
+      qq(<link rel="icon" href="data:,">\n),
+      $url ? qq(<link rel="alternate" href="$url"
+title="plain text" type="text/plain" />\n) : '',
+      ($opt_index and $opt_lang eq 'en')
+      ? qq(<link rel="alternate" href="https://bndl.org/fa/"
+hreflang="fa" title="persian" />\n)
+      : ($opt_index and $opt_lang eq 'fa')
+      ? qq(<link rel="alternate" href="https://bndl.org/"
+hreflang="en" title="english" />\n)
+      : '',
+      qq(<style>\@media(prefers-color-scheme:dark){
+body{background:#1c1c1c;color:white;}a:link{color:#acdeff;}
+a:visited{color:#f8f;}a:active{color:#e00;}}),
+      $opt_lang eq 'fa'
+      ? qq(\n\@font-face{font-family:sahel;font-weight:normal;
 src:local('Sahel WOL'),local('Sahel'),
 src:local('Sahel WOL'),local('Sahel'),
-url('sahel.woff2')format('woff2');}pre{font-family:sahel}</style>\n"
+url('sahel.woff2')format('woff2');}pre{font-family:sahel})
       : '',
       : '',
-      '</head><body><pre>', $txt, '</pre></body></html>');
+      "</style>\n",
+      "</head><body><pre>$txt</pre></body></html>\n");
 STDOUT->flush;
 STDOUT->flush;