[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo/tp texi_sort_elements_count.pl Texinfo/...
From: |
Patrice Dumas |
Subject: |
texinfo/tp texi_sort_elements_count.pl Texinfo/... |
Date: |
Mon, 16 Jan 2012 22:09:48 +0000 |
CVSROOT: /sources/texinfo
Module name: texinfo
Changes by: Patrice Dumas <pertusus> 12/01/16 22:09:48
Modified files:
tp : texi_sort_elements_count.pl
tp/Texinfo/Convert: Converter.pm
Log message:
Put counting and sorting in Texinfo/Convert/Converter.pm since it is
not specific of an output when the converter is an argument.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/texi_sort_elements_count.pl?cvsroot=texinfo&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/texinfo/tp/Texinfo/Convert/Converter.pm?cvsroot=texinfo&r1=1.74&r2=1.75
Patches:
Index: texi_sort_elements_count.pl
===================================================================
RCS file: /sources/texinfo/texinfo/tp/texi_sort_elements_count.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- texi_sort_elements_count.pl 16 Jan 2012 00:25:46 -0000 1.2
+++ texi_sort_elements_count.pl 16 Jan 2012 22:09:48 -0000 1.3
@@ -226,57 +226,11 @@
my $converter_options = {};
$converter_options->{'parser'} = $parser;
my $converter = Texinfo::Convert::TextContent->converter($converter_options);
-my $elements;
-if ($use_sections) {
- $elements = Texinfo::Structuring::split_by_section($tree);
-} else {
- $elements = Texinfo::Structuring::split_by_node($tree);
-}
-if (!$elements) {
- @$elements = ($tree);
-} elsif (scalar(@$elements) >= 1
- and (!$elements->[0]->{'extra'}->{'node'}
- and !$elements->[0]->{'extra'}->{'section'})) {
- shift @$elements;
-}
+my ($sorted_name_counts_array, $formatted_result)
+ = $converter->sort_element_counts($tree, $use_sections,
+ $count_words);
-my $max_count = 0;
-my @name_counts_array;
-foreach my $element (@$elements) {
- my $name = 'UNNAMED element';
- if ($element->{'extra'}
- and ($element->{'extra'}->{'node'} or $element->{'extra'}->{'section'}))
{
- my $command = $element->{'extra'}->{'element_command'};
- if ($command->{'cmdname'} eq 'node') {
- $name = $converter->convert_tree({'contents'
- => $command->{'extra'}->{'nodes_manuals'}->[0]->{'node_content'}});
- } else {
- $name = "address@hidden>{'cmdname'}
".$converter->convert_tree($command->{'args'}->[0]);
- }
- }
- chomp($name);
- my $count;
- my $element_content = $converter->convert($element);
- if ($count_words) {
- my @res = split /\W+/, $element_content;
- $count = scalar(@res);
- } else {
- my @res = split /^/, $element_content;
- $count = scalar(@res);
- }
- push @name_counts_array, [$count, $name];
- if ($count > $max_count) {
- $max_count = $count;
- }
-}
-
-my @sorted_name_counts_array = sort {$a->[0] <=> $b->[0]} @name_counts_array;
address@hidden = reverse(@sorted_name_counts_array);
-
-my $max_length = length($max_count);
-foreach my $sorted_count (@sorted_name_counts_array) {
- print STDOUT sprintf("%${max_length}d $sorted_count->[1]\n",
$sorted_count->[0]);
-}
+print STDOUT $formatted_result;
1;
Index: Texinfo/Convert/Converter.pm
===================================================================
RCS file: /sources/texinfo/texinfo/tp/Texinfo/Convert/Converter.pm,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -b -r1.74 -r1.75
--- Texinfo/Convert/Converter.pm 15 Jan 2012 16:40:52 -0000 1.74
+++ Texinfo/Convert/Converter.pm 16 Jan 2012 22:09:48 -0000 1.75
@@ -25,6 +25,8 @@
use Texinfo::Report;
use Texinfo::Common;
use Texinfo::Convert::Text;
+use Texinfo::Convert::Texinfo;
+use Texinfo::Structuring;
use Carp qw(cluck);
@@ -1005,6 +1007,70 @@
}
}
+sub sort_element_counts($$;$$)
+{
+ my $converter = shift;
+ my $tree = shift;
+ my $use_sections = shift;
+ my $count_words = shift;
+
+ my $elements;
+ if ($use_sections) {
+ $elements = Texinfo::Structuring::split_by_section($tree);
+ } else {
+ $elements = Texinfo::Structuring::split_by_node($tree);
+ }
+
+ if (!$elements) {
+ @$elements = ($tree);
+ } elsif (scalar(@$elements) >= 1
+ and (!$elements->[0]->{'extra'}->{'node'}
+ and !$elements->[0]->{'extra'}->{'section'})) {
+ shift @$elements;
+ }
+
+ my $max_count = 0;
+ my @name_counts_array;
+ foreach my $element (@$elements) {
+ my $name = 'UNNAMED element';
+ if ($element->{'extra'}
+ and ($element->{'extra'}->{'node'} or
$element->{'extra'}->{'section'})) {
+ my $command = $element->{'extra'}->{'element_command'};
+ if ($command->{'cmdname'} eq 'node') {
+ $name = Texinfo::Convert::Texinfo::convert({'contents'
+ => $command->{'extra'}->{'nodes_manuals'}->[0]->{'node_content'}});
+ } else {
+ $name = "address@hidden>{'cmdname'} "
+ .Texinfo::Convert::Texinfo::convert($command->{'args'}->[0]);
+ }
+ }
+ chomp($name);
+ my $count;
+ my $element_content = $converter->convert_tree($element);
+ if ($count_words) {
+ my @res = split /\W+/, $element_content;
+ $count = scalar(@res);
+ } else {
+ my @res = split /^/, $element_content;
+ $count = scalar(@res);
+ }
+ push @name_counts_array, [$count, $name];
+ if ($count > $max_count) {
+ $max_count = $count;
+ }
+ }
+
+ my @sorted_name_counts_array = sort {$a->[0] <=> $b->[0]} @name_counts_array;
+ @sorted_name_counts_array = reverse(@sorted_name_counts_array);
+
+ my $max_length = length($max_count);
+ my $result = '';
+ foreach my $sorted_count (@sorted_name_counts_array) {
+ $result .= sprintf("%${max_length}d $sorted_count->[1]\n",
$sorted_count->[0]);
+ }
+ return (address@hidden, $result);
+}
+
1;
__END__
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- texinfo/tp texi_sort_elements_count.pl Texinfo/...,
Patrice Dumas <=