Changeset 315

Show
Ignore:
Timestamp:
10/18/06 00:32:31 (2 years ago)
Author:
miya
Message:

r348@kenny: miya | 2006-10-18 00:29:23 +0900


Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • library/perl/trunk/HTML-Widget-Kwalify/lib/HTML/Widget/Kwalify.pm

    r314 r315  
    55use Carp; 
    66 
    7 use version; 
    8 our $VERSION = qv('0.0.1'); 
     7use version;our $VERSION = qv('0.0.1'); 
    98 
    109use base 'HTML::Widget'; 
    11 use YAML
     10use YAML qw( LoadFile )
    1211use UNIVERSAL; 
    1312 
     
    1514 
    1615sub create_from { 
    17     my ( $class, $yaml ) = @_; 
     16    my ( $class, %args ) = @_; 
     17 
     18    my $yaml = LoadFile($args{file}); 
    1819 
    1920    my $self = $class->SUPER::new; 
     
    4849                            if ( $_ ne 'name' and $_ ne 'desc' ) { 
    4950                                my $clone = $element->clone; 
    50                                 push @{ $clone->stack }, $_
    51  
    52  
    53                                 if ( $_ eq 'type' and defined $arg->{enum} ) { 
    54                                     push @{ $clone->enum }, @{ $arg->{enum} }; 
     51                                push @{ $clone->stack }, $_ if $_ ne 'type'
     52 
     53                                if ( $_ eq 'type' ) { 
     54                                    push @{ $clone->enum },  @{ $arg->{enum} } if $arg->{enum}; 
     55                                    $clone->name($arg->{name}) if $arg->{name}; 
    5556                                } 
    56                                 # TODO: type は陀倖する 
     57 
    5758                                $hash->{$_} = $curry->($clone, [ $arg->{$_} ]); 
    5859                            } 
     
    7677 
    7778    for ( @elements ) { 
    78         use YAML; 
    79         print Dump($_); 
     79        my $name  = join '_', @{$_->stack}; 
     80        my $label = $_->name || $name; 
     81        if ( @{$_->enum} ){ 
     82            my $enum = $self->element('Select', $name)->label($label); 
     83            $enum->options( map { $_ => $_ } @{$_->enum} ); 
     84        } 
     85        else { 
     86            $self->element( 'Textfield', $name )->label($label); 
     87        } 
    8088    } 
     89 
     90    return $self; 
    8191} 
    8292 
     
    8696use Storable; 
    8797 
    88 __PACKAGE__->mk_accessors( qw/ stack type enum / ); 
     98__PACKAGE__->mk_accessors( qw/ stack type enum name / ); 
    8999 
    90100sub new { 
     
    94104        type  => '', 
    95105        enum  => [], 
     106        name  => '', 
    96107    }; 
    97108    bless $self, $class;