|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"
|
|
Packit |
8ea169 |
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
Packit |
8ea169 |
exclude-result-prefixes="tp html">
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
Helper templates for Telepathy D-Bus Introspection conversion.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
Copyright (C) 2009 Michael Leupold <lemma@confuego.org>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This library is free software; you can redistribute it and/or
|
|
Packit |
8ea169 |
modify it under the terms of the GNU Lesser General Public
|
|
Packit |
8ea169 |
License as published by the Free Software Foundation; either
|
|
Packit |
8ea169 |
version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This library is distributed in the hope that it will be useful,
|
|
Packit |
8ea169 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
8ea169 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
8ea169 |
Lesser General Public License for more details.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
You should have received a copy of the GNU Lesser General Public
|
|
Packit |
8ea169 |
License along with this library; if not, write to the Free Software
|
|
Packit |
8ea169 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
8ea169 |
-->
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
- if not found - use the type attribute -->
|
|
Packit |
8ea169 |
<xsl:template name="ResolveType">
|
|
Packit |
8ea169 |
<xsl:param name="node"/>
|
|
Packit |
8ea169 |
<xsl:variable name="unstripped">
|
|
Packit |
8ea169 |
<xsl:choose>
|
|
Packit |
8ea169 |
<xsl:when test="$node//@tp:type">
|
|
Packit |
8ea169 |
<xsl:call-template name="TpType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$node//@tp:type"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="$node//@type">
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$node//@type"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:otherwise>
|
|
Packit |
8ea169 |
<xsl:message terminate="yes">
|
|
Packit |
8ea169 |
Node doesn't contain a type.
|
|
Packit |
8ea169 |
</xsl:message>
|
|
Packit |
8ea169 |
</xsl:otherwise>
|
|
Packit |
8ea169 |
</xsl:choose>
|
|
Packit |
8ea169 |
</xsl:variable>
|
|
Packit |
8ea169 |
<xsl:value-of select="translate(translate($unstripped, ' ', ''), '
', '')"/>
|
|
Packit |
8ea169 |
</xsl:template>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
<xsl:template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:param name="type"/>
|
|
Packit |
8ea169 |
<xsl:param name="closure"/>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
<xsl:if test="starts-with($closure, '.')">
|
|
Packit |
8ea169 |
>
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="substring($type, 2)"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="substring($closure, 2)"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:if>
|
|
Packit |
8ea169 |
<xsl:if test="not(starts-with($closure, '.'))">
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="substring($type, 2)"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:if>
|
|
Packit |
8ea169 |
</xsl:template>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
<xsl:template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:param name="type"/>
|
|
Packit |
8ea169 |
<xsl:param name="closure"/>
|
|
Packit |
8ea169 |
<xsl:param name="start"/>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
<xsl:if test="$type!=''">
|
|
Packit |
8ea169 |
<xsl:choose>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'o')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
ObjectPath
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 's')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
String
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'y')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Byte
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'b')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Boolean
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'n')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Int16
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'q')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
UInt16
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'i')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Int32
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'u')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
UInt32
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'x')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Int64
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 't')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
UInt64
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'd')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Double
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'g')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Signature
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'v')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Variant
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="$closure"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'a{')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Dict<
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="substring($type, 3)"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure">}<xsl:value-of select="$closure"/></xsl:with-param>
|
|
Packit |
8ea169 |
<xsl:with-param name="start">1</xsl:with-param>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, 'a')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Array<
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="substring($type, 2)"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure">.<xsl:value-of select="$closure"/></xsl:with-param>
|
|
Packit |
8ea169 |
<xsl:with-param name="start">1</xsl:with-param>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, '(')">
|
|
Packit |
8ea169 |
<xsl:if test="$closure!='' and $start=''">,</xsl:if>
|
|
Packit |
8ea169 |
Struct<
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusType">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="substring($type, 2)"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure">)<xsl:value-of select="$closure"/></xsl:with-param>
|
|
Packit |
8ea169 |
<xsl:with-param name="start">1</xsl:with-param>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="starts-with($type, substring($closure, 1, 1))">
|
|
Packit |
8ea169 |
>
|
|
Packit |
8ea169 |
<xsl:call-template name="DBusTypeSuffix">
|
|
Packit |
8ea169 |
<xsl:with-param name="type" select="$type"/>
|
|
Packit |
8ea169 |
<xsl:with-param name="closure" select="substring($closure, 2)"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:otherwise>
|
|
Packit |
8ea169 |
<xsl:if test="$closure=''">
|
|
Packit |
8ea169 |
<xsl:message terminate="yes">
|
|
Packit |
8ea169 |
Unknown DBus Type <xsl:value-of select="$type"/>
|
|
Packit |
8ea169 |
</xsl:message>
|
|
Packit |
8ea169 |
</xsl:if>
|
|
Packit |
8ea169 |
<xsl:message terminate="yes">
|
|
Packit |
8ea169 |
Expected <xsl:value-of select="substring($closure, 1, 1)"/>, got <xsl:value-of select="substring($type, 1, 1)"/>
|
|
Packit |
8ea169 |
</xsl:message>
|
|
Packit |
8ea169 |
</xsl:otherwise>
|
|
Packit |
8ea169 |
</xsl:choose>
|
|
Packit |
8ea169 |
</xsl:if>
|
|
Packit |
8ea169 |
</xsl:template>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
and tp:mapping elements -->
|
|
Packit |
8ea169 |
<xsl:template name="TpType">
|
|
Packit |
8ea169 |
<xsl:param name="type"/>
|
|
Packit |
8ea169 |
<xsl:choose>
|
|
Packit |
8ea169 |
<xsl:when test="/tp:spec/tp:struct[@name=$type]">
|
|
Packit |
8ea169 |
<xsl:value-of select="$type"/>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:when test="/tp:spec/tp:mapping[@name=$type]">
|
|
Packit |
8ea169 |
Dict<
|
|
Packit |
8ea169 |
<xsl:call-template name="ResolveType">
|
|
Packit |
8ea169 |
<xsl:with-param name="node" select="/tp:spec/tp:mapping[@name=$type]/tp:member[@name='Key']"/>
|
|
Packit |
8ea169 |
</xsl:call-template>,
|
|
Packit |
8ea169 |
<xsl:call-template name="ResolveType">
|
|
Packit |
8ea169 |
<xsl:with-param name="node" select="/tp:spec/tp:mapping[@name=$type]/tp:member[@name='Value']"/>
|
|
Packit |
8ea169 |
</xsl:call-template>
|
|
Packit |
8ea169 |
>
|
|
Packit |
8ea169 |
</xsl:when>
|
|
Packit |
8ea169 |
<xsl:otherwise>
|
|
Packit |
8ea169 |
<xsl:message terminate="yes">
|
|
Packit |
8ea169 |
Unspecified type <xsl:value-of select="$type"/>.
|
|
Packit |
8ea169 |
</xsl:message>
|
|
Packit |
8ea169 |
</xsl:otherwise>
|
|
Packit |
8ea169 |
</xsl:choose>
|
|
Packit |
8ea169 |
</xsl:template>
|
|
Packit |
8ea169 |
</xsl:stylesheet>
|