[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[5436] * tp/Texinfo/Convert/Converter.pm (_id_to_filename,
From: |
Patrice Dumas |
Subject: |
[5436] * tp/Texinfo/Convert/Converter.pm (_id_to_filename, |
Date: |
Mon, 07 Apr 2014 22:40:10 +0000 |
Revision: 5436
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=5436
Author: pertusus
Date: 2014-04-07 22:40:07 +0000 (Mon, 07 Apr 2014)
Log Message:
-----------
* tp/Texinfo/Convert/Converter.pm (_id_to_filename,
_sectioning_command_normalized_filename, _node_filename,
_set_element_file, _top_node_filename, _get_element,
_set_pages_files, output),
* tp/Texinfo/Convert/HTML.pm: move generic functions to Converter.pm
and modify default output() to follow the same rules as HTML.pm
for splitting.
* tp/Texinfo/Convert/Plaintext.pm (_convert_node):
rename function as _convert_element.
(convert_tree): add to be able to work with Converter.pm output().
* tp/Texinfo/Convert/Plaintext.pm,
tp/Texinfo/Convert/Info.pm, tp/texi2any.pl: use default
output() from Converter.pm for plaintext. Share less defaults
with Info.pm. Allow splitting plaintext.
Modified Paths:
--------------
trunk/ChangeLog
trunk/tp/Texinfo/Convert/Converter.pm
trunk/tp/Texinfo/Convert/HTML.pm
trunk/tp/Texinfo/Convert/Info.pm
trunk/tp/Texinfo/Convert/Plaintext.pm
trunk/tp/texi2any.pl
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2014-04-07 20:28:47 UTC (rev 5435)
+++ trunk/ChangeLog 2014-04-07 22:40:07 UTC (rev 5436)
@@ -1,3 +1,20 @@
+2014-04-08 Patrice Dumas <address@hidden>
+
+ * tp/Texinfo/Convert/Converter.pm (_id_to_filename,
+ _sectioning_command_normalized_filename, _node_filename,
+ _set_element_file, _top_node_filename, _get_element,
+ _set_pages_files, output),
+ * tp/Texinfo/Convert/HTML.pm: move generic functions to Converter.pm
+ and modify default output() to follow the same rules as HTML.pm
+ for splitting.
+ * tp/Texinfo/Convert/Plaintext.pm (_convert_node):
+ rename function as _convert_element.
+ (convert_tree): add to be able to work with Converter.pm output().
+ * tp/Texinfo/Convert/Plaintext.pm,
+ tp/Texinfo/Convert/Info.pm, tp/texi2any.pl: use default
+ output() from Converter.pm for plaintext. Share less defaults
+ with Info.pm. Allow splitting plaintext.
+
2014-04-07 Gavin Smith <address@hidden>
* info/infodoc.c (dump_map_to_message_buffer): Check if
Modified: trunk/tp/Texinfo/Convert/Converter.pm
===================================================================
--- trunk/tp/Texinfo/Convert/Converter.pm 2014-04-07 20:28:47 UTC (rev
5435)
+++ trunk/tp/Texinfo/Convert/Converter.pm 2014-04-07 22:40:07 UTC (rev
5436)
@@ -533,6 +533,384 @@
$self->{'output_file'} = $outfile;
}
+sub _id_to_filename($$)
+{
+ my $self = shift;
+ my $id = shift;
+ return substr($id, 0, $self->get_conf('BASEFILENAME_LENGTH'));
+}
+
+sub _sectioning_command_normalized_filename($$)
+{
+ my $self = shift;
+ my $command = shift;
+ my $no_unidecode;
+
+ $no_unidecode = 1 if (defined($self->get_conf('USE_UNIDECODE'))
+ and !$self->get_conf('USE_UNIDECODE'));
+
+ my $normalized_name =
Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+ {'contents' => $command->{'extra'}->{'misc_content'}},
+ $no_unidecode);
+
+ my $filename = $self->_id_to_filename($normalized_name);
+ $filename .= '.'.$self->get_conf('EXTENSION')
+ if (defined($self->get_conf('EXTENSION'))
+ and $self->get_conf('EXTENSION') ne '');
+ return ($normalized_name, $filename);
+}
+
+sub _node_filename($$)
+{
+ my $self = shift;
+ my $node_info = shift;
+
+ my $no_unidecode;
+ $no_unidecode = 1 if (defined($self->get_conf('USE_UNIDECODE'))
+ and !$self->get_conf('USE_UNIDECODE'));
+
+ my $filename;
+ if (defined($node_info->{'normalized'})) {
+ if ($self->get_conf('TRANSLITERATE_FILE_NAMES')) {
+ $filename =
Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
+ {'contents' => $node_info->{'node_content'}},
+ $no_unidecode);
+ } else {
+ $filename = $node_info->{'normalized'};
+ }
+ } else {
+ $filename = '';
+ }
+ $filename = $self->_id_to_filename($filename);
+ return $filename;
+}
+
+sub _set_element_file($$$)
+{
+ my $self = shift;
+ my $element = shift;
+ my $filename = shift;
+
+ if (!defined($filename)) {
+ cluck("_set_element_file: filename not defined\n");
+ }
+ if ($self->get_conf('CASE_INSENSITIVE_FILENAMES')) {
+ if (exists($self->{'filenames'}->{lc($filename)})) {
+ if ($self->get_conf('DEBUG')) {
+ print STDERR "Reusing ".$self->{'filenames'}->{lc($filename)}
+ ." for $filename\n";
+ }
+ $filename = $self->{'filenames'}->{lc($filename)};
+ } else {
+ $self->{'filenames'}->{lc($filename)} = $filename;
+ }
+ }
+ $element->{'filename'} = $filename;
+ if (defined($self->{'destination_directory'})
+ and $self->{'destination_directory'} ne '') {
+ $element->{'out_filename'} =
+ File::Spec->catfile($self->{'destination_directory'}, $filename);
+ } else {
+ $element->{'out_filename'} = $filename;
+ }
+}
+
+sub _top_node_filename($)
+{
+ my $self = shift;
+
+ my $top_node_filename;
+ if (defined($self->get_conf('TOP_FILE'))
+ and $self->get_conf('TOP_FILE') ne '') {
+ $top_node_filename = $self->get_conf('TOP_FILE');
+ } else {
+ if (defined($self->get_conf('TOP_NODE_FILE'))) {
+ $top_node_filename = $self->get_conf('TOP_NODE_FILE');
+ } else {
+ # TOP_NODE_FILE is set in the default case.
+ # If not the manual name is used.
+ $top_node_filename = $self->{'document_name'};
+ }
+ if (defined($top_node_filename)) {
+ my $top_node_extension;
+ if ($self->get_conf('NODE_FILENAMES')) {
+ $top_node_extension = $self->get_conf('NODE_FILE_EXTENSION');
+ } else {
+ $top_node_extension = $self->get_conf('EXTENSION');
+ }
+ $top_node_filename .= '.'.$top_node_extension
+ if (defined($top_node_extension) and $top_node_extension ne '');
+ }
+ }
+ return $top_node_filename;
+}
+
+sub _get_element($$)
+{
+ my $self = shift;
+ my $command = shift;
+ my $find_container = shift;
+
+ my $current = $command;
+
+ while (1) {
+ if ($current->{'type'}) {
+ if ($current->{'type'} eq 'element') {
+ return $current;
+ }
+ }
+ if ($current->{'parent'}) {
+ $current = $current->{'parent'};
+ } else {
+ return undef;
+ }
+ }
+}
+
+sub _set_pages_files($$)
+{
+ my $self = shift;
+ my $elements = shift;
+
+ # Ensure that the document has pages
+ return undef if (!defined($elements) or address@hidden);
+
+ my $extension = '';
+ $extension = '.'.$self->get_conf('EXTENSION')
+ if (defined($self->get_conf('EXTENSION'))
+ and $self->get_conf('EXTENSION') ne '');
+
+ if (!$self->get_conf('SPLIT')) {
+ foreach my $element (@$elements) {
+ if (!defined($element->{'filename'})) {
+ $element->{'filename'} = $self->{'output_filename'};
+ $element->{'out_filename'} = $self->{'output_file'};
+ }
+ }
+ } else {
+ my $node_top;
+ #my $section_top;
+ $node_top = $self->{'labels'}->{'Top'} if ($self->{'labels'});
+ #$section_top = $self->{'extra'}->{'top'} if ($self->{'extra'});
+
+ my $top_node_filename = $self->_top_node_filename();
+ # first determine the top node file name.
+ if ($self->get_conf('NODE_FILENAMES') and $node_top
+ and defined($top_node_filename)) {
+ my ($node_top_element) = $self->_get_element($node_top);
+ die "BUG: No element for top node" if (!defined($node_top));
+ $self->_set_element_file($node_top_element, $top_node_filename);
+ }
+ my $file_nr = 0;
+ my $previous_page;
+ foreach my $element(@$elements) {
+ # For Top node.
+ next if (defined($element->{'filename'}));
+ if (!$element->{'extra'}->{'first_in_page'}) {
+ cluck ("No first_in_page for $element\n");
+ }
+ if (!defined($element->{'extra'}->{'first_in_page'}->{'filename'})) {
+ my $file_element = $element->{'extra'}->{'first_in_page'};
+ if ($self->get_conf('NODE_FILENAMES')) {
+ foreach my $root_command (@{$file_element->{'contents'}}) {
+ if ($root_command->{'cmdname'}
+ and $root_command->{'cmdname'} eq 'node') {
+ my $node_filename;
+ # double node are not normalized, they are handled here
+ if (!defined($root_command->{'extra'}->{'normalized'})
+ or
!defined($self->{'labels'}->{$root_command->{'extra'}->{'normalized'}})) {
+ $node_filename = 'unknown_node';
+ } else {
+ $node_filename =
$self->_node_filename($root_command->{'extra'});
+ }
+ $node_filename .= '.'.$self->get_conf('NODE_FILE_EXTENSION')
+ if (defined($self->get_conf('NODE_FILE_EXTENSION'))
+ and $self->get_conf('NODE_FILE_EXTENSION') ne '');
+ $self->_set_element_file($file_element, $node_filename);
+ last;
+ }
+ }
+ if (!defined($file_element->{'filename'})) {
+ # use section to do the file name if there is no node
+ my $command = $self->element_command($file_element);
+ if ($command) {
+ if ($command->{'cmdname'} eq 'top' and !$node_top
+ and defined($top_node_filename)) {
+ $self->_set_element_file($file_element, $top_node_filename);
+ } else {
+ my ($normalized_name, $filename)
+ = $self->_sectioning_command_normalized_filename($command);
+ $self->_set_element_file($file_element, $filename)
+ }
+ } else {
+ # when everything else has failed
+ if ($file_nr == 0 and !$node_top
+ and defined($top_node_filename)) {
+ $self->_set_element_file($file_element, $top_node_filename);
+ } else {
+ my $filename = $self->{'document_name'} . "_$file_nr";
+ $filename .= $extension;
+ $self->_set_element_file($element, $filename);
+ }
+ $file_nr++;
+ }
+ }
+ } else {
+ my $filename = $self->{'document_name'} . "_$file_nr";
+ $filename .= '.'.$self->get_conf('EXTENSION')
+ if (defined($self->get_conf('EXTENSION'))
+ and $self->get_conf('EXTENSION') ne '');
+ $self->_set_element_file($file_element, $filename);
+ $file_nr++;
+ }
+ }
+ $element->{'filename'}
+ = $element->{'extra'}->{'first_in_page'}->{'filename'};
+ $element->{'out_filename'}
+ = $element->{'extra'}->{'first_in_page'}->{'out_filename'};
+ }
+ }
+
+ foreach my $element (@$elements) {
+ $self->{'file_counters'}->{$element->{'filename'}}++;
+ print STDERR "Page $element
".Texinfo::Structuring::_print_element_command_texi($element).":
$element->{'filename'}($self->{'file_counters'}->{$element->{'filename'}})\n"
+ if ($self->get_conf('DEBUG'));
+ }
+}
+
+sub output($$)
+{
+ my $self = shift;
+ my $root = shift;
+
+ $self->_set_outfile();
+ return undef unless $self->_create_destination_directory();
+
+ my $elements;
+
+ if (defined($self->get_conf('OUTFILE'))
+ and ($Texinfo::Common::null_device_file{$self->get_conf('OUTFILE')}
+ or $self->get_conf('OUTFILE') eq '-'
+ or $self->get_conf('OUTFILE') eq '')) {
+ $self->force_conf('SPLIT', 0);
+ }
+ if ($self->get_conf('SPLIT')) {
+ $self->set_conf('NODE_FILES', 1);
+ }
+ if ($self->get_conf('NODE_FILES')
+ or ($self->get_conf('SPLIT') and $self->get_conf('SPLIT') eq 'node')) {
+ $self->set_conf('NODE_FILENAMES', 1);
+ }
+ if ($self->get_conf('NODE_FILENAMES') and
defined($self->get_conf('EXTENSION'))) {
+ $self->set_conf('NODE_FILE_EXTENSION', $self->get_conf('EXTENSION'));
+ }
+
+ # do that now to have it available for formatting
+ # NOTE this calls Convert::Converter::_informative_command on all the
+ # @informative_global commands.
+ # Thus sets among others language and encodings.
+ $self->_set_global_multiple_commands(-1);
+
+ if ($self->get_conf('USE_NODES')) {
+ $elements = Texinfo::Structuring::split_by_node($root);
+ } else {
+ $elements = Texinfo::Structuring::split_by_section($root);
+ }
+
+ Texinfo::Structuring::split_pages($elements, $self->get_conf('SPLIT'));
+
+ # determine file names associated with the different pages
+ if ($self->{'output_file'} ne '') {
+ $self->_set_pages_files($elements);
+ }
+
+ #print STDERR "$elements $elements->[0]->{'filename'}\n";
+
+ # Now do the output
+ my $fh;
+ my $output = '';
+ if (!$elements or !defined($elements->[0]->{'filename'})) {
+ # no page
+ my $outfile;
+ if ($self->{'output_file'} ne '') {
+ if ($self->get_conf('SPLIT')) {
+ $outfile = $self->_top_node_filename();
+ if (defined($self->{'destination_directory'})
+ and $self->{'destination_directory'} ne '') {
+ $outfile = File::Spec->catfile($self->{'destination_directory'},
+ $outfile);
+ }
+ } else {
+ $outfile = $self->{'output_file'};
+ }
+ print STDERR "DO No pages, output in $outfile\n"
+ if ($self->get_conf('DEBUG'));
+ $fh = $self->Texinfo::Common::open_out($outfile);
+ if (!$fh) {
+ $self->document_error(sprintf($self->__("could not open %s for
writing: %s"),
+ $outfile, $!));
+ return undef;
+ }
+ } else {
+ print STDERR "DO No pages, string output\n"
+ if ($self->get_conf('DEBUG'));
+ }
+
+ if ($elements and @$elements) {
+ foreach my $element (@$elements) {
+ my $element_text = $self->convert_tree($element);
+ $output .= $self->_output_text($element_text, $fh);
+ }
+ } else {
+ $output .= $self->_output_text($self->convert($root), $fh);
+ }
+ # NOTE do not close STDOUT now to avoid a perl warning.
+ if ($fh and $outfile ne '-') {
+ $self->register_close_file($outfile);
+ if (!close($fh)) {
+ $self->document_error(sprintf($self->__("error on closing %s: %s"),
+ $outfile, $!));
+ }
+ }
+ return $output if ($self->{'output_file'} eq '');
+ } else {
+ # output with pages
+ print STDERR "DO Elements with filenames\n"
+ if ($self->get_conf('DEBUG'));
+ my %files;
+
+ foreach my $element (@$elements) {
+ my $file_fh;
+ # open the file and output the elements
+ if (!$files{$element->{'filename'}}->{'fh'}) {
+ $file_fh =
$self->Texinfo::Common::open_out($element->{'out_filename'});
+ if (!$file_fh) {
+ $self->document_error(sprintf($self->__("could not open %s for
writing: %s"),
+ $element->{'out_filename'}, $!));
+ return undef;
+ }
+ $files{$element->{'filename'}}->{'fh'} = $file_fh;
+ } else {
+ $file_fh = $files{$element->{'filename'}}->{'fh'};
+ }
+ my $element_text = $self->convert_tree($element);
+ print $file_fh $element_text;
+ $self->{'file_counters'}->{$element->{'filename'}}--;
+ if ($self->{'file_counters'}->{$element->{'filename'}} == 0) {
+ # NOTE do not close STDOUT here to avoid a perl warning
+ if ($element->{'out_filename'} ne '-') {
+ $self->register_close_file($element->{'out_filename'});
+ if (!close($file_fh)) {
+ $self->document_error(sprintf($self->__("error on closing %s: %s"),
+ $element->{'out_filename'}, $!));
+ return undef;
+ }
+ }
+ }
+ }
+ }
+}
+
sub _bug_message($$;$)
{
my $self = shift;
@@ -806,7 +1184,7 @@
}
# generic output method
-sub output($$)
+sub output_no_split($$)
{
my $self = shift;
my $root = shift;
@@ -1259,7 +1637,7 @@
sub convert_tree($$) {
...
}
- sub output ($$) {
+ sub output($$) {
...
}
Modified: trunk/tp/Texinfo/Convert/HTML.pm
===================================================================
--- trunk/tp/Texinfo/Convert/HTML.pm 2014-04-07 20:28:47 UTC (rev 5435)
+++ trunk/tp/Texinfo/Convert/HTML.pm 2014-04-07 22:40:07 UTC (rev 5436)
@@ -4901,22 +4901,11 @@
$self->{'css_rule_lines'} = address@hidden;
}
-sub _id_to_filename($$)
-{
- my $self = shift;
- my $id = shift;
- return substr($id, 0, $self->get_conf('BASEFILENAME_LENGTH'));
-}
-
sub _node_id_file($$)
{
my $self = shift;
my $node_info = shift;
- my $no_unidecode;
- $no_unidecode = 1 if (defined($self->get_conf('USE_UNIDECODE'))
- and !$self->get_conf('USE_UNIDECODE'));
-
my ($target, $id);
my $normalized = $node_info->{'normalized'};
if (defined($normalized)) {
@@ -4932,39 +4921,21 @@
($target, $id) = &$Texinfo::Config::node_target_name($node_info,
$target, $id);
}
- my $filename;
- if (defined($node_info->{'normalized'})) {
- if ($self->get_conf('TRANSLITERATE_FILE_NAMES')) {
- $filename =
Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
- {'contents' => $node_info->{'node_content'}},
- $no_unidecode);
- } else {
- $filename = $node_info->{'normalized'};
- }
- } else {
- $filename = '';
- }
- return ($self->_id_to_filename($filename), $target, $id);
+
+ my $filename = $self->_node_filename($node_info);
+
+ return ($filename, $target, $id);
}
sub _new_sectioning_command_target($$)
{
my $self = shift;
my $command = shift;
- my $no_unidecode;
- $no_unidecode = 1 if (defined($self->get_conf('USE_UNIDECODE'))
- and !$self->get_conf('USE_UNIDECODE'));
+ my ($normalized_name, $filename)
+ = $self->_sectioning_command_normalized_filename($command);
- my $filename =
Texinfo::Convert::NodeNameNormalization::transliterate_texinfo(
- {'contents' => $command->{'extra'}->{'misc_content'}},
- $no_unidecode);
-
- my $target_base = _normalized_to_id($filename);
- $filename = $self->_id_to_filename($filename);
- $filename .= '.'.$self->get_conf('EXTENSION')
- if (defined($self->get_conf('EXTENSION'))
- and $self->get_conf('EXTENSION') ne '');
+ my $target_base = _normalized_to_id($normalized_name);
if ($target_base !~ /\S/ and $command->{'cmdname'} eq 'top'
and defined($self->{'misc_elements_targets'}->{'Top'})) {
$target_base = $self->{'misc_elements_targets'}->{'Top'};
@@ -5129,36 +5100,6 @@
}
}
-sub _set_element_file($$$)
-{
- my $self = shift;
- my $element = shift;
- my $filename = shift;
-
- if (!defined($filename)) {
- cluck("_set_element_file: filename not defined\n");
- }
- if ($self->get_conf('CASE_INSENSITIVE_FILENAMES')) {
- if (exists($self->{'filenames'}->{lc($filename)})) {
- if ($self->get_conf('DEBUG')) {
- print STDERR "Reusing ".$self->{'filenames'}->{lc($filename)}
- ." for $filename\n";
- }
- $filename = $self->{'filenames'}->{lc($filename)};
- } else {
- $self->{'filenames'}->{lc($filename)} = $filename;
- }
- }
- $element->{'filename'} = $filename;
- if (defined($self->{'destination_directory'})
- and $self->{'destination_directory'} ne '') {
- $element->{'out_filename'} =
- File::Spec->catfile($self->{'destination_directory'}, $filename);
- } else {
- $element->{'out_filename'} = $filename;
- }
-}
-
sub _get_element($$;$);
# If $find_container is set, the element that holds the command is found,
@@ -5218,36 +5159,6 @@
}
}
-sub _top_node_filename($)
-{
- my $self = shift;
-
- my $top_node_filename;
- if (defined($self->get_conf('TOP_FILE'))
- and $self->get_conf('TOP_FILE') ne '') {
- $top_node_filename = $self->get_conf('TOP_FILE');
- } else {
- if (defined($self->get_conf('TOP_NODE_FILE'))) {
- $top_node_filename = $self->get_conf('TOP_NODE_FILE');
- } else {
- # TOP_NODE_FILE is set in the default case.
- # If not the manual name is used.
- $top_node_filename = $self->{'document_name'};
- }
- if (defined($top_node_filename)) {
- my $top_node_extension;
- if ($self->get_conf('NODE_FILENAMES')) {
- $top_node_extension = $self->get_conf('NODE_FILE_EXTENSION');
- } else {
- $top_node_extension = $self->get_conf('EXTENSION');
- }
- $top_node_filename .= '.'.$top_node_extension
- if (defined($top_node_extension) and $top_node_extension ne '');
- }
- }
- return $top_node_filename;
-}
-
sub _set_pages_files($$)
{
my $self = shift;
Modified: trunk/tp/Texinfo/Convert/Info.pm
===================================================================
--- trunk/tp/Texinfo/Convert/Info.pm 2014-04-07 20:28:47 UTC (rev 5435)
+++ trunk/tp/Texinfo/Convert/Info.pm 2014-04-07 22:40:07 UTC (rev 5436)
@@ -51,6 +51,9 @@
my %defaults = Texinfo::Convert::Plaintext::converter_defaults(undef, undef);
$defaults{'SHOW_MENU'} = 1;
+$defaults{'EXTENSION'} = 'info';
+$defaults{'USE_SETFILENAME_EXTENSION'} = 1;
+$defaults{'OUTFILE'} = undef;
sub converter_defaults($$)
{
@@ -128,7 +131,7 @@
my @nodes = @$elements;
while (@nodes) {
my $node = shift @nodes;
- my $node_text = $self->_convert_node($node);
+ my $node_text = $self->_convert_element($node);
if (!$first_node) {
$first_node = 1;
if (defined($self->{'text_before_first_node'})) {
Modified: trunk/tp/Texinfo/Convert/Plaintext.pm
===================================================================
--- trunk/tp/Texinfo/Convert/Plaintext.pm 2014-04-07 20:28:47 UTC (rev
5435)
+++ trunk/tp/Texinfo/Convert/Plaintext.pm 2014-04-07 22:40:07 UTC (rev
5436)
@@ -300,16 +300,18 @@
my %defaults = (
'ENABLE_ENCODING' => 1,
'SHOW_MENU' => 0,
-# not used for plaintext, since default is '-', and always set, for plaintext.
- 'EXTENSION' => 'info',
- 'USE_SETFILENAME_EXTENSION' => 1,
+ #'EXTENSION' => 'info',
+ 'EXTENSION' => 'txt',
+ #'USE_SETFILENAME_EXTENSION' => 1,
'INFO_SPECIAL_CHARS_WARNING' => 1,
- 'OUTFILE' => undef,
+ #'OUTFILE' => undef,
+ 'OUTFILE' => '-',
'SUBDIR' => undef,
'documentlanguage' => undef,
'output_format' => '',
+ 'USE_NODES' => 1,
);
sub push_top_formatter($$)
@@ -432,7 +434,7 @@
}
}
-sub _convert_node($$)
+sub _convert_element($$)
{
my $self = shift;
my $element = shift;
@@ -473,7 +475,7 @@
$result .= $footnotes;
} else {
foreach my $node (@$elements) {
- my $node_text = $self->_convert_node($node);
+ my $node_text = $self->_convert_element($node);
$result .= $node_text;
}
}
@@ -481,11 +483,27 @@
return $result;
}
-sub output($$)
+sub convert_tree($$)
{
my $self = shift;
my $root = shift;
+ $self->{'empty_lines_count'} = 1;
+ my $result;
+ if ($root->{'type'} and $root->{'type'} eq 'element') {
+ $result = $self->_convert_element($root);
+ } else {
+ $result = $self->_convert($root);
+ }
+ return $result;
+}
+
+# old implementation of output that does not allow for splitting.
+sub _output_old($$)
+{
+ my $self = shift;
+ my $root = shift;
+
my $outfile = '-';
$self->set_conf('OUTFILE', '-');
$self->_set_outfile();
Modified: trunk/tp/texi2any.pl
===================================================================
--- trunk/tp/texi2any.pl 2014-04-07 20:28:47 UTC (rev 5435)
+++ trunk/tp/texi2any.pl 2014-04-07 22:40:07 UTC (rev 5436)
@@ -550,6 +550,7 @@
'plaintext' => {
'nodes_tree' => 1,
'floats' => 1,
+ 'split' => 1,
'converter' => sub{Texinfo::Convert::Plaintext->converter(@_)},
},
'html' => {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [5436] * tp/Texinfo/Convert/Converter.pm (_id_to_filename,,
Patrice Dumas <=