Skip to content

Commit 55bd7a9

Browse files
author
Sanders Kleinfeld
committed
Merge branch 'line-numbering'
2 parents 0b96961 + 0069215 commit 55bd7a9

File tree

2 files changed

+46
-14
lines changed

2 files changed

+46
-14
lines changed

htmlbook-xsl/elements.xsl

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,9 @@
310310
<xsl:when test="$number.code.lines = 1 or @data-line-numbering='numbered'">
311311
<xsl:variable name="code-listing">
312312
<xsl:copy>
313-
<xsl:apply-templates select="@*|node()" mode="add.numbering.placeholders"/>
313+
<xsl:apply-templates select="@*" mode="add.numbering.placeholders"/>
314+
<span class="line-number"/>
315+
<xsl:apply-templates select="node()" mode="add.numbering.placeholders"/>
314316
</xsl:copy>
315317
</xsl:variable>
316318
<xsl:apply-templates select="exsl:node-set($code-listing)" mode="number.code.lines"/>
@@ -330,16 +332,10 @@
330332
</xsl:copy>
331333
</xsl:template>
332334

333-
<xsl:template match="h:pre[@data-type='programlisting']//text()" mode="add.numbering.placeholders">
335+
<xsl:template match="h:pre[@data-type='programlisting']//text()" mode="add.numbering.placeholders" name="add-line-numbering-markup-at-newlines">
334336
<!-- Check if this is the very first text node in the code listing; if so, add span numbering placeholder at the beginning -->
335-
<xsl:if test="not(ancestor::h:pre[1]//text()[following::*[. = current()]])"><span class="line-number"/></xsl:if>
336-
<!-- Then add line numbering for each newline -->
337-
<xsl:call-template name="add-line-numbering-markup-at-newlines"/>
338-
</xsl:template>
339-
340-
<xsl:template name="add-line-numbering-markup-at-newlines">
341337
<xsl:param name="text" select="."/>
342-
<xsl:choose>
338+
<xsl:choose>
343339
<xsl:when test="substring-before($text, '&#xa;') or substring($text, 1, 1) = '&#xa;'">
344340
<xsl:value-of select="substring-before($text, '&#xa;')"/>
345341
<xsl:text>&#xa;</xsl:text>

htmlbook-xsl/xspec/elements.xspec

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,7 +1412,7 @@ sect5:1
14121412

14131413
<x:scenario label="When matching a 'pre'">
14141414
<x:context>
1415-
<pre data-type="programlisting">def self.compile_file(filename, *args)
1415+
<pre data-type="programlisting" xml:space="preserve">def self.compile_file(filename, *args)
14161416
options = args.last.is_a?(Hash) ? args.pop : {}
14171417
css_filename = args.shift
14181418
result = Sass::Engine.for_file(filename, options).render
@@ -1433,7 +1433,7 @@ end</pre>
14331433
</x:context>
14341434

14351435
<x:expect label="Content should be passed through as is">
1436-
<pre data-type="programlisting">def self.compile_file(filename, *args)
1436+
<pre data-type="programlisting" xml:space="preserve">def self.compile_file(filename, *args)
14371437
options = args.last.is_a?(Hash) ? args.pop : {}
14381438
css_filename = args.shift
14391439
result = Sass::Engine.for_file(filename, options).render
@@ -1455,7 +1455,7 @@ end</pre>
14551455
</x:context>
14561456

14571457
<x:expect label="Code line numbers should be added">
1458-
<pre data-type="programlisting"><span class="line-number">1 </span>def self.compile_file(filename, *args)
1458+
<pre data-type="programlisting" xml:space="preserve"><span class="line-number">1 </span>def self.compile_file(filename, *args)
14591459
<span class="line-number">2 </span> options = args.last.is_a?(Hash) ? args.pop : {}
14601460
<span class="line-number">3 </span> css_filename = args.shift
14611461
<span class="line-number">4 </span> result = Sass::Engine.for_file(filename, options).render
@@ -1474,7 +1474,7 @@ end</pre>
14741474
<x:scenario label="with global line numbering enabled (blank lines in listing">
14751475
<x:context>
14761476
<x:param name="number.code.lines" select="1"/>
1477-
<pre data-type="programlisting" data-code-language="java" data-line-numbering="numbered">import java.applet.*;
1477+
<pre xml:space="preserve" data-type="programlisting" data-code-language="java" data-line-numbering="numbered">import java.applet.*;
14781478
import java.awt.*;
14791479

