/[cvs]/nfo/perl/libs/Data/Mungle/Transform/Map.pm
ViewVC logotype

Diff of /nfo/perl/libs/Data/Mungle/Transform/Map.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by joko, Sun Jan 19 03:27:33 2003 UTC revision 1.3 by joko, Fri Feb 21 01:49:24 2003 UTC
# Line 2  Line 2 
2  ##  $Id$  ##  $Id$
3  ## --------------------------------------------------------------------------------  ## --------------------------------------------------------------------------------
4  ##  $Log$  ##  $Log$
5    ##  Revision 1.3  2003/02/21 01:49:24  joko
6    ##  renamed core function
7    ##
8    ##  Revision 1.2  2003/02/14 12:54:30  joko
9    ##  + established first code here
10    ##
11  ##  Revision 1.1  2003/01/19 03:27:33  joko  ##  Revision 1.1  2003/01/19 03:27:33  joko
12  ##  + initial check-in  ##  + initial check-in
13  ##  ##
# Line 16  use warnings; Line 22  use warnings;
22  use base 'DesignPattern::Object';  use base 'DesignPattern::Object';
23    
24    
25    use Data::Dumper;
26    use XML::Simple;
27    use Data::Transform::Encode qw( utf8_to_latin );
28    use Data::Compare::Struct qw( getRelations getDifference );
29    use Data::Transform::Deep qw( deep_copy );
30    
31    
32    sub _init {
33      my $self = shift;
34    }
35    
36    sub _touch {
37      my $self = shift;
38      if (!$self->{__meta}->{touched}++) {
39        $self->_readSelectDb();
40      }
41    }
42    
43    sub _readSelectDb {
44      my $self = shift;
45      my $data = XMLin($self->{filename});
46      utf8_to_latin($data);
47      $self->{db} = $data;
48    }
49    
50    sub getKeys {
51      my $self = shift;
52      my $source_key = shift;
53      my $source_type = shift;
54      
55      $self->_touch();
56      
57      my $selection = $self->{db}->{source}->{$source_key}->{select} if $source_key;
58      if ($selection) {
59        my @selections = keys %$selection;
60        
61        # TODO: filter @selections by $source_type
62        
63        return @selections;
64      }
65    }
66    
67    sub applyKeyFilter {
68    
69      my $self = shift;
70      my $filterlist = shift;
71    
72      my $data = deep_copy($self->{payload});
73    
74      # calculate intersection
75        my @list = keys %{$data};
76        my $diff = getDifference(\@list, $filterlist);
77    
78      # populate new (filtered) result just using intersected elements
79        my $result;
80        foreach my $elem (@{$diff}) {
81          #$result->{$elem} = $memory->{sports}->{$elem};
82          delete $data->{$elem};
83        }
84    
85      return $data;
86    
87    }
88    
89  1;  1;
90    __END__

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.3

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