Bug 718717

Summary: enabling line numbering disables code highlighting
Product: [Community] Publican Reporter: Jeff Fearn <jfearn>
Component: publicanAssignee: Jeff Fearn <jfearn>
Status: CLOSED CURRENTRELEASE QA Contact: Martin Lopes <mlopes>
Severity: medium Docs Contact:
Priority: low    
Version: 2.5CC: ddomingo, jfearn, Klaus.Malorny, r.landmann
Target Milestone: 4.2   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: 4.2.0 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 653432
: 1133733 (view as bug list) Environment:
Last Closed: 2014-08-31 23:40:26 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 1133733    

Description Jeff Fearn 2011-07-04 07:57:32 EDT
+++ This bug was initially created as a clone of Bug #653432 +++

This applies to publican 2.3:

if the linenumbering="numbered" attribute is being set, various problems occur:

* syntax highlighting (via language attribute) no longer works
* line numbering starts a 0 (startinglinenumber not honoured anyway)
* if the content contains < and & (either via CDATA or numeric entities), 
  they are literally interpreted as XML, causing parsing errors

The problems can be traced down to the numberLines function in Builder.pm:

* the node list converted to a string. I guess that syntax highlighting
  happens before, so all generated markup is lost due to this conversion
* the $count variable is initialized to zero, the line number generation
  uses $count++, causing the 0
* the augmented content is then converted back to a document fragment by simply
  parsing the content with an XML parser. As special characters (<, &)
  are not escaped, they are interpreted as XML

--- Additional comment from jfearn@redhat.com on 2011-03-13 07:11:40 EDT ---

Hi Klaus, I've committed fixes to startinglinenumber and the use of <, >, etc.

The code highlight fix will take a bit longer, the modified tree isn't being passed to the function so I'll need to track down why it's getting stale data passed in from XSLT.
Comment 1 Jeff Fearn 2011-07-04 08:00:48 EDT
I've cloned this bug to separate the line numbering and sql escaping (653432) from the line numbering + highlighting not working (this bug).
Comment 3 HSS Product Manager 2013-07-18 19:57:31 EDT
HSS-QE has reviewed and declined this request. QE for this bug will be handled by IED.
Comment 4 Jeff Fearn 2013-07-19 02:28:51 EDT
Well I spent most of the day on this and although I can point to the XSL where this is triggered I am no closer to solving it.

In the upstream verbatim.xsl in template match="programlisting|screen|synopsis" when using line numbers the apply-highlighting template is called and the results stored in a variable. It is that storing in the variable that seems to be the problem.

If you just call the highlighting template, works fine, but if you try and store the result in a variable it uses the original node and not the transformed one.

Of course without storing the result in a variable you can't pass on the modified content to the line numbering routine.
Comment 5 Jeff Fearn 2014-07-24 21:08:37 EDT
I've got this working for DocBook 5.

To ssh://git.fedorahosted.org/git/publican.git
   7a118a9..f84ff5c  devel -> devel
Comment 18 Martin Lopes 2014-08-26 00:16:27 EDT
Verified. Confirmed that syntax highlighting works using the common-db5 brand. Raised BZ#1133733 for the RH brand.
Comment 19 Jeff Fearn 2014-08-31 23:40:26 EDT
A fix for this shipped in Publican 4.2.0.