[Po4a-commits] "po4a/lib/Locale/Po4a Text.pm,1.25,1.26"
Nicolas FRANÃOIS
nekral-guest at alioth.debian.org
Sun Jul 19 17:50:43 UTC 2009
Update of /cvsroot/po4a/po4a/lib/Locale/Po4a
In directory alioth:/tmp/cvs-serv10774/lib/Locale/Po4a
Modified Files:
Text.pm
Log Message:
2009-07-19 Jonas Smedegaard <dr at jones.dk>
* NEWS, lib/Locale/Po4a/Wml.pm: Improved Markdown support.
Index: Text.pm
===================================================================
RCS file: /cvsroot/po4a/po4a/lib/Locale/Po4a/Text.pm,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- Text.pm 13 Feb 2009 23:16:44 -0000 1.25
+++ Text.pm 19 Jul 2009 17:50:40 -0000 1.26
@@ -143,6 +143,7 @@
my $paragraph="";
my $wrapped_mode = 1;
my $expect_header = 1;
+ my $end_of_paragraph = 0;
($line,$ref)=$self->shiftline();
my $file = $ref;
$file =~ s/:[0-9]+$//;
@@ -152,6 +153,8 @@
$file = $1;
do_paragraph($self,$paragraph,$wrapped_mode);
$paragraph="";
+ $wrapped_mode = 1;
+ $expect_header = 1;
}
chomp($line);
@@ -464,37 +467,53 @@
$self->{indent} = $indent;
$self->{bullet} = "";
}
- } elsif ( $line =~ /^=*$/
- or $line =~ /^_*$/
- or $line =~ /^-*$/) {
+ } elsif ($line =~ /^-- $/) {
+ # Break paragraphs on email signature hint
+ do_paragraph($self,$paragraph,$wrapped_mode);
+ $paragraph="";
+ $wrapped_mode = 1;
+ $self->pushline($line."\n");
+ } elsif ( $line =~ /^=+$/
+ or $line =~ /^_+$/
+ or $line =~ /^-+$/) {
$wrapped_mode = 0;
$paragraph .= $line."\n";
do_paragraph($self,$paragraph,$wrapped_mode);
$paragraph="";
$wrapped_mode = 1;
} elsif ($markdown and
+ ( $line =~ /^\s*\[\[\!\S+\s*$/ # macro begin
+ or $line =~ /^\s*"""\s*\]\]\s*$/)) { # """ textblock inside macro end
+ # Avoid translating Markdown lines containing only markup
+ do_paragraph($self,$paragraph,$wrapped_mode);
+ $paragraph="";
+ $wrapped_mode = 1;
+ $self->pushline("$line\n");
+ } elsif ($markdown and
( $line =~ /^#/ # headline
or $line =~ /^\s*\[\[\!\S[^\]]*\]\]\s*$/)) { # sole macro
- # Found Markdown markup that should be preserved as a single line
+ # Preserve some Markdown markup as a single line
do_paragraph($self,$paragraph,$wrapped_mode);
$paragraph="$line\n";
$wrapped_mode = 0;
+ $end_of_paragraph = 1;
+ } elsif ($markdown and
+ ( $line =~ /^"""/)) { # """ textblock inside macro end
+ # Markdown markup needing separation _before_ this line
do_paragraph($self,$paragraph,$wrapped_mode);
+ $paragraph="$line\n";
$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;
+ }
+ if ($markdown and
+ ( $line =~ /\S $/ # explicit newline
+ or $line =~ /"""$/)) { # """ textblock inside macro begin
+ # Markdown markup needing separation _after_ this line
+ $end_of_paragraph = 1;
} else {
undef $self->{bullet};
undef $self->{indent};
@@ -510,7 +529,24 @@
# (more than 3)
# are considered as verbatim paragraphs
$wrapped_mode = 0 if ( $paragraph =~ m/^(\*|[0-9]+[.)] )/s
- or $paragraph =~ m/[ \t][ \t][ \t]/s);
+ or $paragraph =~ m/[ \t][ \t][ \t]/s);
+ if ($markdown) {
+ # Some Markdown markup can (or might) not survive wrapping
+ $wrapped_mode = 0 if (
+ $paragraph =~ /^>/ms # blockquote
+ or $paragraph =~ /^( {8}|\t)/ms # monospaced
+ or $paragraph =~ /^\$(\S+[{}]\S*\s*)+/ms # Xapian macro
+ or $paragraph =~ /<(?![a-z]+[:@])/ms # maybe html (tags but not wiki <URI>)
+ or $paragraph =~ /^[^<]+>/ms # maybe html (tag with vertical space)
+ or $paragraph =~ /\[\[\!\S[^\]]+$/ms # macro begin
+ );
+ }
+ if ($end_of_paragraph) {
+ do_paragraph($self,$paragraph,$wrapped_mode);
+ $paragraph="";
+ $wrapped_mode = 1;
+ $end_of_paragraph = 0;
+ }
($line,$ref)=$self->shiftline();
}
if (length $paragraph) {
More information about the Po4a-commits
mailing list