Mercurial > pub > Impl
diff Lib/IMPL/DOM/Document.pm @ 77:9d24db321029
Refactoring Web::TT
docs
author | wizard |
---|---|
date | Fri, 02 Apr 2010 20:18:46 +0400 |
parents | 16ada169ca75 |
children | 196bf443b5e1 |
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Document.pm Wed Mar 31 16:17:13 2010 +0400 +++ b/Lib/IMPL/DOM/Document.pm Fri Apr 02 20:18:46 2010 +0400 @@ -36,15 +36,58 @@ =pod +=head1 NAME + +C<IMPL::DOM::Document> DOM документ. + =head1 DESCRIPTION +Документ, позволяет создавать узлы определенных типов, что позволяет абстрагироваться +от механизмов реального создания объектов. Т.о. например C<IMPL::DOM::Navigator::Builder> +может формировать произвольные документы. + +=head1 SYNOPSIS + +=begin code + +package MyDocument; +use base qw(IMPL::DOM::Document); + +sub Create { + my $this = shift; + my ($name,$class,$hashProps) = @_; + + if ($class eq 'Info') { + return MyInfo->new($name,$hashProps->{date},$hashProps->{description}); + } else { + # leave as it is + return $this->SUPER::Create(@_); + } +} + +=end code + =head1 METHODS =over -=item C<<$doc->Create>> +=item C< Create($nodeName,$class,$hashProps) > + +Реализация по умолчанию. Создает узел определеннго типа с определенным именем и свойствами. + +=begin code -Создает узел определеннго типа с определенным именем и свойствами. +sub Create { + my ($this,$nodeName,$class,$hashProps) = @_; + + return $class->new ( + nodeName => $nodeName, + document => $this, + %$hashProps + ); +} + +=end code =back