[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp TODO Texinfo/Convert/HTML.pm
From: |
Patrice Dumas |
Subject: |
texinfo/tp TODO Texinfo/Convert/HTML.pm |
Date: |
Sun, 05 Jun 2011 10:01:35 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 11/06/05 10:01:35
Modified files:
tp : TODO
tp/Texinfo/Convert: HTML.pm
Log message:
Simplify a bit file beginning code.
Do node redirection pages.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/TODO?cvsroot=texinfo&r1=1.133&r2=1.134
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/HTML.pm?cvsroot=texinfo&r1=1.82&r2=1.83
Patches:
Index: TODO
===================================================================
RCS file: /sources/texinfo/texinfo/tp/TODO,v
retrieving revision 1.133
retrieving revision 1.134
diff -u -b -r1.133 -r1.134
--- TODO 4 Jun 2011 20:35:10 -0000 1.133
+++ TODO 5 Jun 2011 10:01:35 -0000 1.134
@@ -1,4 +1,6 @@
-Thre should be an error message (report by Tom Tromey) in
+remove _*directions('This' and replace with new API.
+
+There should be an error message (report by Tom Tromey) in
t/results/xtable/text_between_item_itemx.pl
Verify that there is a test with a node both internal and external
Index: Texinfo/Convert/HTML.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/HTML.pm,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -b -r1.82 -r1.83
--- Texinfo/Convert/HTML.pm 5 Jun 2011 00:15:52 -0000 1.82
+++ Texinfo/Convert/HTML.pm 5 Jun 2011 10:01:35 -0000 1.83
@@ -292,7 +292,11 @@
my $element = shift;
if ($element and $element->{'extra'}) {
+ if ($element->{'extra'}->{'element_command'}) {
return $element->{'extra'}->{'element_command'};
+ } elsif ($element->{'extra'}->{'special_element'}) {
+ return $element;
+ }
}
return undef;
}
@@ -3608,6 +3612,8 @@
['comment', \&_default_comment, $Texinfo::Config::comment],
['css_lines', \&_default_css_lines, $Texinfo::Config::css_lines],
['begin_file', \&_default_begin_file, $Texinfo::Config::begin_file],
+ ['node_redirection_page', \&_default_node_redirection_page,
+ $Texinfo::Config::node_redirection_page],
['end_file', \&_default_end_file, $Texinfo::Config::end_file],
['special_element_body', \&_default_special_element_body,
$Texinfo::Config::special_element_body],
@@ -4139,9 +4145,9 @@
# first determine the top node file name.
if ($self->get_conf('NODE_FILENAMES') and $node_top) {
- if (defined($self->get_conf('TOP_NODE_FILE'))) {
my ($node_top_page) = $self->_get_page($node_top);
die "BUG: No page for top node" if (!defined($node_top));
+ if (defined($self->get_conf('TOP_NODE_FILE'))) {
my $filename = $self->get_conf('TOP_NODE_FILE');
$filename .= '.'.$self->get_conf('NODE_FILE_EXTENSION')
if (defined($self->get_conf('NODE_FILE_EXTENSION'))
@@ -4849,26 +4855,23 @@
";
}
-sub _default_begin_file($$$)
+# This is in order to avoid code duplication with other file headers
+sub _file_header_informations($$)
{
my $self = shift;
- my $filename = shift;
- my $page = shift;
-
+ my $command = shift;
my $title;
- if ($page and $page->{'extra'} and $page->{'extra'}->{'element'}) {
- my $element_string =
$self->_element_direction($page->{'extra'}->{'element'},
- 'This', 'string');
- if (defined($element_string)
- and $element_string ne $self->{'title_string'}) {
+ if ($command) {
+ my $command_string =
+ $self->command_text($command, 'string');
+ if (defined($command_string)
+ and $command_string ne $self->{'title_string'}) {
print STDERR "DO <title>\n"
if ($self->get_conf('DEBUG'));
my $title_tree = $self->gdt('{title}: {element_text}',
{ 'title' => $self->{'title_tree'},
- 'element_text' =>
- $self->_element_direction($page->{'extra'}->{'element'},
- 'This', 'tree')});
+ 'element_text' => $self->command_text($command, 'tree')});
$title = $self->_convert({'type' => '_string',
'contents' => [$title_tree]});
}
@@ -4899,25 +4902,6 @@
$date = "\n<meta name=\"date\" content=\"$today\">";
}
- my $links = '';
- if ($self->get_conf('USE_LINKS')) {
- my $link_buttons = $self->get_conf('LINKS_BUTTONS');
- foreach my $link (@$link_buttons) {
- my $link_href = $self->_element_direction($page->{'extra'}->{'element'},
- $link, 'href', $page->{'filename'});
- #print STDERR "$title: $link -> $link_href \n";
- if ($link_href and $link_href ne '') {
- my $link_string =
$self->_element_direction($page->{'extra'}->{'element'},
- $link, 'string');
- my $title = '';
- $title = " title=\"$link_string\"" if (defined($link_string));
- my $rel = '';
- $rel = " rel=\"".$self->get_conf('BUTTONS_REL')->{$link}.'"'
- if (defined($self->get_conf('BUTTONS_REL')->{$link}));
- $links .= "<link href=\"$link_href\"${rel}${title}>\n";
- }
- }
- }
my $css_lines;
if (defined($self->get_conf('CSS_LINES'))) {
$css_lines = $self->get_conf('CSS_LINES');
@@ -4939,6 +4923,49 @@
my $program_homepage = $self->get_conf('PROGRAM_HOMEPAGE');
my $program = $self->get_conf('PROGRAM');
+ return ($title, $description, $encoding, $date, $css_lines,
+ $doctype, $bodytext, $copying_comment, $after_body_open,
+ $extra_head, $program_and_version, $program_homepage,
+ $program);
+}
+
+sub _default_begin_file($$$)
+{
+ my $self = shift;
+ my $filename = shift;
+ my $element = shift;
+
+
+ my $command;
+ if ($element) {
+ $command = $self->element_command($element);
+ }
+
+ my ($title, $description, $encoding, $date, $css_lines,
+ $doctype, $bodytext, $copying_comment, $after_body_open,
+ $extra_head, $program_and_version, $program_homepage,
+ $program) = $self->_file_header_informations($command);
+
+ my $links = '';
+ if ($self->get_conf('USE_LINKS')) {
+ my $link_buttons = $self->get_conf('LINKS_BUTTONS');
+ foreach my $link (@$link_buttons) {
+ my $link_href = $self->_element_direction($element,
+ $link, 'href', $filename);
+ #print STDERR "$title: $link -> $link_href \n";
+ if ($link_href and $link_href ne '') {
+ my $link_string = $self->_element_direction($element,
+ $link, 'string');
+ my $title = '';
+ $title = " title=\"$link_string\"" if (defined($link_string));
+ my $rel = '';
+ $rel = " rel=\"".$self->get_conf('BUTTONS_REL')->{$link}.'"'
+ if (defined($self->get_conf('BUTTONS_REL')->{$link}));
+ $links .= "<link href=\"$link_href\"${rel}${title}>\n";
+ }
+ }
+ }
+
# FIXME there is one empty line less than in texi2html. Seems that in
# texi2html the following empty lines are stripped. Not exactly sure
# how, but it seems that some blank lines are removed before first element.
@@ -4974,6 +5001,49 @@
return $self->convert_tree($self->gdt($text));
}
+sub _default_node_redirection_page($$)
+{
+ my $self = shift;
+ my $command = shift;
+
+ my ($title, $description, $encoding, $date, $css_lines,
+ $doctype, $bodytext, $copying_comment, $after_body_open,
+ $extra_head, $program_and_version, $program_homepage,
+ $program) = $self->_file_header_informations($command);
+
+ my $name = $self->command_text($command);
+ my $href = $self->command_href($command);
+ my $direction = "<a href=\"$href\">$name</a>";
+ my $string = $self->convert_tree (
+ $self->gdt('The node you are looking for is at {href}.',
+ { 'href' => {'type' => '_converted', 'text' => $direction }}));
+ my $result = "$doctype
+<html>
+$copying_comment<!-- Created by $program_and_version, $program_homepage -->
+<!-- This file redirects to the location of a node or anchor -->
+<head>
+<title>$title</title>
+
+$description
+<meta name=\"keywords\" content=\"$title\">
+<meta name=\"resource-type\" content=\"document\">
+<meta name=\"distribution\" content=\"global\">
+<meta name=\"Generator\" content=\"$program\">$date
+$encoding
+$css_lines
+<meta http-equiv=\"Refresh\" content=\"2; url=$href\">
+$extra_head
+</head>
+
+<body $bodytext>
+$after_body_open
+<p>$string</p>
+</body>
+";
+
+
+}
+
sub _default_footnotes_text($)
{
my $self = shift;
@@ -5347,7 +5417,9 @@
return undef;
}
$self->{'current_filename'} = $page->{'filename'};
- print $file_fh "".&{$self->{'begin_file'}}($self, $page->{'filename'},
$page);
+ print $file_fh "".&{$self->{'begin_file'}}($self,
+ $page->{'filename'},
+ $page->{'extra'}->{'element'});
$files{$page->{'filename'}}->{'fh'} = $file_fh;
} else {
$file_fh = $files{$page->{'filename'}}->{'fh'};
@@ -5363,6 +5435,48 @@
}
}
}
+
+ $self->{'current_filename'} = undef;
+ if ($self->get_conf('NODE_FILES')
+ and $self->{'labels'} and $self->get_conf('OUTFILE') ne '') {
+ foreach my $label (keys (%{$self->{'labels'}})) {
+ my $node = $self->{'labels'}->{$label};
+ my $target = $self->_get_target($node);
+ my $filename = $self->command_filename($node);
+ my $node_filename;
+ if ($node->{'extra'}->{'normalized'} eq 'Top'
+ and defined($self->get_conf('TOP_NODE_FILE_TARGET'))) {
+ my $extension = '';
+ $extension = "." . $self->get_conf('NODE_FILE_EXTENSION')
+ if (defined($self->get_conf('NODE_FILE_EXTENSION'))
+ and $self->get_conf('NODE_FILE_EXTENSION') ne '');
+ $node_filename = $self->get_conf('TOP_NODE_FILE_TARGET')
+ .$extension;
+ } else {
+ $node_filename = $target->{'node_filename'};
+ }
+ if ($node_filename ne $filename) {
+ my $redirection_page
+ = &{$self->{'node_redirection_page'}}($self, $node);
+ my $out_filename;
+ if (defined($self->{'destination_directory'})) {
+ $out_filename = $self->{'destination_directory'}
+ .$target->{'node_filename'};
+ } else {
+ $out_filename = $target->{'node_filename'};
+ }
+ my $file_fh = $self->Texinfo::Common::open_out ($out_filename,
+ $self->{'perl_encoding'});
+ if (!$file_fh) {
+ $self->document_error(sprintf($self->__("Could not open %s for
writing: %s"),
+ $out_filename, $!));
+ } else {
+ print $file_fh $redirection_page;
+ close ($file_fh);
+ }
+ }
+ }
+ }
}
sub attribute_class($$$)
- texinfo/tp TODO Texinfo/Convert/HTML.pm,
Patrice Dumas <=