123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- # -*-perl-*-
- #+##############################################################################
- #
- # xhtml.pm: convert to well-formed xhtml transitional
- # !!!!!!! This is very out of date!!!!
- #
- # Copyright (C) 2003 Free Software Foundation, Inc.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License,
- # or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- #
- # Originally written by Patrice Dumas.
- #
- #-##############################################################################
- # FIXME this is out of date. There are still the T2H_ prefixes!
- # APA: Add SystemLiteral to identify the canonical DTD.
- # [Definition:] The SystemLiteral is called the entity's system
- # identifier. It is a URI, which may be used to retrieve the entity.
- # See http://www.xml.com/axml/target.html#NT-ExternalID
- set_default('DOCTYPE', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/xhtml1-transitional.dtd">');
- set_default('FRAMESET_DOCTYPE', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/xhtml1-frameset.dtd">');
- # -iso
- # if set, ISO8859 characters are used for special symbols (like copyright, etc)
- # FIXME certainly obsoleted by t2h_default_set_iso_symbols which should
- # certainly ba called indirectly through html_default_load
- set_default('USE_ISO', 1);
- # horizontal rules
- $SMALL_RULE = '<hr size="1"/>';
- $DEFAULT_RULE = '<hr/>';
- $MIDDLE_RULE = '<hr size="2"/>';
- $BIG_RULE = '<hr size="6"/>';
- # this is added inside <head></head> after <title> and some <meta name>
- # stuff, it can be used for eg. <style>, <script>, <meta> etc. tags.
- $EXTRA_HEAD = '';
- $print_page_head = \&T2H_XHTML_print_page_head;
- $print_page_foot = \&T2H_XHTML_print_page_foot;
- $print_frame = \&T2H_XHTML_print_frame;
- $button_icon_img = \&T2H_XHTML_button_icon_img;
- #FIXME update once it is more stabilized in texi2html.pm
- sub T2H_XHTML_print_page_head
- {
- my $fh = shift;
- my $longtitle = "$Texi2HTML::THISDOC{'title_no_texi'}";
- $longtitle .= ": $Texi2HTML::NO_TEXI{'This'}" if exists $T2H_NO_TEXI{'This'};
- my $doctype = get_conf('doctype');
- my $bodytext = get_conf('BODYTEXT');
- print $fh <<EOT;
- <?xml version="1.0" encoding="iso-8859-1"?>
- $doctype
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="$T2H_LANG" lang="$T2H_LANG">
- $T2H_THISDOC{'copying'}<!-- Created on $Texi2HTML::THISDOC{today} by $Texi2HTML::THISDOC{program} -->
- <!--
- $Texi2HTML::THISDOC{program_authors}
- -->
- <head>
- <title>$longtitle</title>
- <meta name="description" content="$longtitle"/>
- <meta name="keywords" content="$longtitle"/>
- <meta name="resource-type" content="document"/>
- <meta name="distribution" content="global"/>
- <meta name="Generator" content="$T2H_THISDOC{program}"/>
- $EXTRA_HEAD
- </head>
- <body $bodytext>
- $AFTER_BODY_OPEN
- EOT
- }
- # <span> instead of <font>
- sub T2H_XHTML_print_page_foot
- {
- my $fh = shift;
- print $fh <<EOT;
- <p>
- <span style="font-size: smaller">
- This document was generated $ADDRESS
- using <a href="$T2H_THISDOC{program_homepage}"><i>$Texi2HTML::THISDOC{program}</i></a>.
- </span>
- <br/>
- $PRE_BODY_CLOSE
- </p>
- </body>
- </html>
- EOT
- }
- sub T2H_XHTML_print_frame
- {
- my $fh = shift;
- my $toc_file = shift;
- my $main_file = shift;
- my $doctype = get_conf('FRAMESET_DOCTYPE');
- print $fh <<EOT;
- $doctype
- <html>
- <head><title>$Texi2HTML::THISDOC{title}</title></head>
- <frameset cols="140,*">
- <frame name="toc" src="$toc_file"/>
- <frame name="main" src="$main_file"/>
- </frameset>
- </html>
- EOT
- }
- # / in <img>
- sub T2H_XHTML_button_icon_img
- {
- my $button = shift;
- my $icon = shift;
- my $name = shift;
- return '' if (!defined($icon));
- if (defined($name) && $name)
- {
- $name = ": $name";
- }
- else
- {
- $name = '';
- }
- $button = "" if (!defined ($button));
- return qq{<img src="$icon" border="0" alt="$button$name" align="middle"/>};
- }
- $simple_map{'*'} = '<br/>';
- # formatting functions
- $def_line = \&t2h_xhtml_def_line;
- $index_summary = \&t2h_xhtml_index_summary;
- $image = \&t2h_xhtml_image;
- # need / in <img>
- sub t2h_xhtml_image($$$)
- {
- my $file = shift;
- my $base = shift;
- my $preformatted = shift;
- return "[ $base ]" if ($preformatted);
- return "<img src=\"$file\" alt=\"$base\"/>";
- }
- # process definition commands line @deffn for example
- # <u> replaced by <span>
- sub t2h_xhtml_def_line($$$$$)
- {
- my $category = shift;
- my $name = shift;
- my $type = shift;
- my $arguments = shift;
- my $index_label = shift;
- $index_label = '' if (!defined($index_label));
- $name = '' if (!defined($name) or ($name =~ /^\s*$/));
- $type = '' if (!defined($type) or $type =~ /^\s*$/);
- if (!defined($arguments) or $arguments =~ /^\s*$/)
- {
- $arguments = '';
- }
- else
- {
- $arguments = '<i>' . $arguments . '</i>';
- }
- my $type_name = '';
- $type_name = " $type" if ($type ne '');
- $type_name .= ' <b>' . $name . '</b>' if ($name ne '');
- $type_name .= $arguments . "\n";
- if (! get_conf('DEF_TABLE'))
- {
- return '<dt>'. '<span style="text-decoration: underline">' . $category . ':</span>' . $type_name . $index_label . "</dt>\n";
- }
- else
- {
-
- return "<tr>\n<td align=\"left\">" . $type_name .
- "</td>\n<td align=\"right\">" . $category . $index_label . "</td>\n" . "</tr>\n";
- }
- }
- # There is a br which needs /
- sub t2h_xhtml_index_summary($$)
- {
- my $alpha = shift;
- my $nonalpha = shift;
- my $join = '';
- my $nonalpha_text = '';
- my $alpha_text = '';
- $join = " \n<br/>\n" if (@$nonalpha and @$alpha);
- if (@$nonalpha)
- {
- $nonalpha_text = join("\n \n", @$nonalpha) . "\n";
- }
- if (@$alpha)
- {
- $alpha_text = join("\n \n", @$alpha) . "\n \n";
- }
- #I18n
- return "<table><tr><th valign=\"top\">Jump to: </th><td>" .
- $nonalpha_text . $join . $alpha_text . '</td></tr></table>';
- }
|