Simplification and unification of scheme:// anchors
Here is the promised patch. I would be happy if it would be included, so that i finally would have given something back to this project. I followed the style that is used the most, i.e., '<URL>'; if there were anchors with link text, i've used '<URL> (text)'. There may still be some cases were i've merged an existing '()' suffix with the link text, separated by a semicolon; these cases should all be dates, and there are links which used that format regulary. Hmm. Beside that any content change would be an oversight (i've also fixed at least two broken URL specs, however). Because of the unpacked size i include the patchset as a shell archive with a compressed member; i have forgotten wether attachments are supported by the list or not, sorry. --steffen # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # Archives produced using this implementation of shar may be easily # examined with the command: # $ grep '^[^X#]' shell-archive # # This archive contains: # tz-data.diff # echo xx - tz-data.diff sed 's/^X//' << \! | uudecode | bzip2 --decompress --stdout > "tz-data.diff" Xbegin-base64 664 /dev/stdout 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 XZA/8wHV7nfREP7JDUhwTQKHRsstUs8FteqzTBk4ckwlgE7SMbucIpkhcoImMrc4y4f6NqQBP4kEq XKLqhQhtEplgpjVB9AUU2NovNs0jfZuuKHNw0b25l71sq2AgGxA1HhmlgM9HoBchJQFGCSWS4GRoh Xm8MxMlMyzuI+IByEYdgOJ8hyInwn5bcuUPS/PlFHVoCoMJiUhtU+ddmoZF7anGSTjdcssixgxIXM X/ahVYbZrC7SlCiRrYgojJcMWQcoCpcog4wtqMWzkGURVIukqbpRZk3cKozM1hDRGZKpEkay+0z60 XeDQYMDD2FhhAhBEewoxao9ejYP0KahH6OhgSz/nDD4P2PaH/DGf/LcdA1B/XAcsmCJtCRWEBYRAu Xhfx6jBkPjRmGmpSbpvTMUaTYA+sRST+kRqIFREf+4jaJvcHoZgDo4dntOToYPJclR3kZIRJBSSEI XQgIxFIsFF/9EsVBGLIKMVK0SMZFRjBkRBYggCwRBSKRVFn0WkFgwZFJPdbO6FRVVRQFiqSd8pipB XSKKMZBYKKpFAUjEkUUcsohjWSKCKKIAoLBEUkQEUWSIILIxIpiUSKEUqSFQBEkWAisiMgvkJAzKQ XwRJ7JPyHBNCCS9GS0kCSBGkKA3t9Li7mGEL1yOapYIlljQxgB6oHczcMKPhVEty1zGGPlo05koSm Xvz0nM8g7C4bidJ/gfF0ftfnQ80Oo7Kmu0XaSMgEIDawkmHiKeX5Du6LZ5Apo1AOlOtwqSmP8zIs9 X58s6QsRxlBBfkfNARkUEFBigqyKCnZKqsFUBQC+UT96c/JKpB8Qfrcw9ZoYTmUZEbWOZUOpwHIo4 Xu7ppm4E95wO97zt3bzlo5vvNGxJ9DyAw+twAfhkTc5hY1TqOwHggu9cHMhlfAUBg3Au0hFCyey/k XwG5B5rmwBHUzuaF9k7zAbRd2yIKadCHYuEfcfwbnA1FRPcRE0AAC8CRRCRQkZBGRZEQLpEEqKBIK XyDIjICHi3D+/7SSRXwq21baq2222222222rVtq2rba1W2qtttttttbW1bVqrbbatttrWrbbatttt XtVbaja/9dqq5aKqrVaqqqqqqqqqqqqqqqqqqqqrbbattrW222221Vqqq2qtW22rVW22222222222 X2221bbaqrbbbbbbbbbbaq2qq22221bbbbbVttqrVVVW0WtatqrVW2222ratVK1o16FrltttrW21b XbbbbattqrbbVqqq222222tarWrbbaKq21bVqlKVZSxaq21SlLbbattttpVW1bbWtttq1VVVtqtbb XbVttVatqqqq1tttttttttttttpaI0LbVtttW2rbbbbbbatW221VVqttqtVVatttWq0RbbaUttVVV XWq22qqqqrbbbbVtttVVa22W2222222222qra2220tttttW2tVWtbbVtttVbbbbatttttWW222222 X2222222222221bbbbbbbbbbbbbbbbbbbbbbattW2ULRVqrbWttttttttq222222rbbbbbbbba2tq X22222222222222222222222221VttvmT9Z039bzHpfiJmYoMKNFNkdtuhkR5n6ofxtUYyz/tH0Mb XMRei9p71m9hITDKCmM/7KDgAIk8rEyBIWKd7z+3VDZwCej59vcSVY2dxh+AZfm4OwtslH5sCPW9T XY4D73qeG/2jSZiQNxk/17C7Pm7+nls0KzaW8eGPNgbEbPZowr8/JtOnFZyKibkE1VsMkWKuQxN3E XzVgwxcUIQjDoXaMqKvcDeahs6jdAhANWgNSFnUYRR0IjCkpw4pkZriqsVgcRs6mPwH9+T/M22HUd XpCIyAjJaBoiX2owEKiVu3CE+qxcywpK5gg2wxwcAtBQogSITOA6G6gsMcXsYUyMH6LFTlvFfeRA0 XgSb9YaGZDwum29jsf7kyXA1RsYIXseOFTLzo1hPm3RzP4D1ANvIId5wbiwbKUMEY2A3Bg1IZmD5P XTsHfrAkCOGqgoJLLArICJJFJBEBSUsS1CELpk7Vr6jJfz5HEtq3zj9pNdz3ODyNRouqbjLXsrnO2 XWaI0Qsw62bgcAyOSsiL5v82P1OqpoghFUi5aO8K3vkQ0zhMQQXHU5wT0Nz1KZOQHVtY5v6FIcb7m XQF2ztRQSRMHXmy5j8Zg8jzKPyp7zQI9X3tJdyYMSWTUJRCxOEUpMmoywGBuU03xMPe/Y4cOT83J1 XdW7k2dQoYn1LsjYtEupkU3YxuZJZq5c0CIbMYbNPYbzh3DREPAMvKGosUD5RO5ZLU3ckN6mcQNm0 XeDR0OZ2ZNn2ngHDOeqWnA8tR8c06Pdk6EDLgBGmxl2HyHyxv5s2i0TM9wHkcy3AxpViElpW+UfJn XHIE/bMMrirwBgxgnPxA7B9CD08TUyB+2Jw4ABVSpKvHt5xbAaAZbHHMMeZnQZ2gUgweyCWtQERGI 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 X==== ! exit
And then there is the script, rewritten to comply to the new syntax. And it produces much nicer HTML output, it is oh so pretty now, Of course checking still works, and is also more sophisticated than before. --steffen
From a2131929d0d2a09591fcedf3afef0b77d6f704ec Mon Sep 17 00:00:00 2001 Message-Id: <a2131929d0d2a09591fcedf3afef0b77d6f704ec.1359248090.git.sdaoden@gmail.com> From: "Steffen \"Daode\" Nurpmeso" <sdaoden@gmail.com> Date: Sat, 26 Jan 2013 19:48:34 +0100 Subject: [PATCH 1/2] TZ db files: remove <pre>
--- africa | 1 - antarctica | 1 - asia | 1 - australasia | 1 - backward | 1 - etcetera | 1 - europe | 1 - factory | 1 - leapseconds | 1 - northamerica | 1 - pacificnew | 1 - solar87 | 1 - solar88 | 1 - solar89 | 1 - southamerica | 1 - systemv | 1 - 16 files changed, 0 insertions(+), 16 deletions(-) diff --git a/africa b/africa index dc90f12..5c95bb3 100644 --- a/africa +++ b/africa @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/antarctica b/antarctica index 60e615b..f630a73 100644 --- a/antarctica +++ b/antarctica @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/asia b/asia index 8711a50..0a6763a 100644 --- a/asia +++ b/asia @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/australasia b/australasia index b0a9638..8e8ac0d 100644 --- a/australasia +++ b/australasia @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/backward b/backward index dc7769f..6767777 100644 --- a/backward +++ b/backward @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/etcetera b/etcetera index a9ff729..af5d19b 100644 --- a/etcetera +++ b/etcetera @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/europe b/europe index 7fa1f13..8aad740 100644 --- a/europe +++ b/europe @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/factory b/factory index d29a585..4304f7c 100644 --- a/factory +++ b/factory @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/leapseconds b/leapseconds index eba7132..60c2323 100644 --- a/leapseconds +++ b/leapseconds @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/northamerica b/northamerica index efa1c06..6aaf665 100644 --- a/northamerica +++ b/northamerica @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/pacificnew b/pacificnew index bccd852..7349434 100644 --- a/pacificnew +++ b/pacificnew @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/solar87 b/solar87 index 2299558..8d0344a 100644 --- a/solar87 +++ b/solar87 @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/solar88 b/solar88 index bb1d6ca..29def03 100644 --- a/solar88 +++ b/solar88 @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/solar89 b/solar89 index af93235..2153522 100644 --- a/solar89 +++ b/solar89 @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/southamerica b/southamerica index afa505f..55072c8 100644 --- a/southamerica +++ b/southamerica @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. diff --git a/systemv b/systemv index e651e85..d9e2995 100644 --- a/systemv +++ b/systemv @@ -1,4 +1,3 @@ -# <pre> # This file is in the public domain, so clarified as of # 2009-05-17 by Arthur David Olson. -- 1.7.9.rc2.1.g69204
From c4ce7ed5d829e2977fac9cb6837827ecc5d71233 Mon Sep 17 00:00:00 2001 Message-Id: <c4ce7ed5d829e2977fac9cb6837827ecc5d71233.1359248090.git.sdaoden@gmail.com> In-Reply-To: <a2131929d0d2a09591fcedf3afef0b77d6f704ec.1359248090.git.sdaoden@gmail.com> References: <a2131929d0d2a09591fcedf3afef0b77d6f704ec.1359248090.git.sdaoden@gmail.com> From: "Steffen \"Daode\" Nurpmeso" <sdaoden@gmail.com> Date: Sat, 26 Jan 2013 22:48:19 +0100 Subject: [PATCH 2/2] workht.pl: added: URL checker and output dumper
--- workht.pl | 246 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 246 insertions(+), 0 deletions(-) create mode 100644 workht.pl diff --git a/workht.pl b/workht.pl new file mode 100644 index 0000000..56ee83c --- /dev/null +++ b/workht.pl @@ -0,0 +1,246 @@ +#!/usr/bin/env perl +require 5.008_001; +#@ workht.pl - URL checker / output dumper for tz data files. +#@ Public domain, 2013, Steffen Nurpmeso. +#@ Synopsis: +#@ workht.pl html < DATA_FILE | elinks -force-html -dump 1 +#@ workht.pl check < DATA_FILE > NEW_DATA_FILE +#@ The *check* mode requires an installed curl(1) (<http://curl.haxx.se>); +#@ Input data notes: +#@ - Only comment lines (\s*#) are recognized. +#@ - Non-empty (except whitespace only) non-comment lines finalize the +#@ preceeding comment block. +#@ - Empty (incl. WS only) non-comment lines in a comment block force paragraph +#@ separation in between comments. +#@ - A link is the character sequence '<SCHEME://[^>]+?'. +#@ (The *check* mode strips the surrounding angle brackets if a link doesn't +#@ work.) +#@ - A link may be followed by WS and a link text in parenthesis ('\([^)]*?\)'); +#@ If no link text exists, the URL is used as the link content, too. +#@ Note this only works in *html* mode, otherwise it'll always be the URL, +#@ and the text in parenthesis will be left as is. +#@ - A link may also be followed by WS, a backslash and a LF ('\s*\\$'), +#@ in which case the link text in parenthesis may be placed on the very next +#@ line. +#@ Note: slurps the entire data into memory. + +my $SCHEME_CHECKER = 'curl -q --silent --fail --head --location'; +# Which <scheme://> should be checked by $SCHEME_CHECKER +my %SCHEMES_TO_CHECK = (http => 1, https => 1, ftp => 1); + +## -- >8 -- 8< -- ## + +use diagnostics -verbose; +use strict; +use warnings; + +my $SCHEME_URL = qr{ + (.*?) + <(\w+://[^>]+)> + (.*) +}xi; +my $SCHEME_URL_EXTRACT = qr{^(\w+)://}; + +my $SCHEME_TEXT = qr{ + \s* + (?:\(([^)]*?)\)) + (.*) +}xi; + +my $EX_USAGE = 64; +my $EX_NOINPUT = 66; +my $ESTAT = 0; +my $INPUT; + +sub main_fun { + usage($EX_USAGE) unless @ARGV >= 1; + usage() if $ARGV[0] eq '-h' || $ARGV[0] eq '--help'; + if (@ARGV == 1) { + $INPUT = *STDIN; + if (! -f $INPUT) { + print STDERR "No file argument, and STDIN is not a file.\n\n"; + usage($EX_NOINPUT); + } + } elsif (! -f $ARGV[1]) { + print STDERR "File \"${ARGV[1]}\" does not exist.\n\n"; + usage($EX_NOINPUT); + } elsif (! open $INPUT, '<', $ARGV[1]) { + print STDERR "File \"${ARGV[1]}\" cannot be opened for reading.\n\n"; + usage($EX_NOINPUT); + } + mode_html() if $ARGV[0] eq 'html'; + mode_check() if $ARGV[0] eq 'check'; + usage($EX_USAGE); +} + +sub usage { + print STDERR <<__EOT__; +Synopsis: + workht.pl html < DATA_FILE | elinks -force-html -dump 1 + workht.pl check < DATA_FILE > NEW_DATA_FILE + +The *html* mode generates a very simple HTML page with hyperlinks. +The *check* mode requires an installed curl(1) (<http://curl.haxx.se>). +__EOT__ + + exit(@_ ? $_[0] : 0) +} + +sub mode_html { + Line::parse_input(); + + print <<__EOT__; +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<style> +body {margin:0; margin-left:5%; padding:0; width:88%} +pre {line-height:1.4em; font-family:serif; font-size:100%} +.indat {padding:1em; border:1px solid black; background-color:#F0F0F0; + font-family:monospace; font-size:90%} +</style> +<body> +__EOT__ + + my ($indat, $intxt) = (0, 0); + while (defined(my $lo = shift @$INPUT)) { + if (! $lo->{ISCOMM}) { + if ($intxt) { + $intxt = 0; + die unless print "</pre>\n"; + } + if ($lo->{DATA} !~ /^\s*$/ && ! $indat) { + $indat = 1; + die unless print "<pre class=indat>\n"; + } + die unless print $lo->{DATA}, "\n"; + next; + } + if ($indat) { + $indat = 0; + die unless print "</pre>\n"; + } + if (! $intxt) { + $intxt = 1; + die unless print "<pre>\n"; + } + + my ($l, $rest) = ('', substr $lo->{DATA}, $lo->{ISCOMM}); + Line::join_follow(\$lo, \$rest, $INPUT) if $lo->{FOLLOW}; + + while ($rest =~ $SCHEME_URL) { + $l .= $1 ? $1 : ''; + $rest = $3; + my $url = $2; + my $text; + if ($rest =~ $SCHEME_TEXT) { + $text = $1; + $rest = $2; + } else { + $text = $url; + } + $l .= '<a href="' . $url . '">' . $text . '</a>'; + } + $l .= $rest if $rest; + die unless print $l, "\n"; + } + + print <<__EOT__; +</body> +</html> +__EOT__ + + exit($ESTAT) +} + +sub mode_check { + Line::parse_input(); + + while (defined(my $lo = shift @$INPUT)) { + if (! $lo->{ISCOMM}) { + die unless print $lo->{DATA}, "\n"; + next; + } + + my ($l, $rest) = ('', $lo->{DATA}); + + while ($rest =~ $SCHEME_URL) { + $l .= $1 ? $1 : ''; + $rest = $3; + my $url = $2; + if ($url !~ $SCHEME_URL_EXTRACT || ! $SCHEMES_TO_CHECK{$1}) { + print STDERR ".Not checking URL scheme: <$url>\n"; + $l .= '<' . $url . '>'; + next; + } + + print STDERR " Checking URL <$url> "; + system($SCHEME_CHECKER . ' "' . $url . '" >/dev/null 2>/dev/null'); + die "Cannot exec: $SCHEME_CHECKER" if $? < 0; + die "Died with signal: $SCHEME_CHECKER" if $? & 127; + if ($? >> 8) { + print STDERR "ERROR!\r!\n"; + $l .= $url; + } else { + $l .= '<' . $url . '>'; + print STDERR "ok\r.\n"; + } + } + $l .= $rest if $rest; + die unless print $l, "\n"; + } + exit($ESTAT) +} + +{package Line; + sub new { + my $self = { + DATA => undef, # Line data + ISCOMM => 0, # If not 0, len of substr to strip + FOLLOW => 0, # If not 0, len of substr to strip for follow ln + }; + bless $self, $_[0] + } + + sub parse_input { + my @ld = <$INPUT>; + die unless close $INPUT; + my (@xd, $il, $ol); + while (@ld) { + $il = shift @ld; + chomp $il; + jloop: + $ol = new Line; + push @xd, $ol; + $ol->{DATA} = $il; + next unless (($ol->{ISCOMM} = ($il =~ /^(\s*#\s*)/) ? length $1 : 0)); + next unless (($ol->{FOLLOW} = ($il =~ /(\s*\\\s*)$/) ? length $1 : 0)); + if (@ld) { + $il = shift @ld; + chomp $il; + goto jloop if $il =~ $SCHEME_TEXT; + } else { + $il = undef; + } + $ol->{FOLLOW} = 0; + print STDERR "! False line continuation after: $ol->{DATA}\n"; + $ESTAT = 1; + goto jloop if defined $il; + } + $INPUT = \@xd; + } + + sub join_follow { + my ($sr, $lr, $lar) = @_; + if (${$sr}->{FOLLOW}) { + $$lr = substr $$lr, 0, -${$sr}->{FOLLOW}; + $$lr .= ' '; + $$sr = shift @$lar; + $$lr .= substr ${$sr}->{DATA}, ${$sr}->{ISCOMM}; + } + } +} + +{package main; main_fun()} + +# vim:set fenc=utf-8 syntax=perl ts=8 sts=3 sw=3 et tw=79: -- 1.7.9.rc2.1.g69204
Steffen "Daode" Nurpmeso <sdaoden@gmail.com> wrote: |And then there is the script, rewritten to comply to the new |syntax. And it produces much nicer HTML output, it is oh so |pretty now, | |Of course checking still works, and is also more sophisticated |than before. And then there is the idea that Russ Allbery brought up, converting the data to POD. I've not finished that yet, and it's 2 o'clock in the morning ;/. There are at least two problems unresolved. The first is that we must not loose the original formatting of plain text comments; we cannot simply indent because then L<> etc. are not expanded, then. The second is that the patch does not yet expand entitities. The third is that for this to be real neat we had to inject =head lines. I'll look at that at a later time, when my small mailer is really ready :-/, but i'm thankful for any suggestion, of course. Thanks and ciao --steffen
From deb0b0ec9f1f31c837deb38969eb7034a7b2d100 Mon Sep 17 00:00:00 2001 Message-Id: <deb0b0ec9f1f31c837deb38969eb7034a7b2d100.1359248654.git.sdaoden@gmail.com> From: "Steffen \"Daode\" Nurpmeso" <sdaoden@gmail.com> Date: Sun, 27 Jan 2013 01:00:22 +0100 Subject: [PATCH] workht.pl: intermediate POD mode that does not work
--- workht.pl | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 68 insertions(+), 2 deletions(-) diff --git a/workht.pl b/workht.pl index 56ee83c..c13e665 100644 --- a/workht.pl +++ b/workht.pl @@ -4,7 +4,11 @@ require 5.008_001; #@ Public domain, 2013, Steffen Nurpmeso. #@ Synopsis: #@ workht.pl html < DATA_FILE | elinks -force-html -dump 1 +#@ workht.pl pod < DATA_FILE | pod2XY +#@ workht.pl newpod < DATA_FILE | pod2XY #@ workht.pl check < DATA_FILE > NEW_DATA_FILE +#@ The *pod* and *newpod* modes produce perl(1) Pod output that can be +#@ converted using any STDIN-aware pod2XY parser; see below for the difference. #@ The *check* mode requires an installed curl(1) (<http://curl.haxx.se>); #@ Input data notes: #@ - Only comment lines (\s*#) are recognized. @@ -17,8 +21,8 @@ require 5.008_001; #@ work.) #@ - A link may be followed by WS and a link text in parenthesis ('\([^)]*?\)'); #@ If no link text exists, the URL is used as the link content, too. -#@ Note this only works in *html* mode, otherwise it'll always be the URL, -#@ and the text in parenthesis will be left as is. +#@ Note this only works in the *html* and *newpod* modes, otherwise it'll +#@ always be the URL, and the text in parenthesis will be left as is. #@ - A link may also be followed by WS, a backslash and a LF ('\s*\\$'), #@ in which case the link text in parenthesis may be placed on the very next #@ line. @@ -69,6 +73,8 @@ sub main_fun { usage($EX_NOINPUT); } mode_html() if $ARGV[0] eq 'html'; + mode_pod(0) if $ARGV[0] eq 'pod'; + mode_pod(1) if $ARGV[0] eq 'newpod'; mode_check() if $ARGV[0] eq 'check'; usage($EX_USAGE); } @@ -77,9 +83,15 @@ sub usage { print STDERR <<__EOT__; Synopsis: workht.pl html < DATA_FILE | elinks -force-html -dump 1 + workht.pl pod < DATA_FILE | pod2XY + workht.pl newpod < DATA_FILE | pod2XY workht.pl check < DATA_FILE > NEW_DATA_FILE The *html* mode generates a very simple HTML page with hyperlinks. +The *pod* and *newpod* modes produce perl(1) Pod output that can be +converted using any STDIN-aware pod2XY parser, e.g., pod2text; +the difference in between them is that *newpod* produces L<TEXT|URL> +markup, whereas *pod* uses the backward compatible L<URL> form only. The *check* mode requires an installed curl(1) (<http://curl.haxx.se>). __EOT__ @@ -153,6 +165,60 @@ __EOT__ exit($ESTAT) } +sub mode_pod { + my $newpod = $_[0]; + + Line::parse_input(); + + die unless print "=head1 IANA TZ database file\n\n"; + + my ($lnl, $mode) = (1, 0); + while (defined(my $lo = shift @$INPUT)) { + if (! $lo->{ISCOMM}) { + if ($lo->{DATA} !~ /^\s*$/) { + if ($mode != 1) { + $mode = 1; + if (! $lnl) { + die unless print "\n"; + } + } + die unless print "\t"; + $lnl = 0; + } else { + $lnl = 1; + } + die unless print $lo->{DATA}, "\n"; + next; + } + if ($mode) { + $mode = 0; + if (! $lnl) { + die unless print "\n"; + } + } + $lnl = 0; + + my ($l, $rest) = ('', substr $lo->{DATA}, $lo->{ISCOMM}); + Line::join_follow(\$lo, \$rest, $INPUT) if $lo->{FOLLOW}; + + while ($rest =~ $SCHEME_URL) { + $l .= $1 ? $1 : ''; + $rest = $3; + my $url = $2; + my $text; + if ($newpod && $rest =~ $SCHEME_TEXT) { + $rest = $2; + $l .= 'L<' . $1 . '|' . $url . '>'; + } else { + $l .= 'L<' . $url . '>'; + } + } + $l .= $rest if $rest; + die unless print $l, "\n"; + } + exit($ESTAT) +} + sub mode_check { Line::parse_input(); -- 1.7.9.rc2.1.g69204
On 2013-01-27 01:00, Steffen Daode Nurpmeso wrote:
And then there is the script, rewritten to comply to the new syntax. And it produces much nicer HTML output, it is oh so pretty now,
Of course checking still works, and is also more sophisticated than before.
This needed a fair bit a bit of editing to turn it into a 2-patch mbox suitable for "git am". (I had to save the email as plain text, remove everything before the first ">From" and change the ">From"s to "From" to make it look like an mbox. I'm just doing this for curiosity's sake, but you really should try and make it easier for the maintainer to use your patches! -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-27 01:00, Steffen Daode Nurpmeso wrote: |> And then there is the script, rewritten to comply to the new |> syntax. And it produces much nicer HTML output, it is oh so |> pretty now, |> |> Of course checking still works, and is also more sophisticated |> than before. | |This needed a fair bit a bit of editing to turn it into a 2-patch mbox |suitable for "git am". (I had to save the email as plain text, remove |everything before the first ">From" and change the ">From"s to "From" to |make it look like an mbox. I really have forgotten wether the list supports attachments! But a private mail makes me think it does; when i fix the problem that trailing empty lines are part of data boxes i promise to use attachments. And yes, a good mailer converts 'From ' lines to quoted printable encoding instead of using the '>From ' quoting because it doesn't modify actual data content. :) Sorry. |I'm just doing this for curiosity's sake, but you really should try and |make it easier for the maintainer to use your patches! | |-- |-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- |-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- Thanks, Ian! --steffen
On Mon, Jan 28, 2013 at 12:58:46PM +0100, Steffen Daode Nurpmeso <sdaoden@gmail.com> wrote:
And yes, a good mailer converts 'From ' lines to quoted printable encoding instead of using the '>From ' quoting because it doesn't modify actual data content. :)
Except ">From " encoding doesn't modify actual data content either, and even an average mailer needs to support both formats when reading mbox format. (See rfc4155 or http://qmail.org./man/man5/mbox.html for details) -- The choice of a Deliantra, the free code+content MORPG -----==- _GNU_ http://www.deliantra.net ----==-- _ generation ---==---(_)__ __ ____ __ Marc Lehmann --==---/ / _ \/ // /\ \/ / schmorp@schmorp.de -=====/_/_//_/\_,_/ /_/\_\
Marc Lehmann <schmorp@schmorp.de> wrote: |On Mon, Jan 28, 2013 at 12:58:46PM +0100, Steffen Daode Nurpmeso \ |<sdaoden@gmail.com> wrote: |> And yes, a good mailer converts 'From ' lines to quoted printable |> encoding instead of using the '>From ' quoting because it doesn't |> modify actual data content. :) | |Except ">From " encoding doesn't modify actual data content either, and yes it does. yes it does. yes it does. |even an average mailer needs to support both formats when reading mbox |format. | |(See rfc4155 or http://qmail.org./man/man5/mbox.html for details) I did have had a .. relationship with both of these, too. I think NetBSD's Mail(1) is the outstanding neat and clean one in respect to conformance to these standards, at least still and as of *today*, and to the best of my knowledge. 'From_' quoting has a terribly long story beside that, as many do know, and many false solutions imho have been used or are still in use even today; let's just mention the rather famous thread from 1996-05-17 [1]. Unfortunately POSIX and backward tools like Python's standard library MBOX support go for a 'From_' quoting that can be dated back to RFC 976 -- from February 1986! The good thing about using quoted-printable encoding for 'From ' lines, instead of whatever MBOXO/MBOXRD etc. quoting, is, beside being required for S/MIME (digest does not change since data content is not modified, but only the transfer-encoding), that even those backward-oriented and savage tools will work with message content that is produced today, transparently. |-- | The choice of a Deliantra, the free code+content \ |MORPG | -----==- _GNU_ http://www.deliantra.net | ----==-- _ generation | ---==---(_)__ __ ____ __ Marc Lehmann | --==---/ / _ \/ // /\ \/ / schmorp@schmorp.de | -=====/_/_//_/\_,_/ /_/\_\ Juhhuuuu! --steffen [1] http://www.jwz.org/doc/content-length.html
On 2013-01-27 00:45, Steffen Daode Nurpmeso wrote:
Here is the promised patch. I would be happy if it would be included, so that i finally would have given something back to this project.
I followed the style that is used the most, i.e., '<URL>'; if there were anchors with link text, i've used '<URL> (text)'. There may still be some cases were i've merged an existing '()' suffix with the link text, separated by a semicolon; these cases should all be dates, and there are links which used that format regulary. Hmm. Beside that any content change would be an oversight (i've also fixed at least two broken URL specs, however).
I think this is much easier to read than the old href links, although several people on the mailing list dislike the angle brackets.
Because of the unpacked size i include the patchset as a shell archive with a compressed member; i have forgotten wether attachments are supported by the list or not, sorry.
You could maybe have posted the 8 patches individually in plain text, rather than a sharchived, compressed mbox! -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-27 00:45, Steffen Daode Nurpmeso wrote: |> Here is the promised patch. |> I would be happy if it would be included, so that i finally would |> have given something back to this project. |> |> I followed the style that is used the most, i.e., '<URL>'; if |> there |> were anchors with link text, i've used '<URL> (text)'. |> There may still be some cases were i've merged an existing '()' |> suffix with the link text, separated by a semicolon; these cases |> should all be dates, and there are links which used that format |> regulary. Hmm. Beside that any content change would be an |> oversight (i've also fixed at least two broken URL specs, |> however). | |I think this is much easier to read than the old href links, although |several people on the mailing list dislike the angle brackets. Ya, but there needs to be a way to differentiate in between links that (may) work, and those that are known to be outdated. And i think it was you who pointed out an example where the mechanism of using <LINK> for (possibly) working links, and LINK for known-not-to-work ones was already used in the current database - and iirc there were some more of those. |> Because of the unpacked size i include the patchset as a shell |> archive with a compressed member; i have forgotten wether |> attachments are supported by the list or not, sorry. | |You could maybe have posted the 8 patches individually in plain text, |rather than a sharchived, compressed mbox! If you promise not to laugh.. The funny thing is that i've tried to use git(1)s send-email (i do have a stale tool around that offers a mode which echoes all the necessary parameters for this very case), but had to realize that i've overwritten a locally patched git-send-email when i've updated git last so that the installed version failed with die "Unable to initialize SMTP properly. Check config and use --smtp-debug. " And i was too tired to dig into this. Oth i'm even lucky since i'm personally so sick of '[PATCH]' subjects all around that the handmade version fits better to me and i. |-- |-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- |-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- --steffen
On 28/01/13 11:44, Steffen Daode Nurpmeso wrote:
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-27 00:45, Steffen Daode Nurpmeso wrote: |> Here is the promised patch. |> I would be happy if it would be included, so that i finally would |> have given something back to this project. |> |> I followed the style that is used the most, i.e., '<URL>'; if |> there |> were anchors with link text, i've used '<URL> (text)'. |> There may still be some cases were i've merged an existing '()' |> suffix with the link text, separated by a semicolon; these cases |> should all be dates, and there are links which used that format |> regulary. Hmm. Beside that any content change would be an |> oversight (i've also fixed at least two broken URL specs, |> however). | |I think this is much easier to read than the old href links, although |several people on the mailing list dislike the angle brackets.
Ya, but there needs to be a way to differentiate in between links that (may) work, and those that are known to be outdated. And i think it was you who pointed out an example where the mechanism of using <LINK> for (possibly) working links, and LINK for known-not-to-work ones was already used in the current database - and iirc there were some more of those.
It wasn't me who suggested differentiating broken links fron working links (if they no longer work - tough!), but I did suggest putting all the URLs in angle brackets. While on the subject, the backslash escapes at the ends of the lines with a <URL> with a parenthesised comment on the following line is kind of ugly. I'm sure it must be possible to re-work your script to avoid the need for that. (I.e. if a line ends with a <URL> plus optional whitespace, check if the following line starts with optional whitespace plus parenthesised link text.) Then again, perhaps parentheses aren't the ideal delimiters for link text anyway, as I'm sure there must be cases in the data files where this was not the intended interpretation of the parenthesised text following a URL. -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott <abbotti@mev.co.uk> wrote: |On 28/01/13 11:44, Steffen Daode Nurpmeso wrote: |> Ian Abbott <abbotti@mev.co.uk> wrote: |>|On 2013-01-27 00:45, Steffen Daode Nurpmeso wrote: |>|> Here is the promised patch. |>|> I would be happy if it would be included, so that i finally would |>|> have given something back to this project. [.] |While on the subject, the backslash escapes at the ends of the lines |with a <URL> with a parenthesised comment on the following line is kind |of ugly. I'm sure it must be possible to re-work your script to avoid |the need for that. (I.e. if a line ends with a <URL> plus optional |whitespace, check if the following line starts with optional whitespace |plus parenthesised link text.) Hmm. So i've reworked the (Pod-less) script to support multiple follow lines in the middle of nowhere, and changed the two links from which i remembered that it did matter. This updated version also fixes the "trailing empty line after rules are included in data boxes" issue. And it uses normal text paragraphs for the comment text, forcing newline breaks via <br />, instead of using preformatted text for that, which makes it even nicer, since some of the dramatically long links will now be wrapped by browsers. [.] |Then again, perhaps parentheses aren't the ideal delimiters for link |text anyway, as I'm sure there must be cases in the data files where |this was not the intended interpretation of the parenthesised text |following a URL. On sunday night i recognized that some .sy domains where reachable, but the english versions didn't; from within Germany. So maybe using the *check* mode doesn't really make sense, since results may vary from time to time. But i don't know. |-- |-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- |-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- Ciao, --steffen diff --git a/northamerica b/northamerica index 6aaf665..46cfaa9 100644 --- a/northamerica +++ b/northamerica @@ -59,7 +59,8 @@ # # For more about the first ten years of DST in the United States, see # Robert Garland's <http://www.clpgh.org/exhibit/dst.html> \ -# (``Ten years of daylight saving from the Pittsburgh standpoint'', Carnegie Library of Pittsburgh, 1927). +# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ +# Carnegie Library of Pittsburgh, 1927). # # Shanks says that DST was called "War Time" in the US in 1918 and 1919. # However, DST was imposed by the Standard Time Act of 1918, which @@ -79,9 +80,9 @@ # Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama. # In the introduction, Oboler spoke of "Eastern Peace Time." # An AltaVista search turned up -# <http://rowayton.org/rhs/hstaug45.html>: -# ``When the time is announced over the radio now, it is 'Eastern Peace -# Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful.'' +# <http://rowayton.org/rhs/hstaug45.html> \ +# (``When the time is announced over the radio now, it is 'Eastern Peace \ +# Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful.'') # (August 1945) by way of confirmation. # From Joseph Gallant citing diff --git a/workht.pl b/workht.pl index 56ee83c..7c742c6 100644 --- a/workht.pl +++ b/workht.pl @@ -3,7 +3,7 @@ require 5.008_001; #@ workht.pl - URL checker / output dumper for tz data files. #@ Public domain, 2013, Steffen Nurpmeso. #@ Synopsis: -#@ workht.pl html < DATA_FILE | elinks -force-html -dump 1 +#@ workht.pl html < DATA_FILE | elinks -force-html -dump 0 #@ workht.pl check < DATA_FILE > NEW_DATA_FILE #@ The *check* mode requires an installed curl(1) (<http://curl.haxx.se>); #@ Input data notes: @@ -17,11 +17,9 @@ require 5.008_001; #@ work.) #@ - A link may be followed by WS and a link text in parenthesis ('\([^)]*?\)'); #@ If no link text exists, the URL is used as the link content, too. -#@ Note this only works in *html* mode, otherwise it'll always be the URL, -#@ and the text in parenthesis will be left as is. #@ - A link may also be followed by WS, a backslash and a LF ('\s*\\$'), -#@ in which case the link text in parenthesis may be placed on the very next -#@ line. +#@ in which case the link text in parenthesis may be placed on follow lines; +#@ multiple follow lines with "backslash escaped newlines" may be used. #@ Note: slurps the entire data into memory. my $SCHEME_CHECKER = 'curl -q --silent --fail --head --location'; @@ -76,7 +74,7 @@ sub main_fun { sub usage { print STDERR <<__EOT__; Synopsis: - workht.pl html < DATA_FILE | elinks -force-html -dump 1 + workht.pl html < DATA_FILE | elinks -force-html -dump 0 workht.pl check < DATA_FILE > NEW_DATA_FILE The *html* mode generates a very simple HTML page with hyperlinks. @@ -94,39 +92,46 @@ sub mode_html { <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> -body {margin:0; margin-left:5%; padding:0; width:88%} -pre {line-height:1.4em; font-family:serif; font-size:100%} -.indat {padding:1em; border:1px solid black; background-color:#F0F0F0; - font-family:monospace; font-size:90%} +body {margin:0; margin-left:5%; padding:1em; width:88%} +p, pre {line-height:1.5em; font-family:serif; font-size:100%} +pre {padding:1em; border:1px solid black; background-color:#F0F0F0; + line-height:1.3em; font-family:monospace; font-size:90%} </style> <body> __EOT__ - my ($indat, $intxt) = (0, 0); + my ($indat, $intxt, $prefix) = (0, 0); while (defined(my $lo = shift @$INPUT)) { + $prefix = ''; if (! $lo->{ISCOMM}) { if ($intxt) { $intxt = 0; - die unless print "</pre>\n"; + $prefix = "</p>"; } - if ($lo->{DATA} !~ /^\s*$/ && ! $indat) { - $indat = 1; - die unless print "<pre class=indat>\n"; + if ($lo->{DATA} !~ /^\s*$/) { + if (! $indat) { + $indat = 1; + $prefix .= "<pre>"; + } + } elsif ($indat) { + $indat = 0; + $prefix .= "</pre>"; } - die unless print $lo->{DATA}, "\n"; + die unless print $prefix, $lo->{DATA}, "\n"; next; } + if ($indat) { $indat = 0; - die unless print "</pre>\n"; + $prefix = "</pre>\n"; } if (! $intxt) { $intxt = 1; - die unless print "<pre>\n"; + $prefix .= "<p>\n"; } my ($l, $rest) = ('', substr $lo->{DATA}, $lo->{ISCOMM}); - Line::join_follow(\$lo, \$rest, $INPUT) if $lo->{FOLLOW}; + Line::join_follow(\$rest, $lo, $INPUT) if $lo->{FOLLOW}; while ($rest =~ $SCHEME_URL) { $l .= $1 ? $1 : ''; @@ -142,7 +147,7 @@ __EOT__ $l .= '<a href="' . $url . '">' . $text . '</a>'; } $l .= $rest if $rest; - die unless print $l, "\n"; + die unless print $prefix, $l, "<br />\n"; } print <<__EOT__; @@ -209,35 +214,30 @@ sub mode_check { while (@ld) { $il = shift @ld; chomp $il; - jloop: $ol = new Line; push @xd, $ol; $ol->{DATA} = $il; - next unless (($ol->{ISCOMM} = ($il =~ /^(\s*#\s*)/) ? length $1 : 0)); - next unless (($ol->{FOLLOW} = ($il =~ /(\s*\\\s*)$/) ? length $1 : 0)); - if (@ld) { - $il = shift @ld; - chomp $il; - goto jloop if $il =~ $SCHEME_TEXT; - } else { - $il = undef; - } + $ol->{ISCOMM} = ($il =~ /^(\s*#\s*)/) ? length $1 : 0; + $ol->{FOLLOW} = ($il =~ /\s*(\\\s*)$/) ? length $1 : 0; + } + if (defined $ol && $ol->{FOLLOW}) { $ol->{FOLLOW} = 0; - print STDERR "! False line continuation after: $ol->{DATA}\n"; + print STDERR "! File ends with backslash escaped follow line\n"; $ESTAT = 1; - goto jloop if defined $il; } $INPUT = \@xd; } sub join_follow { - my ($sr, $lr, $lar) = @_; - if (${$sr}->{FOLLOW}) { - $$lr = substr $$lr, 0, -${$sr}->{FOLLOW}; - $$lr .= ' '; - $$sr = shift @$lar; - $$lr .= substr ${$sr}->{DATA}, ${$sr}->{ISCOMM}; - } + my ($lr, $lor, $lar) = @_; + $$lr = substr $$lr, 0, -$lor->{FOLLOW}; + do { + $lor = shift @$lar; + my $l = $lor->{DATA}; + $l = $lor->{FOLLOW} ? substr $l, $lor->{ISCOMM}, -$lor->{FOLLOW} + : substr $l, $lor->{ISCOMM}; + $$lr .= $l; + } while $lor->{FOLLOW}; } }
On 2013-01-30 11:28, Steffen Daode Nurpmeso wrote:
Ian Abbott <abbotti@mev.co.uk> wrote: |While on the subject, the backslash escapes at the ends of the lines |with a <URL> with a parenthesised comment on the following line is kind |of ugly. I'm sure it must be possible to re-work your script to avoid |the need for that. (I.e. if a line ends with a <URL> plus optional |whitespace, check if the following line starts with optional whitespace |plus parenthesised link text.)
Hmm. So i've reworked the (Pod-less) script to support multiple follow lines in the middle of nowhere, and changed the two links from which i remembered that it did matter.
This updated version also fixes the "trailing empty line after rules are included in data boxes" issue. And it uses normal text paragraphs for the comment text, forcing newline breaks via <br />, instead of using preformatted text for that, which makes it even nicer, since some of the dramatically long links will now be wrapped by browsers.
Self closing tags such as <br /> are only legal in xhtml, not plain html, so you'll need to output a XML declaration and a DOCTYPE in your script.
diff --git a/northamerica b/northamerica index 6aaf665..46cfaa9 100644 --- a/northamerica +++ b/northamerica @@ -59,7 +59,8 @@ # # For more about the first ten years of DST in the United States, see # Robert Garland's <http://www.clpgh.org/exhibit/dst.html> \ -# (``Ten years of daylight saving from the Pittsburgh standpoint'', Carnegie Library of Pittsburgh, 1927). +# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ +# Carnegie Library of Pittsburgh, 1927).
It would still be great to get rid of the backslash line continuations and modify the script to work without them. -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-30 11:28, Steffen Daode Nurpmeso wrote: |> Ian Abbott <abbotti@mev.co.uk> wrote: |>|While on the subject, the backslash escapes at the ends of the lines |>|with a <URL> with a parenthesised comment on the following line is kind |>|of ugly. I'm sure it must be possible to re-work your script to avoid |>|the need for that. (I.e. if a line ends with a <URL> plus optional |>|whitespace, check if the following line starts with optional whitespace |>|plus parenthesised link text.) |> |> Hmm. |> So i've reworked the (Pod-less) script to support multiple follow |> lines in the middle of nowhere, and changed the two links from |> which i remembered that it did matter. |> |> This updated version also fixes the "trailing empty line after |> rules are included in data boxes" issue. |> And it uses normal text paragraphs for the comment text, forcing |> newline breaks via <br />, instead of using preformatted text for |> that, which makes it even nicer, since some of the dramatically |> long links will now be wrapped by browsers. | |Self closing tags such as <br /> are only legal in xhtml, not plain |html, so you'll need to output a XML declaration and a DOCTYPE in your |script. That is indeed a good point, it must be '<br>'. |> # For more about the first ten years of DST in the United States, see |> # Robert Garland's <http://www.clpgh.org/exhibit/dst.html> \ |> -# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ |. Carnegie Library of Pittsburgh, 1927). |> +# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ |> +# Carnegie Library of Pittsburgh, 1927). | |It would still be great to get rid of the backslash line continuations |and modify the script to work without them. :) I personally like it explicit and would definitely go for the L<><> syntax i've used first, since it is completely unambiguous. I would also spend some more time and convert the many "headlines" that yet exist in the comments to enough markup to get to something real; in fact with not that much effort, maybe a weekend, it would be possible to adjust the comments so that the script could use indents, lists and normal paragraphs without any <br> at all; then the Pod-way (any many others, too) could be pursued, also leading to cross-referenced PDF output -- and that is something that would surely be interesting for some people, as i suppose. But the idea ypu proposed won't work with git(1), since trailing whitespace is a no-go; right? |-- |-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- |-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- Ciao, --steffen
On 2013-01-30 14:02, Steffen Daode Nurpmeso wrote:
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-30 11:28, Steffen Daode Nurpmeso wrote: |> Ian Abbott <abbotti@mev.co.uk> wrote: |>|While on the subject, the backslash escapes at the ends of the lines |>|with a <URL> with a parenthesised comment on the following line is kind |>|of ugly. I'm sure it must be possible to re-work your script to avoid |>|the need for that. (I.e. if a line ends with a <URL> plus optional |>|whitespace, check if the following line starts with optional whitespace |>|plus parenthesised link text.) |> |> Hmm. |> So i've reworked the (Pod-less) script to support multiple follow |> lines in the middle of nowhere, and changed the two links from |> which i remembered that it did matter. |> |> This updated version also fixes the "trailing empty line after |> rules are included in data boxes" issue. |> And it uses normal text paragraphs for the comment text, forcing |> newline breaks via <br />, instead of using preformatted text for |> that, which makes it even nicer, since some of the dramatically |> long links will now be wrapped by browsers. | |Self closing tags such as <br /> are only legal in xhtml, not plain |html, so you'll need to output a XML declaration and a DOCTYPE in your |script.
That is indeed a good point, it must be '<br>'.
That depends what DOCTYPE you decide to use. There are various other things wrong with the output, such as '&', '<' and '>' not being turned into the entities '&', '<' and '>'. Note that if doing that, you'd need to make sure not to convert the existing entities such as 'á' into 'á'. That would be easier if the existing HTML entities were converted to UTF-8 sequences first! (There are also a few odd-ball bits of mark-up in the original text, such as <e'> which need to be dealt with by a separate patch to the data files, e.g. to replace <e'> with the HTML entity é or by the UTF-8 sequence é if going down the UTF-8 road.) Also, validator.w3.org is your friend!
|> # For more about the first ten years of DST in the United States, see |> # Robert Garland's <http://www.clpgh.org/exhibit/dst.html> \ |> -# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ |. Carnegie Library of Pittsburgh, 1927). |> +# (``Ten years of daylight saving from the Pittsburgh standpoint'', \ |> +# Carnegie Library of Pittsburgh, 1927). | |It would still be great to get rid of the backslash line continuations |and modify the script to work without them.
:) I personally like it explicit and would definitely go for the L<><> syntax i've used first, since it is completely unambiguous.
There's also the MediaWiki style for external links, e.g.: [http://www.foobar.org/baz.html Meaningful link text] which is not too unreadable, but less readable than having the Meaningful link text in parentheses. For long URLs, it might be split like this: [http://www.foobar.org/baz.html Meaningful link text] or even: [http://www.foobar.org/baz.html Meaningful link text] which should be fine as long as the Meaningful link text contains no ']' characters (or at least no unmatched ']' characters if matched pairs of '[' and ']' are to be allowed).
I would also spend some more time and convert the many "headlines" that yet exist in the comments to enough markup to get to something real; in fact with not that much effort, maybe a weekend, it would be possible to adjust the comments so that the script could use indents, lists and normal paragraphs without any <br> at all; then the Pod-way (any many others, too) could be pursued, also leading to cross-referenced PDF output -- and that is something that would surely be interesting for some people, as i suppose.
It depends how much mark-up people are willing to put up with in the tzdata files, but I suspect not very much, if any! The primary method for viewing the tzdata files should be the plain text originals, not the output from some fancy converter.
But the idea ypu proposed won't work with git(1), since trailing whitespace is a no-go; right?
You shouldn't need trailing anything, right? If the line ends with URL, see if the next line(s) contains the start of the link text before you decide to output the <br /> or whatever. -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
Ian Abbott <abbotti@mev.co.uk> wrote: |On 2013-01-30 14:02, Steffen Daode Nurpmeso wrote: |> Ian Abbott <abbotti@mev.co.uk> wrote: |>|On 2013-01-30 11:28, Steffen Daode Nurpmeso wrote: |>|> Ian Abbott <abbotti@mev.co.uk> wrote: [.] |[.] MediaWiki [.] Yuck! |-- |-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- |-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=- --steffen
Steffen "Daode" Nurpmeso <sdaoden@gmail.com> wrote: |On sunday night i recognized that some .sy domains where |reachable, but the english versions didn't; from within Germany. |So maybe using the *check* mode doesn't really make sense, since |results may vary from time to time. [.] |+# Time' instead of the old familiar 'Eastern War Time.' Peace is \ |wonderful.'') | # (August 1945) by way of confirmation. I do *not* know. (Specifics; and in case someone thinks false.)
On Fri, 01 Feb 2013 12:57:38 +0100, Steffen Daode Nurpmeso <sdaoden@gmail.com> wrote:
Steffen "Daode" Nurpmeso <sdaoden@gmail.com> wrote: |On sunday night i recognized that some .sy domains where |reachable, but the english versions didn't; from within Germany. |So maybe using the *check* mode doesn't really make sense, since |results may vary from time to time.
Even reachability doesn't prove anything. Years later, a URL might still be reachable but just show unrelated ads. Sascha
Steffen "Daode" Nurpmeso <sdaoden@gmail.com> wrote: |Here is the promised patch. |I would be happy if it would be included, so that i finally would |have given something back to this project. Ok, i've finally understood that some people have problems with the diffs and/or don't use git(1) to manage the TZ data, so here is a tar(1) archive with the members tz-data.diff and tz-script.diff that has otherwise the same content as was sent on sunday morning. Thanks, --steffen
This is following up to a discussion in January 2013 about simplifying the use of URLs in the data, e.g.: http://mm.icann.org/pipermail/tz/2013-January/018574.html Steffen, thanks for putting all that work into it. We can use the simplification of the data files, I think, even if we don't try to verify the URLs. I pushed the attached patch into the experimental repository on gitub.
Paul Eggert <eggert@cs.ucla.edu> wrote: |This is following up to a discussion in January 2013 about simplifying |the use of URLs in the data, e.g.: | |http://mm.icann.org/pipermail/tz/2013-January/018574.html | |Steffen, thanks for putting all that work into it. We can use the |simplification of the data files, I think, even if we don't try to |verify the URLs. I pushed the attached patch into the experimental |repository on gitub. Oh please, i have to thank you instead for decades of working on free software, really. But should you be interested, the attached patch uses (my rebased topic branch of last year, brought in sync with) your style and should make all of TZ use it uniformly. Thanks, --steffen
Steffen Nurpmeso wrote:
the attached patch uses (my rebased topic branch of last year, brought in sync with) your style and should make all of TZ use it uniformly.
Thanks, some of that looks good, but I don't think we need to surround URLs with angle brackets if they are already surrounded by white space, as the white space is delimiter enough. So I installed the attached patch into the experimental version.
Btw. -- i will not put any more effort in that. I remember the first time that i got in contact with TZ database files including Theory, and i was on fire at a glance. I did not know many things that i've read even about my own country, Germany. You do not learn things like that, even on the academic high school (»Gymnasium«). And that is a real pity. But this yet shows up one of the problems that i would encounter; if done the *right* way, it would be necessary to add a lot of cross-references and cites etc., in a way that would be machine-parseable; i.e., just buy a book from Oxford University Press, like ``Ivanhoe'', and you know what i mean.. So this, if done *right*, would take a man year, or even more. If i would be a professor i think i would have students that would be hooked, though ... In general it's a pity that you learn years and years of 3rd Reich, after-war land reform and the »Defenestration of Prague«, but don't know what time it is in the end. --steffen
participants (6)
-
Ian Abbott
-
Marc Lehmann
-
Paul Eggert
-
Sascha Wildner
-
Steffen Daode Nurpmeso
-
Steffen Nurpmeso