r245@athlon: dpavlin | 2005-12-06 20:45:49 +0100
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 6 Dec 2005 19:41:17 +0000 (19:41 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 6 Dec 2005 19:41:17 +0000 (19:41 +0000)
 added support for YAML lookup format

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@234 07558da8-63fa-0310-ba24-9fe276d99e06

conf/lookup/jzav.yml [new file with mode: 0644]
lib/WebPAC/Lookup.pm

diff --git a/conf/lookup/jzav.yml b/conf/lookup/jzav.yml
new file mode 100644 (file)
index 0000000..d293ebb
--- /dev/null
@@ -0,0 +1,11 @@
+# Jadranski zavod
+lookup:
+  - key: 'tip:v900'
+    val: 'v200^a'
+    eval: '"v909" eq "1"'
+  - kay: 'naslov:v900'
+    val: 'v200^a : v200^e'
+    eval: '"v909" eq "2"'
+  - key: 'tip-naslovi:v946^1'
+    val: 'v900'
+    eval: '"v909" eq "2"'
index 529706b..798cec5 100644 (file)
@@ -5,6 +5,7 @@ use strict;
 
 use base qw/WebPAC::Common WebPAC::Normalize/;
 use File::Slurp;
+use YAML qw/LoadFile/;
 use Data::Dumper;
 
 =head1 NAME
@@ -13,11 +14,11 @@ WebPAC::Lookup - simple normalisation plugin to produce lookup
 
 =head1 VERSION
 
-Version 0.01
+Version 0.02
 
 =cut
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 =head1 SYNOPSIS
 
@@ -68,13 +69,18 @@ sub new {
 
        my $lookup_code = read_file($lookup_file) || $log->logconfess("can't read lookup file $lookup_file: $!");
 
-       {
+       if ($lookup_file =~ m#\.pm$#) {
                no strict 'vars';
                do $lookup_file or $log->logdie("Failed to read configuration parameters '$lookup_file' $! $@");
                $self->{'lookup_def'} = \@lookup || $log->logdie("lookup config $lookup_file doesn't produce \@lookup array");
+       } elsif ($lookup_file =~ m#\.(:?yml|yaml)$#) {
+               my $yaml = LoadFile( $lookup_file ) || $log->logdie("lookup YAML file $lookup_file error: $!");
+               $self->{'lookup_def'} = $yaml->{lookup} || $log->logdie("lookup YAML file $lookup_file should begin with 'lookup:'");
+       } else {
+               $log->logide("unsupported lookup file $lookup_file");
        }
 
-       $log->logconfess("lookup config file isn't ARRAY", sub { Dumper( $self->{'lookup_def'} ) }) if ($self->{'lookup_def'} !~ /ARRAY/o);
+       $log->logconfess("lookup config file isn't ARRAY but ", sub { Dumper( $self->{'lookup_def'} ) }) if ($self->{'lookup_def'} !~ /ARRAY/o);
 
        $self->{'is_lookup_regex'} ||= 'lookup{[^\{\}]+}';
         $self->{'save_lookup_regex'} ||= 'lookup{([^\{\}]+)}';