File Coverage

blib/lib/Lingua/YaTeA/ForbiddenStructureAny.pm
Criterion Covered Total %
statement 46 47 97.8
branch 8 10 80.0
condition n/a
subroutine 9 9 100.0
pod 6 6 100.0
total 69 72 95.8


line stmt bran cond sub pod time code
1             package Lingua::YaTeA::ForbiddenStructureAny;
2 5     5   2287 use Lingua::YaTeA::ForbiddenStructure;
  5         12  
  5         56  
3 5     5   127 use strict;
  5         11  
  5         86  
4 5     5   23 use warnings;
  5         10  
  5         2784  
5              
6             our @ISA = qw(Lingua::YaTeA::ForbiddenStructure);
7             our $VERSION=$Lingua::YaTeA::VERSION;
8              
9             sub new
10             {
11 172     172 1 324 my ($class,$infos_a) = @_;
12 172         371 my ($form,$reg_exp) = $class->parse($infos_a->[0]);
13 172         533 my $this = $class->SUPER::new($form);
14 172         321 bless ($this,$class);
15 172         340 $this->{ACTION} = $infos_a->[2];
16 172         320 $this->{SPLIT_AFTER} = $this->setSplitAfter($infos_a);
17 172         347 $this->{REG_EXP} = $reg_exp;
18 172         429 return $this;
19             }
20              
21              
22             # TODO
23             sub setSplitAfter
24             {
25 172     172 1 319 my ($this,$infos_a) = @_;
26 172 100       398 if ($this->{ACTION} eq "split")
27             {
28 56         162 return $infos_a->[3] - 1;
29             }
30 116         295 return "";
31             }
32              
33             sub parse
34             {
35 172     172 1 306 my ($class,$string) = @_;
36 172         386 my @elements = split / /, $string;
37 172         301 my $element;
38 172         260 my $forbidden_tag = "\(\\n\\<\\/\?\(FORBIDDEN\|FRONTIER\)\[\^\>\]\+\>\)\*";
39 172         241 my $reg_exp = "";
40 172         294 my $form;
41            
42 172         310 foreach $element (@elements){
43 292         894 $element =~ /^([^\\]+)\\(.+)$/;
44 292 50       743 if(!defined $2)
45             {
46 0         0 warn "FS error:" . $string. "\n";
47             }
48 292 100       612 if ($2 eq "IF"){
49 104         328 $reg_exp .= $forbidden_tag . "\?\\n" . quotemeta($1)."\\t\[\^\\t\]\+\\t\[\^\\t\]\+" . $forbidden_tag;
50             }
51             else{
52 188 100       347 if ($2 eq "POS"){
53 96         290 $reg_exp .= $forbidden_tag . "\?\\n\[\^\\t\]\+\\t" . quotemeta($1)."\\t\[\^\\t\]\+". $forbidden_tag;
54             }
55             else{
56 92 50       194 if ($2 eq "LF"){
57 92         285 $reg_exp .= $forbidden_tag . "\?\\n\[\^\\t\]\+\\t\[\^\\t\]\+\\t".quotemeta($1). $forbidden_tag;
58             }
59             }
60             }
61 292         629 $form .= $1 . " ";
62             }
63 172         295 $reg_exp .= "\\n";
64 172         561 $form =~ s/ $//;
65 172         582 return ($form,$reg_exp);
66             }
67              
68             sub getAction
69             {
70 860     860 1 1726 my ($this) = @_;
71 860         2396 return $this->{ACTION};
72             }
73              
74             sub getRegExp
75             {
76 860     860 1 1544 my ($this) = @_;
77 860         1826 return $this->{REG_EXP};
78             }
79              
80             sub getSplitAfter
81             {
82 280     280 1 456 my ($this) = @_;
83 280         613 return $this->{SPLIT_AFTER};
84             }
85              
86              
87             1;
88              
89             __END__