diff Lib/IMPL/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 ae8072f2f2a3
children
line wrap: on
line diff
--- a/Lib/IMPL/template.pm	Tue Apr 10 08:13:22 2012 +0400
+++ b/Lib/IMPL/template.pm	Tue Apr 10 20:08:29 2012 +0400
@@ -5,42 +5,42 @@
 use IMPL::Class::Template();
 
 sub import {
-	shift;
-	my %args = @_;
-	
-	my $class = caller;
-	
-	my @paramNames = grep m/\w+/, @{$args{parameters} || []}; 
-	my $declare = $args{declare};
-	my @isa = (@{$args{base} || []}, $class);
-	my %instances;
-	
-	no strict 'refs';
-	
-	push @{"${class}::ISA"}, 'IMPL::Class::Template';
-	
-	*{"${class}::$_"} = sub { die IMPL::InvalidOperationException("A template parameter isn't  available here") }
-		foreach @paramNames;
-	
-	*{"${class}::spec"} = sub {
-		my ($self,@params) = @_;
-		
-		my $specClass = $self->makeName(@params);
-		
-		return $specClass if $instances{$specClass};
-		
-		$instances{$specClass} = 1;
-		
-		for (my $i=0; $i < @paramNames; $i++) {
-			my $param = $params[$i];
-			*{"${specClass}::$paramNames[$i]"} = sub { $param };
-		}
-		
-		@{"${specClass}::ISA"} = @isa;
-		
-		&$declare($specClass) if $declare;
-		return $specClass;
-	};
+    shift;
+    my %args = @_;
+    
+    my $class = caller;
+    
+    my @paramNames = grep m/\w+/, @{$args{parameters} || []}; 
+    my $declare = $args{declare};
+    my @isa = (@{$args{base} || []}, $class);
+    my %instances;
+    
+    no strict 'refs';
+    
+    push @{"${class}::ISA"}, 'IMPL::Class::Template';
+    
+    *{"${class}::$_"} = sub { die IMPL::InvalidOperationException("A template parameter isn't  available here") }
+        foreach @paramNames;
+    
+    *{"${class}::spec"} = sub {
+        my ($self,@params) = @_;
+        
+        my $specClass = $self->makeName(@params);
+        
+        return $specClass if $instances{$specClass};
+        
+        $instances{$specClass} = 1;
+        
+        for (my $i=0; $i < @paramNames; $i++) {
+            my $param = $params[$i];
+            *{"${specClass}::$paramNames[$i]"} = sub { $param };
+        }
+        
+        @{"${specClass}::ISA"} = @isa;
+        
+        &$declare($specClass) if $declare;
+        return $specClass;
+    };
 }
 
 1;
@@ -62,19 +62,19 @@
 use IMPL::Class::Property;
 
 use IMPL::template (
-	parameters => [qw(TKey TValue))],
-	base => [qw(IMPL::Object IMPL::Object::Autofill)],
-	declare => sub {
-		my ($class) = @_;
-		public $class->CreateProperty(key => prop_get | owner_set, { type => $class->TKey } );
-		public $class->CreateProperty(value => prop_all, { type => $class->TValue} );
-		
-		$class->PassThroughArgs;
-	}
+    parameters => [qw(TKey TValue))],
+    base => [qw(IMPL::Object IMPL::Object::Autofill)],
+    declare => sub {
+        my ($class) = @_;
+        public $class->CreateProperty(key => prop_get | owner_set, { type => $class->TKey } );
+        public $class->CreateProperty(value => prop_all, { type => $class->TValue} );
+        
+        $class->PassThroughArgs;
+    }
 );
 
 BEGIN {
-	public property id => prop_get | owner_set, { type => 'integer'};
+    public property id => prop_get | owner_set, { type => 'integer'};
 }
 
 __PACKAGE__->PassThroughArgs;
@@ -85,32 +85,32 @@
 
 use IMPL::lang;
 use IMPL::template(
-	parameters => [qw(TKey TValue)],
-	base => [qw(IMPL::Object)],
-	declare => sub {
-		my ($class) = @_;
-		my $item_t = spec KeyValuePair($class->TKey,$class->TValue);
-		
-		public $class->CreateProperty(items => prop_get | prop_list, { type => $item_t } );
-		
-		$class->static_accessor( ItemType => $item_t );
-	}
+    parameters => [qw(TKey TValue)],
+    base => [qw(IMPL::Object)],
+    declare => sub {
+        my ($class) = @_;
+        my $item_t = spec KeyValuePair($class->TKey,$class->TValue);
+        
+        public $class->CreateProperty(items => prop_get | prop_list, { type => $item_t } );
+        
+        $class->static_accessor( ItemType => $item_t );
+    }
 )
 
 sub Add {
-	my ($this,$key,$value) = @_;
-	
-	die new IMPL::ArgumentException( key => "Invalid argument type" ) unless is $key, $this->TKey;
-	die new IMPL::ArgumentException( value => "Invalid argument type" ) unless is $value, $this->TValue;
-	
-	$this->items->AddLast( $this->ItemType->new( key => $key, value => $value ) );
+    my ($this,$key,$value) = @_;
+    
+    die new IMPL::ArgumentException( key => "Invalid argument type" ) unless is $key, $this->TKey;
+    die new IMPL::ArgumentException( value => "Invalid argument type" ) unless is $value, $this->TValue;
+    
+    $this->items->AddLast( $this->ItemType->new( key => $key, value => $value ) );
 }
 
 package main;
 
 use IMPL::require {
-	TFoo => 'Some::Package::Foo',
-	TBar => 'Some::Package::Bar'
+    TFoo => 'Some::Package::Foo',
+    TBar => 'Some::Package::Bar'
 };
 
 my $TCol = spec MyCollection(TFoo, TBar);