diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-01-07 15:22:43 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-01-07 15:22:43 +0000 |
commit | 7c2986ff4a631b3ad967d64df9502c03463d41f7 (patch) | |
tree | 8937630e3c6fbb2d799ef8ff0c2bb8d0526b8f5b /Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl | |
parent | 1c2a7c6d12cd8d1cb6ca50cd0a71d2a1605fc4d4 (diff) |
zziplib 0.13.59
git-svn-id: svn://tug.org/texlive/trunk@20965 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl')
-rw-r--r-- | Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl b/Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl new file mode 100644 index 00000000000..e1fe56683df --- /dev/null +++ b/Build/source/libs/zziplib/zziplib-0.13.60/docs/make-dbk.pl @@ -0,0 +1,118 @@ +#! /usr/local/bin/perl +# this file converts simple html text into a docbook xml variant. +# The mapping of markups and links is far from perfect. But all we +# want is the docbook-to-pdf converter and similar technology being +# present in the world of docbook-to-anything converters. + +use strict; + +my %o; + +my %file; +my $F; +my @order; + +for $F (@ARGV) +{ + if ($F =~ /^(\w+)=(.*)/) + { + $o{$1} = $2; + }else{ + open F, "<$F" or next; + my $T = join ("",<F>); close F; + $file{$F}{text} = $T; + $file{$F}{orig} = $F; + push @order, $F; + } +} + +$o{version} = `date` if not length $o{version}; + +for $F (keys %file) +{ + $_ = $file{$F}{text}; + s{<!--VERSION-->}{ $o{version} }gse; + s{</h2>(.*)}{</title>\n<subtitle>$1</subtitle>}mg; + s{<h2>}{<sect1 id=\"$F\"><title>}mg; + s{<[Pp]([> ])}{<para$1}mg; s{</[Pp]>}{</para>}mg; + s{<pre>}{<screen>}mg; s{</pre>}{</screen>}mg; + s{<h3>}{<sect2><title>}mg; + s{</h3>((?:.(?!<sect2>))*.?)}{</title>$1</sect2>}sg; + s{<!doctype [^<>]*>}{}sg; + s{<!DOCTYPE [^<>]*>}{}sg; + s{(<\w+\b[^<>]*\swidth=)(\d+\%)}{$1\"$2\"}sg; + s{(<\w+\b[^<>]*\s\w+=)(\d+)}{$1\"$2\"}sg; + s{&&}{\&\;\&\;}sg; + s{\$\<}{\$\<\;}sg; + s{&(\w+[\),])}{\&\;$1}sg; + s{(</?)span(\s[^<>]*)?>}{$1."phrase$2>"}sge; + s{(</?)small(\s[^<>]*)?>}{$1."note$2>"}sge; + s{(</?)(b|em|i)>}{$1."emphasis>"}sge; + s{(</?)(li)>}{$1."listitem>"}sge; + s{(</?)(ul)>}{$1."itemizedlist>"}sge; + s{(</?)(ol)>}{$1."orderedlist>"}sge; + s{(</?)(dl)>}{$1."variablelist>"}sge; + s{<dt\b([^<>]*)>}{"<varlistentry$1><term>"}sge; + s{</dt\b([^<>]*)>}{"</term>"}sge; + s{<dd\b([^<>]*)>}{"<listitem$1>"}sge; + s{</dd\b([^<>]*)>}{"</listitem></varlistentry>"}sge; + s{<table\b([^<>]*)>}{"<informaltable$1><tgroup cols=\"2\"><tbody>"}sge; + s{</table\b([^<>]*)>}{"</tbody></tgroup></informaltable>"}sge; + s{(</?)tr(\s[^<>]*)?>}{$1."row$2>"}sge; + s{(</?)td(\s[^<>]*)?>}{$1."entry$2>"}sge; + s{<informaltable\b[^<>]*>\s*<tgroup\b[^<>]*>\s*<tbody> + \s*<row\b[^<>]*>\s*<entry\b[^<>]*>\s*<informaltable\b} + {<informaltable}gsx; + s{</informaltable>\s*</entry>\s*</row> + \s*</tbody>\s*</tgroup>\s*</informaltable>} + {</informaltable>}gsx; + s{(<informaltable[^<>]*\swidth=\"100\%\")}{$1 pgwide=\"1\"}gs; + s{(<tbody>\s*<row[^<>]*>\s*<entry[^<>]*\s)(width=\"50\%\")} + {<colspec colwidth=\"1*\" /><colspec colwidth=\"1*\" />\n$1$2}gs; + + s{<nobr>([\'\`]*)<tt>}{<cmdsynopsis>$1}sg; + s{</tt>([\'\`]*)</nobr>}{$2</cmdsynopsis>}sg; + s{<nobr><(?:tt|code)>([\`\"\'])}{<cmdsynopsis>$1}sg; + s{<(?:tt|code)><nobr>([\`\"\'])}{<cmdsynopsis>$1}sg; + s{([\`\"\'])</(?:tt|code)></nobr>}{$1</cmdsynopsis>}sg; + s{([\`\"\'])</nobr></(?:tt|code)>}{$1</cmdsynopsis>}sg; + s{(</?)tt>}{$1."constant>"}sge; + s{(</?)code>}{$1."literal>"}sge; + s{>([^<>]+)<br>}{><highlights>$1</highlights>}sg; + s{<br>}{<br />}sg; + + s{(</?)date>}{$1."sect1info>"}sge; + s{<reference>}{<reference id=\"reference\">}s; + + s{<a\s+href=\"((?:http|ftp|mailto):[^<>]+)\"\s*>((?:.(?!</a>))*.)</a>} + { "<ulink url=\"$1\">$2</ulink>" }sge; + s{<a\s+href=\"zziplib.html\#([\w_]+)\"\s*>((?:.(?!</a>))*.)</a>} + { "<link linkend=\"$1\">$2</link>" }sge; + s{<a\s+href=\"(zziplib.html)\"\s*>((?:.(?!</a>))*.)</a>} + { "<link linkend=\"reference\">$2</link>" }sge; + s{<a\s+href=\"([\w-]+[.]html)\"\s*>((?:.(?!</a>))*.)</a>} + { my $K = $1; chop $K; + if (not exists $file{$K}) { print STDERR "bad link $1\n"; } + "<link linkend=\"$K\">$2</link>" }sge; + s{<a\s+href=\"([\w-]+[.](?:h|c|am|txt))\"\s*>((?:.(?!</a>))*.)</a>} + { "<ulink url=\"file:$1\">$2</ulink>" }sge; + s{<a\s+href=\"([A-Z0-9]+[.][A-Z0-9]+)\"\s*>((?:.(?!</a>))*.)</a>} + { "<ulink url=\"file:$1\">$2</ulink>" }sge; + +# s{(</?)subtitle>}{$1."para>"}ge; + + $_ .= "</sect1>" if /<sect1[> ]/; + $file{$F}{text} = $_; +} + +my $n = "\n"; + +print '<!DOCTYPE reference PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"',$n; +print ' "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">',$n; +print '<book><chapter><title>Documentation</title>',$n; +for $F (@order) +{ + print "</chapter>" if $file{$F}{text} =~ /<reference /; + print $file{$F}{text},$n,$n; +} +print '</book>',$n; |