[DEV-6370] Package changes
Merge branch 'jira-6370' * jira-6370: [DEV-6370] Allow recursive conditionals [DEV-6370] Pass in the $line_code rather than using it from the contractmaster
commit
d9ecbd4e2c
|
@ -331,6 +331,10 @@
|
|||
</lvmp:var>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="lvm:pass[@name='line_code'] | lvm:map[@to='line_code']" priority="9">
|
||||
<xsl:message terminate="yes">error: "line_code" is a reserved word</xsl:message>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="lvm:external" priority="4">
|
||||
<lvmp:var name="{@name}" from="{@name}" src="external">
|
||||
<xsl:call-template name="lvmp:map-common" />
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
<xsl:text> {</xsl:text>
|
||||
<xsl:value-of select="$lvmp:nl" />
|
||||
|
||||
<xsl:text>public function compose( $contract ) {</xsl:text>
|
||||
<xsl:text>public function compose( $contract, $line_code ) {</xsl:text>
|
||||
<xsl:value-of select="$lvmp:nl" />
|
||||
<xsl:text> return array(</xsl:text>
|
||||
<xsl:value-of select="$lvmp:nl" />
|
||||
|
@ -201,7 +201,16 @@
|
|||
<xsl:value-of select="$from" />
|
||||
<xsl:text>', $contract->getValueIndex( '</xsl:text>
|
||||
<xsl:value-of select="$index-name" />
|
||||
<xsl:text>' ) )</xsl:text>
|
||||
<xsl:text>' )</xsl:text>
|
||||
<xsl:if test="$default">
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:apply-templates select="$default" mode="lvmp:render" />
|
||||
</xsl:if>
|
||||
<xsl:text> ) )</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$from='line_code'">
|
||||
<xsl:text>$</xsl:text>
|
||||
<xsl:value-of select="$from" />
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>$contract->getValue( '</xsl:text>
|
||||
|
@ -209,15 +218,14 @@
|
|||
<xsl:text>', $contract->getValueIndex( '</xsl:text>
|
||||
<xsl:value-of select="$index-name" />
|
||||
<xsl:text>' )</xsl:text>
|
||||
<xsl:if test="$default">
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:apply-templates select="$default" mode="lvmp:render" />
|
||||
</xsl:if>
|
||||
<xsl:text> )</xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:if test="$default">
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:apply-templates select="$default" mode="lvmp:render" />
|
||||
</xsl:if>
|
||||
|
||||
<xsl:text> )</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
@ -315,7 +323,7 @@
|
|||
<xsl:text>$contract->iterateValues( '</xsl:text>
|
||||
<xsl:value-of select="$from" />
|
||||
<xsl:text>', </xsl:text>
|
||||
<xsl:text>function( $contract ) {</xsl:text>
|
||||
<xsl:text>function( $contract ) use( $line_code ) {</xsl:text>
|
||||
<xsl:text> return array(</xsl:text>
|
||||
<xsl:apply-templates mode="lvmp:render" />
|
||||
<xsl:text>);</xsl:text>
|
||||
|
@ -334,7 +342,7 @@
|
|||
<xsl:text>$contract->iterateValues( '</xsl:text>
|
||||
<xsl:value-of select="$from" />
|
||||
<xsl:text>', </xsl:text>
|
||||
<xsl:text>function( $contract ) {</xsl:text>
|
||||
<xsl:text>function( $contract ) use( $line_code ) {</xsl:text>
|
||||
<xsl:text> return </xsl:text>
|
||||
<xsl:apply-templates mode="lvmp:render" select="lvmp:condition" />
|
||||
<xsl:text>;</xsl:text>
|
||||
|
@ -390,7 +398,35 @@
|
|||
<xsl:variable name="cond" as="element( lvmp:condition )"
|
||||
select="ancestor::lvmp:condition[1]" />
|
||||
|
||||
<xsl:text>( ( </xsl:text>
|
||||
<xsl:text>( </xsl:text>
|
||||
|
||||
<xsl:call-template name="conditionals">
|
||||
<xsl:with-param name="cond" select="$cond" />
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:text> ) ? </xsl:text>
|
||||
|
||||
<xsl:apply-templates mode="lvmp:render">
|
||||
<xsl:with-param name="no-trailing-sep" select="true()" />
|
||||
</xsl:apply-templates>
|
||||
<xsl:text> : null ), </xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="conditionals">
|
||||
<xsl:param name="cond"/>
|
||||
|
||||
<!-- if the parent node is also a conditional, it should be joined with this one -->
|
||||
<xsl:if test="$cond/parent::lvmp:condition">
|
||||
<xsl:call-template name="conditionals">
|
||||
<xsl:with-param name="cond" select="$cond/.." />
|
||||
</xsl:call-template>
|
||||
|
||||
<xsl:text>)</xsl:text>
|
||||
<xsl:text> && </xsl:text>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:text>( </xsl:text>
|
||||
<xsl:text>$contract->isTruthy( </xsl:text>
|
||||
<xsl:apply-templates select="$cond/lvmp:when/lvmp:*" mode="lvmp:render" />
|
||||
<xsl:if test="$cond/lvmp:cmp/(*|text())">
|
||||
|
@ -398,15 +434,9 @@
|
|||
<xsl:apply-templates select="$cond/lvmp:cmp/(lvmp:*|text())" mode="lvmp:render" />
|
||||
</xsl:if>
|
||||
<xsl:text>)</xsl:text>
|
||||
<xsl:text> ) ? </xsl:text>
|
||||
<xsl:apply-templates mode="lvmp:render">
|
||||
<xsl:with-param name="no-trailing-sep" select="true()" />
|
||||
</xsl:apply-templates>
|
||||
<xsl:text> : null ), </xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<xsl:template mode="lvmp:render" priority="8" match="lvmp:condition[ @when ]">
|
||||
<xsl:variable name="cond" select="." />
|
||||
|
||||
|
|
Loading…
Reference in New Issue