diff options
| author | Michael Biebl <biebl@debian.org> | 2015-01-22 00:29:39 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2015-01-22 00:29:39 +0100 |
| commit | 2c032d8f1c6292c1338a615e6ec40252889ba85c (patch) | |
| tree | 1f77182220b2b0264288ba4a476ab47e5bc48716 /clients/cli/settings-docs.xsl | |
| parent | 33491bc4279481db8ae47213e34a6d695a0e8830 (diff) | |
Imported Upstream version 1.0.0 upstream/1.0.0
Diffstat (limited to 'clients/cli/settings-docs.xsl')
| -rw-r--r-- | clients/cli/settings-docs.xsl | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/clients/cli/settings-docs.xsl b/clients/cli/settings-docs.xsl new file mode 100644 index 00000000..996644bd --- /dev/null +++ b/clients/cli/settings-docs.xsl @@ -0,0 +1,86 @@ +<?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" + doctype-public="-//OASIS//DTD DocBook XML V4.3//EN" + doctype-system="http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" + /> + + <xsl:template match="nm-setting-docs">/* Generated file. Do not edit. */ + +typedef struct { + const char *name; + const char *docs; +} NmcPropertyDesc; +<xsl:apply-templates select="setting" mode="properties"><xsl:sort select="@name"/></xsl:apply-templates> + +typedef struct { + const char *name; + NmcPropertyDesc *properties; + int n_properties; +} NmcSettingDesc; + +NmcSettingDesc all_settings[] = { +<xsl:apply-templates select="setting" mode="settings"><xsl:sort select="@name"/></xsl:apply-templates> +}; + +static int +find_by_name (gconstpointer keyv, gconstpointer cmpv) +{ + const char *key = keyv; + struct { const char *name; gpointer data; } *cmp = (gpointer)cmpv; + + return strcmp (key, cmp->name); +} + +static const char * +nmc_setting_get_property_doc (NMSetting *setting, const char *prop) +{ + NmcSettingDesc *setting_desc; + NmcPropertyDesc *property_desc; + + setting_desc = bsearch (nm_setting_get_name (setting), + all_settings, G_N_ELEMENTS (all_settings), + sizeof (NmcSettingDesc), find_by_name); + if (!setting_desc) + return NULL; + property_desc = bsearch (prop, + setting_desc->properties, setting_desc->n_properties, + sizeof (NmcPropertyDesc), find_by_name); + if (!property_desc) + return NULL; + return property_desc->docs; +} + </xsl:template> + + <xsl:template match="setting" mode="properties"> +NmcPropertyDesc setting_<xsl:value-of select="translate(@name,'-','_')"/>[] = {<xsl:apply-templates select="property"><xsl:sort select="@name"/></xsl:apply-templates> +}; + </xsl:template> + + <xsl:template match="property"> + <xsl:variable name="docs"> + <xsl:call-template name="escape_quotes"> + <xsl:with-param name="string" select="@description"/> + </xsl:call-template> + </xsl:variable> + { "<xsl:value-of select="@name"/>", "<xsl:value-of select="$docs"/>" },</xsl:template> + + <xsl:template match="setting" mode="settings"> + { "<xsl:value-of select="@name"/>", setting_<xsl:value-of select="translate(@name,'-','_')"/>, <xsl:value-of select="count(./property)"/> },</xsl:template> + + <xsl:template name="escape_quotes"> + <xsl:param name="string" /> + <xsl:choose> + <xsl:when test="contains($string, '"')"> + <xsl:value-of select="substring-before($string, '"')" />\"<xsl:call-template name="escape_quotes"><xsl:with-param name="string" select="substring-after($string, '"')" /></xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$string" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> |