[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp Texinfo/Structuring.pm Texinfo/Conve...
From: |
Patrice Dumas |
Subject: |
texinfo/tp Texinfo/Structuring.pm Texinfo/Conve... |
Date: |
Thu, 06 Oct 2011 22:52:00 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 11/10/06 22:52:00
Modified files:
tp/Texinfo : Structuring.pm
tp/Texinfo/Convert: HTML.pm
Added files:
tp/t/init : misc_file_collision.init
Log message:
Fix NextFile and PrevFile.
Fix getting element from footnote, allow to find the footnote element
or the parent footnote element.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Structuring.pm?cvsroot=texinfo&r1=1.95&r2=1.96
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/HTML.pm?cvsroot=texinfo&r1=1.173&r2=1.174
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/t/init/misc_file_collision.init?cvsroot=texinfo&rev=1.1
Patches:
Index: Texinfo/Structuring.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Structuring.pm,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -b -r1.95 -r1.96
--- Texinfo/Structuring.pm 5 Oct 2011 23:19:00 -0000 1.95
+++ Texinfo/Structuring.pm 6 Oct 2011 22:52:00 -0000 1.96
@@ -913,14 +913,13 @@
foreach my $element (@$elements) {
my $directions;
my $filename;
- if ($element->{'parent'} and defined($element->{'parent'}->{'filename'})) {
- $filename = $element->{'parent'}->{'filename'};
+ if (defined($element->{'filename'})) {
+ $filename = $element->{'filename'};
my $current_element = $element;
while ($current_element->{'element_prev'}) {
$current_element = $current_element->{'element_prev'};
- if ($current_element->{'parent'}
- and defined($current_element->{'parent'}->{'filename'})) {
- if ($current_element->{'parent'}->{'filename'} ne $filename) {
+ if (defined($current_element->{'filename'})) {
+ if ($current_element->{'filename'} ne $filename) {
$element->{'extra'}->{'directions'}->{'PrevFile'} =
$current_element;
last;
}
@@ -931,9 +930,8 @@
$current_element = $element;
while ($current_element->{'element_next'}) {
$current_element = $current_element->{'element_next'};
- if ($current_element->{'parent'}
- and defined($current_element->{'parent'}->{'filename'})) {
- if ($current_element->{'parent'}->{'filename'} ne $filename) {
+ if (defined($current_element->{'filename'})) {
+ if ($current_element->{'filename'} ne $filename) {
$element->{'extra'}->{'directions'}->{'NextFile'} =
$current_element;
last;
}
Index: Texinfo/Convert/HTML.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/HTML.pm,v
retrieving revision 1.173
retrieving revision 1.174
diff -u -b -r1.173 -r1.174
--- Texinfo/Convert/HTML.pm 5 Oct 2011 23:19:00 -0000 1.173
+++ Texinfo/Convert/HTML.pm 6 Oct 2011 22:52:00 -0000 1.174
@@ -272,7 +272,7 @@
if (defined($target->{'filename'})) {
return $target->{'filename'};
}
- my ($element, $root_command) = $self->_get_element($command);
+ my ($element, $root_command) = $self->_get_element($command, 1);
#if (defined($command->{'cmdname'}) and $command->{'cmdname'} eq
'footnote') {
# print STDERR "footnote $command: page $page\n";
#}
@@ -309,7 +309,8 @@
my $self = shift;
my $command = shift;
- my $element = $self->command_element($command);
+ my ($element, $root_command) = $self->_get_element($command);
+ #my $element = $self->command_element($command);
if ($element and $element->{'extra'}) {
return $element->{'extra'}->{'element_command'};
}
@@ -4649,14 +4650,14 @@
}
}
-sub _set_page_file($$$)
+sub _set_element_file($$$)
{
my $self = shift;
my $element = shift;
my $filename = shift;
if (!defined($filename)) {
- cluck("_set_page_file: filename not defined\n");
+ cluck("_set_element_file: filename not defined\n");
}
# FIXME directory should be the file name!
$element->{'filename'} = $filename;
@@ -4667,32 +4668,34 @@
}
}
-sub _get_element($$);
+sub _get_element($$;$);
# FIXME also find contents/shortcontents/summarycontents page
-sub _get_element($$)
+sub _get_element($$;$)
{
my $self = shift;
- my $current = shift;
+ my $command = shift;
+ my $find_container = shift;
+
+ my $current = $command;
+
my ($element, $root_command);
- #print STDERR " --> GGGGGGG _get_element\n";
while (1) {
if ($current->{'type'}) {
- #print STDERR "GGGGGGG Now in $current->{'type'}\n";
if ($current->{'type'} eq 'element') {
return ($current, $root_command);
}
}
if ($current->{'cmdname'}) {
- #print STDERR "GGGGGGG Now in $current->{'cmdname'}\n";
if ($root_commands{$current->{'cmdname'}}) {
$root_command = $current;
+ return ($element, $root_command) if defined($element);
} elsif ($region_commands{$current->{'cmdname'}}) {
if ($current->{'cmdname'} eq 'copying'
and $self->{'extra'} and $self->{'extra'}->{'insertcopying'}) {
foreach my $insertcopying(@{$self->{'extra'}->{'insertcopying'}}) {
my ($element, $root_command)
- = $self->_get_element($insertcopying);
+ = $self->_get_element($insertcopying, $find_container);
return ($element, $root_command)
if (defined($element) or defined($root_command));
}
@@ -4708,9 +4711,11 @@
or defined($root_command));
return (undef, undef);
} elsif ($current->{'cmdname'} eq 'footnote'
- and $self->{'special_elements_types'}->{'Footnotes'}) {
- # FIXME element and root_command?
- return ($self->{'special_elements_types'}->{'Footnotes'});
+ and $self->{'special_elements_types'}->{'Footnotes'}
+ and $find_container) {
+ # FIXME root_command?
+ $element = $self->{'special_elements_types'}->{'Footnotes'};
+ return ($element);
# } elsif (($current->{'cmdname'} eq 'contents'
# or $current->{'cmdname'} eq 'shortcontents'
# or $current->{'cmdname'} eq 'summarycontents')
@@ -4726,7 +4731,7 @@
}
}
-sub _set_page_files($$)
+sub _set_pages_files($$)
{
my $self = shift;
my $elements = shift;
@@ -4766,7 +4771,7 @@
my ($node_top_element) = $self->_get_element($node_top);
die "BUG: No page for top node" if (!defined($node_top));
if (defined($self->get_conf('TOP_NODE_FILE'))) {
- $self->_set_page_file($node_top_element, $top_node_filename);
+ $self->_set_element_file($node_top_element, $top_node_filename);
}
}
# FIXME add a number for each page?
@@ -4810,7 +4815,7 @@
$node_filename
= $self->{'targets'}->{$root_command}->{'node_filename'};
}
- $self->_set_page_file($file_element, $node_filename);
+ $self->_set_element_file($file_element, $node_filename);
last;
}
}
@@ -4824,16 +4829,16 @@
if ($command) {
if ($command->{'cmdname'} eq 'top' and !$node_top
and defined($top_node_filename)) {
- $self->_set_page_file($file_element, $top_node_filename);
+ $self->_set_element_file($file_element, $top_node_filename);
} else {
- $self->_set_page_file($file_element,
+ $self->_set_element_file($file_element,
$self->{'targets'}->{$command}->{'section_filename'});
}
} else {
# when everything else has failed
my $filename = $self->{'document_name'} . "_$file_nr";
$filename .= $extension;
- $self->_set_page_file($element, $filename);
+ $self->_set_element_file($element, $filename);
$file_nr++;
}
}
@@ -4842,7 +4847,7 @@
$filename .= '.'.$self->get_conf('EXTENSION')
if (defined($self->get_conf('EXTENSION'))
and $self->get_conf('EXTENSION') ne '');
- $self->_set_page_file($file_element, $filename);
+ $self->_set_element_file($file_element, $filename);
$file_nr++;
}
}
@@ -4854,11 +4859,11 @@
}
foreach my $element (@$elements) {
- if (defined($Texinfo::Config::page_file_name)) {
+ if (defined($Texinfo::Config::element_file_name)) {
# FIXME pass the information that it is associated with @top or @node
Top?
my $filename = &$Texinfo::Config::element_file_name($self, $element,
$element->{'filename'});
- $self->_set_page_file($element, $filename) if (defined($filename));
+ $self->_set_element_file($element, $filename) if (defined($filename));
}
$self->{'file_counters'}->{$element->{'filename'}}++;
print STDERR "Page $element
".Texinfo::Structuring::_print_element_command_texi($element).":
$element->{'filename'}($self->{'file_counters'}->{$element->{'filename'}})\n"
@@ -4870,7 +4875,7 @@
my $filename
= $self->{'targets'}->{$element}->{'misc_filename'};
if (defined($filename)) {
- $self->_set_page_file($element, $filename);
+ $self->_set_element_file($element, $filename);
$self->{'file_counters'}->{$element->{'filename'}}++;
print STDERR "Special page $element:
$element->{'filename'}($self->{'file_counters'}->{$element->{'filename'}})\n"
if ($self->get_conf('DEBUG'));
@@ -5000,7 +5005,7 @@
" filename $filename\n" if ($self->get_conf('DEBUG'));
if ($self->get_conf('SPLIT') or !$self->get_conf('MONOLITHIC')
or $filename ne $default_filename) {
- $self->_set_page_file($element, $filename);
+ $self->_set_element_file($element, $filename);
print STDERR "NEW page for $type ($filename)\n" if
($self->get_conf('DEBUG'));
}
# FIXME add element, page... (see command_filename)?
@@ -5951,7 +5956,7 @@
# determine file names associated with the different pages, and setup
# the counters for special element pages.
if ($self->get_conf('OUTFILE') ne '') {
- $self->_set_page_files($elements, $special_elements);
+ $self->_set_pages_files($elements, $special_elements);
}
$self->_prepare_contents_elements();
@@ -5969,8 +5974,8 @@
if ($special_elements) {
foreach my $special_element (@$special_elements) {
if (!defined($special_element->{'filename'})) {
- $special_element->{'out_filename'} = $elements->[0]->{'out_filename'};
$special_element->{'filename'} = $elements->[0]->{'filename'};
+ $special_element->{'out_filename'} = $elements->[0]->{'out_filename'};
$self->{'file_counters'}->{$special_element->{'filename'}}++;
print STDERR "Special page $special_element:
$special_element->{'filename'}($self->{'file_counters'}->{$special_element->{'filename'}})\n"
if ($self->get_conf('DEBUG'));
@@ -6150,7 +6155,6 @@
}
}
}
-
$self->{'current_filename'} = undef;
if ($self->get_conf('NODE_FILES')
and $self->{'labels'} and $self->get_conf('OUTFILE') ne '') {
@@ -6181,9 +6185,9 @@
my $out_filename;
if (defined($self->{'destination_directory'})) {
$out_filename = $self->{'destination_directory'}
- .$target->{'node_filename'};
+ .$node_filename;
} else {
- $out_filename = $target->{'node_filename'};
+ $out_filename = $node_filename;
}
my $file_fh = $self->Texinfo::Common::open_out ($out_filename,
$self->{'perl_encoding'});
Index: t/init/misc_file_collision.init
===================================================================
RCS file: t/init/misc_file_collision.init
diff -N t/init/misc_file_collision.init
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ t/init/misc_file_collision.init 6 Oct 2011 22:52:00 -0000 1.1
@@ -0,0 +1,26 @@
+use strict;
+
+use vars qw($element_file_name);
+
+$element_file_name = \&test_misc_file_name;
+
+sub test_misc_file_name($$$)
+{
+ my $converter = shift;
+ my $element = shift;
+ my $filename = shift;
+
+ if ($converter->_element_is_top($element)
+ or ($converter->{'elements'}->[2]
+ and $converter->{'elements'}->[2] eq $element)) {
+ my $extension = $converter->get_conf('EXTENSION');
+ my $prefix = $converter->{'document_name'};
+ $filename = "${prefix}_abt"
+ . ((defined($extension)) ? ".$extension" : '');
+ }
+ return $filename;
+}
+
+set_from_init_file('DO_ABOUT', 1);
+
+1;