diff Lib/IMPL/Web/DOM/FileNode.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
line wrap: on
line diff
--- a/Lib/IMPL/Web/DOM/FileNode.pm	Tue Apr 10 08:13:22 2012 +0400
+++ b/Lib/IMPL/Web/DOM/FileNode.pm	Tue Apr 10 20:08:29 2012 +0400
@@ -7,65 +7,65 @@
 use File::Temp qw(tempfile);
 
 BEGIN {
-	public property parameterName => {
-		get => sub {
-			my ($this) = @_;
-			$this->_parameterName() or
-			$this->_parameterName(
-				join '/', ( map {
-					(defined $_->nodeProperty('instanceId')) ?
-						$_->nodeName . '['.$_->nodeProperty('instanceId').']':
-						$_->nodeName
-				} $this->_selectParents, $this )
-			);
-		}
-	};
-	private property _parameterName => prop_all;
-	public property fileName => {
-		get => sub {
-			my ($this) = @_;
-			return $this->document->query->param($this->parameterName);
-		}
-	};
-	public property fileHandle => {
-		get => sub {
-			my ($this) = @_;
-			return $this->document->query->upload($this->parameterName);
-		}
-	};
+    public property parameterName => {
+        get => sub {
+            my ($this) = @_;
+            $this->_parameterName() or
+            $this->_parameterName(
+                join '/', ( map {
+                    (defined $_->nodeProperty('instanceId')) ?
+                        $_->nodeName . '['.$_->nodeProperty('instanceId').']':
+                        $_->nodeName
+                } $this->_selectParents, $this )
+            );
+        }
+    };
+    private property _parameterName => prop_all;
+    public property fileName => {
+        get => sub {
+            my ($this) = @_;
+            return $this->document->query->param($this->parameterName);
+        }
+    };
+    public property fileHandle => {
+        get => sub {
+            my ($this) = @_;
+            return $this->document->query->upload($this->parameterName);
+        }
+    };
 }
 
 sub invokeTempFile {
-	my ($this,$sub,$target) = @_;
-	
-	die new IMPL::InvalidArgumentException("A reference to a function should be specified") unless $sub && ref $sub eq 'CODE';
-	
-	$target ||= $this;
-	
-	my $query = $this->document->nodeProperty('query') or die new IMPL::InvalidOperationException("Failed to get a CGI query from the document");
-	my $hFile = $query->upload($this->parameterName) or die new IMPL::IOException("Failed to open the uploaded file",$query->cgi_error,$this->parameterName,$this->nodeProperty('instanceId'));
-			
-	my ($hTemp,$tempFileName) = tempfile();
-	binmode($hTemp);
-	
-	print $hTemp $_ while <$hFile>;
-	
-	$hTemp->flush();
-	seek $hTemp, 0,0;
-	{
-		local $_ = $tempFileName;
-		$sub->($this,$tempFileName,$hTemp);
-	}
+    my ($this,$sub,$target) = @_;
+    
+    die new IMPL::InvalidArgumentException("A reference to a function should be specified") unless $sub && ref $sub eq 'CODE';
+    
+    $target ||= $this;
+    
+    my $query = $this->document->nodeProperty('query') or die new IMPL::InvalidOperationException("Failed to get a CGI query from the document");
+    my $hFile = $query->upload($this->parameterName) or die new IMPL::IOException("Failed to open the uploaded file",$query->cgi_error,$this->parameterName,$this->nodeProperty('instanceId'));
+            
+    my ($hTemp,$tempFileName) = tempfile();
+    binmode($hTemp);
+    
+    print $hTemp $_ while <$hFile>;
+    
+    $hTemp->flush();
+    seek $hTemp, 0,0;
+    {
+        local $_ = $tempFileName;
+        $sub->($this,$tempFileName,$hTemp);
+    }
 }
 
 sub _selectParents {
-	my ($node) = @_;
-	
-	my @result;
-	
-	unshift @result, $node while $node = $node->parentNode;
-	
-	return @result;
+    my ($node) = @_;
+    
+    my @result;
+    
+    unshift @result, $node while $node = $node->parentNode;
+    
+    return @result;
 }
 
 1;
@@ -84,10 +84,10 @@
 
 <!-- input.schema.xml -->
 <schema>
-	<SimpleType type="file" nativeType="IMPL::Web::DOM::FileNode"/>
-	<ComplexNode name="user">
-		<Node type="file" name="avatar"/>
-	</ComplexNode>
+    <SimpleType type="file" nativeType="IMPL::Web::DOM::FileNode"/>
+    <ComplexNode name="user">
+        <Node type="file" name="avatar"/>
+    </ComplexNode>
 </schema>
 
 =end code xml
@@ -101,27 +101,27 @@
 use File::Copy qw(copy);
 
 my $t = new IMPL::DOM::Transform::PostToDOM(
-	undef,
-	IMPL::DOM::Schema->LoadSchema('input.schema.xml'),
-	'user'	
+    undef,
+    IMPL::DOM::Schema->LoadSchema('input.schema.xml'),
+    'user'    
 );
 
 my $doc = $t->Transform(CGI->new());
 
 if ($t->Errors->Count) {
-	# handle errors	
+    # handle errors    
 }
 
 $doc->selectSingleNode('avatar')->invokeTempFile(
-	sub {
-		my($node,$fname,$fhandle) = @_;
-		
-		# do smth with file
-		copy($_,'avatar.jpg');
-		
-		# same thing
-		# copy($fname,'avatar.jpg');
-	}
+    sub {
+        my($node,$fname,$fhandle) = @_;
+        
+        # do smth with file
+        copy($_,'avatar.jpg');
+        
+        # same thing
+        # copy($fname,'avatar.jpg');
+    }
 );
 
 =end code
@@ -179,7 +179,7 @@
 Указатель на временный файл
 
 =back
-	
+    
 Также пременная C<$_> содержит имя временного файла.
 
 =item C<$target>