texinfo-commits
[Top][All Lists]
Advanced

[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__



reply via email to

[Prev in Thread] Current Thread [Next in Thread]