14801480
public class Scribble extends Applet {
@@ -1486,7 +1486,7 @@ public class Scribble extends Applet {
14861486
</x:context>
14871487

14881488
<x:expect label="Code line numbers should be added">
1489-
<pre data-type="programlisting" data-code-language="java" data-line-numbering="numbered"><span class="line-number">1 </span>import java.applet.*;
1489+
<pre xml:space="preserve" data-type="programlisting" data-code-language="java" data-line-numbering="numbered"><span class="line-number">1 </span>import java.applet.*;
14901490
<span class="line-number">2 </span>import java.awt.*;
14911491
<span class="line-number">3 </span>
14921492
<span class="line-number">4 </span>public class Scribble extends Applet {
@@ -1498,6 +1498,42 @@ public class Scribble extends Applet {
14981498
</x:expect>
14991499

15001500
</x:scenario>
1501+
1502+
<x:scenario label="with global line numbering enabled (inline markup)">
1503+
<x:context>
1504+
<x:param name="number.code.lines" select="1"/>
1505+
<pre data-type="programlisting" data-code-language="ruby" xml:space="preserve"><code class="k">def</code> <code class="nc">self</code><code class="o">.</code><code class="nf">compile_file</code><code class="p">(</code><code class="n">filename</code><code class="p">,</code> <code class="o">*</code><code class="n">args</code><code class="p">)</code>
1506+
<code class="n">options</code> <code class="o">=</code> <code class="n">args</code><code class="o">.</code><code class="n">last</code><code class="o">.</code><code class="n">is_a?</code><code class="p">(</code><code class="no">Hash</code><code class="p">)</code> <code class="p">?</code> <code class="n">args</code><code class="o">.</code><code class="n">pop</code> <code class="p">:</code> <code class="p">{}</code>
1507+
<code class="n">css_filename</code> <code class="o">=</code> <code class="n">args</code><code class="o">.</code><code class="n">shift</code>
1508+
<code class="n">result</code> <code class="o">=</code> <code class="ss">Sass</code><code class="p">:</code><code class="ss">:Engine</code><code class="o">.</code><code class="n">for_file</code><code class="p">(</code><code class="n">filename</code><code class="p">,</code> <code class="n">options</code><code class="p">)</code><code class="o">.</code><code class="n">render</code>
1509+
<code class="k">if</code> <code class="n">css_filename</code>
1510+
<code class="n">options</code><code class="o">[</code><code class="ss">:css_filename</code><code class="o">]</code> <code class="o">||=</code> <code class="n">css_filename</code>
1511+
<code class="nb">open</code><code class="p">(</code><code class="n">css_filename</code><code class="p">,</code> <code class="s2">"w"</code><code class="p">)</code> <code class="p">{</code><code class="o">|</code><code class="n">css_file</code><code class="o">|</code> <code class="n">css_file</code><code class="o">.</code><code class="n">write</code><code class="p">(</code><code class="n">result</code><code class="p">)}</code>
1512+
<code class="kp">nil</code>
1513+
<code class="k">else</code>
1514+
<code class="n">result</code>
1515+
<code class="k">end</code>
1516+
<code class="k">end</code>
1517+
<code class="k">end</code></pre>
1518+
</x:context>
1519+
1520+
1521+
<x:expect label="Code line numbers should be added">
1522+
<pre data-type="programlisting" data-code-language="ruby" xml:space="preserve"><span class="line-number">1 </span><code class="k">def</code> <code class="nc">self</code><code class="o">.</code><code class="nf">compile_file</code><code class="p">(</code><code class="n">filename</code><code class="p">,</code> <code class="o">*</code><code class="n">args</code><code class="p">)</code>
1523+
<span class="line-number">2 </span> <code class="n">options</code> <code class="o">=</code> <code class="n">args</code><code class="o">.</code><code class="n">last</code><code class="o">.</code><code class="n">is_a?</code><code class="p">(</code><code class="no">Hash</code><code class="p">)</code> <code class="p">?</code> <code class="n">args</code><code class="o">.</code><code class="n">pop</code> <code class="p">:</code> <code class="p">{}</code>
1524+
<span class="line-number">3 </span> <code class="n">css_filename</code> <code class="o">=</code> <code class="n">args</code><code class="o">.</code><code class="n">shift</code>
1525+
<span class="line-number">4 </span> <code class="n">result</code> <code class="o">=</code> <code class="ss">Sass</code><code class="p">:</code><code class="ss">:Engine</code><code class="o">.</code><code class="n">for_file</code><code class="p">(</code><code class="n">filename</code><code class="p">,</code> <code class="n">options</code><code class="p">)</code><code class="o">.</code><code class="n">render</code>
1526+
<span class="line-number">5 </span> <code class="k">if</code> <code class="n">css_filename</code>
1527+
<span class="line-number">6 </span> <code class="n">options</code><code class="o">[</code><code class="ss">:css_filename</code><code class="o">]</code> <code class="o">||=</code> <code class="n">css_filename</code>
1528+
<span class="line-number">7 </span> <code class="nb">open</code><code class="p">(</code><code class="n">css_filename</code><code class="p">,</code> <code class="s2">"w"</code><code class="p">)</code> <code class="p">{</code><code class="o">|</code><code class="n">css_file</code><code class="o">|</code> <code class="n">css_file</code><code class="o">.</code><code class="n">write</code><code class="p">(</code><code class="n">result</code><code class="p">)}</code>
1529+
<span class="line-number">8 </span> <code class="kp">nil</code>
1530+
<span class="line-number">9 </span> <code class="k">else</code>
1531+
<span class="line-number">10 </span> <code class="n">result</code>
1532+
<span class="line-number">11 </span> <code class="k">end</code>
1533+
<span class="line-number">12 </span> <code class="k">end</code>
1534+
<span class="line-number">13 </span><code class="k">end</code></pre>
1535+
</x:expect>
1536+
</x:scenario>
15011537

15021538
<x:scenario label="with global line numbering disabled but data-linenumbering enabled for the individual listing">
15031539
<x:context>

0 commit comments

Comments
 (0)