]> granicus.if.org Git - neomutt/commitdiff
Add a really ugly hack to make sure the plain text manual is us-ascii.
authorRocco Rutte <pdmef@gmx.net>
Thu, 29 Nov 2007 14:24:38 +0000 (15:24 +0100)
committerRocco Rutte <pdmef@gmx.net>
Thu, 29 Nov 2007 14:24:38 +0000 (15:24 +0100)
The hack is filtering manual.html to another HTML file but replacing
unicode chars by their ascii equivalents. The intermediate file is used
to dump HTML to us-ascii text (and only for that).

doc/Makefile.am
doc/db-cleanup.xsl [new file with mode: 0644]

index 15ab1f43e591767007a18dc335211c4ae232882e..7787c368f06a3992101a8010c5b4158f7be3db94 100644 (file)
@@ -27,6 +27,7 @@ EXTRA_DIST = dotlock.man              \
        smime-notes.txt                 \
        Muttrc Muttrc.head stamp-doc-rc \
        makedoc.c makedoc-defs.h        \
+       db-cleanup.xsl                  \
        html.xsl chunk.xsl $(BUILT_DISTFILES)
 
 HTML_DOCFILES = manual.html index.html intro.html gettingstarted.html \
@@ -98,10 +99,11 @@ uninstall-local:
        done
 
 check:
-manual.txt: manual.html
-       -lynx -dump -nolist -with_backspaces $^ > $@ || \
-       w3m -dump $^ > $@ || \
-       elinks -dump -no-numbering -no-references $^ > $@
+manual.txt: manual.html db-cleanup.xsl
+       -xsltproc --nonet -o manual-txt.html $(srcdir)/db-cleanup.xsl manual.html || cp manual.html manual-txt.html
+       -lynx -dump -nolist -with_backspaces manual-txt.html > $@ || \
+       w3m -dump manual-txt.html > $@ || \
+       elinks -dump -no-numbering -no-references manual-txt.html > $@
 
 Muttrc: stamp-doc-rc
 
diff --git a/doc/db-cleanup.xsl b/doc/db-cleanup.xsl
new file mode 100644 (file)
index 0000000..d146a98
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- purpose: remove all non-ascii chars DocBook XSL places in -->
+<!-- generated HTML files as the HTML -> plain ASCII text      -->
+<!-- transition doesn't work that way                          -->
+
+<xsl:stylesheet version="1.0"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+  <xsl:output 
+    method="xml" 
+    doctype-public="//W3C//DTD XHTML 1.0 Transitional//EN"
+    doctype-system="ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+    indent="no"
+    />
+
+  <xsl:strip-space elements="*"/>
+
+  <!-- as default, copy each node as-is -->
+  <xsl:template match="/ | node() | @* | comment() | processing-instruction()">
+    <xsl:copy>
+      <xsl:apply-templates select="@* | node()"/>
+    </xsl:copy>
+  </xsl:template>
+
+  <!-- fixup all #text parts -->
+  <xsl:template match="text()">
+    <xsl:call-template name="fixup">
+      <xsl:with-param name="str"><xsl:value-of select="."/></xsl:with-param>
+    </xsl:call-template>
+  </xsl:template>
+
+  <!-- fixup all elements with title attributes, add more if needed -->
+  <xsl:template match="@title">
+    <xsl:attribute name="title">
+      <xsl:call-template name="fixup">
+        <xsl:with-param name="str"><xsl:value-of select="."/></xsl:with-param>
+      </xsl:call-template>
+    </xsl:attribute>
+  </xsl:template>
+
+  <!-- fixup a single string: -->
+  <!-- 1) replace all non-breaking spaces by ascii-spaces (0xA0) -->
+  <!-- 2) replace all quotes by ascii quotes (0x201C and 0x201D) -->
+  <xsl:template name="fixup">
+    <xsl:param name="str"/>
+    <xsl:value-of select="translate(translate(translate($str,'&#xA0;',' '),'&#x201C;','&#x22;'),'&#x201D;','&#x22;')"/>
+  </xsl:template>
+
+</xsl:stylesheet>