package Ernad::Presort::Fidek::Term; use strict; use warnings; use base ('Ernad::Presort::Fidek'); use Carp qw(confess); use Data::Dumper; ## main active call sub add_fits { my $w=shift; my $k=shift; #($package, $filename, $line, $subroutine, $hasargs, # $wantarray, $evaltext, $is_require, $hints, $bitmask #) #my $k = ( caller(1) )[3]; #die Dumper $k; #= caller($i); my $line=shift // confess "I need a line here."; my $papid=shift // confess "I need a papid here."; #$w->{'fitcla'}='term'; chomp $line; ## frases only use lowercase $line=lc($line); my $e=$w->{'e'} // $main::e // confess "I can't see your erimp"; $e->echo(__LINE__,"LINE '$line'",10);; my @fits=&split_line($line); foreach my $fit (@fits) { my $fit=&treat_fit($fit); $k->add_fit($fit,$papid); } } sub treat_fit { my $t=shift; if($t=~m|^[[:upper:]][[:lower:]]*$|) { $t=lc($t); } return $t; }; sub split_line { my $line=shift; my @fits; foreach my $term (split(/[\s\p{punct}]/,$line)) { ## function returns nothing when it is not finding a worthy term my $fit=treat_fit($term) or next; push(@fits,$fit); } return @fits; }; 1;