#!/usr/bin/perl -w
# -*- perl -*-

#
# $Id: sortbycat,v 2.11 2007/12/24 00:29:29 eserte Exp $
# Author: Slaven Rezic
#

# Strassen-Dateien nach Kategorien sortieren
# Sortierreihenfolge ist eingebaut und kann nachtrglich per Option
# gendert werden

use FindBin;
use lib ("$FindBin::RealBin/..",
	 "$FindBin::RealBin/../data",
	 "$FindBin::RealBin/../lib",
	);
use Strassen;
use strict;
use Getopt::Long;

my %catval = %{ Strassen->default_cat_stack_mapping() };
# fr nummerische Kategorien
for (0 .. 10) {
    $catval{$_} = 10-$_;
}

my $reverse = 0;
my $catref = \%catval;
my $ignoreref;

if (!GetOptions("reverse" => \$reverse,
		"sort=s" => sub {
		    $catref = [split /,/, $_[1]]
		},
		"ignore=s" => sub {
		    $ignoreref = [split /,/, $_[1]]
		},
	       )) {
    die "usage: $0 [-sort cat1,cat2,cat3...] [-ignore cat,...] [-reverse] [datafile]";
}

my $datafile = shift || '';

my @data;

my $tmpfile;

if ($datafile eq '') {
    $datafile = "-";
}

if ($reverse) {
    while(my($k,$v) = each %$catref) {
	$catref->{$k} = -$v;
    }
}

my $s = new Strassen $datafile, UseLocalDirectives => 1;
my %args;
if ($ignoreref) {
    $args{-ignore} = $ignoreref;
}
$s->sort_by_cat($catref, %args);
$s->write("-");

__END__
