/[A3C]/lib/A3C/AAIEduHr.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

Diff of /lib/A3C/AAIEduHr.pm

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

revision 88 by dpavlin, Tue Apr 29 19:54:52 2008 UTC revision 93 by dpavlin, Wed Apr 30 17:23:21 2008 UTC
# Line 12  AAAIEduHr Line 12  AAAIEduHr
12  Pull varios stuff from XML at L<http://shema.aaiedu.hr/> and cache it as  Pull varios stuff from XML at L<http://shema.aaiedu.hr/> and cache it as
13  JSON on disk  JSON on disk
14    
15    =head1 METHODS
16    
17  =cut  =cut
18    
19  #use base 'Jifty::Object';  #use base 'Jifty::Object';
20    
21  use XML::Simple;  use XML::Rules;
22  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
23  use File::Slurp;  use File::Slurp;
24  use JSON::XS;  use JSON::XS;
25    
26  sub available {  =head2 vocabulary
27    
28      valid are A3C::AAIEduHr->vocabulary('hrEdu001'),
29    
30      valid are [ '', A3C::AAIEduHr->vocabulary('hrEdu001') ],
31    
32    =cut
33    
34    sub vocabulary {
35          my $self = shift;          my $self = shift;
36    
37          my $name = shift;          my $name = shift;
# Line 53  sub available { Line 63  sub available {
63          my $data;          my $data;
64    
65          if ( ! -e $data_path ) {          if ( ! -e $data_path ) {
66                  my $xs = XML::Simple->new;                  my $rules = XML::Rules->new(
67                  $data = $xs->XMLin($xml_path,                  stripspaces => 8,
68  #                       KeyAttr => { vocabularyentry => 'key' },                  rules => [
69                          ContentKey => '-content',                          _default => sub {
70                  ) || die "can't parse $xml_path: $!";                                  my ($tag_name, $tag_hash, $context, $parent_data) = @_;
71                                    warn "_default $tag_name ",dump( $tag_hash );
72                                    return;
73                            },
74                            vocabulary => 'no content',
75                            vocabularyentry => sub {
76                                    die "no key attribute?" unless defined( $_[1]->{key} );
77                                    my $v = {
78                                            display =>      $_[1]->{_content},
79                                            value   =>      $_[1]->{key},
80                                    };
81                                    # if same, just store key
82                                    $v = $_[1]->{key} if ( $v->{display} eq $v->{value} );
83                                    '@' . $_[0] => $v;
84                            },
85                    ]);
86                    $data = $rules->parsefile( $xml_path )
87                            || die "can't parse $xml_path: $!";
88    
89                    $data = $data->{vocabulary} || die "no vocabulary in data: ", dump( $data );
90    
91                  write_file( $data_path, encode_json( $data )) || die "can't save into $data_path: $!";                  write_file( $data_path, encode_json( $data )) || die "can't save into $data_path: $!";
92                  Jifty->log->info("saved dump into $data_path");                  Jifty->log->info("saved dump into $data_path");
93          } else {          } else {
94                  $data = decode_json( read_file( $data_path ) ) || die "can't read $data_path: $!";                  $data = decode_json( read_file( $data_path ) ) || die "can't read $data_path: $!";
95                    Jifty->log->info("loaded dump from $data_path");
96          }          }
97    
98          warn '## ',ref($data),' = ',dump($data);  #       warn '## ',ref($data),' = ',dump($data);
99    
100          die "data not for for $name" unless $data->{name} eq $name;          die "data not for for $name" unless $data->{name} eq $name;
101            warn "no vocabularyentry for $name from $data_path" unless defined( $data->{vocabularyentry} );
102    
103          return $data;          return @{ $data->{vocabularyentry} } if wantarray;
104            return $data->{vocabularyentry};
105  }  }
106    
107  warn "# AAUEduHr loaded\n";  warn "# AAUEduHr loaded\n";

Legend:
Removed from v.88  
changed lines
  Added in v.93

  ViewVC Help
Powered by ViewVC 1.1.26