Mercurial > pub > Impl
comparison 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 |
comparison
equal
deleted
inserted
replaced
108:c6fb6964de4c | 109:ddf0f037d460 |
---|---|
8 our $AUTOLOAD; | 8 our $AUTOLOAD; |
9 sub AUTOLOAD { | 9 sub AUTOLOAD { |
10 my $this = shift; | 10 my $this = shift; |
11 my ($method) = ($AUTOLOAD =~ /(\w+)$/); | 11 my ($method) = ($AUTOLOAD =~ /(\w+)$/); |
12 | 12 |
13 my @result = $this->selectNodes($method); | 13 return if $method eq 'DESTROY'; |
14 | 14 |
15 return $result[0] if @result; | 15 if ($method =~ /^add(\w+)/) { |
16 return; | 16 my ($name,$args) = @_; |
17 return $this->appendChild($this->document->CreateControl($name,$1,$args)); | |
18 } | |
19 | |
20 if ( @_ >= 1 ) { | |
21 # set | |
22 # we can't assing a node, so this is a dynamic property | |
23 return $this->nodeProperty($method,@_); | |
24 } else { | |
25 # get | |
26 # try a dynamic property first | |
27 if ( my $val = $this->nodeProperty($method) ) { | |
28 return $val; | |
29 } else { | |
30 # and return a first child node as last opportunity | |
31 my @result = $this->selectNodes($method); | |
32 | |
33 return $result[0] if @result; | |
34 return; | |
35 } | |
36 } | |
37 die new IMPL::Exception("We shoud never get here, this is a bug!!!"); | |
17 } | 38 } |
18 | 39 |
19 sub as_list { | 40 sub as_list { |
20 $_[0]->childNodes; | 41 $_[0]->childNodes; |
21 } | 42 } |