package ILMT::URD::HIN::Prune;
use strict;
use warnings;
use Dir::Self;
use Data::Dumper;
use ILMT::URD::HIN::Prune::prune_on_pos;
use ILMT::URD::HIN::Prune::prune_on_case;
use ILMT::URD::HIN::SSFAPI::feature_filter;
use ILMT::URD::HIN::SSFAPI::shakti_tree_api;

sub process {
    my %par = @_;
    utf8::encode($par{'data'});
    my $input = $par{'data'};

    my $db_file = __DIR__ . "/Prune/mapping.dat";
    read_story(\$input);

    my $body;
    my $numBody = get_bodycount();
    my $result;
    for(my($bodyNum)=1;$bodyNum<=$numBody;$bodyNum++)
    {
        $body = get_body($bodyNum,$body);
        # Count the number of Paragraphs in the story
        my($numPara) = get_paracount($body);
        # Iterate through paragraphs in the story
        for(my($i)=1;$i<=$numPara;$i++)
        {
            my($para);
            # Read Paragraph
            $para = get_para($i);
            # Count the number of sentences in this paragraph
            my($numSent) = get_sentcount($para);
            #print $numSent."\n";
            # Iterate through sentences in the paragraph
            for(my($j)=1;$j<=$numSent;$j++)
            {
                #print " ... Processing sent $j\n";
                # Read the sentence which is in SSF format
                my($sent) = get_sent($para,$j);
                #       print_tree($sent);
                prune_on_pos($db_file,$sent);
                prune_on_case($sent);
            }
        }
    }

    open OUTFILE, '>', \$result  or die $!;
    select(OUTFILE);
    printstory();
    select(STDOUT);
    utf8::decode($result);
    return $result;
}

1;
