summaryrefslogtreecommitdiff
path: root/doc/t2h.pm
diff options
context:
space:
mode:
authorTimothy Gu <timothygu99@gmail.com>2014-12-03 21:31:34 -0800
committerMichael Niedermayer <michaelni@gmx.at>2014-12-06 02:42:19 +0100
commitcd6f0f28bc06e19334bc8f929572ad4588679ea1 (patch)
tree7b28803ec85d002c10184aad4393157088a30ae4 /doc/t2h.pm
parent1c639fa6e02ed122dc41c318acb875f8d76537c5 (diff)
doc: Do not use the headings as links to TOC anchors
Instead, use FontAwesome icons (if configured to be this way) or separate text. Signed-off-by: Timothy Gu <timothygu99@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'doc/t2h.pm')
-rw-r--r--doc/t2h.pm104
1 files changed, 102 insertions, 2 deletions
diff --git a/doc/t2h.pm b/doc/t2h.pm
index a92707190a..7f771f996a 100644
--- a/doc/t2h.pm
+++ b/doc/t2h.pm
@@ -23,8 +23,108 @@
# no navigation elements
set_from_init_file('HEADERS', 0);
-# TOC and Chapter headings link
-set_from_init_file('TOC_LINKS', 1);
+sub ffmpeg_heading_command($$$$$)
+{
+ my $self = shift;
+ my $cmdname = shift;
+ my $command = shift;
+ my $args = shift;
+ my $content = shift;
+
+ my $result = '';
+
+ # not clear that it may really happen
+ if ($self->in_string) {
+ $result .= $self->command_string($command) ."\n" if ($cmdname ne 'node');
+ $result .= $content if (defined($content));
+ return $result;
+ }
+
+ my $element_id = $self->command_id($command);
+ $result .= "<a name=\"$element_id\"></a>\n"
+ if (defined($element_id) and $element_id ne '');
+
+ print STDERR "Process $command "
+ .Texinfo::Structuring::_print_root_command_texi($command)."\n"
+ if ($self->get_conf('DEBUG'));
+ my $element;
+ if ($Texinfo::Common::root_commands{$command->{'cmdname'}}
+ and $command->{'parent'}
+ and $command->{'parent'}->{'type'}
+ and $command->{'parent'}->{'type'} eq 'element') {
+ $element = $command->{'parent'};
+ }
+ if ($element) {
+ $result .= &{$self->{'format_element_header'}}($self, $cmdname,
+ $command, $element);
+ }
+
+ my $heading_level;
+ # node is used as heading if there is nothing else.
+ if ($cmdname eq 'node') {
+ if (!$element or (!$element->{'extra'}->{'section'}
+ and $element->{'extra'}->{'node'}
+ and $element->{'extra'}->{'node'} eq $command
+ # bogus node may not have been normalized
+ and defined($command->{'extra'}->{'normalized'}))) {
+ if ($command->{'extra'}->{'normalized'} eq 'Top') {
+ $heading_level = 0;
+ } else {
+ $heading_level = 3;
+ }
+ }
+ } else {
+ $heading_level = $command->{'level'};
+ }
+
+ my $heading = $self->command_text($command);
+ # $heading not defined may happen if the command is a @node, for example
+ # if there is an error in the node.
+ if (defined($heading) and $heading ne '' and defined($heading_level)) {
+
+ if ($Texinfo::Common::root_commands{$cmdname}
+ and $Texinfo::Common::sectioning_commands{$cmdname}) {
+ my $content_href = $self->command_contents_href($command, 'contents',
+ $self->{'current_filename'});
+ if ($content_href) {
+ my $this_href = $content_href =~ s/^\#toc-/\#/r;
+ $heading .= '<span class="pull-right">'.
+ '<a class="anchor hidden-xs" '.
+ "href=\"$this_href\" aria-hidden=\"true\">".
+ ($ENV{"FA_ICONS"} ? '<i class="fa fa-link"></i>'
+ : '#').
+ '</a> '.
+ '<a class="anchor hidden-xs"'.
+ "href=\"$content_href\" aria-hidden=\"true\">".
+ ($ENV{"FA_ICONS"} ? '<i class="fa fa-navicon"></i>'
+ : 'TOC').
+ '</a>'.
+ '</span>';
+ }
+ }
+
+ if ($self->in_preformatted()) {
+ $result .= $heading."\n";
+ } else {
+ # if the level was changed, set the command name right
+ if ($cmdname ne 'node'
+ and $heading_level ne $Texinfo::Common::command_structuring_level{$cmdname}) {
+ $cmdname
+ = $Texinfo::Common::level_to_structuring_command{$cmdname}->[$heading_level];
+ }
+ $result .= &{$self->{'format_heading_text'}}(
+ $self, $cmdname, $heading,
+ $heading_level +
+ $self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
+ }
+ }
+ $result .= $content if (defined($content));
+ return $result;
+}
+
+foreach my $command (keys(%Texinfo::Common::sectioning_commands), 'node') {
+ texinfo_register_command_formatting($command, \&ffmpeg_heading_command);
+}
# print the TOC where @contents is used
set_from_init_file('INLINE_CONTENTS', 1);