#+############################################################################## # # plaintext.pm: convert to plaintext # # Copyright (C) 2009 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 . # # Originally written by Patrice Dumas. # #-############################################################################## use strict; sub plaintext_default_load(;$) { my $from_command_line = shift; info_default_load(); set_default('SHOW_MENU', 0); set_default('OUTFILE', '-'); # unless(defined($OUT) and $OUT !~ m:/$:); set_default('HEADERS', 0); @T2H_FORMAT_EXPAND = ('plaintext'); $print_page_head = \&plaintext_default_print_page_head; $print_page_foot = \&plaintest_default_print_page_foot; $element_heading = \&plaintext_default_element_heading; $image = \&plaintext_default_image; $print_index = \&plaintext_default_print_index; } sub plaintext_default_print_page_head($) { my $fh = shift; } sub plaintest_default_print_page_foot($) { my $fh = shift; } sub plaintext_default_element_heading($$$$$$$$$$$$) { my $info_result = &Texi2HTML::Config::info_default_element_heading(@_); my $element = shift; my $command = shift; my $texi_line = shift; my $line = shift; my $in_preformatted = shift; my $one_section = shift; my $element_heading = shift; my $first_in_page = shift; my $is_top = shift; my $previous_is_top = shift; my $command_line = shift; my $element_id = shift; my $new_element = shift; return $info_result if (!$element->{'node'}); return ''; } sub plaintext_default_image($$$$$$$$$$$$$$$$$) { my $file = shift; my $base = shift; my $preformatted = shift; my $file_name = shift; my $alt = shift; my $width = shift; my $height = shift; my $raw_alt = shift; my $extension = shift; my $working_dir = shift; my $file_path = shift; my $in_paragraph = shift; my $file_locations = shift; my $base_simple_format = shift; my $extension_simple_format = shift; my $file_name_simple_format = shift; my $line_nr = shift; my $txt_path; my $found_file; my @extensions = @IMAGE_EXTENSIONS; if (defined($extension) and ($extension ne '')) { unshift @extensions, ".$extension"; unshift @extensions, "$extension"; } else { $extension = undef; } my $file_found_index = undef; my $file_index = 0; foreach my $file_location (@$file_locations) { my ($file_located, $path, $file_simple_format) = @$file_location; my $extension = shift @extensions; if (defined($path)) { if ($extension eq 'txt' and !defined($txt_path)) { $txt_path = $path; } elsif (!defined($found_file)) { $found_file = [$file_located, $extension, $file_simple_format]; $file_found_index = $file_index; } } $file_index++; } my $text = ''; if (defined($txt_path)) { if (open(TXT, "<$txt_path")) { my $in_encoding = get_conf('IN_ENCODING'); if (defined($in_encoding) and get_conf('USE_UNICODE')) { binmode(TXT, ":encoding($in_encoding)"); } $text='[' if ($in_paragraph or $preformatted); while (my $img_txt = ) { $text .= $img_txt; } $text .= ']' if ($in_paragraph or $preformatted); close(TXT); } else { main::line_warn (sprintf(__("\@image file `%s' unreadable: %s"), $txt_path, $!), $line_nr); } } elsif (!defined($found_file)) { main::line_warn (sprintf(__("Cannot find \@image file `%s.txt'"), $base), $line_nr); } return $text; } sub plaintext_default_print_index($$) { my $text = shift; my $name = shift; return ''; } 1;