[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[5272] * Texinfo/Parser.pm: keep form-feed in macro arguments.
From: |
Patrice Dumas |
Subject: |
[5272] * Texinfo/Parser.pm: keep form-feed in macro arguments. |
Date: |
Sun, 04 Aug 2013 19:10:23 +0000 |
Revision: 5272
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=5272
Author: pertusus
Date: 2013-08-04 19:10:22 +0000 (Sun, 04 Aug 2013)
Log Message:
-----------
* Texinfo/Parser.pm: keep form-feed in macro arguments.
Modified Paths:
--------------
trunk/ChangeLog
trunk/tp/DebugTexinfo/DebugTree.pm
trunk/tp/Texinfo/Parser.pm
trunk/tp/t/60macro.t
Added Paths:
-----------
trunk/tp/t/input_files/macros_form_feed.texi
trunk/tp/t/results/macro/form_feeds.pl
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/ChangeLog 2013-08-04 19:10:22 UTC (rev 5272)
@@ -1,6 +1,10 @@
+2013-08-04 Patrice Dumas <address@hidden>
+
+ * Texinfo/Parser.pm: keep form-feed in macro arguments.
+
2013-07-29 Patrice Dumas <address@hidden>
- * tp/Common.pm (enumerate_item_representation), Texinfo/Parser.pm:
+ * Texinfo//Common.pm (enumerate_item_representation), Texinfo/Parser.pm:
handle correctly @enumerate specification greater than 10. Report
from Dmitry Shachnev.
Modified: trunk/tp/DebugTexinfo/DebugTree.pm
===================================================================
--- trunk/tp/DebugTexinfo/DebugTree.pm 2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/DebugTexinfo/DebugTree.pm 2013-08-04 19:10:22 UTC (rev 5272)
@@ -129,6 +129,7 @@
if (defined($root->{'text'})) {
my $text = $root->{'text'};
$text =~ s/\n/\\n/g;
+ $text =~ s/\f/\\f/g;
$result .= "|$text|";
}
$result .= "\n";
Modified: trunk/tp/Texinfo/Parser.pm
===================================================================
--- trunk/tp/Texinfo/Parser.pm 2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/Texinfo/Parser.pm 2013-08-04 19:10:22 UTC (rev 5272)
@@ -2008,7 +2008,7 @@
if ($braces_level == 1) {
if (scalar(@$arguments) < $args_total) {
push @$arguments, '';
- $line =~ s/^\s*//;
+ $line =~ s/^[^\S\f]*//;
print STDERR "MACRO NEW ARG\n" if ($self->{'DEBUG'});
} else {
# implicit quoting when there is one argument.
@@ -2109,7 +2109,10 @@
or $current->{'contents'}->[-1]->{'type'} eq
'empty_spaces_after_close_brace')) {
print STDERR "ABORT EMPTY additional text |$additional_text|, current
|$current->{'contents'}->[-1]->{'text'}|\n" if ($self->{'DEBUG'});
$current->{'contents'}->[-1]->{'text'} .= $additional_text;
+ # remove empty 'empty*before'.
if ($current->{'contents'}->[-1]->{'text'} eq '') {
+ # as we remove 'empty_spaces_before_argument', 'spaces_before_argument'
+ # is removed from 'extra' too.
if ($current->{'extra'}
and $current->{'extra'}->{'spaces_before_argument'}
and $current->{'extra'}->{'spaces_before_argument'}
@@ -2143,6 +2146,12 @@
$type = 'spaces_at_end' if (!defined($type));
if ($current->{'contents'} and @{$current->{'contents'}}) {
my $index = -1;
+ # we ignore space before a misc command that is last on line.
+ # This is primarily to tag spaces before comments, but this will
+ # also tag and, in most converter lead to removal of spaces
+ # before any misc command, which is not really problematic as
+ # in most cases, if it is not a comment, we are in an invalid
+ # nesting of misc command on another @-command line.
$index = -2
if (scalar(@{$current->{'contents'}}) > 1
and $current->{'contents'}->[-1]->{'cmdname'}
@@ -3889,9 +3898,9 @@
my $expanded_macro = $self->{'macros'}->{$command};
my $args_number = scalar(@{$expanded_macro->{'args'}}) -1;
my $arguments = [];
- if ($line =~ s/^\s*{\s*//) { # macro with args
+ if ($line =~ s/^\s*{[^\S\f]*//) { # macro with args
($arguments, $line, $line_nr) =
- _expand_macro_arguments ($self, $expanded_macro, $line, $line_nr);
+ _expand_macro_arguments($self, $expanded_macro, $line, $line_nr);
} elsif (($args_number >= 2) or ($args_number <1)) {
# as agreed on the bug-texinfo mailing list, no warn when zero
# arg and not called with {}.
@@ -3904,7 +3913,7 @@
($line, $line_nr) = _new_line($self, $line_nr, $expanded_macro);
$line = '' if (!defined($line));
}
- $line =~ s/^\s*// if ($line =~ /\S/);
+ $line =~ s/^[^\S\f]*// if ($line =~ /[\S\f]/);
my $has_end_of_line = chomp $line;
$arguments = [$line];
$line = "\n" if ($has_end_of_line);
Modified: trunk/tp/t/60macro.t
===================================================================
--- trunk/tp/t/60macro.t 2013-08-03 16:24:46 UTC (rev 5271)
+++ trunk/tp/t/60macro.t 2013-08-04 19:10:22 UTC (rev 5272)
@@ -954,6 +954,9 @@
@mymacro{}
', {'MACRO_BODY_IGNORES_LEADING_SPACE' => 1}],
+['form_feeds',
+undef, {'test_file' => 'macros_form_feed.texi'}
+],
);
my @todo =(
Added: trunk/tp/t/input_files/macros_form_feed.texi
===================================================================
--- trunk/tp/t/input_files/macros_form_feed.texi
(rev 0)
+++ trunk/tp/t/input_files/macros_form_feed.texi 2013-08-04 19:10:22 UTC
(rev 5272)
@@ -0,0 +1,12 @@
address@hidden mymacro{a, b}
+f \a\ n \b\
address@hidden macro
+
address@hidden oneargmacro{c}
+g \c\ v
address@hidden macro
+
address@hidden { arg1, arg2}
+
address@hidden address@hidden
+
Added: trunk/tp/t/results/macro/form_feeds.pl
===================================================================
--- trunk/tp/t/results/macro/form_feeds.pl (rev 0)
+++ trunk/tp/t/results/macro/form_feeds.pl 2013-08-04 19:10:22 UTC (rev
5272)
@@ -0,0 +1,233 @@
+use vars qw(%result_texis %result_texts %result_trees %result_errors
+ %result_indices %result_sectioning %result_nodes %result_menus
+ %result_floats %result_converted %result_converted_errors
+ %result_elements %result_directions_text);
+
+use utf8;
+
+$result_trees{'form_feeds'} = {
+ 'contents' => [
+ {
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => 'mymacro',
+ 'type' => 'macro_name'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'a',
+ 'type' => 'macro_arg'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'b',
+ 'type' => 'macro_arg'
+ }
+ ],
+ 'cmdname' => 'macro',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'f \\a\\ n \\b\\',
+ 'type' => 'raw'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'last_raw_newline'
+ }
+ ],
+ 'extra' => {
+ 'arg_line' => ' mymacro{a, b}
+',
+ 'args_index' => {
+ 'a' => 0,
+ 'b' => 1
+ },
+ 'macrobody' => 'f \\a\\ n \\b\\
+',
+ 'spaces_after_command' => {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line_after_command'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => 'macros_form_feed.texi',
+ 'line_nr' => 1,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {},
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'args' => [
+ {
+ 'parent' => {},
+ 'text' => 'oneargmacro',
+ 'type' => 'macro_name'
+ },
+ {
+ 'parent' => {},
+ 'text' => 'c',
+ 'type' => 'macro_arg'
+ }
+ ],
+ 'cmdname' => 'macro',
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'g \\c\\ v',
+ 'type' => 'raw'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'last_raw_newline'
+ }
+ ],
+ 'extra' => {
+ 'arg_line' => ' oneargmacro{c}
+',
+ 'args_index' => {
+ 'c' => 0
+ },
+ 'macrobody' => 'g \\c\\ v
+',
+ 'spaces_after_command' => {
+ 'extra' => {
+ 'command' => {}
+ },
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line_after_command'
+ }
+ },
+ 'line_nr' => {
+ 'file_name' => 'macros_form_feed.texi',
+ 'line_nr' => 5,
+ 'macro' => ''
+ },
+ 'parent' => {}
+ },
+ {},
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'f arg1 n arg2
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ },
+ {
+ 'contents' => [
+ {
+ 'parent' => {},
+ 'text' => 'g a'
+ },
+ {
+ 'cmdname' => '{',
+ 'parent' => {}
+ },
+ {
+ 'parent' => {},
+ 'text' => 'rgline v
+'
+ }
+ ],
+ 'parent' => {},
+ 'type' => 'paragraph'
+ },
+ {
+ 'parent' => {},
+ 'text' => '
+',
+ 'type' => 'empty_line'
+ }
+ ],
+ 'type' => 'text_root'
+};
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[1]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'args'}[2]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'contents'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'contents'}[1]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'}{'extra'}{'command'}
= $result_trees{'form_feeds'}{'contents'}[0];
+$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'}{'parent'}
= $result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[0]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[1] =
$result_trees{'form_feeds'}{'contents'}[0]{'extra'}{'spaces_after_command'};
+$result_trees{'form_feeds'}{'contents'}[2]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[3]{'args'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'args'}[1]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'contents'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'contents'}[1]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'}{'extra'}{'command'}
= $result_trees{'form_feeds'}{'contents'}[3];
+$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'}{'parent'}
= $result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[3]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[4] =
$result_trees{'form_feeds'}{'contents'}[3]{'extra'}{'spaces_after_command'};
+$result_trees{'form_feeds'}{'contents'}[5]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[6]{'contents'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[6];
+$result_trees{'form_feeds'}{'contents'}[6]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[7]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[0]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[1]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'contents'}[2]{'parent'} =
$result_trees{'form_feeds'}{'contents'}[8];
+$result_trees{'form_feeds'}{'contents'}[8]{'parent'} =
$result_trees{'form_feeds'};
+$result_trees{'form_feeds'}{'contents'}[9]{'parent'} =
$result_trees{'form_feeds'};
+
+$result_texis{'form_feeds'} = '@macro mymacro{a, b}
+f \\a\\ n \\b\\
address@hidden macro
+
address@hidden oneargmacro{c}
+g \\c\\ v
address@hidden macro
+
+f arg1 n arg2
+
+g address@hidden v
+
+';
+
+
+$result_texts{'form_feeds'} = '
+
+f arg1 n arg2
+
+g a{rgline v
+
+';
+
+$result_errors{'form_feeds'} = [];
+
+
+1;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [5272] * Texinfo/Parser.pm: keep form-feed in macro arguments.,
Patrice Dumas <=