[Po4a-commits] "po4a/lib/Locale/Po4a Xml.pm,1.105,1.106"

Nicolas FRANCOIS nekral-guest at alioth.debian.org
Sun Apr 5 10:06:21 UTC 2009


Update of /cvsroot/po4a/po4a/lib/Locale/Po4a
In directory alioth:/tmp/cvs-serv29811/lib/Locale/Po4a

Modified Files:
	Xml.pm 
Log Message:
	* lib/Locale/Po4a/Xml.pm: Do not include commented out entities.


Index: Xml.pm
===================================================================
RCS file: /cvsroot/po4a/po4a/lib/Locale/Po4a/Xml.pm,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- Xml.pm	15 Mar 2009 23:48:29 -0000	1.105
+++ Xml.pm	5 Apr 2009 10:06:19 -0000	1.106
@@ -69,18 +69,42 @@
 
 my @comments;
 
+my $_shiftline_in_comment = 0;
 sub shiftline {
     my $self = shift;
     # call Transtractor's shiftline
     my ($line,$ref) = $self->SUPER::shiftline();
     return ($line,$ref) if (not defined $line);
 
+    if ($self->{options}{'includeexternal'}) {
+        my $tmp;
+
     for my $k (keys %entities) {
         if ($line =~ m/^(.*?)&$k;(.*)$/s) {
             my ($before, $after) = ($1, $2);
             my $linenum=0;
             my @textentries;
 
+            $tmp = $before;
+            my $tmp_in_comment = 0;
+            if ($_shiftline_in_comment) {
+                if ($before =~ m/^.*?-->(.*)$/s) {
+                    $tmp = $1;
+                    $tmp_in_comment = 0;
+                } else {
+                    $tmp_in_comment = 1;
+                }
+            }
+            if ($tmp_in_comment == 0) {
+                while ($tmp =~ m/^.*?<!--.*?-->(.*)$/s) {
+                    $tmp = $1;
+                }
+                if ($tmp =~ m/<!--/s) {
+                    $tmp_in_comment = 1;
+                }
+            }
+            next if ($tmp_in_comment);
+
             open (my $in, $entities{$k})
                 or croak wrap_mod("po4a::xml",
                                   dgettext("po4a", "Can't read from %s: %s"),
@@ -102,6 +126,25 @@
         }
     }
 
+        $tmp = $line;
+        if ($_shiftline_in_comment) {
+            if ($line =~ m/^.*?-->(.*)$/s) {
+                $tmp = $1;
+                $_shiftline_in_comment = 0;
+            } else {
+                $_shiftline_in_comment = 1;
+            }
+        }
+        if ($_shiftline_in_comment == 0) {
+            while ($tmp =~ m/^.*?<!--.*?-->(.*)$/s) {
+                $tmp = $1;
+            }
+            if ($tmp =~ m/<!--/s) {
+                $_shiftline_in_comment = 1;
+            }
+        }
+    }
+
     return ($line,$ref);
 }
 




More information about the Po4a-commits mailing list