Show
Ignore:
Timestamp:
04/16/08 15:36:30 (19 months ago)
Author:
mpaschal
Message:

Land the new implementation of metadata based on narrow tables
BugzID: 68749

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-35/lib/MT/Component.pm

    r1572 r1927  
    508508 
    509509                # check for a yaml file reference... 
    510                 if ( !ref($v) && ( $v =~ m/^[-\w]+\.yaml$/ ) ) { 
    511                     my $f = File::Spec->catfile( $c->path, $v ); 
    512                     if ( -f $f ) { 
    513                         require YAML::Tiny; 
    514                         my $y = eval { YAML::Tiny->read($f) } 
    515                             or die "Error reading $f: " . $YAML::Tiny::errstr; 
    516  
    517                         # skip over non-hash elements 
    518                         shift @$y while @$y && ( ref( $y->[0] ) ne 'HASH' ); 
    519                         if (@$y) { 
    520                             $r->{$p} = $y->[0]; 
     510                if ( !ref($v) ) { 
     511                    if ( $v =~ m/^[-\w]+\.yaml$/ ) { 
     512                        my $f = File::Spec->catfile( $c->path, $v ); 
     513                        if ( -f $f ) { 
     514                            require YAML::Tiny; 
     515                            my $y = eval { YAML::Tiny->read($f) } 
     516                                or die "Error reading $f: " 
     517                                    . $YAML::Tiny::errstr; 
     518                            # skip over non-hash elements 
     519                            shift @$y 
     520                                while @$y && ( ref( $y->[0] ) ne 'HASH' ); 
     521                            $r->{$p} = $y->[0] if @$y; 
     522                        } 
     523                    } elsif ($v =~ m/^\$\w+::/) { 
     524                        my $code = MT->handler_to_coderef($v); 
     525                        if (ref $code eq 'CODE') { 
     526                            $r->{$p} = $code->($c); 
    521527                        } 
    522528                    }