diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2011-06-13 23:39:30 +0100 |
---|---|---|
committer | Sergey V. Udaltsov <svu@gnome.org> | 2011-06-13 23:47:25 +0100 |
commit | c17f8b08740aed26687fd65c84e654a6cdc163a2 (patch) | |
tree | dfcab88491a11f464636df023ba29b668fd83cc5 /man | |
parent | b213892256576e43c569a965add7eae93f5be690 (diff) |
Use XSL to generate man page from the rules XML
Generate a man-page from the evdev.xml through the xslt/man.xsl stylesheet.
Adds a requirement on the xorg util-macros and xsltproc.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
Diffstat (limited to 'man')
-rw-r--r-- | man/Makefile.am | 17 | ||||
-rw-r--r-- | man/man.xsl | 137 |
2 files changed, 154 insertions, 0 deletions
diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 00000000..2e9deaa4 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,17 @@ +EXTRA_DIST = man.xsl + +if HAVE_XSLTPROC +miscmandir = $(MISC_MAN_DIR) +miscman_PRE = xkeyboard-config.man +miscman_DATA = $(miscman_PRE:man=@MISC_MAN_SUFFIX@) +CLEANFILES = $(miscman_DATA) $(miscman_PRE) +SUFFIXES = .$(MISC_MAN_SUFFIX) .man +MAN_SUBSTS += -e 's|__xkb_base__|$(xkb_base)|g' + +xkeyboard-config.man: $(top_builddir)/rules/evdev.xml $(srcdir)/man.xsl + $(XSLTPROC) -nonet $(srcdir)/man.xsl $(top_builddir)/rules/evdev.xml > $@ + +.man.$(MISC_MAN_SUFFIX): + $(SED) $(MAN_SUBSTS) < $< > $@ + +endif diff --git a/man/man.xsl b/man/man.xsl new file mode 100644 index 00000000..a5bd14d0 --- /dev/null +++ b/man/man.xsl @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > + <xsl:output method="text" encoding="UTF-8" doctype-system="xkb.dtd"/> + <xsl:template match="/xkbConfigRegistry"> + <xsl:text><![CDATA[.\" WARNING: this man page is autogenerated. Do not edit or you will lose all your changes. +.TH XKEYBOARD-CONFIG __miscmansuffix__ __vendorversion__ +.SH NAME +xkeyboard-config \- XKB data description files +.SH DESCRIPTION +xkeyboard-config provides the description files for the X Keyboard +Extension (XKB). The configuration options below are usually applied with +setxkbmap(__appmansuffix__). +.SH MODELS +.TS +left,box; +lB lB +___ +lB l. +Model Description +]]></xsl:text> + <xsl:apply-templates select="modelList"/> + <xsl:text><![CDATA[ +.TE +.SH LAYOUTS +.TS +left,box; +lB lB +____ +lB l. +Layout(Variant) Description +]]></xsl:text> + <xsl:apply-templates select="layoutList"/> + <xsl:text><![CDATA[ +.TE +.SH OPTIONS +]]></xsl:text> + <xsl:apply-templates select="optionList"/> + <xsl:text><![CDATA[ +.SH FILES +__xkb_base__/compat + +__xkb_base__/compiled + +__xkb_base__/geometry + +__xkb_base__/keycodes + +__xkb_base__/keymap + +__xkb_base__/rules + +__xkb_base__/semantics + +__xkb_base__/symbols + +__xkb_base__/types + +.SH SEE ALSO +setxkbmap(__appmansuffix__) +]]></xsl:text> + </xsl:template> + +<!-- split model/description into a normal table --> + <xsl:template match="modelList"> + <xsl:for-each select="model"> + <xsl:value-of select="configItem/name"/><xsl:text>	</xsl:text><xsl:value-of select="configItem/description"/> + <xsl:text> </xsl:text> + </xsl:for-each> + </xsl:template> + +<!-- split layout/variant/description into a table like this + + layout1 description + layout1(variant1) description + layout1(variant2) description + layout2 description + layout2(variant1) description +--> + <xsl:template match="layoutList"> + <xsl:for-each select="layout"> + <xsl:value-of select="configItem/name"/> + <xsl:text>	</xsl:text> + <xsl:value-of select="configItem/description"/> + <xsl:text> </xsl:text> + <xsl:for-each select="variantList/variant"> + <xsl:value-of select="../../configItem/name"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="configItem/name"/> + <xsl:text>)</xsl:text> + <xsl:text>	</xsl:text> + <xsl:value-of select="configItem/description"/> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text> </xsl:text> + <xsl:text>_ </xsl:text> + </xsl:for-each> + </xsl:template> + +<!-- split option into a table like this + +option description: + optarg description + optarg description + optarg description + +option2 description: + optarg description + optarg description +--> + <xsl:template match="optionList"> + <xsl:for-each select="group"> + <xsl:text><![CDATA[ +.SS]]></xsl:text> + <xsl:text> </xsl:text> + <xsl:value-of select="configItem/description"/> + <xsl:text><![CDATA[ +.BR +.TS +left,box; +lB lB +___ +lB l. +Option Description +]]></xsl:text> + <xsl:for-each select="option"> + <xsl:value-of select="configItem/name"/> + <xsl:text>	</xsl:text> + <xsl:value-of select="configItem/description"/> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:text><![CDATA[ +.TE + +]]></xsl:text> + </xsl:for-each> + </xsl:template> +</xsl:stylesheet> |