summaryrefslogtreecommitdiff
path: root/blocks
diff options
context:
space:
mode:
Diffstat (limited to 'blocks')
-rw-r--r--blocks/xcos2xml/blocks/ConstantVoltage.xsl4
-rw-r--r--blocks/xcos2xml/blocks/Resistor.xsl3
-rw-r--r--blocks/xcos2xml/head.xsl106
3 files changed, 65 insertions, 48 deletions
diff --git a/blocks/xcos2xml/blocks/ConstantVoltage.xsl b/blocks/xcos2xml/blocks/ConstantVoltage.xsl
index 727bd0f0..34622121 100644
--- a/blocks/xcos2xml/blocks/ConstantVoltage.xsl
+++ b/blocks/xcos2xml/blocks/ConstantVoltage.xsl
@@ -44,10 +44,8 @@
<xsl:apply-templates select="mxGeometry" />
<Object>
<xsl:attribute name="display_parameter">
- <!-- <xsl:value-of select="format-number(0.01 * 1000, '0')" />
- <xsl:text> m</xsl:text> -->
<xsl:call-template name="si-format">
- <xsl:with-param name="num" select="number(*[@as='exprs']/data[1]/@value)" />
+ <xsl:with-param name="expr" select="*[@as='exprs']/data[1]/@value" />
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="as">displayProperties</xsl:attribute>
diff --git a/blocks/xcos2xml/blocks/Resistor.xsl b/blocks/xcos2xml/blocks/Resistor.xsl
index 925ce561..cda89f2d 100644
--- a/blocks/xcos2xml/blocks/Resistor.xsl
+++ b/blocks/xcos2xml/blocks/Resistor.xsl
@@ -44,9 +44,8 @@
<xsl:apply-templates select="mxGeometry" />
<Object>
<xsl:attribute name="display_parameter">
- <!-- <xsl:value-of select="si-format(number(*[@as='exprs']/data[1]/@value), '0')" /> -->
<xsl:call-template name="si-format">
- <xsl:with-param name="num" select="number(*[@as='exprs']/data[1]/@value)" />
+ <xsl:with-param name="expr" select="*[@as='exprs']/data[1]/@value" />
</xsl:call-template>
</xsl:attribute>
<xsl:attribute name="as">displayProperties</xsl:attribute>
diff --git a/blocks/xcos2xml/head.xsl b/blocks/xcos2xml/head.xsl
index 80e6f83a..5e58e0c9 100644
--- a/blocks/xcos2xml/head.xsl
+++ b/blocks/xcos2xml/head.xsl
@@ -20,51 +20,71 @@
</xsl:choose>
</xsl:template>
+ <xsl:template name="eval-rational">
+ <xsl:param name="expr"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($expr, '/')">
+ <xsl:variable name="num" select="number(substring-before($expr, '/'))" />
+ <xsl:variable name="den" select="number(substring-after($expr, '/'))" />
+ <xsl:value-of select="$num div $den" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="number($expr)" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
<xsl:template name="si-format">
- <xsl:param name="num" />
+ <xsl:param name="expr" />
- <xsl:choose>
- <xsl:when test="number($num) &gt;= 1000000000000">
- <xsl:value-of select="format-number($num div 1000000000000, '#.##')" />
- <xsl:text> T</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 1000000000">
- <xsl:value-of select="format-number($num div 1000000000, '#.##')" />
- <xsl:text> G</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 1000000">
- <xsl:value-of select="format-number($num div 1000000, '#.##')" />
- <xsl:text> M</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 1000">
- <xsl:value-of select="format-number($num div 1000, '#.##')" />
- <xsl:text> k</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 1">
- <xsl:value-of select="format-number($num, '#.##')" />
- </xsl:when>
- <xsl:when test="number($num) &gt;= 0.001">
- <xsl:value-of select="format-number($num div 0.001, '#.##')" />
- <xsl:text> m</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 0.000001">
- <xsl:value-of select="format-number($num div 0.000001, '#.##')" />
- <xsl:text> &#956;</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 0.000000001">
- <xsl:value-of select="format-number($num div 0.000000001, '#.##')" />
- <xsl:text> n</xsl:text>
- </xsl:when>
- <xsl:when test="number($num) &gt;= 0.000000000001">
- <xsl:value-of select="format-number($num div 0.000000000001, '#.##')" />
- <xsl:text> p</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="format-number($num, '#.##')" />
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
+ <xsl:variable name="num">
+ <xsl:call-template name="eval-rational">
+ <xsl:with-param name="expr" select="$expr" />
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="number($num) &gt;= 1000000000000">
+ <xsl:value-of select="format-number($num div 1000000000000, '#.##')" />
+ <xsl:text> T</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 1000000000">
+ <xsl:value-of select="format-number($num div 1000000000, '#.##')" />
+ <xsl:text> G</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 1000000">
+ <xsl:value-of select="format-number($num div 1000000, '#.##')" />
+ <xsl:text> M</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 1000">
+ <xsl:value-of select="format-number($num div 1000, '#.##')" />
+ <xsl:text> k</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 1">
+ <xsl:value-of select="format-number($num, '#.##')" />
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 0.001">
+ <xsl:value-of select="format-number($num div 0.001, '#.##')" />
+ <xsl:text> m</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 0.000001">
+ <xsl:value-of select="format-number($num div 0.000001, '#.##')" />
+ <xsl:text> &#956;</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 0.000000001">
+ <xsl:value-of select="format-number($num div 0.000000001, '#.##')" />
+ <xsl:text> n</xsl:text>
+ </xsl:when>
+ <xsl:when test="number($num) &gt;= 0.000000000001">
+ <xsl:value-of select="format-number($num div 0.000000000001, '#.##')" />
+ <xsl:text> p</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="format-number($num, '#.##')" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
<xsl:output method="xml" indent="no" />
<xsl:key name="k-in" match="ExplicitInputPort | ImplicitInputPort" use="@parent" />