[Po4a-commits] "po4a/lib/Locale/Po4a Text.pm,1.15,1.16"

Nicolas FRANCOIS nekral-guest at alioth.debian.org
Mon Jul 14 15:55:46 UTC 2008


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

Modified Files:
	Text.pm 
Log Message:
	* lib/Locale/Po4a/Text.pm: Added support for the Markdown format,
	as used with Ikiwiki.


Index: Text.pm
===================================================================
RCS file: /cvsroot/po4a/po4a/lib/Locale/Po4a/Text.pm,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- Text.pm	31 Mar 2008 20:28:45 -0000	1.15
+++ Text.pm	14 Jul 2008 15:55:43 -0000	1.16
@@ -92,6 +92,14 @@
 
 my $fortunes = 0;
 
+=item B<markdown>
+
+Handle some special markup in Markdown-formatted texts.
+
+=cut
+
+my $markdown = 0;
+
 sub initialize {
     my $self = shift;
     my %options = @_;
@@ -109,6 +117,10 @@
     if (defined $options{'fortunes'}) {
         $fortunes=1;
     }
+
+    if (defined $options{'markdown'}) {
+        $markdown=1;
+    }
 }
 
 sub parse {
@@ -162,13 +174,33 @@
             do_paragraph($self,$paragraph,$wrapped_mode);
             $paragraph="";
             $wrapped_mode = 1;
+        } elsif ($markdown and
+                 (   $line =~ /^#/            # headline
+                  or $line =~ /^\s*\[\[\!\S[^\]]*\]\]\s*$/)) { # sole macro
+            # Found Markdown markup that should be preserved as a single line
+            do_paragraph($self,$paragraph,$wrapped_mode);
+            $paragraph="$line\n";
+            $wrapped_mode = 0;
+            do_paragraph($self,$paragraph,$wrapped_mode);
+            $wrapped_mode = 1;
+            $paragraph="";
+        } elsif ($markdown and
+                 (   $paragraph =~ m/^>/       # blockquote
+                  or $paragraph =~ m/[<>]/     # maybe html
+                  or $paragraph =~ m/^"""/     # textblock inside macro end
+                  or $paragraph =~ m/"""$/)) { # textblock inside macro begin
+            # Found Markdown markup that might not survive wrapping
+            $wrapped_mode = 0;
+            $paragraph .= $line."\n";
         } else {
             if ($line =~ /^\s/) {
                 # A line starting by a space indicates a non-wrap
                 # paragraph
                 $wrapped_mode = 0;
             }
-            $line =~ s/%%(.*)$//;
+            if ($fortunes) {
+                $line =~ s/%%(.*)$//;
+            }
 # TODO: comments
             $paragraph .= $line."\n";
         }




More information about the Po4a-commits mailing list