### perl hermes/callback/list

use strict;
use warnings;

use File::Basename;

use Hermes;
use Vulcan::OptConf;

return sub
{
    local $/ = "\n";

    my $range = Hermes->new( Vulcan::OptConf->load()->dump( 'range' ) );
    my ( $ext, %cluster ) = '.list';

    for my $file ( glob( '*' . $ext ) )
    {
        $file = readlink $file if -l $file;
        next unless -f $file && open my $fh => $file;

        my $cluster = Hermes->new();
        
        for my $line ( <$fh> )
        {
            map { $cluster->add( $range->load( $_ ) ) } split /\s+/, $line;
        }

        close $fh;
        $cluster{ basename( $file, $ext ) } = [ $cluster->list() ];
    }
    return \%cluster;
};
