/[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 89 by dpavlin, Tue Apr 29 21:43:36 2008 UTC
# Line 16  JSON on disk Line 16  JSON on disk
16    
17  #use base 'Jifty::Object';  #use base 'Jifty::Object';
18    
19  use XML::Simple;  use XML::Rules;
20  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
21  use File::Slurp;  use File::Slurp;
22  use JSON::XS;  use JSON::XS;
23    
24  sub available {  sub vocabulary {
25          my $self = shift;          my $self = shift;
26    
27          my $name = shift;          my $name = shift;
# Line 53  sub available { Line 53  sub available {
53          my $data;          my $data;
54    
55          if ( ! -e $data_path ) {          if ( ! -e $data_path ) {
56                  my $xs = XML::Simple->new;                  my $rules = XML::Rules->new( rules => [
57                  $data = $xs->XMLin($xml_path,                          _default => sub {
58  #                       KeyAttr => { vocabularyentry => 'key' },                                  my ($tag_name, $tag_hash, $context, $parent_data) = @_;
59                          ContentKey => '-content',                                  warn "_default $tag_name ",dump( $tag_hash );
60                  ) || die "can't parse $xml_path: $!";                                  return;
61                            },
62                            vocabulary => 'no content',
63                            vocabularyentry => sub {
64                                    die "no key attribute?" unless defined( $_[1]->{key} );
65                                     '@' . $_[0] => $_[1]->{key};
66                            },
67                    ]);
68                    $data = $rules->parsefile( $xml_path )
69                            || die "can't parse $xml_path: $!";
70    
71                    $data = $data->{vocabulary} || die "no vocabulary in data: ", dump( $data );
72    
73                  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: $!";
74                  Jifty->log->info("saved dump into $data_path");                  Jifty->log->info("saved dump into $data_path");
75          } else {          } else {
76                  $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: $!";
77                    Jifty->log->info("loaded dump from $data_path");
78          }          }
79    
80          warn '## ',ref($data),' = ',dump($data);          warn '## ',ref($data),' = ',dump($data);
81    
82          die "data not for for $name" unless $data->{name} eq $name;          die "data not for for $name" unless $data->{name} eq $name;
83            warn "no vocabularyentry for $name from $data_path" unless defined( $data->{vocabularyentry} );
84    
85          return $data;          return $data->{vocabularyentry};
86  }  }
87    
88  warn "# AAUEduHr loaded\n";  warn "# AAUEduHr loaded\n";

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

  ViewVC Help
Powered by ViewVC 1.1.26