[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 08/10] html: don't define several times the same anchors
From: |
Akim Demaille |
Subject: |
[PATCH 08/10] html: don't define several times the same anchors |
Date: |
Sat, 11 Jul 2020 12:55:26 +0200 |
Currently when we output useless rules, they appear before the
grammar, but using the same invocation. As a result, the anchor is
defined twice, and the wrong one, being first, is honored.
* data/xslt/xml2xhtml.xsl (rule): Take a new 'anchor' parameter to
decide whether being an anchor, or a target.
Let it be true when output the grammar.
* tests/report.at: Adjust.
---
data/xslt/xml2xhtml.xsl | 34 ++++++++++++++++++++--------------
tests/report.at | 38 +++++++++++++++++++-------------------
2 files changed, 39 insertions(+), 33 deletions(-)
diff --git a/data/xslt/xml2xhtml.xsl b/data/xslt/xml2xhtml.xsl
index b5aeba94..706ff997 100644
--- a/data/xslt/xml2xhtml.xsl
+++ b/data/xslt/xml2xhtml.xsl
@@ -227,6 +227,7 @@
<xsl:text> </xsl:text>
<p class="pre">
<xsl:call-template name="style-rule-set">
+ <xsl:with-param name="anchor" select="'true'" />
<xsl:with-param
name="rule-set" select="rules/rule[@usefulness!='useless-in-grammar']"
/>
@@ -238,9 +239,11 @@
</xsl:template>
<xsl:template name="style-rule-set">
+ <xsl:param name="anchor"/>
<xsl:param name="rule-set"/>
<xsl:for-each select="$rule-set">
<xsl:apply-templates select=".">
+ <xsl:with-param name="anchor" select="$anchor"/>
<xsl:with-param name="pad" select="'3'"/>
<xsl:with-param name="prev-lhs">
<xsl:if test="position()>1">
@@ -488,7 +491,12 @@
</xsl:apply-templates>
</xsl:template>
+<!--
+anchor = 'true': define as an <a> anchor.
+itemset = 'true': show the items.
+ -->
<xsl:template match="rule">
+ <xsl:param name="anchor"/>
<xsl:param name="itemset"/>
<xsl:param name="pad"/>
<xsl:param name="prev-lhs"/>
@@ -499,20 +507,13 @@
<xsl:text> </xsl:text>
</xsl:if>
- <xsl:if test="$itemset != 'true'">
- <a>
- <xsl:attribute name="name">
- <xsl:value-of select="concat('rule_', @number)"/>
- </xsl:attribute>
- </a>
- </xsl:if>
<xsl:text> </xsl:text>
<xsl:choose>
- <xsl:when test="$itemset = 'true'">
+ <xsl:when test="$anchor = 'true'">
<a>
- <xsl:attribute name="href">
- <xsl:value-of select="concat('#rule_', @number)"/>
+ <xsl:attribute name="name">
+ <xsl:value-of select="concat('rule_', @number)"/>
</xsl:attribute>
<xsl:call-template name="lpad">
<xsl:with-param name="str" select="string(@number)"/>
@@ -521,10 +522,15 @@
</a>
</xsl:when>
<xsl:otherwise>
- <xsl:call-template name="lpad">
- <xsl:with-param name="str" select="string(@number)"/>
- <xsl:with-param name="pad" select="number($pad)"/>
- </xsl:call-template>
+ <a>
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#rule_', @number)"/>
+ </xsl:attribute>
+ <xsl:call-template name="lpad">
+ <xsl:with-param name="str" select="string(@number)"/>
+ <xsl:with-param name="pad" select="number($pad)"/>
+ </xsl:call-template>
+ </a>
</xsl:otherwise>
</xsl:choose>
<xsl:text> </xsl:text>
diff --git a/tests/report.at b/tests/report.at
index 2250abbb..7c3a1690 100644
--- a/tests/report.at
+++ b/tests/report.at
@@ -1205,25 +1205,25 @@ if test x"$XSLTPROC" != x""; then
<h2><a name="grammar" id="grammar"></a> Grammar</h2>
<p class="pre">
-<a name="rule_0" id="rule_0"></a> 0 <span class="i">$accept</span> → <span
class="i">unit</span> <b>"end of file"</b>
+ <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span
class="i">unit</span> <b>"end of file"</b>
-<a name="rule_1" id="rule_1"></a> 1 <span class="i">unit</span> → <span
class="i">assignments</span> <span class="i">exp</span>
+ <a name="rule_1" id="rule_1"> 1</a> <span class="i">unit</span> → <span
class="i">assignments</span> <span class="i">exp</span>
-<a name="rule_2" id="rule_2"></a> 2 <span class="i">assignments</span> →
%empty
-<a name="rule_3" id="rule_3"></a> 3 | <span
class="i">assignments</span> <span class="i">assignment</span>
+ <a name="rule_2" id="rule_2"> 2</a> <span class="i">assignments</span> →
%empty
+ <a name="rule_3" id="rule_3"> 3</a> | <span
class="i">assignments</span> <span class="i">assignment</span>
-<a name="rule_4" id="rule_4"></a> 4 <span class="i">assignment</span> →
<span class="i">id</span> <b>":="</b> <span class="i">exp</span>
+ <a name="rule_4" id="rule_4"> 4</a> <span class="i">assignment</span> →
<span class="i">id</span> <b>":="</b> <span class="i">exp</span>
-<a name="rule_5" id="rule_5"></a> 5 <span class="i">id</span> →
<b>"identifier"</b>
+ <a name="rule_5" id="rule_5"> 5</a> <span class="i">id</span> →
<b>"identifier"</b>
-<a name="rule_6" id="rule_6"></a> 6 <span class="i">@1</span> → %empty
+ <a name="rule_6" id="rule_6"> 6</a> <span class="i">@1</span> → %empty
-<a name="rule_7" id="rule_7"></a> 7 <span class="i">@2</span> → %empty
+ <a name="rule_7" id="rule_7"> 7</a> <span class="i">@2</span> → %empty
-<a name="rule_8" id="rule_8"></a> 8 <span class="i">exp</span> →
<b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span
class="i">@2</span> <span class="i">exp</span>
-<a name="rule_9" id="rule_9"></a> 9 | <b>"("</b> <span
class="i">exp</span> <b>")"</b>
-<a name="rule_10" id="rule_10"></a> 10 | <b>"identifier"</b>
-<a name="rule_11" id="rule_11"></a> 11 | <b>"number"</b>
+ <a name="rule_8" id="rule_8"> 8</a> <span class="i">exp</span> →
<b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span
class="i">@2</span> <span class="i">exp</span>
+ <a name="rule_9" id="rule_9"> 9</a> | <b>"("</b> <span
class="i">exp</span> <b>")"</b>
+ <a name="rule_10" id="rule_10"> 10</a> | <b>"identifier"</b>
+ <a name="rule_11" id="rule_11"> 11</a> | <b>"number"</b>
</p>
<h3><a name="terminals" id="terminals"></a> Terminals, with rules where they
appear</h3>
@@ -2158,7 +2158,7 @@ if test x"$XSLTPROC" != x""; then
<h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a>
Rules useless in grammar</h3>
<h2><a name="rules_useless_in_parser" id="rules_useless_in_parser"></a> Rules
useless in parser due to conflicts</h2>
<p class="pre">
-<a name="rule_3" id="rule_3"></a> 3 <span class="i">exp</span> → <span
class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
+ <a href="#rule_3"> 3</a> <span class="i">exp</span> → <span
class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
</p>
<h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
@@ -2169,13 +2169,13 @@ if test x"$XSLTPROC" != x""; then
</p><h2><a name="grammar" id="grammar"></a> Grammar</h2>
<p class="pre">
-<a name="rule_0" id="rule_0"></a> 0 <span class="i">$accept</span> → <span
class="i">exp</span> <b>$end</b>
+ <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span
class="i">exp</span> <b>$end</b>
-<a name="rule_1" id="rule_1"></a> 1 <span class="i">exp</span> → <span
class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
-<a name="rule_2" id="rule_2"></a> 2 | <span class="i">exp</span>
<b>"+"</b> <span class="i">exp</span>
-<a name="rule_3" id="rule_3"></a> 3 | <span class="i">exp</span>
<b>"+"</b> <span class="i">exp</span>
-<a name="rule_4" id="rule_4"></a> 4 | <b>"number"</b>
-<a name="rule_5" id="rule_5"></a> 5 | <b>"Ñùṃéℝô"</b>
+ <a name="rule_1" id="rule_1"> 1</a> <span class="i">exp</span> → <span
class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
+ <a name="rule_2" id="rule_2"> 2</a> | <span class="i">exp</span>
<b>"+"</b> <span class="i">exp</span>
+ <a name="rule_3" id="rule_3"> 3</a> | <span class="i">exp</span>
<b>"+"</b> <span class="i">exp</span>
+ <a name="rule_4" id="rule_4"> 4</a> | <b>"number"</b>
+ <a name="rule_5" id="rule_5"> 5</a> | <b>"Ñùṃéℝô"</b>
</p>
<h3><a name="terminals" id="terminals"></a> Terminals, with rules where they
appear</h3>
--
2.27.0
- [PATCH 00/10] Update HTML reports, Akim Demaille, 2020/07/11
- [PATCH 01/10] maint: make it easier to update expectations, Akim Demaille, 2020/07/11
- [PATCH 02/10] style: factor complex expressions, Akim Demaille, 2020/07/11
- [PATCH 03/10] tests: check html, Akim Demaille, 2020/07/11
- [PATCH 04/10] reports: update html ouput, Akim Demaille, 2020/07/11
- [PATCH 05/10] reports: let xml reports catch up with --report and --graph, Akim Demaille, 2020/07/11
- [PATCH 06/10] reports: let html reports catch up with --report and --graph, Akim Demaille, 2020/07/11
- [PATCH 07/10] html: simplify, Akim Demaille, 2020/07/11
- [PATCH 08/10] html: don't define several times the same anchors,
Akim Demaille <=
- [PATCH 09/10] fixup! maint: make it easier to update expectations, Akim Demaille, 2020/07/11
- [PATCH 10/10] html: capitalize titles, Akim Demaille, 2020/07/11