Texinfo::Transformations
************************

Texinfo::Transformations NAME
=============================

Texinfo::Transformations - transformations of Texinfo Perl tree

Texinfo::Transformations NOTES
==============================

The Texinfo Perl module main purpose is to be used in texi2any to convert Texinfo to other formats.  There is no promise of API stability.

Texinfo::Transformations DESCRIPTION
====================================

Includes miscellaneous methods set_menus_to_simple_menu and menu_to_simple_menu to change the menu texinfo tree, as well as insert_nodes_for_sectioning_commands that adds nodes for sectioning commands without nodes and complete_tree_nodes_menus and complete_tree_nodes_missing_menu that completes the node menus based on the sectioning tree.

Texinfo::Transformations METHODS
================================

No method is exported in the default case.

complete_tree_nodes_menus($tree, $add_section_names_in_entries)

     Add menu entries or whole menus for nodes associated with sections, based on the sectioning tree.  If the optional $add_section_names_in_entries argument is set, a menu entry name is added using the section name.  This function should be called after sectioning_structure.

complete_tree_nodes_missing_menu($tree, $use_section_names_in_entries)

     Add whole menus for nodes associated with sections and without menu, based on the sectioning tree.  If the optional $add_section_names_in_entries argument is set, a menu entry name is added using the section name.  This function should be called after sectioning_structure.

($root_content, $added_sections) = fill_gaps_in_sectioning($tree)

     This function adds empty @unnumbered and similar commands in a tree to fill gaps in sectioning.  This may be used, for example, when converting from a format that can handle gaps in sectioning.  $tree is the tree root.  An array reference is returned, containing the root contents with added sectioning commands, as well as an array reference containing the added sectioning commands.

     If the sectioning commands are lowered or raised (with @raisesections, @lowersection) the tree may be modified with @raisesections or @lowersection added to some tree elements.

($root_content, $added_nodes) = insert_nodes_for_sectioning_commands($tree, $nodes_list, $targets_list, $labels)

     Insert nodes for sectioning commands without node in $tree. Add nodes to the labels used as targets for references $labels and $targets_list and to $nodes_list.

     An array reference is returned, containing the root contents with added nodes, as well as an array reference containing the added nodes.

menu_to_simple_menu($menu)

set_menus_to_simple_menu($nodes_list)

     menu_to_simple_menu transforms the tree of a menu tree element. set_menus_to_simple_menu calls menu_to_simple_menu for all the menus of the nodes in $nodes_list.

     A simple menu has no menu_comment, menu_entry or menu_entry_description container anymore, their content are merged directly in the menu in preformatted container.

protect_hashchar_at_line_beginning($registrar, $customization_information, $tree)

     Protect hash (#) character at the beginning of line such that they would not be considered as lines to be processed by the CPP processor.  The $registrar and $customization_information arguments may be undef.  If defined, the $registrar argument should be a Texinfo::Report object in which the errors and warnings encountered while parsing are registered.  If defined, $customization_information should give access to customization through get_conf.  If both $registrar and $customization_information are defined they are used for error reporting in case an hash character could not be protected because it appeared in a raw environment.

$modified_tree = reference_to_arg_in_tree($tree)

     Modify $tree by converting reference @-commands to simple text using one of the arguments.  This transformation can be used, for example, to remove reference @-command from constructed node names trees, as node names cannot contain reference @-command while there could be some in the tree used in input for the node name tree.

regenerate_master_menu($translations, $labels)

     Regenerate the Top node master menu, replacing the first detailmenu in Top node menus or appending at the end of the Top node menu. $translations, if defined, should be a Texinfo::Translations object and should also hold customization information.

Texinfo::Transformations SEE ALSO
=================================

Texinfo manual (http://www.gnu.org/s/texinfo/manual/texinfo/), Texinfo::Parser.

Texinfo::Transformations AUTHOR
===============================

Patrice Dumas, <pertusus@free.fr>

Texinfo::Transformations COPYRIGHT AND LICENSE
==============================================

Copyright 2010- Free Software Foundation, Inc.  See the source file for all copyright years.

This library 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.