diff options
-rw-r--r-- | blocks/xcos2xml/blocks/ConstantVoltage.xsl | 4 | ||||
-rw-r--r-- | blocks/xcos2xml/blocks/Resistor.xsl | 3 | ||||
-rw-r--r-- | blocks/xcos2xml/head.xsl | 106 |
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) >= 1000000000000"> - <xsl:value-of select="format-number($num div 1000000000000, '#.##')" /> - <xsl:text> T</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 1000000000"> - <xsl:value-of select="format-number($num div 1000000000, '#.##')" /> - <xsl:text> G</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 1000000"> - <xsl:value-of select="format-number($num div 1000000, '#.##')" /> - <xsl:text> M</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 1000"> - <xsl:value-of select="format-number($num div 1000, '#.##')" /> - <xsl:text> k</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 1"> - <xsl:value-of select="format-number($num, '#.##')" /> - </xsl:when> - <xsl:when test="number($num) >= 0.001"> - <xsl:value-of select="format-number($num div 0.001, '#.##')" /> - <xsl:text> m</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 0.000001"> - <xsl:value-of select="format-number($num div 0.000001, '#.##')" /> - <xsl:text> μ</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 0.000000001"> - <xsl:value-of select="format-number($num div 0.000000001, '#.##')" /> - <xsl:text> n</xsl:text> - </xsl:when> - <xsl:when test="number($num) >= 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) >= 1000000000000"> + <xsl:value-of select="format-number($num div 1000000000000, '#.##')" /> + <xsl:text> T</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 1000000000"> + <xsl:value-of select="format-number($num div 1000000000, '#.##')" /> + <xsl:text> G</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 1000000"> + <xsl:value-of select="format-number($num div 1000000, '#.##')" /> + <xsl:text> M</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 1000"> + <xsl:value-of select="format-number($num div 1000, '#.##')" /> + <xsl:text> k</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 1"> + <xsl:value-of select="format-number($num, '#.##')" /> + </xsl:when> + <xsl:when test="number($num) >= 0.001"> + <xsl:value-of select="format-number($num div 0.001, '#.##')" /> + <xsl:text> m</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 0.000001"> + <xsl:value-of select="format-number($num div 0.000001, '#.##')" /> + <xsl:text> μ</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 0.000000001"> + <xsl:value-of select="format-number($num div 0.000000001, '#.##')" /> + <xsl:text> n</xsl:text> + </xsl:when> + <xsl:when test="number($num) >= 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" /> |