/[webpac2]/trunk/lib/WebPAC/Validate.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/WebPAC/Validate.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 514 - (hide annotations)
Tue May 16 13:38:09 2006 UTC (17 years, 11 months ago) by dpavlin
File size: 1873 byte(s)
 r679@llin:  dpavlin | 2006-05-16 15:41:59 +0200
 begin work on validation framework

1 dpavlin 514 package WebPAC::Validate;
2    
3     use warnings;
4     use strict;
5    
6     use blib;
7    
8     use base 'WebPAC::Common';
9     use File::Slurp;
10     use Data::Dumper;
11    
12     =head1 NAME
13    
14     WebPAC::Validate - provide simple validation for records
15    
16     =head1 VERSION
17    
18     Version 0.01
19    
20     =cut
21    
22     our $VERSION = '0.01';
23    
24     =head1 SYNOPSIS
25    
26     This module provide a simple way to validate your file against a simple
27     configuration file in following format:
28    
29     # field 10 doesn't have any subfields
30     10
31     # same with 101
32     101
33     # field 200 have valid subfields a-g
34     200 a b c d e f g
35     # field 205 can have only subfield a
36     205 a
37     # while 210 can have a c or d
38     210 a c d
39    
40     =head1 FUNCTIONS
41    
42     =head2 new
43    
44     Create new validation object
45    
46     my $validate = new WebPAC::Validate(
47     path => '/path/to/input/validate_file',
48     );
49    
50     =cut
51    
52     sub new {
53     my $class = shift;
54     my $self = {@_};
55     bless($self, $class);
56    
57     my $log = $self->_get_logger();
58    
59     foreach my $p (qw/path/) {
60     $log->logconfess("need $p") unless ($self->{$p});
61     }
62    
63     my $v_file = read_file( $self->{path} ) ||
64     $log->logdie("can't open validate path $self->{path}: $!");
65    
66     my $v;
67     my $curr_line = 1;
68    
69     foreach my $l (split(/[\n\r]+/, $v_file)) {
70     $curr_line++;
71     # skip comments
72     next if ($l =~ m/^#/);
73    
74     $l =~ s/^\s+//;
75     $l =~ s/\s+$//;
76    
77     my @d = split(/\s+/, $l);
78    
79     my $fld = shift @d || $log->logdie("need field name in line $curr_line: $l");
80    
81     if (@d) {
82     $v->{$fld}->{ref} = 'ARRAY';
83     $v->{$fld}->{sf} = \@d;
84     } else {
85     $v->{$fld}->{ref} = '';
86     }
87    
88     }
89    
90     $log->debug("current validation rules: ", Dumper($v));
91    
92     $self->{rules} = $v;
93    
94     $self ? return $self : return undef;
95     }
96    
97     =head1 AUTHOR
98    
99     Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
100    
101     =head1 COPYRIGHT & LICENSE
102    
103     Copyright 2006 Dobrica Pavlinusic, All Rights Reserved.
104    
105     This program is free software; you can redistribute it and/or modify it
106     under the same terms as Perl itself.
107    
108     =cut
109    
110     1; # End of WebPAC::Validate

  ViewVC Help
Powered by ViewVC 1.1.26