comparison Lib/IMPL/Class/Template.pm @ 194:4d0e1962161c

Replaced tabs with spaces IMPL::Web::View - fixed document model, new features (control classes, document constructor parameters)
author cin
date Tue, 10 Apr 2012 20:08:29 +0400
parents d1676be8afcc
children
comparison
equal deleted inserted replaced
193:8e8401c0aea4 194:4d0e1962161c
2 use strict; 2 use strict;
3 use IMPL::lang; 3 use IMPL::lang;
4 use IMPL::_core::version; 4 use IMPL::_core::version;
5 5
6 sub makeName { 6 sub makeName {
7 my ($class,@params) = @_; 7 my ($class,@params) = @_;
8 8
9 $_ =~ s/^.*::(\w+)$/$1/ foreach @params; 9 $_ =~ s/^.*::(\w+)$/$1/ foreach @params;
10 return join('',$class,@params); 10 return join('',$class,@params);
11 } 11 }
12 12
13 1; 13 1;
14 14
15 __END__ 15 __END__
27 package KeyValuePair; 27 package KeyValuePair;
28 28
29 use IMPL::Class::Property; 29 use IMPL::Class::Property;
30 30
31 use IMPL::template ( 31 use IMPL::template (
32 parameters => [qw(TKey TValue))], 32 parameters => [qw(TKey TValue))],
33 base => [qw(IMPL::Object IMPL::Object::Autofill)], 33 base => [qw(IMPL::Object IMPL::Object::Autofill)],
34 declare => sub { 34 declare => sub {
35 my ($class) = @_; 35 my ($class) = @_;
36 public $class->CreateProperty(key => prop_get | owner_set, { type => $class->TKey } ); 36 public $class->CreateProperty(key => prop_get | owner_set, { type => $class->TKey } );
37 public $class->CreateProperty(value => prop_all, { type => $class->TValue} ); 37 public $class->CreateProperty(value => prop_all, { type => $class->TValue} );
38 38
39 $class->PassThroughArgs; 39 $class->PassThroughArgs;
40 } 40 }
41 ); 41 );
42 42
43 BEGIN { 43 BEGIN {
44 public property id => prop_get | owner_set, { type => 'integer'}; 44 public property id => prop_get | owner_set, { type => 'integer'};
45 } 45 }
46 46
47 __PACKAGE__->PassThroughArgs; 47 __PACKAGE__->PassThroughArgs;
48 48
49 package MyCollection; 49 package MyCollection;
50 50
51 use IMPL::Class::Property; 51 use IMPL::Class::Property;
52 52
53 use IMPL::lang; 53 use IMPL::lang;
54 use IMPL::template( 54 use IMPL::template(
55 parameters => [qw(TKey TValue)], 55 parameters => [qw(TKey TValue)],
56 base => [qw(IMPL::Object)], 56 base => [qw(IMPL::Object)],
57 declare => sub { 57 declare => sub {
58 my ($class) = @_; 58 my ($class) = @_;
59 my $item_t = spec KeyValuePair($class->TKey,$class->TValue); 59 my $item_t = spec KeyValuePair($class->TKey,$class->TValue);
60 60
61 public $class->CreateProperty(items => prop_get | prop_list, { type => $item_t } ) 61 public $class->CreateProperty(items => prop_get | prop_list, { type => $item_t } )
62 62
63 $class->static_accessor( ItemType => $item_t ); 63 $class->static_accessor( ItemType => $item_t );
64 } 64 }
65 ) 65 )
66 66
67 sub Add { 67 sub Add {
68 my ($this,$key,$value) = @_; 68 my ($this,$key,$value) = @_;
69 69
70 die new IMPL::ArgumentException( key => "Invalid argument type" ) unless is $key, $this->TKey; 70 die new IMPL::ArgumentException( key => "Invalid argument type" ) unless is $key, $this->TKey;
71 die new IMPL::ArgumentException( value => "Invalid argument type" ) unless is $value, $this->TValue; 71 die new IMPL::ArgumentException( value => "Invalid argument type" ) unless is $value, $this->TValue;
72 72
73 $this->items->AddLast( $this->ItemType->new( key => $key, value => $value ) ); 73 $this->items->AddLast( $this->ItemType->new( key => $key, value => $value ) );
74 } 74 }
75 75
76 =end code 76 =end code
77 77
78 =head1 DESCRIPTION 78 =head1 DESCRIPTION