summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Pennock <pdp@exim.org>2013-04-01 16:07:41 -0400
committerPhil Pennock <pdp@exim.org>2013-04-01 16:49:58 -0400
commitc027f5ce4024679cf010976e6da8a01c8a08160e (patch)
tree51d78d0d9aba6f0af1ffb34874972d522d2c2abb
parent0fbd9bff71b47e3a32e54629c3f67e7eda1812fe (diff)
downloadexim4-c027f5ce4024679cf010976e6da8a01c8a08160e.tar.gz
Generate ePub files of documentation.
-rw-r--r--doc/doc-docbook/Makefile28
-rwxr-xr-xdoc/doc-docbook/Pre-xml31
2 files changed, 56 insertions, 3 deletions
diff --git a/doc/doc-docbook/Makefile b/doc/doc-docbook/Makefile
index 07eb322fa..a741585dc 100644
--- a/doc/doc-docbook/Makefile
+++ b/doc/doc-docbook/Makefile
@@ -5,6 +5,7 @@ notarget:; @echo "** You must specify a target, in the form x.y, where x is '
@echo "** One other possible target is 'exim.8'".
exit 1
+EPUB_DOCBOOK= /usr/local/share/xsl/docbook/epub/docbook.xsl
############################# EVERYTHING ###############################
#
@@ -12,8 +13,8 @@ notarget:; @echo "** You must specify a target, in the form x.y, where x is '
#
## removed info files as I cannot generate them - spec.info filter.info
## removed html files as superceded by new website code
-everything: spec.pdf spec.ps spec.txt \
- filter.pdf filter.ps filter.txt \
+everything: spec.pdf spec.ps spec.txt spec.epub \
+ filter.pdf filter.ps filter.txt filter.epub \
exim.8
############################## MAN PAGE ################################
@@ -50,6 +51,9 @@ filter-txt.xml: filter.xml Pre-xml
filter-info.xml: filter.xml Pre-xml
./Pre-xml -ascii -html <filter.xml >filter-info.xml
+filter-epub.xml: filter.xml Pre-xml
+ ./Pre-xml -epub <filter.xml >filter-epub.xml
+
filter.fo: filter-pr.xml MyStyle-filter-fo.xsl MyStyle-fo.xsl MyStyle.xsl
/bin/rm -rf filter.fo filter-pr.fo
xmlto -x MyStyle-filter-fo.xsl fo filter-pr.xml
@@ -111,6 +115,14 @@ filter.info: filter-info.xml
/bin/rm -rf exim_filtering.texi
makeinfo -o filter.info filter.texinfo
+filter.epub: filter-epub.xml
+ rm -rf book-filter
+ mkdir book-filter
+ xsltproc -o book-filter/ $(EPUB_DOCBOOK) filter-epub.xml
+ echo "application/epub+zip" > book-filter/mimetype
+ ( cd book-filter; zip -XqD ../filter.epub mimetype )
+ ( cd book-filter; zip -Xr9D ../filter.epub META-INF OEBPS )
+
########################################################################
@@ -129,6 +141,9 @@ spec-txt.xml: spec.xml Pre-xml
spec-info.xml: spec.xml Pre-xml
./Pre-xml -ascii -html -noindex <spec.xml >spec-info.xml
+spec-epub.xml: spec.xml Pre-xml
+ ./Pre-xml -epub <spec.xml >spec-epub.xml
+
spec.fo: spec-pr.xml MyStyle-spec-fo.xsl MyStyle-fo.xsl MyStyle.xsl \
MyTitleStyle.xsl
/bin/rm -rf spec.fo spec-pr.fo
@@ -191,6 +206,14 @@ spec.info: spec-info.xml
/bin/rm -rf the_exim_mta.texi
makeinfo -o spec.info --no-split spec.texinfo
+spec.epub: spec-epub.xml
+ rm -rf book-spec
+ mkdir book-spec
+ xsltproc -o book-spec/ $(EPUB_DOCBOOK) spec-epub.xml
+ echo "application/epub+zip" > book-spec/mimetype
+ ( cd book-spec; zip -XqD ../spec.epub mimetype )
+ ( cd book-spec; zip -Xr9D ../spec.epub META-INF OEBPS )
+
########################################################################
@@ -300,3 +323,4 @@ clean:; /bin/rm -rf exim.8 \
*.info* *.texinfo *.texi
########################################################################
+# vim: set ts=4 :
diff --git a/doc/doc-docbook/Pre-xml b/doc/doc-docbook/Pre-xml
index 6c017e7c8..22b343d8d 100755
--- a/doc/doc-docbook/Pre-xml
+++ b/doc/doc-docbook/Pre-xml
@@ -36,7 +36,9 @@
# except when preceded by <entry> (i.e. not in tables). The same is
# also done within a word of four or more upper-case letters (for
# compile-time options).
-
+#
+# -epub Convert date formats to comply with epub specification
+#
# The function that processes non-literal, non-monospaced text
@@ -71,11 +73,18 @@ if ($ascii)
$s;
}
+# Mapping needed for epub
+
+my %months = (
+ jan => '01', feb => '02', mar => '03', apr => '04', may => '05', jun => '06',
+ jul => '07', aug => '08', sep => '09', oct => '10', nov => '11', dec => '12',
+);
# The main program
$ascii = 0;
$bookinfo = 0;
+$epub = 0;
$html = 0;
$inliteral = 0;
$inliterallayout = 0;
@@ -91,6 +100,7 @@ foreach $arg (@ARGV)
if ($arg eq "-fi") { $ligatures = 1; }
elsif ($arg eq "-ascii") { $ascii = 1; }
elsif ($arg eq "-bookinfo") { $bookinfo = 1; }
+ elsif ($arg eq "-epub") { $epub = 1; }
elsif ($arg eq "-html") { $html = 1; }
elsif ($arg eq "-noindex") { $noindex = 1; }
elsif ($arg eq "-oneindex") { $oneindex = 1; }
@@ -141,6 +151,25 @@ while (<STDIN>)
next;
}
+ # Adjust dates to YYYY-MM-DD
+
+ if ($epub && /^\s*<date[\s>]/)
+ {
+ print;
+ while (<STDIN>)
+ {
+ last if /^\s*<\/date>/;
+
+ if (/^ \s* (\d{1,2}) \s+ ([a-zA-Z]{3}) \s+ (\d{4})/x)
+ {
+ die "Unknown month '$2'\n" unless exists $months{lc $2};
+ my $month = $months{lc $2};
+ s//$3-$month-$1/;
+ }
+ print;
+ }
+ }
+
# A line that is not in a monospaced literal block; keep track of which
# parts are in <literal> and which not. The latter get processed by the
# function above. Items in <literal> get quoted unless they are also in