/[cvs]/nfo/perl/libs/Data/Query/Filter/Regexp.pm
ViewVC logotype

Contents of /nfo/perl/libs/Data/Query/Filter/Regexp.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations)
Sun Feb 9 04:53:23 2003 UTC (21 years, 5 months ago) by joko
Branch: MAIN
Changes since 1.1: +7 -4 lines
+ object creation done via new mechanism

1 ## ------------------------------------------------------------------------
2 ## $Id: Regexp.pm,v 1.1 2002/12/23 04:22:22 joko Exp $
3 ## ------------------------------------------------------------------------
4 ## $Log: Regexp.pm,v $
5 ## Revision 1.1 2002/12/23 04:22:22 joko
6 ## + refactored from Data::Filter
7 ##
8 ## Revision 1.1 2002/12/22 14:19:17 joko
9 ## + initial check-in
10 ##
11 ## ------------------------------------------------------------------------
12
13
14 package Data::Query::Filter::Regexp;
15
16 use strict;
17 use warnings;
18
19 use base 'DesignPattern::Object::Logger';
20
21
22 use Data::Dumper;
23
24 use Regexp::Group;
25 use DesignPattern::Object;
26 use Data::Compare::Struct qw( isEmpty );
27
28 # ------------ common perl object constructor ------------
29 sub new {
30 my $invocant = shift;
31 my $class = ref($invocant) || $invocant;
32 my @args = ();
33 @_ && (@args = @_);
34 #$logger->debug( __PACKAGE__ . "->new( @args )" ); # this is not "common"!
35 my $self = { @_ };
36 bless $self, $class;
37 $self->{caller} = caller;
38
39 #print Dumper(caller(2));
40 #exit;
41
42 $self->_init();
43 return $self;
44 }
45
46 sub _init {
47 my $self = shift;
48
49 # try to load filter-declaration from configuration scope inside perl-module (yes - it's already abstracted out there!)
50 $self->{declaration} = DesignPattern::Object->fromPackage($self->{module});
51 #print Dumper($self->{declaration});
52
53
54 # the regexp-object which does the hard work for us ;-)
55 $self->{regexp} = Regexp::Group->new(
56 'data' => \$self->{data}, # reference ...
57 #'data' => $self->{data}, # ... or not?
58 'metadata' => $self->{declaration}->metadata(),
59 'patterns' => $self->{declaration}->patterns(),
60 'coderefs' => $self->{declaration}->coderefs(),
61 'verbose' => 1,
62 );
63
64 }
65
66 sub run {
67 my $self = shift;
68 my $steps = shift;
69 my $coderef = shift;
70
71 #print "cb: $coderef", "\n";
72
73 my $result = $self->{regexp}->scan($steps, $coderef);
74
75 # configure tracing
76 # respects additional trace-options passed to _trace-method
77 $self->{TRACE_OPTIONS} = 1;
78 # disables _any_ tracing - even if sub-conditions evaluate to true values
79 $self->{TRACE_DISABLED} = 0;
80
81 # trace the result
82 # cute: ;-)
83 #$self->trace('matches after Regexp::Group->scan', $self->{regexp}->getMatches(), 1, undef, { tag => '', exit => 0 });
84 #$self->trace('results after Regexp::Group->scan', $self->{regexp}->getResults(), 1, undef, { tag => '', exit => 0 });
85
86 return $result;
87 }
88
89 sub index {
90 my $self = shift;
91 my $steps = shift;
92
93 # configure tracing
94 # respects additional trace-options passed to _trace-method
95 $self->{TRACE_OPTIONS} = 1;
96 # disables _any_ tracing - even if sub-conditions evaluate to true values
97 $self->{TRACE_DISABLED} = 0;
98
99 # trace the result
100 # cute: ;-)
101 #$self->trace('matches after Regexp::Group->scan', $self->{regexp}->getMatches(), 1, undef, { tag => '', exit => 0 });
102 #$self->trace('results after Regexp::Group->scan', $self->{regexp}->getResults(), 1, undef, { tag => '', exit => 0 });
103
104 my $result = $self->{regexp}->scan($steps);
105
106
107 return $result;
108 }
109
110 sub continue {
111 my $self = shift;
112 my $scankey = shift;
113 my $result = $self->{regexp}->continue($scankey);
114 }
115
116 sub getResults {
117 my $self = shift;
118 return $self->{regexp}->{result};
119 }
120
121 sub getResultCount {
122 my $self = shift;
123 #my $count = ($#{$self->{regexp}->{result}} == -1 ? 0 : $#{$self->{regexp}->{result}});
124 #$count++;
125
126
127 my $matches = $self->{regexp}->getMatches();
128 return if isEmpty($matches);
129
130 my $count = $#{$matches};
131 $count++;
132 return $count;
133 }
134
135 1;

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed