#!/usr/bin/perl

use strict;

undef $/;

for (<sources/*>) {for (<$_/*.lst>) {sort_file($_)}}

sub sort_file {
  my $file = shift;
  open (F,$file) || die ("could not open file $file: $!\n");
  my $t = <F>;
  close F;
  open (F,">$file") || die ("could not write file $file: $!\n");
  print F sort_stuff($t);
  close (F)
}

sub sort_stuff {
  my (@t,$t,@r) = split(/\n/,shift);
  $t = shift @t if $t[0] =~ /^{.*}$/;
  @r = sort (map {sort_props($_)} @t);
  unshift @r, $t if $t;
  return join("\n",@r)
}

sub sort_props {
  my $t = shift;
  if ($t =~ /^(.*-- )(.*)$/)
  {
    $t = $1 . join("|",sort split(/\|/,$2))
  }
  return $t
}
