retain original order of collation sets
Tara L Andrews [Wed, 18 Apr 2012 12:30:02 +0000 (14:30 +0200)]
lib/Text/Tradition/Parser/Util.pm

index 8a17e7e..de18a6f 100644 (file)
@@ -32,14 +32,13 @@ on the collation graph.
 sub collate_variants {
     my( $collation, @reading_sets ) = @_;
     
-    # Make sure the reading sets are unique, but keep
-    # the lemma first.
-    my $lemma = shift @reading_sets;
+    # Make sure the reading sets are unique, but retain their ordering.
     my %unique_sets;
-    map { $unique_sets{$_} = $_ } @reading_sets;
-       delete $unique_sets{$lemma};
-       my @sets = values %unique_sets;
-       unshift( @sets, $lemma );
+    my @sets;
+    foreach( @reading_sets ) {
+       push( @sets, $_ ) unless $unique_sets{$_};
+       $unique_sets{$_} = $_;
+    }
 
     # Two different ways to do this, depending on whether we want
     # transposed reading nodes to be merged into one (producing a