rate-each: Gentle @no

* src/current/compiler/js.xsl (compile-class-condtion)[lv:rate]: Do not
  consider @no's in predicate generation when `@preproc:gentle-no' is set.
* src/current/include/preproc/macros.xsl (preproc:macros)[lv:rate-each]: Set
  `@preproc:gentle-no' on generated `lv:rate', since the generator handles
  `@no' itself.
master 2.12.0
Mike Gerwitz 2018-03-19 15:23:41 -04:00
parent 2960f2d0b3
commit a3fcaa8737
2 changed files with 13 additions and 4 deletions

View File

@ -1182,10 +1182,19 @@
</template>
<template match="lv:rate" mode="compile-class-condition">
<!-- generate expression for class list (leave the @no check to the cmatch
algorithm, since we want per-index @no's) -->
<variable name="rate" select="." />
<!-- Generate expression for class list (leave the @no check to the cmatch
algorithm, since we want per-index @no's). If @preproc:gentle-no is
set by rate-each expansion, then we want to ignore them entirely,
since we do not want it to clear our the final yield (generators take
care of this using _CMATCH_). -->
<text>( </text>
<variable name="class-set" select="./lv:class" />
<variable name="class-set"
select="./lv:class[
( @no = 'true'
and not( $rate/@preproc:gentle-no = 'true' ) )
or not( @no = 'true' ) ]" />
<choose>
<when test="$class-set">

View File

@ -407,7 +407,7 @@
</xsl:message>
-->
<lv:rate>
<lv:rate preproc:gentle-no="true">
<xsl:sequence select="@*[
not( local-name() = 'index' )
and not( local-name() = 'generates' )