view Lib/IMPL/Web/TT/Collection.pm @ 109:ddf0f037d460

IMPL::DOM::Node updated to support TT, (added childNodesRef and selectNodesRef for using from TT) Some fixes to the web document model. (beta version)
author wizard
date Mon, 17 May 2010 05:12:08 +0400
parents 0e72ad99eef7
children 4369d5458bb6
line wrap: on
line source

package IMPL::Web::TT::Collection;
use strict;

use base qw(IMPL::DOM::Node);

__PACKAGE__->PassThroughArgs;

our $AUTOLOAD;
sub AUTOLOAD {
	my $this = shift;
	my ($method) = ($AUTOLOAD =~ /(\w+)$/);
	
	return if $method eq 'DESTROY';
	
	if ($method =~ /^add(\w+)/) {
		my ($name,$args) = @_;
		return $this->appendChild($this->document->CreateControl($name,$1,$args));
	}
	
	if ( @_ >= 1 ) {
		# set
		# we can't assing a node, so this is a dynamic property
		return $this->nodeProperty($method,@_);
	} else {
		# get
		# try a dynamic property first 
		if ( my $val = $this->nodeProperty($method) ) {
			return $val;
		} else {
		# and return a first child node as last opportunity
			my @result = $this->selectNodes($method);
	
			return $result[0] if @result;
			return;
		}
	}
	die new IMPL::Exception("We shoud never get here, this is a bug!!!");
}

sub as_list {
	$_[0]->childNodes;
}

1;