Entity-encode E<0xNNNN> and E<0NNN> correctly
Abhijit Menon-Sen [Fri, 4 Sep 2009 07:11:56 +0000 (12:11 +0530)]
Fixes bug #68964 reported by samv, where pod2html encoded E<0x2070> to
&0x2070 and not &#x2070. perlpodspec says E<0x2070> should work, but the
code in Pod::Html accepted only E<x2070>. The new code accepts both, and
processes octal entities correctly as well.

Signed-off-by: Abhijit Menon-Sen <ams@toroid.org>

lib/Pod/Html.pm
lib/Pod/t/htmlescp.pod
lib/Pod/t/htmlescp.t

index 99f95a9..6174dd7 100644 (file)
@@ -1575,7 +1575,9 @@ sub process_text1($$;$$){
        # E<x> - convert to character
        $$rstr =~ s/^([^>]*)>//;
        my $escape = $1;
-       $escape =~ s/^(\d+|X[\dA-F]+)$/#$1/i;
+       $escape =~ s/^0?x([\dA-F]+)$/#x$1/i
+       or $escape =~ s/^0([0-7]+)$/'#'.oct($1)/ei
+       or $escape =~ s/^(\d+)$/#$1/;
        $res = "&$escape;";
 
     } elsif( $func eq 'F' ){
index dc53ca7..c901314 100644 (file)
@@ -11,4 +11,6 @@ Here is some B<bold> text, some I<italic> plus F</etc/fstab>
 file and something that looks like an E<lt>htmlE<gt> tag.
 This is some C<$code($arg1)>.
 
+Some numeric escapes: E<0120> E<0x65> E<x72> E<108>
+
 =cut
index 16503c4..95942cd 100644 (file)
@@ -52,6 +52,7 @@ instead of escaping them as &lt; and &gt;.</p>
 <p>Here is some <strong>bold</strong> text, some <em>italic</em> plus <em class="file">/etc/fstab</em>
 file and something that looks like an &lt;html&gt; tag.
 This is some <code>$code($arg1)</code>.</p>
+<p>Some numeric escapes: &#80; &#x65; &#x72; &#108;</p>
 
 </body>