Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/recipe-fiddle.git
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!--
 | Transforms configuration values into constants for various languages.
 +-->

<xsl:output encoding="utf-8" omit-xml-declaration="yes" method="text" />

<!--
 | Sets the destination language for the constants.
 +-->
<xsl:param name="language">javascript</xsl:param>

<xsl:template match="//configuration">
  <xsl:choose>
    <xsl:when test="$language = 'xsl'">
      <xsl:call-template name="xsl-header" />
      <xsl:text disable-output-escaping="yes"><![CDATA[<!-- ]]></xsl:text> <xsl:call-template name="comment" /> <xsl:text disable-output-escaping="yes"><![CDATA[ -->]]></xsl:text>
      <xsl:text>&#xA;</xsl:text>
      <xsl:apply-templates select="constant[contains(@languages,'xsl')]" mode="xsl" />
      <xsl:call-template name="xsl-footer" />
    </xsl:when>
    <xsl:when test="$language = 'php'">
      <xsl:call-template name="php-header" />
      <xsl:text>// </xsl:text><xsl:call-template name="comment" />
      <xsl:text>&#xA;</xsl:text>
      <xsl:apply-templates select="constant[contains(@languages,'php')]" mode="php" />
      <xsl:call-template name="php-footer" />
    </xsl:when>
    <xsl:when test="$language = 'javascript'">
      <xsl:text>// </xsl:text><xsl:call-template name="comment" />
      <xsl:text>&#xA;</xsl:text>
      <xsl:apply-templates select="constant[contains(@languages,'javascript')]" mode="javascript" />
    </xsl:when>
  </xsl:choose>
</xsl:template>

<xsl:template name="comment">
  <xsl:text>Do not edit: constants generation script pulls from database.</xsl:text>
</xsl:template>

<xsl:template match="constant" mode="javascript">
  <xsl:text>var </xsl:text>
  <xsl:value-of select="@name" />
  <xsl:text> = </xsl:text>
  <xsl:apply-templates /><xsl:text>;&#xA;</xsl:text>
</xsl:template>

<xsl:template match="constant" mode="php">
  <xsl:text>$</xsl:text><xsl:value-of select="@name" />
  <xsl:text> = </xsl:text>
  <xsl:apply-templates /><xsl:text>;&#xA;</xsl:text>
</xsl:template>

<xsl:template match="constant" mode="xsl">
  <xsl:text disable-output-escaping="yes"><![CDATA[<xsl:variable name="]]></xsl:text><xsl:value-of select="@name" /><xsl:text>"<![CDATA[>]]></xsl:text>
  <xsl:apply-templates mode="xsl" />
  <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:variable>]]></xsl:text>
  <xsl:text>&#xA;</xsl:text>
</xsl:template>

<xsl:template match="value" mode="xsl">
  <xsl:value-of select="." />
</xsl:template>

<xsl:template match="value[@type='string']">
  <xsl:text>"</xsl:text><xsl:value-of select="." /><xsl:text>"</xsl:text>
</xsl:template>

<xsl:template match="value[@type='integer']">
  <xsl:value-of select="." />
</xsl:template>

<!--
 | Generate the header for XSL files.
 +-->
<xsl:template name="xsl-header"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
]]>
</xsl:template>

<!--
 | Generate the footer for XSL files.
 +-->
<xsl:template name="xsl-footer"><![CDATA[</xsl:stylesheet>]]></xsl:template>

<!--
 | Generate the header for PHP files.
 +-->
<xsl:template name="php-header"><![CDATA[<?php
]]></xsl:template>

<!--
 | Generate the footer for PHP files.
 +-->
<xsl:template name="php-footer"><![CDATA[?>]]></xsl:template>

<xsl:template match="*" />
<xsl:strip-space elements="*" />

</xsl:stylesheet>