X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lilypond-texi2html.init;h=5fd88f93253d1e2615f097e3ca20a2bd0b93c269;hb=bf1b36a23237987786395546a0289f58dbb1e53e;hp=7f4c32a1750f29eb6b083c8c9bdc256f481eeee2;hpb=de451af43aef0220738bfdd5329f0685bdaba3d2;p=lilypond.git diff --git a/lilypond-texi2html.init b/lilypond-texi2html.init index 7f4c32a175..5fd88f9325 100644 --- a/lilypond-texi2html.init +++ b/lilypond-texi2html.init @@ -1,4 +1,5 @@ #!/usr/bin/env perl +# -*- coding: utf-8; -*- ### texi2html customization script for Lilypond ### Author: Reinhold Kainhofer , 2008. @@ -65,9 +66,33 @@ package Texi2HTML::Config; +############################################################################# +### TRANSLATIONS +############################################################################# +use utf8; +my $LY_LANGUAGES = {}; +$LY_LANGUAGES->{'fr'} = { + 'Back to Documentation Index' => 'Retour à l\'accueil de la documentation', +}; +$LY_LANGUAGES->{'es'} = { + 'Back to Documentation Index' => 'Volver al índice de la documentación', +}; +$LY_LANGUAGES->{'de'} = { + 'Back to Documentation Index' => 'Zur Dokumentationsübersicht', +}; +sub ly_get_string () { + my $lang = $Texi2HTML::THISDOC{current_lang}; + my $string = shift; + if ($lang and $lang ne "en" and $LY_LANGUAGES->{$lang}->{$string}) { + return $LY_LANGUAGES->{$lang}->{$string}; + } else { + return $string; + } +} + ############################################################################# ### SETTINGS FOR TEXI2HTML @@ -89,14 +114,19 @@ if ($Texi2HTML::Config::SPLIT eq 'section') { $Texi2HTML::Config::element_file_name = \&lilypond_element_file_name; } $Texi2HTML::Config::element_target_name = \&lilypond_element_target_name; +$default_print_element_header = $Texi2HTML::Config::print_element_header; $Texi2HTML::Config::print_element_header = \&lilypond_print_element_header; $Texi2HTML::Config::print_page_foot = \&print_lilypond_page_foot; $Texi2HTML::Config::print_navigation = \&lilypond_print_navigation; $Texi2HTML::Config::external_ref = \&lilypond_external_ref; +$default_external_href = $Texi2HTML::Config::external_href; $Texi2HTML::Config::external_href = \&lilypond_external_href; +$default_toc_body = $Texi2HTML::Config::toc_body; $Texi2HTML::Config::toc_body = \&lilypond_toc_body; $Texi2HTML::Config::css_lines = \&lilypond_css_lines; +$default_unknown = $Texi2HTML::Config::unknown; $Texi2HTML::Config::unknown = \&lilypond_unknown; +$default_print_page_head = $Texi2HTML::Config::print_page_head; $Texi2HTML::Config::print_page_head = \&lilypond_print_page_head; # $Texi2HTML::Config::foot_line_and_ref = \&lilypond_foot_line_and_ref; $Texi2HTML::Config::foot_line_and_ref = \&makeinfo_like_foot_line_and_ref; @@ -107,8 +137,8 @@ $Texi2HTML::Config::paragraph = \&makeinfo_like_paragraph; # Examples should be formatted similar to quotes: $Texi2HTML::Config::complex_format_map->{'example'} = { - 'begin' => q{"
"},
-  'end' => q{"
\n"}, + 'begin' => q{"
"}, + 'end' => q{"
\n"}, 'style' => 'code', }; @@ -216,7 +246,7 @@ sub load_map_file ($) sub split_texi_filename ($) { my $docu = shift; - my $docu_dir, $docu_name; + my ($docu_dir, $docu_name); if ($docu =~ /(.*\/)/) { chop($docu_dir = $1); $docu_name = $docu; @@ -255,7 +285,7 @@ sub lilypond_css_lines ($$) { $Texi2HTML::THISDOC{'CSS_LINES'} .= "{TITLE}\" href=\"$ref->{FILENAME}\">\n"; } - foreach my $ref (@ALT_CSS_REFS) + foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS) { $Texi2HTML::THISDOC{'CSS_LINES'} .= "{FILENAME}\" title=\"$ref->{TITLE}\">\n"; } @@ -284,7 +314,7 @@ my $node_to_filename_map = (); # according to node titles, which works by simply overriding the id element of # the $element hash. # If an external nodename<=>filename/anchor map file is found (loaded in -# lilypond_init_out, use the externally created values, otherwise use the +# the command handler, use the externally created values, otherwise use the # same logic here. sub lilypond_element_file_name($$$) { @@ -429,9 +459,6 @@ sub lilypond_external_ref($$$$$$) $displaytext = &$anchor('', $href, $displaytext) if ($displaytext ne ''); return &$I('%{node_file_href}', { 'node_file_href' => $displaytext }); - -# Default: format as "see NODE section 'SECTION' in BOOK". We don't want this! -# return t2h_default_external_ref($type, $section, $book, $file_node, $href, $cross_ref); } @@ -464,9 +491,9 @@ sub lilypond_unknown($$$$$) if (ref($state->{'element'}) eq 'HASH') { $state->{'element'}->{'translationof'} = main::normalise_space($line); } - return ('', true, undef, undef); + return ('', 1, undef, undef); } else { - return t2h_default_unknown($macro, $line, $pass, $stack, $state); + return &$default_unknown($macro, $line, $pass, $stack, $state); } } @@ -487,14 +514,13 @@ sub lilypond_external_href($$$) my $node_id = shift; my $node_hxmlt_id = shift; my $file = shift; - my $original_func = \&t2h_default_external_href; # 1) Keep a hash of book->section_map # 2) if not file in keys hash => try to load the map (assign empty map if # non-existent => will load only once!) # 3) if node in the section=>(file, anchor) map, replace node_id and # node_xhtml_id by the map's values - # 4) call the t2h_default_external_href with these values (or the old ones if not found) + # 4) call the default_external_href with these values (or the old ones if not found) if (($node_id ne '') and defined($file) and ($node_id ne 'Top')) { my $map_name = $file; @@ -519,9 +545,9 @@ sub lilypond_external_href($$$) } if (defined $file) { - return &$original_func($node, $node_id, $node_hxmlt_id, $file); + return &$default_external_href($node, $node_id, $node_hxmlt_id, $file); } else { - return &$original_func($node, $node_id, $node_hxmlt_id); + return &$default_external_href($node, $node_id, $node_hxmlt_id); } } @@ -536,49 +562,66 @@ sub lilypond_external_href($$$) my $page_toc_depth = 2; my @default_toc = []; + +# Initialize the toc_depth to 1 if the command-line option -D=short_toc is given +sub lilypond_init_toc_depth () +{ + if (exists($main::value{'short_toc'}) and not exists($main::value{'bigpage'})) { + $page_toc_depth = 1; + } +} +# Set the TOC-depth (depending on a texinfo variable short_toc) in a +# command-handler, so we have them available when creating the pages +push @Texi2HTML::Config::command_handler_process, \&lilypond_init_toc_depth; + + # recursively generate the TOC entries for the element and its children (which # are only shown up to maxlevel. All ancestors of the current element are also # shown with their immediate children, irrespective of their level. -# Unnumbered entries are only printed out if they are at top-level or their -# parent element is an ancestor of the currently viewed node. -sub generate_ly_toc_entries($$$$) +# Unnumbered entries are only printed out if they are at top-level or 2nd level +# or their parent element is an ancestor of the currently viewed node. +# The conditions to call this method to print the entry for a child node is: +# -) the parent is an ancestor of the current page node +# -) the parent is a numbered element at top-level toplevel (i.e. show numbered +# and unnumbered 2nd-level children of numbered nodes) +# -) the child element is a numbered node below level maxlevel +sub generate_ly_toc_entries($$$) { my $element = shift; my $element_path = shift; my $maxlevel = shift; - my $always_show_unnumbered_children = shift; # Skip undefined sections, plus all sections generated by index splitting return() if (not defined($element) or exists($element->{'index_page'})); my @result = (); my $level = $element->{'toc_level'}; my $is_parent_of_current = $element->{'id'} && $element_path->{$element->{'id'}}; - my $print_children = ( ($level < $maxlevel) or $is_parent_of_current ); my $ind = ' ' x $level; my $this_css_class = $is_parent_of_current ? " class=\"toc_current\"" : ""; my $entry = "$ind" . &$anchor ($element->{'tocid'}, "$element->{'file'}#$element->{'target'}",$element->{'text'}); + push (@result, $entry); my $children = $element->{'section_childs'}; - # Don't add unnumbered entries, unless they are at top-level or a parent of the current! - if (not ($element->{'number'} or $always_show_unnumbered_children)) { - return @result; - } - if ( $print_children and defined($children) and (ref($children) eq "ARRAY") ) { - push (@result, $entry); + if (defined($children) and (ref($children) eq "ARRAY")) { + my $force_children = $is_parent_of_current or ($level == 1 and $element->{'number'}); my @child_result = (); - foreach (@$children) { - push (@child_result, generate_ly_toc_entries($_, $element_path, $maxlevel, $is_parent_of_current)); + foreach my $c (@$children) { + my $is_numbered_child = defined ($c->{'number'}); + my $below_maxlevel = $c->{'toc_level'} le $maxlevel; + if ($force_children or ($is_numbered_child and $below_maxlevel)) { + my @child_res = generate_ly_toc_entries($c, $element_path, $maxlevel); + push (@child_result, @child_res); + } } # if no child nodes were generated, e.g. for the index, where expanded pages # are ignored, don't generate a list at all... if (@child_result) { push (@result, "\n$ind\n"); push (@result, @child_result); - push (@result, "$ind\n"); + push (@result, "$ind\n"); } - } else { - push (@result, $entry . "\n"); } + push (@result, "$ind\n"); return @result; } @@ -604,7 +647,7 @@ sub lilypond_generate_page_toc_body($) my @toc_entries = ("
\n", "\n"); my $children = $current_element->{'section_childs'}; foreach ( @$children ) { - push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth, False)); + push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth)); } push (@toc_entries, "\n"); push (@toc_entries, "
\n"); @@ -638,8 +681,9 @@ sub lilypond_print_toc_div ($$) my $uplink = $reldir."index.${lang}html"; print $fh "

<< Back to - Documentation Index

\n"; + title=\"Documentation Index\"><< " . + &ly_get_string ('Back to Documentation Index') . + "

\n"; print $fh '

' . &$anchor('', $Texi2HTML::HREF{'Top'}, @@ -668,7 +712,7 @@ sub lilypond_print_element_header @this_page_toc = lilypond_generate_page_toc_body($Texi2HTML::THIS_ELEMENT); } } - return T2H_DEFAULT_print_element_header( $first_in_page, $previous_is_top); + return &$default_print_element_header( $first_in_page, $previous_is_top); } # Generate the HTML output for the TOC @@ -677,14 +721,14 @@ sub lilypond_toc_body($) my $elements_list = shift; # Generate a default TOC for pages without THIS_ELEMENT @default_toc = lilypond_generate_page_toc_body(@$elements_list[0]); - return T2H_GPL_toc_body($elements_list); + return &$default_toc_body($elements_list); } # Print out the TOC in a
at the beginning of the page sub lilypond_print_page_head($) { my $fh = shift; - T2H_DEFAULT_print_page_head($fh); + &$default_print_page_head($fh); print $fh "
\n"; }