# HG changeset patch # User sourcer # Date 1325277600 -10800 # Node ID d1676be8afcc80c8811c00c74c32eb7745a344f5 # Parent b3d91ff7aea9ce062125f81628ba1ae611e14ed9 Перекодировка в utf-8 diff -r b3d91ff7aea9 -r d1676be8afcc .settings/org.eclipse.core.resources.prefs --- a/.settings/org.eclipse.core.resources.prefs Tue Dec 20 23:00:30 2011 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -#Tue May 25 20:59:30 MSD 2010 -eclipse.preferences.version=1 -encoding/=cp1251 diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL.pm --- a/Lib/IMPL.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL.pm Fri Dec 30 23:40:00 2011 +0300 @@ -12,4 +12,4 @@ } } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/MemberInfo.pm --- a/Lib/IMPL/Class/MemberInfo.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/MemberInfo.pm Fri Dec 30 23:40:00 2011 +0300 @@ -47,14 +47,14 @@ =head1 NAME -C - . +C - информация о члене класса. =head1 DESCRIPTION - C, C - . +Данный класс является базовым для таких классов как C, C и +предназначен для хренения метаданных. - C . +Данный класс наследуется от C и не содержит в себе метаданных о своих членах. =head1 MEMBERS @@ -62,38 +62,38 @@ =item C<[get,set] Name> - . +Имя члена. =item C<[get,set] Access> Default public. - ( public | private | protected ) +Атрибут доступа ( public | private | protected ) =item C<[get,set] Virtual> Default false. - . +Флаг виртуальности. =item C<[get,set] Class> - +Класс владелец =item C<[get,set] Frozen> - +Флаг невозможности внесения изменений =item C<[get,set] Attributes> - +Дополнительные атрибуты =item C - C C<1>, . +Устанавливает C в C<1>, добавляет в метаданные класса. - , - (, ). +При реализации собственного субкласса, данный метод может быть переопределен для +реализации дополнительной обработки (например, создание методов доступа для свойств). =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/Meta.pm --- a/Lib/IMPL/Class/Meta.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/Meta.pm Fri Dec 30 23:40:00 2011 +0300 @@ -10,8 +10,8 @@ my ($class,$meta_data) = @_; $class = ref $class if ref $class; - # , - # IMPL::Object::Accessor, + # тут нельзя использовать стандартное исключение, поскольку для него используется + # класс IMPL::Object::Accessor, который наследуется от текущего класса die "The meta_data parameter should be an object" if not ref $meta_data; push @{$class_meta{$class}{ref $meta_data}},$meta_data; @@ -99,7 +99,7 @@ =head1 NAME -C - . +C - информация хранимая на уровне класса. =head1 SYNOPSIS @@ -145,10 +145,10 @@ =head1 DESCRIPTION - () , , - (), . +Позвоялет расширять информацию о типах (класса) при помощи метаданных, метаданными являются любые объекты, +притом выборка метаданных приоизводится по их типу (классу), что позволяет выбрать все однотипные метаданные. - +Существует возможность выборки метаданных с учетом унаследованных от базовых классов =head1 MEMBERS @@ -156,25 +156,25 @@ =item C - C<$meta_data> . +Добавляет метаданные C<$meta_data> к классу. =item C - C<$meta_class> , - . +Выбирает метаданные типа C<$meta_class> и его наследников, с возможностью фильтрации и получения +метаданных базовых классов. =over =item C<$meta_class> - +Тип метаданных =item C<$predicate> -, - . - , C - , C - - . C<$_> . +Подпрограмма, которая будет вызываться для каждых найденных метаданных и на основе результата +ее выполнения метаданные будут включены в результат или нет. Получеат в качестве параметра +объект с метаданными, возвращает C - включить метаданные в результа, C - пропустить +метаданные как не подходящие. Также переменная C<$_> ссылается на текущий объект с метаданными. =begin code @@ -197,20 +197,20 @@ =item C<$deep> - . +Осуществлять поиск по базовым классам. =back =item C - , C , - C<$name>. +В отличии от метаданных, C не накапливает информацию, +а хранит только один экземпляр для одного ключа C<$name>. - , , - , -, - . -, - . +Если новое значение не задано, то осуществляется выборка сохраненного, +если текущий класс не имеет сохраненного значения, то оно ищется в базовых +классах, затем копия найденного значения сохраняется в текущем классе и +возвращается наружу. Это позволяет базовым классам задавать значение по-умолчанию, +которые могут быть изменены или заменены субклассами. =begin code @@ -240,11 +240,11 @@ =item C - C<$name> C<$value>. +Создает статическое свойство с именем C<$name> и начальным значением C<$value>. - C, -, C , , - , . +Использование данного свойство аналогично использованию C, за исключением +того, что C гарантирует, что наследник обладает собственной копией данных, +изменение которых не коснется ни базового класса, ни соседей. =begin code diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/MethodInfo.pm --- a/Lib/IMPL/Class/MethodInfo.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/MethodInfo.pm Fri Dec 30 23:40:00 2011 +0300 @@ -10,4 +10,4 @@ Parameters )); -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/Property/Accessor.pm --- a/Lib/IMPL/Class/Property/Accessor.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/Property/Accessor.pm Fri Dec 30 23:40:00 2011 +0300 @@ -32,4 +32,4 @@ return( wantarray ? @{ $val } : $val );'; } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/Property/Base.pm --- a/Lib/IMPL/Class/Property/Base.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/Property/Base.pm Fri Dec 30 23:40:00 2011 +0300 @@ -182,14 +182,14 @@ =head1 DESCRIPTION - . +Базовый класс для реализации свойств. - . - , . - . +По существу свойства состоят из двух методов для установки и получения значений. Также +существует несколько вариантов доступа к свойству, и метод верификации значения. Еще +свойства могут быть виртуальными. - - . +Для создания реализатора свойств достаточно унаследовать от этого класса и описать +методы для генерации кода получения и установки значения. =head1 MEMBERS @@ -197,8 +197,8 @@ =item C - , C<$propertyInfo>, . C. +Создает свойство у класса, на основе C<$propertyInfo>, описывающего свойство. C. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/Property/Direct.pm --- a/Lib/IMPL/Class/Property/Direct.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/Property/Direct.pm Fri Dec 30 23:40:00 2011 +0300 @@ -14,9 +14,11 @@ $_[0]->SUPER::factoryParams, qw($field); } +my $default = __PACKAGE__->new({ExportField => 1}); + sub _direct($) { my ($prop_info) = @_; - $prop_info->Implementor( IMPL::Class::Property::Direct->new({ExportField => 1}) ); + $prop_info->Implementor( $default ); return $prop_info; } diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/PropertyInfo.pm --- a/Lib/IMPL/Class/PropertyInfo.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/PropertyInfo.pm Fri Dec 30 23:40:00 2011 +0300 @@ -44,3 +44,9 @@ } 1; + +__END__ + +=pod + +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Class/Template.pm --- a/Lib/IMPL/Class/Template.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Class/Template.pm Fri Dec 30 23:40:00 2011 +0300 @@ -18,7 +18,7 @@ =head1 NAME -C . +C базовый класс для шаблонов. =head1 SYNPOSIS @@ -77,26 +77,26 @@ =head1 DESCRIPTION - . - , : +Шаблоны используются для динамической генерации классов. Процесс создания класса +по шаблону называется специализацией, при этом создается новый класс: =over =item 1 - , +Обявляется новый пакет с именем, вычисленным из имени и параметров шаблона =item 2 - C<@ISA> , +Формируется массив C<@ISA> для созаднного класса, в который добавляется имя шаблона =item 3 - , +Формируются методы с именами параметров шаблона, возвращающие реальные значения параметров =item 4 - +Вызывается метод для конструирования специализиции =back @@ -106,8 +106,8 @@ =item C -, . . +Метод, создающий специализацию шаблона. Может быть вызван как оператор. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Code/Generator.pm --- a/Lib/IMPL/Code/Generator.pm Tue Dec 20 23:00:30 2011 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -package IMPL::Code::Generator; -use strict; - -1; \ No newline at end of file diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Code/MethodCache.pm --- a/Lib/IMPL/Code/MethodCache.pm Tue Dec 20 23:00:30 2011 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -package IMPL::Code::MethodCache; -use strict; -use IMPL qw(Debug); - -my %cachedMethods; - -sub dbgBuildCachedMethod { - my ($class,$method,$prefix,$mappers)= @_; - - no strict 'refs'; - - $prefix ||= 'call'; - - my $proxyMethod = "$prefix$method"; - - die new IMPL::Exception("A proxy method already exists") if *{"${class}::$proxyMethod"}{CODE}; - - my @methodCache = cacheMethod($class,$method,$mappers); - - *{"${class}::$proxyMethod"} = sub { - $_->(@_) foreach @methodCache; - } -} - -sub cacheMethod { - my ($class,$method,$mappers) = @_; -} - -1; \ No newline at end of file diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Code/MethodFactory.pm --- a/Lib/IMPL/Code/MethodFactory.pm Tue Dec 20 23:00:30 2011 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -package IMPL::Code::MethodFactory; -use strict; - -1; \ No newline at end of file diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Config.pm --- a/Lib/IMPL/Config.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Config.pm Fri Dec 30 23:40:00 2011 +0300 @@ -127,7 +127,7 @@ =head1 NAME -C - . +C - базовый класс для настраиваемого приложения. =head1 SYNOPSIS @@ -168,7 +168,7 @@ =end code - C +Ниже приведен пример файла C содержащего настройки приложения =begin code xml @@ -193,27 +193,27 @@ C - . , - , , - - . +Базовый класс для приложений. Использует подход, что приложение +является объектом, состояние которого предтавляет собой конфигурацию, +а методы - логику. - ( ) - XML . C. - C C -C . +Данный класс реализует функционал десериализации (и сериализации) экземпляра +приложения из XML документа. Для этого используется механизм C. +При этом используются опции C C и +C для записи документа в легко читаемом виде. - - , - , . , - , . +Поскольку в результате восстановления приложения восстанавливаются все элементы +из файла конфигурации, то это может потребовать значительных ресурсов для +создания частей, которые могут никогда не понадобиться. Например, не требуется инициализация +источника данных для передачи пользователю статических данных, сохраненных на диске. - C. +Для решения этой проблемы используются специальные объекты C. - , C, - , -C<< IMPL::Config::Activator->activate() >> . - , - . +Если у приложения описано свойство, в котором хранится C, то +при первом обращении к такому свойству, будет создан объект вызовом метода +C<< IMPL::Config::Activator->activate() >> и возвращен как значение этого свойства. +Таким образом реализуется прозрачная отложенная активация объектов, что позволяет +экономить ресурсы. =head1 MEMBERS @@ -221,24 +221,24 @@ =item C<[static] LoadXMLFile($fileName) > - XML C<$fileName> +Создает из XML файла C<$fileName> экземпляр приложения =item C - C<$fileName> +Сохраняет приложение в файл C<$fileName> =item C<[get] xml > - XML . +Сохраняет конфигурацию приложения в XML строку. =item C<[static,operator] spawn($file)> - C, . +Синоним для C, предполагается использование как оператора. =item C - . - C. +Метод для получения значений свойств приложения. Данный метод позволяет избежать +использование активации объектов через C. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Config/Activator.pm --- a/Lib/IMPL/Config/Activator.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Config/Activator.pm Fri Dec 30 23:40:00 2011 +0300 @@ -52,4 +52,4 @@ } } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Document.pm --- a/Lib/IMPL/DOM/Document.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Document.pm Fri Dec 30 23:40:00 2011 +0300 @@ -53,13 +53,13 @@ =head1 NAME -C DOM . +C DOM документ. =head1 DESCRIPTION -, , - . .. C - . +Документ, позволяет создавать узлы определенных типов, что позволяет абстрагироваться +от механизмов реального создания объектов. Т.о. например C +может формировать произвольные документы. =head1 SYNOPSIS @@ -88,7 +88,7 @@ =item C< Create($nodeName,$class,$hashProps) > - . . +Реализация по умолчанию. Создает узел определеннго типа с определенным именем и свойствами. =begin code @@ -106,14 +106,14 @@ =item C< save($writer) > - XML C<< $writer->end() >>. +Сохраняет документ в виде XML узла и вызывает C<< $writer->end() >>. =over =item C<$writer> - C - +Объект с интерфейсом C который будет использован для записи +содержимого документа =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Navigator.pm --- a/Lib/IMPL/DOM/Navigator.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Navigator.pm Fri Dec 30 23:40:00 2011 +0300 @@ -234,18 +234,18 @@ =head1 DESCRIPTION - DOM . +Объект для хождения по дереву DOM объектов. - (). +Результатом навигации является множество узлов (альтернатив). - , , - . +Состоянием навигатора является текущий набор узлов, позиция в данном наборе, +а также запрос по которому были получены данные результаты. - , - . - , - , - , . +Если при навигации указан путь сосящий из нескольких фильтров, то он разбивается +этапы простой навигации по кадой из частей пути. На каждом элементарном этапе +навигации образуется ряд альтернатив, и при каждом следующем этапе навигации +альтернативы предыдущих этапов могут перебираться, до получения положительного +результата навигации, в противном случае навигация считается невозможной. =head1 METHODS @@ -253,25 +253,25 @@ =item C<<$obj->new($nodeStart)>> - . +Создает объект навигатора с указанной начальной позицией. =item C<<$obj->Navigate([$query,...])>> - C<$query>. - . -, . +Перейти в новый узел используя запрос C<$query>. На данный момент запросом может +быть только имя узла и будет взят только первый узел. Если по запросу ничего не +найдено, переход не будет осуществлен. - , C. +Возвращает либо новый узел в который перешли, либо C. =item C<<$obj->Back()>> - , . +Возвращается в предыдущий узел, если таковой есть. - , C. +Возвращает либо узел в который перешли, либо C. =item C<<$obj->advanceNavigator()>> - , . +Переходит в следующую альтернативу, соответствующую текущему запросу. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Navigator/Builder.pm --- a/Lib/IMPL/DOM/Navigator/Builder.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Navigator/Builder.pm Fri Dec 30 23:40:00 2011 +0300 @@ -136,7 +136,7 @@ =head1 NAME -C< IMPL::DOM::Navigator::Builder > - , . +C< IMPL::DOM::Navigator::Builder > - Навигатор, строящий документ по указанной схеме. =head1 SYNOPSIS @@ -153,8 +153,8 @@ =head1 DESCRIPTION - DOM . - C. +Построитель DOM документов по указанной схеме. Обычно используется в связке +с объектами для чтения такими как C. =head1 METHODS @@ -162,25 +162,25 @@ =item C< CTOR($classDocument,$schema) > - , ( , -L) . - . +Создает новый объект, принимает на вход класс документа (или фабрику, например +L) и схему. В процессе процедуры построения документа +будет создан объект документа. =item C< NavigateCreate($nodeName,\%props) > - . - , . +Создает новый узел с указанным именем и переходит в него. В случае если в схеме +подходящий узел не найден, то вызывается исключение. - , - . - C<< IMPL::DOM::Document->Create >> +При этом по имени узла ищется его схема, после чего определяется класс для +создания экземпляра и созданный узел доавляется в документ. При создании +нового узла используется метод документа C<< IMPL::DOM::Document->Create >> - C<%props>, - C, . +Свойства узла передаются при создании через параметр C<%props>, но имя создаваемого +узла НЕ может быть переопределено свойством C, оно будет проигнорировано. =item C< Document > -, . +Свойство, которое содержит документ по окончании процедуры построения. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Navigator/SchemaNavigator.pm --- a/Lib/IMPL/DOM/Navigator/SchemaNavigator.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Navigator/SchemaNavigator.pm Fri Dec 30 23:40:00 2011 +0300 @@ -117,8 +117,8 @@ =head1 DESCRIPTION - , - . +Помимо стандартных методов навигации позволяет переходить по элементам документа, +который данной схемой описывается. =head1 METHODS @@ -126,18 +126,18 @@ =item C - . C. +Переходит на схему узла с указанным именем. Тоесть использует свойство C. =item C - C. - - . +Возвращается на позицию до последней операции C. Данный метод нужен +посокольку операция навигации по элементам описываемым схемой может приводить к +нескольким операциям навигации по самой схеме. =item C - , , C. - C. +Получает схему узла из которого было выполнено перенаправление, например, C. +В остальных случаях совпадает со свойством C. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Node.pm --- a/Lib/IMPL/DOM/Node.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Node.pm Fri Dec 30 23:40:00 2011 +0300 @@ -441,11 +441,11 @@ =head1 NAME -C DOM +C Элемент DOM модели =head1 DESCRIPTION - DOM . DOM . +Базовый узел DOM модели. От него можно наследовать другие элементы DOM модели. =head1 MEMBERS @@ -455,45 +455,45 @@ =item C<[get] nodeName> - . . +Имя узла. Задается при создании. =item C<[get] document> - . . +Документ к которому принадлежит узел. Задается при поздании узла. =item C<[get] isComplex> - ( ). +Определяет является ли узел сложным (тоесть есть ли дети). -C - , C - . +C - есть, C - нет. =item C<[get,set] nodeValue> - , , - . +Значение узла, обычно простой скаляр, но ничто не мешает туда +устанавливать любое значение. =item C<[get,list] childNodes> - , C. +Список детей, является списокм C. =item C<[get] parentNode> - , . +Ссылка на родительский элемент, если таковой имеется. =item C<[get] schema> - C, . C. +Ссылка на узел из C, представляющий схему данных текущего узла. Может быть C. =item C<[get] schema> - C, , . C. +Ссылка на узел из C, представляющий элемент схемы, объявляющий данный узел. Может быть C. - C , , - C, C +Отличается от свойства C тем, что узел в случае ссылки на тип узла, данной свойство будет содержать +описание ссылки C, а свойство C например будет ссылаться на C. =back =head2 METHODS -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Property.pm --- a/Lib/IMPL/DOM/Property.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Property.pm Fri Dec 30 23:40:00 2011 +0300 @@ -32,6 +32,6 @@ =head1 DESCRIPTION - , . +Позволяет объявлять свойства, которые будут видны в списке свойств. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema.pm --- a/Lib/IMPL/DOM/Schema.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema.pm Fri Dec 30 23:40:00 2011 +0300 @@ -237,14 +237,14 @@ =head1 NAME -C - . +C - Схема документа. =head1 DESCRIPTION C -DOM - , , - . +DOM схема - это документ, состоящий из определенных узлов, описывающая структуру +других документов. =head1 METHODS @@ -252,17 +252,17 @@ =item C<< $obj->Process() >> - . +Обновляет таблицу типов из содержимого. =item C<< $obj->ResolveType($typeName) >> - c C<$typeName>. +Возвращает схему типа c именем C<$typeName>. =back =head1 META SCHEMA - , , +Схема для описания схемы, эта схема используется для постороения других схем, выглядит приблизительно так =begin code xml diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/AnyNode.pm --- a/Lib/IMPL/DOM/Schema/AnyNode.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/AnyNode.pm Fri Dec 30 23:40:00 2011 +0300 @@ -22,14 +22,14 @@ =head1 DESCRIPTION - , - . +Узел с произвольным именем, для этого узла предусмотрена специальная проверка +в контейнерах. - C - C. +В контейнерах типа C этот узел можно использовать только один раз +причем его использование исключает использование узла C. - - . +В контейнерах типа С данный узел может применяться несколько раз +для решения таких задачь как последовательности разноименных узлов с одним типом. diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/ComplexNode.pm --- a/Lib/IMPL/DOM/Schema/ComplexNode.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/ComplexNode.pm Fri Dec 30 23:40:00 2011 +0300 @@ -38,11 +38,11 @@ =head1 DESCRIPTION - . , -. +Описывает сложный узел. Требует либо соответствие структуры, либо соответствия +типу. - .. - , . C +Дочерними элементами могут быть правила контроля свойств и т.п. +Первым дочерним элементом может быть только содержимое узла, см. C =head2 PROPERTIES @@ -50,9 +50,9 @@ =item C - , C -C, . - . +Содержимое узла, может быть либо C либо +C, в зависимости от того важен порядок или нет. +Это свойство ссылается на первый дочерний элемент узла. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/InflateFactory.pm --- a/Lib/IMPL/DOM/Schema/InflateFactory.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/InflateFactory.pm Fri Dec 30 23:40:00 2011 +0300 @@ -14,4 +14,4 @@ } } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/Node.pm --- a/Lib/IMPL/DOM/Schema/Node.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/Node.pm Fri Dec 30 23:40:00 2011 +0300 @@ -83,7 +83,7 @@ =head1 DESCRIPTION - . . +Базовый класс для элементов схемы. Также позволяет объявлять узлы определенного типа. =head1 MEMBERS @@ -95,35 +95,35 @@ C. - . +Минимальное количество повторений узла. =item C<[get,set] maxOccur> C. - +Максимальное количество повторений узла =item C<[get,set] type> C - . +Имя типа из схемы. =item C<[get,set] name> - . +Имя узла. =item C<[get,set] display> - . +Имя узла для отображения. =item C<[get,set] display_no> - ( ). +Имя узла для отображения (родительный падеж). =item C<[get,set] display_blame> - ( ). +Имя узла для отображения (винительный падеж). =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/NodeList.pm --- a/Lib/IMPL/DOM/Schema/NodeList.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/NodeList.pm Fri Dec 30 23:40:00 2011 +0300 @@ -103,7 +103,7 @@ =head1 DESCRIPTION - . . - C C. +Содержимое для сложного узла. Порядок важен. Дочерними элементами могут быть +только C и C. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/NodeSet.pm --- a/Lib/IMPL/DOM/Schema/NodeSet.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/NodeSet.pm Fri Dec 30 23:40:00 2011 +0300 @@ -85,11 +85,11 @@ =head1 DESCRIPTION - . . - C C. +Содержимое для сложного узла. Порядок не важен. Дочерними элементами могут быть +только C и C. - , - , - . +При проверке данного правила, проверяются имеющиеся элементы на соответсие схемы +и количества встречаемости, после чего проверяются количественные ограничения +для несуществующих элементов. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/SimpleNode.pm --- a/Lib/IMPL/DOM/Schema/SimpleNode.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/SimpleNode.pm Fri Dec 30 23:40:00 2011 +0300 @@ -58,16 +58,16 @@ =head1 NAME -C - . +C - узел с текстом. =head1 DESCRIPTION - . - . +Узел имеющий простое значение. Данный узел может содержать ограничения +на простое значение. - , DOM - C. +Производит валидацию содержимого, при постоении DOM модели не имеет специального +типа и будет создан в виде C. - DOM . +Также определяет как будет воссоздано значение узла в DOM модели. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/SimpleType.pm --- a/Lib/IMPL/DOM/Schema/SimpleType.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/SimpleType.pm Fri Dec 30 23:40:00 2011 +0300 @@ -57,12 +57,12 @@ =head1 NAME -C - . +C - тип для простых узлов. =head1 DESCRIPTION - , - DOM . +Используется для описания простых узлов, которые можно отобразить в узлы +определенного типа при построении DOM документа. =head1 MEMBERS @@ -70,12 +70,12 @@ =item C - DOM . +Имя класса который будет представлять узел в DOM модели. =item C - , - C. +Формат сообщения которое будет выдано, если узел в дом модели не будет +соответствовать свойству C. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/SwitchNode.pm --- a/Lib/IMPL/DOM/Schema/SwitchNode.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/SwitchNode.pm Fri Dec 30 23:40:00 2011 +0300 @@ -49,7 +49,7 @@ =head1 DESCRIPTION - , , . - C. +Представляет узел, который может быть одним из узлов, которые лежат внутри него. +Это более строгий вариант C. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/ValidationError.pm --- a/Lib/IMPL/DOM/Schema/ValidationError.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/ValidationError.pm Fri Dec 30 23:40:00 2011 +0300 @@ -48,16 +48,16 @@ =head1 NAME -C - . +C - Описывает ошибку в документе. =head1 DESCRIPTION - -C, - . +При проверке документа на ошибки формирования возвращается массив с объектами +C, каждая из которых описывает одну ошибку +в документе. - , - . +С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа +и сообщения о причине возникновения ошибки. =head1 MEMBERS @@ -65,40 +65,40 @@ =item C<[get] Node> - . , -, . +Узел в документе который привел к ошибке. Как правило это либо простые узлы, либо +узлы, которые не могут присутствоать в данном месте по схеме. - C. +Данное свойство может быть C. =item C<[get] Parent> - . , C - , , -, . +Родительский узел в котором произошла ошибка. Используется в случаях, когда C +не указан, например, если по схеме должен существовать дочерний узел с определенным +именем, а в реальном документе его нет. - . +Также это свойство может использоваться при формировании сообщения. =item C<[get] Schema> - C C . +Схема для C или узла который должен присутсвовать если C не задан. =item C<[get] Source> -, . - , , - . +Схема, проверка которой привела к возникновению ошибки. Поскольку схемы могут +использовать ссылки, то данное свойство нужно для получения схемы узла, а не +схемы его типа. - C -, , C, C - C. +Тоесть проверка схемы узла C приводит к проверке схемы +типа, например, C, а свойство C будет +указывать именно на C. =item C<[get] Message> - . +Возвращает форматированное сообщение об ошибке. =item C - , C +Преобразует ошибку к строке, возвращает значение свойства C =back @@ -113,7 +113,7 @@ my $node = $doc->selectSingleNode('user','name'); -# +# Получаем все ошибки относящиеся к данному узлу my @nodeErrors = grep { ($_->Node || $_->Parent) == $node } @errors; =end code diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/Validator.pm --- a/Lib/IMPL/DOM/Schema/Validator.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/Validator.pm Fri Dec 30 23:40:00 2011 +0300 @@ -20,11 +20,11 @@ =head1 NAME -C - . +C - Базовый класс для ограничений на простые значения. =head1 DESCRIPTION - , - C. +От основных элементов схемы его отличает то, что в конечном документе он не соответсвует +никаким узлам и поэтому у него отсутствуют свойства C. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/Validator/Compare.pm --- a/Lib/IMPL/DOM/Schema/Validator/Compare.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/Validator/Compare.pm Fri Dec 30 23:40:00 2011 +0300 @@ -213,18 +213,18 @@ =head1 NAME -C - , - . +C - ограничение на содержимое текущего узла, +сравнивая его со значением другого узла. =head1 SYNOPSIS - +Пример типа описания поля с проверочным полем =begin code xml - + @@ -233,6 +233,6 @@ =head1 DESCRIPTION - . +Позволяет сравнивать значение текущего узла со значением другого узла. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Schema/Validator/RegExp.pm --- a/Lib/IMPL/DOM/Schema/Validator/RegExp.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Schema/Validator/RegExp.pm Fri Dec 30 23:40:00 2011 +0300 @@ -41,4 +41,4 @@ return (); } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Transform.pm --- a/Lib/IMPL/DOM/Transform.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Transform.pm Fri Dec 30 23:40:00 2011 +0300 @@ -28,6 +28,6 @@ =head1 DESCRIPTION - DOM , . +Преобразование для DOM документа, использует имя узла для применения подходящего преобразования. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/Transform/PostToDOM.pm --- a/Lib/IMPL/DOM/Transform/PostToDOM.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/Transform/PostToDOM.pm Fri Dec 30 23:40:00 2011 +0300 @@ -108,7 +108,7 @@ =head1 NAME -C - C DOM . +C - Преобразование объекта C в DOM документ. =head1 SINOPSYS @@ -139,21 +139,21 @@ =head1 DESCRIPTION - CGI DOM . , - C. +Используется для преобразования CGI запроса в DOM документ. Для этого используются параметры запроса, имена которых +начинаются со значение из свойства C. - +Имена параметров интерпретируются следующим образом =over -=item 1 , . +=item 1 Имя параметра составляется из имени узла, имен всех его родителей и указанием номера экземпляра. -=item 2 , _ +=item 2 Имена узлов могут содержать только буквы, цифры и символ _ -=item 3 , - . +=item 3 В случае когда узел может повторяться несколько раз, в квадратных скобках указывается +послеовательный номер экземпляра. -=item 4 '/' +=item 4 Имена параметров объединяются через символ '/' =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/DOM/XMLReader.pm --- a/Lib/IMPL/DOM/XMLReader.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/DOM/XMLReader.pm Fri Dec 30 23:40:00 2011 +0300 @@ -109,10 +109,10 @@ =head1 DESCRIPTION - , . - . +Простой класс, использующий навигатор для постороения документа. В зависимости от +используемого навигатора может быть получен различный результат. - C C +Навигатор должен поодерживать методы C и C =head1 METHODS @@ -120,15 +120,15 @@ =item C $builder)> - , +Создает новый экземпляр парсера, с указанным навигатором для построения документа =item C<$obj->Parse($in)> - . xml , HANDLE. +Строит документ. На вход получает либо xml строку, либо HANDLE. =item C<$obj->ParseFile($fileName)> - C<$fileName>. +Строит документ из файла с именем C<$fileName>. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM.pm --- a/Lib/IMPL/ORM.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM.pm Fri Dec 30 23:40:00 2011 +0300 @@ -8,7 +8,7 @@ use IMPL::Exception; -our $Depth = 1; # + 1 +our $Depth = 1; # загружать объект + 1 уровень детей our $UseProxy = 1; BEGIN { @@ -79,4 +79,4 @@ =head1 DESCRIPTION -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Adapter/Generic.pm --- a/Lib/IMPL/ORM/Adapter/Generic.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Adapter/Generic.pm Fri Dec 30 23:40:00 2011 +0300 @@ -8,12 +8,12 @@ =head1 NAME -C . +C Адаптер для работы с данными объекта произвольного класса. =head1 DESCRIPTION - , , - . +Позволяет получать данные, изменения данных из объекта, а также записать данные в +объект и создать новый объект. =head1 MEMBERS @@ -21,57 +21,57 @@ =item C - C<$object> +Создает новый адаптер к объекту C<$object> =item C<[get]object> - , C . +Объект для которого создан данный адаптер, C если объект удален. =item C<[get]isChanged> - . +Были ли обновления в объекте. =item C<[get]isDeleted> - . +Является ли объект удаленным. =item C<[get]isNew> - . +Является ли объект новым для БД. =item C<[get]initialState> - , C . +Начальное состояние объекта, C если объект был создан. =item C<[get]currentState> - . C . +Текущие состояние. C если объект удален. =item C<[get,list]history> - . C +История изменений. C =item C - , . +Сохраняет изменения из объекта в текущее состояние, при этом изменения записываются в историю. -B . +B информацию об изменениях в объекте. =item C - . +Возвращает объект в определенную версию. =item C - , C. +Удаляет объект, точнее помечает его для удаления до вызова C. =item C - , . +Сбрасывает историю изменений, и устанавливает соответсвующие свойства. =back -=head1 +=head1 Информация об изменениях объекта =begin code @@ -90,7 +90,7 @@ =end code -=head1 +=head1 Информация об отображении объекта =begin code @@ -100,4 +100,4 @@ =end code -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Object.pm --- a/Lib/IMPL/ORM/Object.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Object.pm Fri Dec 30 23:40:00 2011 +0300 @@ -56,7 +56,7 @@ my $schema = $surrogate || IMPL::ORM::Schema::Entity->new($self->entityName); - # , + # для текущего класса, проходим по всем свойствам foreach my $ormProp ( $self->get_meta( 'IMPL::Class::PropertyInfo', @@ -67,29 +67,29 @@ ) ){ if ($ormProp->Mutators & prop_list) { - # 1 + # отношение 1 ко многим my $type = $dataSchema->resolveType($ormProp->Type) or die new IMPL::InvalidOperationException("Failed to resolve a reference type due building schema for a class", $ormProp->Class, $ormProp->Name); $schema->appendChild( new IMPL::ORM::Schema::Relation::HasMany($ormProp->Name, $type->entityName) ); } elsif (my $type = $dataSchema->isValueType($ormProp->Type)) { - # + # поле $schema->appendChild( new IMPL::ORM::Schema::Field($ormProp->Name,$ormProp->Type) ); } elsif (my $entity = $dataSchema->resolveType($ormProp->Type)) { - # + # отношение ссылка $schema->appendChild( new IMPL::ORM::Schema::Relation::HasOne($ormProp->Name,$entity->entityName)); } else { - # . . + # хз что. Скорее всего не удалось квалифицировать тип свойства не как ссылочный и как поле. die new IMPL::Exception('Uexpected error due building schema for a class', $ormProp->Class, $ormProp->Name,$ormProp->Type); } } - # + # Формируем отношения наследования { - # + # локализуем прагму no strict 'refs'; my $class = ref $self || $self; - # + # по всем классам foreach my $super (grep $_->isa(__PACKAGE__), @{"${class}::ISA"}) { my $type = $dataSchema->resolveType($super) or die new IMPL::InvalidOperationException("Failed to resolve a super class due building schema for a class", $class, $super); $schema->appendChild(new IMPL::ORM::Schema::Relation::Subclass($type)); @@ -107,10 +107,10 @@ =head1 DESCRIPTION - , - . +Базовый объект для реляционного отображения, +содержит в себе реляционные записи представляющие данный объект. - . - . +Каждый класс отображается в определенную сущность. Сущности хранят +состояние объектов в том виде в котором удобно записывать в реляционную базу. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Schema.pm --- a/Lib/IMPL/ORM/Schema.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Schema.pm Fri Dec 30 23:40:00 2011 +0300 @@ -123,14 +123,14 @@ =head1 NAME -C . +C Схема отображения классов в реляционную структуру. =head1 DESCRIPTION - , DOM , - . +Схема данных, представляет собой DOM документ, элементами которой +являются сущности. - - . +Каждый узел - это описание сущности. =begin code xml diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Schema/GenericClass.pm --- a/Lib/IMPL/ORM/Schema/GenericClass.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Schema/GenericClass.pm Fri Dec 30 23:40:00 2011 +0300 @@ -8,10 +8,10 @@ =head1 NAME -C . +C Построение схемы из произвольного класса. =head1 DESCRIPTION - . +Читает метаданные класса и строит на их основании элементы схемы данных. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Store/DBIC.pm --- a/Lib/IMPL/ORM/Store/DBIC.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Store/DBIC.pm Fri Dec 30 23:40:00 2011 +0300 @@ -8,6 +8,6 @@ =head1 NAME -C - C. +C - Хранилище данных на основе C. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Store/SQL.pm --- a/Lib/IMPL/ORM/Store/SQL.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Store/SQL.pm Fri Dec 30 23:40:00 2011 +0300 @@ -25,6 +25,6 @@ =pod =head1 DESCRIPTION - SQL . +Драйвер для SQL баз данных. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/ORM/Unit.pm --- a/Lib/IMPL/ORM/Unit.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/ORM/Unit.pm Fri Dec 30 23:40:00 2011 +0300 @@ -8,13 +8,13 @@ =head1 NAME -C . +C Единица действий. =head1 DESCRIPTION C<[Infrastructure]> - . C -. +Позволяет записывать последовательность изменений. Используется C для реализации логических +транзакций. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object.pm --- a/Lib/IMPL/Object.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object.pm Fri Dec 30 23:40:00 2011 +0300 @@ -7,6 +7,8 @@ bless {}, ref $_[0] || $_[0]; } +__PACKAGE__->static_accessor( propertyInfoClass => 'IMPL::Class::DirectPropertyInfo' ); + sub new { my $class = shift; my $self = bless {}, ref($class) || $class; @@ -86,7 +88,7 @@ =head1 Description - , . +Базовый класс для объектов, основанных на хеше. =head1 Members @@ -94,18 +96,18 @@ =item operator C(@args) - @args. +Создает экземпляр объекта и вызывает конструктор с параметрами @args. =item operator C() - . +Создает неинициализированный экземпляр объекта. =back =head1 Cavearts - , C , - C C, C, -C C. :) +Нужно заметить, что директива C работает не совсем прозрачно, если в нашем примере +класс C наследуется от C, а затем C, то наследование от +C не произойдет поскольку он уже имеется в C. Вот не задача:) =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Abstract.pm --- a/Lib/IMPL/Object/Abstract.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Abstract.pm Fri Dec 30 23:40:00 2011 +0300 @@ -139,6 +139,6 @@ =head1 DESCRIPTION - , - . +Реализация механизма вызова конструкторов и других вспомогательных вещей, кроме операторов +создания экземпляров. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Accessor.pm --- a/Lib/IMPL/Object/Accessor.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Accessor.pm Fri Dec 30 23:40:00 2011 +0300 @@ -13,6 +13,8 @@ $_[0]->Class::Accessor::new; } +__PACKAGE__->static_accessor( propertyInfoClass => 'IMPL::Class::AccessorPropertyInfo' ); + sub _PropertyImplementor { 'IMPL::Class::Property::Accessor' } diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Autofill.pm --- a/Lib/IMPL/Object/Autofill.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Autofill.pm Fri Dec 30 23:40:00 2011 +0300 @@ -33,7 +33,7 @@ $class = ref $class if ref $class; - # + # для автозаполнения нужен свой метод верхнего уровня my $method; { no strict 'refs'; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Clonable.pm --- a/Lib/IMPL/Object/Clonable.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Clonable.pm Fri Dec 30 23:40:00 2011 +0300 @@ -7,4 +7,4 @@ clone($_[0]); } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/EventSource.pm --- a/Lib/IMPL/Object/EventSource.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/EventSource.pm Fri Dec 30 23:40:00 2011 +0300 @@ -172,16 +172,16 @@ } =head1 DESCRIPTION - . -. - . - , , . +Позволяет объявлять и инициировать события. События делятся на статические и +локальные. Статические события объявляются для класса и при возникновении +данного события вызываются всегда все подписчики. Статические события могут быть +вызваны как для класса, так и для объекта, что приведет к одинаковым результатам. - ( ) -. , - ( ). - , - . +Локальные события состоят из статической (как статические события) и локальной +части. Если подписываться на события класса, то обработчики будут вызываться при +любых вариантах инициации данного события (как у статических событий). При +подписке на события объекта, обработчик будет вызван только при возникновении +событий у данного объекта. =head1 METHODS =level 4 diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Factory.pm --- a/Lib/IMPL/Object/Factory.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Factory.pm Fri Dec 30 23:40:00 2011 +0300 @@ -95,7 +95,7 @@ =end code - XML. +Или сериализованная форма в XML. =begin code xml @@ -112,17 +112,17 @@ C<[Serializable]> -, . +Класс, реализующий фабрику классов. - , C< new > -. , , -C< new >, . , Perl, - , , . +Фабрика классов это любой объект, который имеет метод C< new > вызов которого приводит к созданию нового +объекта. Например каждый класс сам явялется фабрикой, поскольку, если у него вызвать метод +C< new >, то будет создан объект. Полученные объекты, в силу механизмов языка Perl, также +являются фабриками, притом такимиже, что и класс. - C< new > : - . C< new > - . - - . +Данный класс меняет поведение метода C< new > в зависимости от контекста вызова: статического +метода или метода объекта. При вызове метода C< new > у класса происходит создание объекта +фабрики с определенными параметрами. Далее объект-фабрика может быть использована для создания +объектов уже на основе параметров фабрики. =head1 MEMBERS @@ -130,49 +130,49 @@ =item C< CTOR($factory,$parameters,$method) > - . +Создает новый экземпляр фабрики. =over =item C<$factory> - , . +Либо имя класса, либо другая фабрика. =item C<$parameters> - , , .. +Ссылка на параметры для создания объектов, может быть ссылкой на хеш, массив и т.д. - , - C. +Если является ссылкой на хеш, то при создании объектов данной фабрикой этот хеш +будет развернут в список и передан параметрами методу C. - , - C. +Если является ссылкой на массив, то при создании объектов данной фабрикой этот массив +будет передан в списк и передан параметрами методу C. - , -C . +Если является любым другим объектом или скаляром, то будет передан параметром методу +C как есть. =item C<$method> - ( ), C<$factory> - . +Имя метода (или ссылка на процедуру), который будет вызван у C<$factory> при создании +текущей фабрикой нового объекта. =back =item C< [get] factory > -, . - . +Свойство, содержащее фабрику для создание новых объектов текущей фабрикой. Чаще всего оно содержит +имя класса. =item C< [get] parameters > -, , - C< new > C< factory >, - . +Свойство, содержит ссылку на параметры для создания объектов, при создании объекта эти параметры будут +развернуты в список и переданы оператору C< new > фабрике из свойства C< factory >, за ними будут +следовать параметры непосредственно текущей фабрики. =item C - , C - C C<@params>. , . +Создает новый объект, используя свйство C как фабрику и передавая туда параметры +из свойства C и списка C<@params>. Ниже приведен упрощенный пример, как это происходит. =begin code @@ -188,4 +188,4 @@ =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Fields.pm --- a/Lib/IMPL/Object/Fields.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Fields.pm Fri Dec 30 23:40:00 2011 +0300 @@ -23,4 +23,4 @@ return fields::new($class); } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Meta.pm --- a/Lib/IMPL/Object/Meta.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Meta.pm Fri Dec 30 23:40:00 2011 +0300 @@ -33,7 +33,7 @@ =head1 DESCRIPTION - - . C< meta > . +Базовый класс для мета-свойств класса. Определяет оператор C< meta > для создания метаданных в вызвавшем классе. =head1 MEMBERS @@ -41,8 +41,8 @@ =item C< Container > - . +Свойство заполняется до вызова конструктора и содержит имя модуля к которому применяется атрибут. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/PublicSerializable.pm --- a/Lib/IMPL/Object/PublicSerializable.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/PublicSerializable.pm Fri Dec 30 23:40:00 2011 +0300 @@ -34,4 +34,4 @@ ); } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Object/Singleton.pm --- a/Lib/IMPL/Object/Singleton.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Object/Singleton.pm Fri Dec 30 23:40:00 2011 +0300 @@ -37,7 +37,7 @@ =head1 DESCRIPTION - Singleton +Реализует шаблон Singleton =head1 MEMBERS @@ -47,7 +47,7 @@ =item C - , , C<@params>. +Создает или возвращает экземпляр класса, если экземляр не существует, то он создается с параметрами C<@params>. =over diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Resources/Strings.pm --- a/Lib/IMPL/Resources/Strings.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Resources/Strings.pm Fri Dec 30 23:40:00 2011 +0300 @@ -84,7 +84,7 @@ =head1 NAME -C - +C - Строковые ресурсы =head1 SYNOPSIS @@ -108,22 +108,22 @@ =head1 DESCRIPTION - , - . +Импортирует в целевой модуль функции, которые возвращают локализованные +параметризованные сообщения. - : +При импорте ищутся модули по следующему алгоритму: - C<@Locations> -C<$Base/$Locale/$ModName>, C<$Base>, C<$Locale> - - C, C<$ModName> - 'C<::>' 'C'. +В каталогах из массива C<@Locations> ищется файл с относительным путем +C<$Base/$Locale/$ModName>, где C<$Base>, C<$Locale> - глобальные переменные +модуля C, а переменная C<$ModName> получена +путем замены 'C<::>' в имени целевого модуля на 'C'. - , , - , C, - C<$ShortModeName> - 'C<::>' . +Если файл не был найден, то производится поиск в каталоге, где +расположен сам модуль, файла с относительным путем C, +где C<$ShortModeName> - последняя часть после 'C<::>' из имени целевого модуля. - , , - . +Если файл не найден, то используются строки, указанные при объявлении +сообщений в целевом модуле. =head1 FORMAT diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema.pm --- a/Lib/IMPL/SQL/Schema.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema.pm Fri Dec 30 23:40:00 2011 +0300 @@ -134,8 +134,8 @@ =head1 DESCRIPTION - , SQL, - . . +Схема реляциоонной базы данных, орентированная на язык SQL, содержит описания таблиц +которые являются частью базы. Позволяет создавать и удалать таблицы. =head1 MEMBERS @@ -143,44 +143,44 @@ =item C - C. +Конструктор заполняет объект свойствами из C. =item C<[get]name> - . +Имя схемы. =item C<[get]version> - . +Версия схемы. =item C - . C<$table> , - . , - . +Доавляет таблицу в схему. C<$table> может быть либо таблице, либо хешем с набором +свойств для создания новой таблицы. Если таблица с таким именем уже существует в сехеме, +то вызывается исключение. =item C - C<$name> C. +Возвращает таблицу с именем C<$name> или C. =item C - . - . +Возвращает список таблиц. В скалярном контексте - ссылку на массив с таблицами. =item C - C<$table> - , C<$table>, C<$table> , - , , C. +Если параметр C<$table> - таблица, то возвращается C<$table>, если C<$table> строка, то +ищется таблица с таким именем, если таблица не найдена, возвращается C. =item C - . C<$oldName> , C<$newName> -, . +Происходит переименование таблицы. Если C<$oldName> не существует, либо если C<$newName> +существует, вызывается исключение. =item C - C<$table> . , - . C<$table> , . +Удаляется таблица C<$table> с удалением всех связей и ограничений. Если такой таблицы нет, +то вызывается исключение. C<$table> может быть либо именем таблицы, либо объектом. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/Traits.pm --- a/Lib/IMPL/SQL/Schema/Traits.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/Traits.pm Fri Dec 30 23:40:00 2011 +0300 @@ -396,39 +396,39 @@ =head1 NAME -C - SQL . +C - Операции над объектками SQL схемы. =head1 DESCRIPTION - . - - , . C. +Изменения схемы могу быть представлены в виде последовательности примитивных операций. +Правила выполнения последовательности примитывных действий могут варьироваться +в зависимости от процессора, который их выполняет. Например C. -, . +Данные, которые содержаться в примитивных операциях не могут существовать независимо от схемы. =head1 OPEARATIONS =head2 General - . +Методы обще для всех примитивных операций. =over =item C - . +Пытается приминить операцию к указанной схеме. - : +Возвращаемое значение: =over =item C - . +Операция успешно применена к схеме. =item C - . +Операция не может быть применена к схеме. =back @@ -440,7 +440,7 @@ =item C - +Создает таблицу =over @@ -448,13 +448,13 @@ =item C<[get]table> -C - +C - описание создаваемой таблицы =back =item C - +Удалает таблицу по имени =over @@ -462,7 +462,7 @@ =item C<[get]tableName> - +Имя удаляемой таблицы =back @@ -474,17 +474,17 @@ =item C<[get]tableName> - , +Имя таблицы, которую требуется переименовать =item C<[get]tableNewName> - +Новое имя таблицы =back =item C - +Добавляет столбец в таблицу =over @@ -492,17 +492,17 @@ =item C<[get]tableName> - +Имя таблицы в которую нужно добавить столбец =item C<[get]column> -C - +C - описание столбца который нужно добавить =back =item C - +Удаляет столбец из таблицы =over @@ -510,53 +510,53 @@ =item C<[get]tableName> - +Имя таблицы в которой нужно удалить столбец =item C<[get]columnName> - +Имя столбца для удаления =back =item C - +Меняет описание столбца =over =item C -C<%args> - , . +C<%args> - хеш, ключами которого являются оставшиеся свойства создаваемого объекта. =item C<[get]tableName> - . +Имя таблицы в которой находится столбец. =item C<[get]columnName> - +Имя столбца для изменения =item C<[get]columnType> - . , +Новый тип столбца. Не задан, если тип не меняется =item C<[get]defaultValue> - . , +Значение по умолчанию. Не задано, если не меняется =item C<[get]isNullable> - C. , . +Может ли столбец содержать C. Не задано, если не меняется. =item C<[get]options> - , , +Хеш опций, не задан, если опции не меняются =back =item C - +Базовый класс для операций по добавлению ограничений =over @@ -564,17 +564,17 @@ =item C<[get]tableName> - . +Имя таблицы в которую добавляется ограничение. =item C<[get]constraint> -C - , . +C - описние ограничения, которое нужно добавить. =back =item C - +Удаляет ограничение на таблицу =over @@ -582,14 +582,14 @@ =item C<[get]tableName> - . +Имя таблицы в которой требуется удалить ограничение. =item C<[get]constraintName> - . +Имя ограничения для удаления. =back =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/Traits/Diff.pm --- a/Lib/IMPL/SQL/Schema/Traits/Diff.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/Traits/Diff.pm Fri Dec 30 23:40:00 2011 +0300 @@ -162,4 +162,4 @@ ) } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/Traits/Formatter.pm --- a/Lib/IMPL/SQL/Schema/Traits/Formatter.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/Traits/Formatter.pm Fri Dec 30 23:40:00 2011 +0300 @@ -6,4 +6,4 @@ } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/Traits/Processor.pm --- a/Lib/IMPL/SQL/Schema/Traits/Processor.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/Traits/Processor.pm Fri Dec 30 23:40:00 2011 +0300 @@ -4,4 +4,4 @@ use IMPL::Class::Property; -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/TraitsOld.pm --- a/Lib/IMPL/SQL/Schema/TraitsOld.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/TraitsOld.pm Fri Dec 30 23:40:00 2011 +0300 @@ -78,8 +78,8 @@ my $i = 0; my %dstColumns = map { $_->Name, $i++} @{$dstTable->Columns} ; - # - # + # сначала удаляем столбцы + # потом добавляем недостающие и изменяем столбцы в нужном порядке my @columnsToUpdate; @@ -175,7 +175,7 @@ sub CreateTable { my ($this,$tbl) = @_; - # , + # создаем таблицу, кроме внешних ключей $this->{$Handler}->CreateTable($tbl,skip_foreign_keys => 1); $this->{$TableInfo}->{$tbl->Name}->{'State'} = STATE_CREATED; @@ -237,8 +237,8 @@ sub AddConstraint { my ($this,$constraint) = @_; - # , - # ( ) + # перед добавлением ограничения нужно убедиться в том, что созданы все необходимые столбцы и сопутствующие + # ограничения (например первичные ключи) my $pending; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/SQL/Schema/Type.pm --- a/Lib/IMPL/SQL/Schema/Type.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/SQL/Schema/Type.pm Fri Dec 30 23:40:00 2011 +0300 @@ -43,7 +43,7 @@ =head1 NAME -C SQL +C Описывает SQL типы данных =head1 SYNOPSIS @@ -57,8 +57,8 @@ =end - SQL . - . +Данный класс используется для стандатрного описания SQL типов данных. В зависимости +от движка БД эти объекты могут быть представлены различными строковыми представлениями. =head1 MEMBERS @@ -66,33 +66,33 @@ =item C -, . +Конструктор, заполняет объект значениями которые были переданы в конструкторе. =item C<[get]name> - . . +Имя типа. Обязательно. =item C<[get]maxLength> - , , ( , - ). +Максимальная длина, используется только для типов, имеющих длину (либо переменную, +либо постоянную). =item C<[get]scale> -, . C. +Точность, количество знаков после запятой. Используется вместе с C. =item C<[get]unsigned> - , . +Используется с числовыми данными, обозначает беззнаковые типы. =item C<[get]zerofill> - C. +Нестандартный атрибут дополняющий числа лидирующими нулями до C. =item C<[get]tag> - . +Хеш с дополнительными опциями. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security.pm --- a/Lib/IMPL/Security.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security.pm Fri Dec 30 23:40:00 2011 +0300 @@ -50,7 +50,7 @@ =head1 NAME -C - . +C - Модуль для работы с функциями авторизации и аутентификации. =head1 SINOPSYS @@ -107,15 +107,15 @@ =head1 DESCRIPTION - , - . +Модуль для инфраструктуры безопасности, реализует основные функции для авторизации +и аутентификации пользователей. - , , -, , - . +Модуль аутентификации, реализиция которого зависит от приложения, аутентифицирует +пользователя, при этом создается контекст безопасности, который содержит +идентификатор пользователя и список активных ролей. - , - , . +При проверке прав доступа происходит последовательная проверка правил доступа, +если все правила выполнены, то доступ разрешается. =head1 MEMBERS @@ -123,74 +123,74 @@ =item C -. , . +Метод. Проверка доступа к объекту с определенными правами, в определенном контексте безопасности. =over =item C<$object> - . +Объект доступа. =item C<$desiredAccess> - . +Требуемые права доступа. =item C<$context> - , , C<< IMPL::Security::Context->contextCurrent >> +Контекст безопасности, если не указан, то используется текущий C<< IMPL::Security::Context->contextCurrent >> =item C -C - +C - результат проверки =back =item C - , . +Создает контекст безопасности, инициализируя его передданными параметрами. =over =item C<$principal> - +Объект пользователя =item C<$role> - +Роль или ссылка на массив ролей =item C<$auth> - +Объект аутентификации =back =item C -. . - . . +Метод. Делегирует текущему пользователю полномочия другого пользователя. При этом выполняется проверка +правомерности такой операции. В случае неудачи вызывается исключение. =over =item C<$principal> - C. +Либо имя пользователя либо объект C. =item C<$role> - , , . +Либо имя либо ссылка на роль, или ссылка на массив либо имен, либо ролей. =item C - . +Новый контекст безопасности. =back =item C - . -, . - . +Возвращает список правил которые выполняются при проверках доступа. Пререопределите этот +метод, чтобы возвращать собственный список правил. Список правил является ссылкой на массив +элементами которого являются функции. =begin code @@ -210,9 +210,9 @@ =item C<[static,get] authority> -, . , , - . +Метод, позволяющий получить текущий источник системы безопасности. Источник безопасности, это модуль, +который получает входные данные и использует их для работы системы безопасности. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security/Auth.pm --- a/Lib/IMPL/Security/Auth.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security/Auth.pm Fri Dec 30 23:40:00 2011 +0300 @@ -46,22 +46,22 @@ =head1 NAME -C . +C Базовыйы класс для пакетов аутентификации. =head1 DESCRIPTION C<[Abstract]> - , - . +Аутентификация носит итеративный характер, для чего создается объект аутентификации который +сохраняет состояние между итерациями. - , -. +Результатом аутентификации является сессия, состояние этой сессии также хранит объект +аутентификации. - C<$challenge>. - (C), -(C), (C). , - . +В процессе авторизации клиент и сервер обмениеваются данными безопасности C<$challenge>. +И результатом каждой итерации является либо упех (C), либо запрос на продолжение +(C), либо неудача (C). Количество итераций может быть разным, +зависит от пакета аутентификации. =head1 EXPORT @@ -69,21 +69,21 @@ =item C<:Const> - +Константы результата аутентификации =over =item C - +Успешная аутентификация =item C - +Требуются дополнительные шаги =item C - . +Аутентификация неуспешна. =back @@ -95,40 +95,40 @@ =item C - . -C<$SecData> - . +Создает пакет для авторизации на основе данных безопасности для пользователя. +C<$SecData> - Зависит от пакета аутентификации. =item C<[get] isTrusted> - , . +Флаг того, что аутентификация закончена успешно. =item C - , - , ($status,$challenge). +Производит аутентификацию пользователя и инициализацию сессии, +возвращает результат аутентификации, в виде массива ($status,$challenge). - C<$challenge> - . +После успешной аутентификации пользователь получает данные C<$challenge> +для аутентификации сессии. =item C - , , - ($status,$challenge). +Производит аутентификацию сессии, возвращает результат аутентификации, +в виде массива ($status,$challenge). =item C<[static] CreateSecData(%args)> - , . . +Создает данные безопасности, на основе параметров. Параметры зависят от пакета аутентификации. =item C<[static] Create(%args)> - , . . - C. +Создает объект аутентификации, на основе параметров. Параметры зависят от пакета аутентификации. +Внутри вызывает метод C. =item C<[static] SecDataArgs()> - C. - , - . +Возвращает хеш с описанием параметров для функции C. Ключами являются +имена параметров, значениями - типы. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security/Auth/Simple.pm --- a/Lib/IMPL/Security/Auth/Simple.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security/Auth/Simple.pm Fri Dec 30 23:40:00 2011 +0300 @@ -79,11 +79,11 @@ =head1 NAME -C . +C Модуль простой авторизации. =head1 DESCRIPTION - MD5 . +Использует алгоритм MD5 для хранения образа пароля. =head1 MEMBERS @@ -91,56 +91,56 @@ =item C - , . +Создает объект аутентификации, передавая ему данные для инициализации. =item C<[get]secData> - , - . +Возвращает данные безопасности, которые можно использовать для восстановления +состояния объекта. =item C<[get]isTrusted> - ( - ). +Является ли объект доверенным для аутентификации сессии (тоесть хранит данные +для аутентификации сессии). =item C - . . C<$challenge> - . +Аутентифицирует пользователя. Используется один этап. C<$challenge> +открытый пароль пользователя. - C<($status,$challenge)> +Возвращает C<($status,$challenge)> =over =item C<$status> - C, C +Результат либо C, либо C =item C<$challenge> - cookie ( ) +В случае успеха возвращает cookie (уникальный номер) сессии =back =item C - . . C<$challenge> cookie -, C. +Проверяет аутентичность сессии. Использует один этап. C<$challenge> cookie +сессии, полученный при выполнении метода C. - C<($status,$challenge)> +Возвращает C<($status,$challenge)> =over =item C<$status> - C, C +Результат либо C, либо C =item C<$challenge> - C +Всегда C =back =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security/Context.pm --- a/Lib/IMPL/Security/Context.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security/Context.pm Fri Dec 30 23:40:00 2011 +0300 @@ -94,7 +94,7 @@ =head1 NAME -C - . +C - контекст безопасности. =head1 SINOPSYS @@ -114,8 +114,8 @@ C<[Autofill]> - , , - , C. +Являет собой контекст безопасности, описывает пользователя и привелегии, так же +у программы есть текущий контекст безопасности, по умолчанию он C. =head1 MEMBERS @@ -123,46 +123,46 @@ =item C - . +Создает объект и заполняет его свойствами. =item C<[get] principal> - , . +Идентификатор пользователя, владельца контекста. =item C<[get] rolesAssigned> - () . +Список назначенных (активных) ролей пользователю. =item C<[get] auth> - C, . +Объект асторизации C, использованный при создании текущего контекста. =item C<[static,get] authority> - , . +Источник данных безопасности, породивший данный контекст. =item C<[get] isTrusted> - , . +Возвращает значение является ли контекст доверенным, тоесть сессия аутетифицирована. =item C - C<$code>. -, . +Делает контекст текущим и выполняет в нем функцию по ссылке C<$code>. По окончании +выполнения, контекст восстанавливается. =item C - , C, - . +Заменяет текущий контекст на себя, но до конца действия метода C, если +таковой был вызван. =item C<[static,get] nobody> - , . +Контекст для неаутентифицированных пользователей, минимум прав. =item C<[static,get] current> - . +Текущий контекст. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security/Principal.pm --- a/Lib/IMPL/Security/Principal.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security/Principal.pm Fri Dec 30 23:40:00 2011 +0300 @@ -27,7 +27,7 @@ =head1 NAME -C +C Идентификатор пользователя C<[Autofill]> @@ -37,15 +37,15 @@ =item C - . +Создает новый объект. =item C<[get] name> - . +Возвращает имя пользователя. =item C<[get,set] description> - . +Возвращает описание пользователя. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Security/Role.pm --- a/Lib/IMPL/Security/Role.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Security/Role.pm Fri Dec 30 23:40:00 2011 +0300 @@ -42,12 +42,12 @@ =head1 NAME -C +C Роль =head1 DESCRIPTION - . - . +Может включать в себя базовые роли. +Имеется метод для проверки наличия необходимых ролей в текущей роли. =head1 MEMBERS @@ -55,18 +55,18 @@ =item C<[get] roleName> - , +Имя роли, ее идентификатор =item C<[get,list] parentRoles> - +Список родительских ролей =item C - @roles_list. - , . - 0 ( ), 1 . +Проверяет наличие ролей указанных ролей из списка @roles_list. +Допускается использование как самих объектов, так и имен ролей. +Возвращает 0 в случае неудачи (хотябы одна роль не была удовлетворена), 1 при наличии необходимых ролей. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Serialization.pm --- a/Lib/IMPL/Serialization.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Serialization.pm Fri Dec 30 23:40:00 2011 +0300 @@ -2,8 +2,8 @@ use strict; # 20060222 -# ������ ��� ������������ �������� ������ -# (�) Sourcer, cin.sourcer@gmail.com +# пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ +# (пїЅ) Sourcer, cin.sourcer@gmail.com # revision 3 (20090517) @@ -16,24 +16,24 @@ use Scalar::Util qw(refaddr); BEGIN { - private _direct property ObjectWriter => prop_all; # ������, ������������ ������ � ����� - private _direct property Context => prop_all; # �������� (������� ������� ��� �������������, �� ��������������) - private _direct property NextID => prop_all;# ��������� ������������� ��� ������� + private _direct property ObjectWriter => prop_all; # пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅ + private _direct property Context => prop_all; # пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ (пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ) + private _direct property NextID => prop_all;# пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ - # ���������, ������� �����, ��� ��������������� ������������ ����. ������ ���������� - # �������� ������ �� IMPL::Serialization::Context, ������ ���������� ������ �� ������ + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ IMPL::Serialization::Context, пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ public _direct property Serializer => prop_all; - private _direct property State => prop_all; # ��������� ��������� ������������ + private _direct property State => prop_all; # пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ } -# �������� ������, �.�. ������� ������ �� ����� +# пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ.пїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ sub STATE_CLOSED () { 0 } -# �������� ������, �.�. ������ �����, �� � ��� ��� ������ �� ����� +# пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ.пїЅ. пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ sub STATE_OPENED () { 1 } -# �������� ������ � � ���� ����� ���� ��������� ������ ���������� +# пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ sub STATE_COMPLEX () { 2 } -# �������� ������ � � ���� ��� ������ �� ����� ���� ���������, ��� ����� ������ +# пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ sub STATE_DATA () { 3 } sub CTOR { @@ -54,8 +54,8 @@ die new Exception ('Invalid operation') if $this->{$State} == STATE_DATA; if (not ref $Var) { - # ������� ����������� ��, ��� �����, �� ��� ���� ����, ����� �������, ������� ���� - # �� �� ������, �� �������� ��������������, �� �� �� ����� + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ + # пїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ my $prevState = $this->{$State}; $this->{$ObjectWriter}->BeginObject(name => $sName);#, type => 'SCALAR'); @@ -148,10 +148,10 @@ use IMPL::Exception; BEGIN { - # ��� ����������������� �������, ���, ���� - �������������, �������� - ������. + # пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ, пїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅ. private _direct property Context => prop_all; - # ������� ������. ���������� ��� �������������� + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ # { # Type => 'typename', # Name => 'object_name', @@ -160,24 +160,24 @@ # } private _direct property CurrentObject => prop_all; - # ���� ��������. ���� ����������� �������� �������� �� ���� ���������� ����� ��������. + # пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ. private _direct property ObjectsPath => prop_all; - # ���� ������� ������ ����� �������� + # пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ public _direct property Root => prop_get; - # ������� ������ � ���������� �� ���� ������ + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ # ObjectFactory($Type,$DeserializationData,$refSurogate) - # $Type - ��� ���� ������ - # $DeserializationData - ���� ������ �� ������ � ������� ��� �������������� �����, - # ���� ������ ���������� ������. - # $refSurogate - ������ �� �������������� ���������, �� ������������������ ������. - # ����� ��������� �������� undef + # $Type - пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ + # $DeserializationData - пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, + # пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ. + # $refSurogate - пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ. + # пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ undef private _direct property ObjectFactory => prop_all; - # ������� �������������������� �������. + # пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. # SurogateHelper($Type) - # $Type ��� �����, ��� ������� ����� �������. + # $Type пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. private _direct property SurrogateHelper => prop_all; } @@ -209,7 +209,7 @@ $rhCurrentObj->{'Data'} = [$name,$refObj]; } - # ��� �����, ��� ����� ������ OnObjectEnd ��� �������, ������� ��� ������� �������. �.�. �� �� ������� ���� + # пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ OnObjectEnd пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅ.пїЅ. пїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ push @{$this->{$ObjectsPath}},$rhCurrentObj; $this->{$CurrentObject} = undef; @@ -253,8 +253,8 @@ my $rhObject = $this->{$CurrentObject}; my $rhPrevObject = pop @{$this->{$ObjectsPath}}; - # ���� ������� ������ �� ���������, � ���������� - ���������, ������ ������� - ��� ������ - # ������ ��������������� ���������� � ������� � ������ ����� �� ������ + # пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ - пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ + # пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ if ((not defined($rhObject)) && $rhPrevObject) { $this->{$CurrentObject} = $rhPrevObject; return 1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Test/HarnessRunner.pm --- a/Lib/IMPL/Test/HarnessRunner.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Test/HarnessRunner.pm Fri Dec 30 23:40:00 2011 +0300 @@ -3,34 +3,28 @@ use warnings; use parent qw(IMPL::Object IMPL::Object::Autofill IMPL::Object::Serializable); -use IMPL::Class::Property; +use IMPL::lang qw(:declare :constants); +use TAP::Parser; use Test::Harness; __PACKAGE__->PassThroughArgs; BEGIN { - public property Strap => prop_all; } sub CTOR { my $this = shift; - - die new IMPL::InvalidArgumentException("The Strap parameter must be specified") unless $this->Strap; } sub RunTests { my ($this,@files) = @_; - local $Test::Harness::Strap = $this->Strap; - return runtests(@files); } sub ExecuteTests { my ($this,%args) = @_; - local $Test::Harness::Strap = $this->Strap; - return Test::Harness::execute_tests(%args); } diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Test/Straps.pm --- a/Lib/IMPL/Test/Straps.pm Tue Dec 20 23:00:30 2011 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -package IMPL::Test::Straps; -use strict; -use warnings; - -use parent qw(Test::Harness::Straps IMPL::Object IMPL::Object::Autofill IMPL::Object::Serializable); -use IMPL::Class::Property; - -__PACKAGE__->PassThroughArgs; - -BEGIN { - public property Executors => prop_all | prop_list; -} - -sub new { - my $class = shift; - my $this = $class->Test::Harness::Straps::new(); - - $this->callCTOR(@_); - - return $this; -} - -sub surrogate { - my $class = shift; - return $class->Test::Harness::Straps::new(); -} - -sub analyze_file { - my($self, $file) = @_; - - unless( -e $file ) { - $self->{error} = "$file does not exist"; - return; - } - - unless( -r $file ) { - $self->{error} = "$file is not readable"; - return; - } - - # *sigh* this breaks under taint, but open -| is unportable. - my $h = $self->ExecuteFile($file); - unless ($h) { - print "can't run $file. $!\n"; - return; - } - - my $results = $self->analyze_fh($file, $h); - my $exit = close $h; - - $results->set_wait($?); - if ( $? && $self->{_is_vms} ) { - $results->set_exit($?); - } - else { - $results->set_exit( Test::Harness::Straps::_wait2exit($?) ); - } - $results->set_passing(0) unless $? == 0; - - $self->_restore_PERL5LIB(); - - return $results; -} - -sub SelectExecutor { - my ($this,$file) = @_; - - return $_->{Executor} foreach grep $file =~ /$_->{Re}/i, $this->Executors; -} - -sub ExecuteFile { - my ($this,$file) = @_; - - if (my $executor = $this->SelectExecutor($file)) { - return $executor->Execute($file); - } - return undef; -} - -sub Execute { - my ($self,$file) = @_; - - local $ENV{PERL5LIB} = $self->_INC2PERL5LIB; - - open my $h,'-|',$self->_command_line($file) or return undef; - - return $h; -} - -1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Text/Parser/Chunk.pm --- a/Lib/IMPL/Text/Parser/Chunk.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Text/Parser/Chunk.pm Fri Dec 30 23:40:00 2011 +0300 @@ -80,7 +80,7 @@ =pod =head1 DESCRIPTION - +Именованный поток операций =head1 MEMBERS diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Text/Schema.pm --- a/Lib/IMPL/Text/Schema.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Text/Schema.pm Fri Dec 30 23:40:00 2011 +0300 @@ -59,17 +59,17 @@ =head1 DESCRIPTION - , - . +Схема текстового файла, которую можно использовать для разбора содержимого +текстового файла. - . -1. -2. . -3. . +Схема текстового файла состоит из выражений. +1. Регулярное выражение является выражением +2. Строковое значение является выражением. +3. Выражения объединенные логическими операторами также выражение. - -1. -2. +Допускаются следующие операторы +1. Повтор +2. Ветвление =head1 METHODS @@ -77,7 +77,7 @@ =item C<<$schema->compile()>> - . +Возвращает объект для разбора текста. =back diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Transform.pm --- a/Lib/IMPL/Transform.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Transform.pm Fri Dec 30 23:40:00 2011 +0300 @@ -64,7 +64,7 @@ =head1 NAME -C - +C - преобразование объектной структуры =head1 SYNOPSIS @@ -97,6 +97,6 @@ =head1 DESCRIPTION - , . +Преобразование одного объекта к другому, например даных к их представлению. =cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Application.pm --- a/Lib/IMPL/Web/Application.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Application.pm Fri Dec 30 23:40:00 2011 +0300 @@ -152,39 +152,39 @@ C< use parent qw( IMPL::Config IMPL::Object::Singleton )> - , , - CGI . +Зкземпляр приложения содержит в себе глобальные настройки, реализует контроллер запросов, +в качестве источника запросов используется CGI или иной совместимый модуль. - +Процесс обработки запроса состоит из следующих частей =over =item 1 - cgi +Получение cgi запроса =item 2 - C +Создание объекта C =item 3 - C<< IMPL::Web::Application::Action->ChainHandler >> +Формирование цепочки вызовов при помощи C<< IMPL::Web::Application::Action->ChainHandler >> =item 4 - C<< IMPL::Web::Application::Action->Invoke >> +Выполнение запроса C<< IMPL::Web::Application::Action->Invoke >> =cut - , - . C< IMPL::Configuration >. - C, - , . C. +Также приложение поддерживает отложенное создание объектов, которые по первому обращению +к свойствам. Это реализовано в базовом классе C< IMPL::Configuration >. Для настройки +активаторов можно использовать свойство C, в которое должен быть помещен хеш +со ссылками на активаторы, см. пример ниже C. =head2 CONFIGURATION - +Ниже приведен пример конфигурации приложения =begin code xml @@ -254,13 +254,13 @@ =item C<[get,set] handlerError> - - . . +Обработчик который будет вызван в случае возникновения необработанной ошибки +в процессе работы приложения. После чего приложение корректно завершается. =item C<[get,set] actionFactory> - , , - C C . +Фабрика объектов, которая используется приложением, для создания объектов +типа C при обработки C запросов. =begin code @@ -273,29 +273,29 @@ =item C< [get,set] fetchRequestMethod > - CGI . C , - , C. - C. +Метод получения CGI запроса. Возвращает C объект следующего запроса, если +запросов больше нет, то возвращает C. По-умолчанию использует C. - , C. +Может быть как ссылкой на функцию, так и объектом типа C. =item C< [get,set,list] handlersQuery > - , -. +Список обработчиков запросов, которые будут переданы созданному объекту-действию. =item C< [get,set] responseCharset> - . +Кодировка ответа клиенту. =item C< [get,set] security > - C, . +Объект C, для работы с инфраструктурой безопасности. =item C< [get,set] options > - , - , .. - . +Обычно ссылка на хеш с настраиваемыми объектами, используется для возможности +програмной настройки активаторов, т.к. напрямую через свойства приложения получить +к ним доступ не получится. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Application/Action.pm --- a/Lib/IMPL/Web/Application/Action.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Application/Action.pm Fri Dec 30 23:40:00 2011 +0300 @@ -120,17 +120,17 @@ =head1 NAME -C - C . +C - Обертка вокруг C запроса. =head1 DESCRIPTION C<[Infrastructure]> - . - , . - , . +Определяет порядок выполнения запроса. Запрос выполняется последовательным вызовом +цепочки обработчиков, при этом обработчики сами вызывают следующие. +Обработчики выполняются в порядке, обратном их добавлению. - , +Типичная цепочка может быть такой, в порядке добавления =begin code @@ -140,7 +140,7 @@ =end code - +что приведет к следующей последовательности =begin code @@ -207,7 +207,7 @@ =end code - +или как альтернатива может быть еще =begin code @@ -219,9 +219,9 @@ =end code - , - JSON . - , . +В данной цепочке также происходит вызов метода, но его результат потом преобразуется +в простые структуры и передается JSON преобразователю. Таким образом модулю логики +не требуется знать о выходном формате, всю работу проделают дополнительные фильтры. =head1 MEMBERS @@ -231,23 +231,23 @@ =item C< [get] application> - +Экземпляр приложения создавшего текущий объект =item C< [get] query > - C +Экземпляр C запроса =item C< [get] response > - C C +Ответ на C заспрос C =item C< [get] responseFactory > - , - C, - C . +Фабрика ответов на запрос, используется для создания нового ответа +либо при конструировании текущего объекта C, +либо при вызове метода C у текущего объекта. - C +По умолчанию имеет значение C =back @@ -257,17 +257,17 @@ =item C< ReinitResponse() > - C . +Отмена старого ответа C и создание вместо него нового. - , - . , - , - . C. +Данная операция обычно проводится при обработке ошибок, когда +уже сформированный ответ требуется отменить. Следует заметить, +что эта операция не возможна, если ответ частично или полностью +отправлен клиенту. Тогда возникает исключение C. =item C< ChainHandler($handler) > - . , - . +Добавляет новый обработчик в цепочку. Выполнение цепочки начинается с конца, +тоесть последний добавленный будет выполнен первым. =back @@ -279,22 +279,22 @@ =item CODE ref - , - : action , . +Ссылка на процедуру может являться обработчиком, при этом функция будет вызвана с +двумя параметрами: ссылкой на action объект, и точкой входа следующего обработчика. =item Method Name - , . action - , -: action , . +Имя метода, передается в виде строки. У текущего объекта action ищется метод с +указанным именем, после чего используется ссылка на этот метод для вызова с двумя +параметрами: ссылкой на action объект, и точкой входа следующего обработчика. - C<< $action->MethodName($nextHandler) >>; +Получается вызов идентичный следующему C<< $action->MethodName($nextHandler) >>; =back =head2 C< IMPL::Web::QueryHandler > - C< IMPL::Web::QueryHandler > - +Любой объект наследованный от C< IMPL::Web::QueryHandler > может быть +использован в качестве обработчика запроса -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Application/ControllerUnit.pm --- a/Lib/IMPL/Web/Application/ControllerUnit.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Application/ControllerUnit.pm Fri Dec 30 23:40:00 2011 +0300 @@ -267,34 +267,34 @@ =head1 NAME -C - . +C - базовый класс для обработчика транзакций в модели контроллера. =head1 DESCRIPTION -, . - C, C
. +Классы, наследуемые от данного класса называется пакетом транзакций. Часть методов в таком классе +объявляются как транзакции при помощи методов C, C. - , . - C, / -. +Перед выполнением транзакции создается экземпляр объекта, в рамках которого будет выполнена транзакция. +Для этого вызывается метод C, который создает/восстанавливает контекст +транзакции. - . - (C C). - , . +Транзакции на данный момент делятся на простые и формы. Различные типы транзакций выполняются при помощи +различных оберток (C и C). Каждая обертка отвечает за конструирование +экземпляра объекта и вызов метода для выполнения транзакции, а также за возврат результата выполнения. -=head2 +=head2 Простые транзакции - , , - . +Простые транзакции получаю только запрос, без предварительной обработки, и возвращенный результат напрямую +передается пользователю. -=head2 +=head2 Формы - , DOM . - DOM . +При использовании форм запрос предварительно обрабатывается, для получения DOM документа с данными формы. +Для постороенния DOM документа используется схема. При этом становятся доступны дополнительные свойства C, C, C. - , , - +Результат выполнения транзакции не возвращается наверх напрямую, а включается в структуру, которая +выглядит следующим образом =begin code @@ -312,42 +312,42 @@ =item C - . +Состояние верификации формы. =over =item C - , , . - . +Первоначальное содержимое формы, оно может быть некорректным, но это нормально. +В данном состоянии транзакция обычно не выполняется. =item C - , , C +Данные формы корректны, транзакция выполнена, и ее результат доступен через поле C =item C - , C. - . +Содержимое формы не прошло верификацию, ошибки доступны через поле C. Транзакция +не выполнялась. =back =item C - , . +Результат выполнения транзакции, если конечно таковая выполнялась. =item C - . , , - , . +ДОМ документ с данными формами. Документ существует всегда, не зависимо от его корректности, +может быть использован для построения формы, уже заполненную параметрами. =item C - , . +Схема данных формы, может использоваться для построения динамических форм. =item C - . +Ссылка на массив с ошибками при проверки формы. =back @@ -357,47 +357,47 @@ =item C<[get] application> - , . +Объект приложения, которое обрабатывает запрос. =item C<[get] query> - . +Текущий запрос. =item C<[get] response> - . +Текущий ответ. =item C<[get] formData> -C , . +C документ с данныим, если данный запрос является формой. =item C<[get] formSchema> -C . +C документ со схемой формы данного запроса. =item C<[get] formErrors> - , . , - , . +Ошибки верификации данных, если таковые были. Обычно при наличии ошибок в форме, транзакция +не выполняется, а эти ошибки передаются в ответ. =item C - , - . +Конструирует контекст выполнения транзакции, может быть переопределен для конструирования контекста по +своим правилам. =item C - , - . +Обертка для конструирования простых транзакций, может быть переопределен для конструирования контекста по +своим правилам. =item C - , - . +Обертка для конструирования форм, может быть переопределен для конструирования контекста по +своим правилам. =item C -, , C. +Метод, опубликованный для вызова контроллером, возвращает описание методов в формате C. =begin code @@ -464,4 +464,4 @@ =end code -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Application/Response.pm --- a/Lib/IMPL/Web/Application/Response.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Application/Response.pm Fri Dec 30 23:40:00 2011 +0300 @@ -14,7 +14,7 @@ #todo: add binary method to set a binary encoding, set it automatic when type isn't a text BEGIN { - # + # автозаполнение буде происходить в порядке объявления public property query => prop_get | owner_set; # cgi query public property status => prop_all, { validator => \&_checkHeaderPrinted }; public property contentType => prop_all, { validator => \&_checkHeaderPrinted }; # String @@ -192,84 +192,84 @@ =head1 NAME -C - . +C - Ответ веб сервера непосредственно клиенту. =head1 DESCRIPTION C<[Infrastructure]> - . +Позволяет сформировать основные свойства заголовка и тело ответа. - C . +Создается объектом C в процессе обработки запроса. - C . +Может использоваться обработчиками C в процессе выполнения запроса. - , - . C< isHeaderPrinted > - . +Объект позволяет буфферизировать вывод в тело ответа, что позволяет отменить или изменить +ответ в последний момент. Свойство C< isHeaderPrinted > используется для определения факта +отправлки данных клиенту. =head1 PROPERTIES =head2 HTTP Header - HTTP . - . C< IMPL::InvalidOperationException >. +Свойства отвечающие за заголовок HTTP ответа. Эти своства могут быть изменены до тех пор пока +не будет отправлен заголовок. В противном случае выдается исключение C< IMPL::InvalidOperationException >. =over =item C< [get] query > -CGI , , . . +CGI запрос, который используется для вывода данных, заголовка и пр. Существует всегда. =item C< [get,set] status > - HTTP. , '200 OK'. , '200 '. +Код ошибки HTTP. Например, '200 OK'. По умолчанию не установлен, при отправке клиенту бедт отправлен '200 ОК'. =item C< [get,set] contentType > - MIME. , 'text/html'. +Тип MIME. По умолчанию не установлен, подразумивается 'text/html'. =item C< [get,set] charset > -, query->charset. +Кодировка, синоним свойства query->charset. =item C< [get,set] expires > - , '+10m'. . +Определяет время жизни контента, например '+10m'. По умолчанию не задано и не передается. =item C< [get,set] cookies > - cookies, C< { cart => ['foo','bar'], display => 'list' } >. +Хеш массив с cookies, например C< { cart => ['foo','bar'], display => 'list' } >. =back =head2 Response behaviour - . +Свойства отвечающие за поведение ответа. =over =item C< [get,set] buffered > -C< True > - C< Complete >, - C< Complete >. +C< True > - то тело ответа пишется в буффер и будет отправлено при вызове метода C< Complete >, +заголовок также будет отправлен после вызова метода C< Complete >. -C< False > - , - C< streamBody > +C< False > - тело ответа пишется непосредственно в поток к клиенту, при этом заголовок +будет отправлен при первом обращении к свойству C< streamBody > - . +Это свойство можно менять до первого обращения к потоку для записи в тело ответа. =item C< [get] streamOut > - CGI . +Стандартный вывод CGI приложения. =item C< [get] streamBody > - . +Поток для записи в тело ответа. =item C< [get] isHeaderPrinted > - , . +Признак того, что заголовок уже был отправлен клиенту. =back @@ -279,18 +279,18 @@ =item C< Complete > - . +Завершает отправку ответа. =item C< Discard > - , (, ) - , STDERR. +Отменяет отправку ответа, при этом если часть данных (например, заголовок) +уже была отправлена, выдает предупреждение в STDERR. =back =head1 REMARKS - , .. - . +Данный объект является автозаполняемым, т.е. все его свойства можно задать через +именованные параметры конструктора. -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/DOM/FileNode.pm --- a/Lib/IMPL/Web/DOM/FileNode.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/DOM/FileNode.pm Fri Dec 30 23:40:00 2011 +0300 @@ -76,7 +76,7 @@ =head1 NAME -C - , . +C - узел, использующийся для представления параметра запроса в котором передан файл. =head1 SINOPSYS @@ -128,11 +128,11 @@ =head1 DESCRIPTION - C - C. +Данный класс используется для представлении параметров C запросов при преобзаовании +запроса в ДОМ документ преобразованием C. - C - , . +Узлы данного типа расширяют стандатрный C несколькими свойствами и +методами для доступа к файлу, переданному в виде параметра запроса. =head1 MEMBERS @@ -142,15 +142,15 @@ =item C<[get] parameterName> - C . +Имя параметра C запроса соответствующего данному узлу. =item C<[get] fileName> - +Имя файла из параметра запроса =item C<[get] fileHandle> - +Указатель на файл из параметра запроса =back @@ -160,34 +160,34 @@ =item C - , , C<$callback> . +Сохраняет файл, переданный в запросе во временный, вызывает C<$callback> для обработки временного файла. =over =item C<$callback> - . C +Ссылка на функцию которая будет вызвана для обработки временного файла. C =over =item C<$fname> - +Имя временного файла =item C<$fhandle> - +Указатель на временный файл =back - C<$_> . +Также пременная C<$_> содержит имя временного файла. =item C<$target> - C<$callback>. +Значение этого параметра будет передано первым параметром функции C<$callback>. =back =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler.pm --- a/Lib/IMPL/Web/QueryHandler.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler.pm Fri Dec 30 23:40:00 2011 +0300 @@ -29,11 +29,11 @@ =head1 NAME - . +Базовый класс для обработчиков запросов. =head1 SYNOPSIS - +Простой вариант =begin code @@ -59,27 +59,27 @@ =item C< Invoke($action,$nextHandler) > - , . - , , - C< Invoke > C< $action >, C< $nextHandler >. +Вызывается механизмом обработки запроса, для передачи управления обработчику. Данная реализация +проверяет контекст вызова, если как статический метод, то создает экземпляр класса и вызывает +у созданного объекта метод C< Invoke > с параметрами C< $action >, C< $nextHandler >. - C. +При создании нового объекта в конструктор передается именованый параметр C. - , C< Process >. +Если метод был вызван у объекта, то управление передается методу C< Process >. =over =item C< $action > - +Экземпляр запроса =item C< $nextHandler > - . , - . +Делегат для вызова следующего обработчика. Вызывается без параметров, но следующему обработчику +втоматически будут переданы необходимые параметры. =back =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler/JsonFormat.pm --- a/Lib/IMPL/Web/QueryHandler/JsonFormat.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler/JsonFormat.pm Fri Dec 30 23:40:00 2011 +0300 @@ -123,4 +123,4 @@ } } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler/PageFormat.pm --- a/Lib/IMPL/Web/QueryHandler/PageFormat.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler/PageFormat.pm Fri Dec 30 23:40:00 2011 +0300 @@ -139,11 +139,11 @@ =head1 NAME -C - HTML , . +C - Выдача результатов в виде HTML страницы, построенной из шаблона. =head1 SYNOPSIS - +В файле конфигурации приложения =begin code xml @@ -155,7 +155,7 @@ =end code xml - +Программно =begin code @@ -168,11 +168,11 @@ =head1 DESCRIPTION - . , - C C. +Обработчик запроса для веб приложения. Загружает шаблон, путь к котрому берется +из C относительно пути из свойства C. - C - C. +Наследуется от C для реализации функционала +обработчика запроса и переопределяет метод C. C @@ -182,21 +182,21 @@ =item C - . +Создает новый экземпляр и заполняет свойства. =item C<[get,set] templatesCharset> - . utf-8. +Кодировка шаблонов. По умолчанию utf-8. =item C<[get,set] templatesBase> - . +Каталог относительно которого ищется шаблон. =item C<[override] Process($action,$nextHandler)> -, CProcess> - . +Метод, переопределяющий CProcess> и которому передается управление +для выполнения действий. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler/PathInfoRewrite.pm --- a/Lib/IMPL/Web/QueryHandler/PathInfoRewrite.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler/PathInfoRewrite.pm Fri Dec 30 23:40:00 2011 +0300 @@ -23,4 +23,4 @@ scalar $nextHandler->(); } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler/SecureCookie.pm --- a/Lib/IMPL/Web/QueryHandler/SecureCookie.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler/SecureCookie.pm Fri Dec 30 23:40:00 2011 +0300 @@ -95,12 +95,12 @@ C - Cookie. +Возобновляет сессию пользователя на основе информации переданной через Cookie. - - - . +Использует механизм подписи информации для проверки верности входных данных перед +началом каких-либо действий. - . +Данный обработчик возвращает результат выполнения следдующего обработчика. =head1 MEMBERS @@ -108,8 +108,8 @@ =item C<[get,set] salt> -, . +Скаляр, использующийся для подписи данных. =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/QueryHandler/UrlController.pm --- a/Lib/IMPL/Web/QueryHandler/UrlController.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/QueryHandler/UrlController.pm Fri Dec 30 23:40:00 2011 +0300 @@ -53,13 +53,13 @@ =head1 NAME -C - C . +C - вызов метода на основе C запроса. =head1 DESCRIPTION - C<$ENV{PATH_INFO}> . - C C - C. +Использует переменную C<$ENV{PATH_INFO}> для получения имени и метода модуля. +Например запрос C интерпретируется как вызов метода C +у модуля C. =head1 MEMBERS @@ -69,8 +69,8 @@ =item C<[get,set] namespace> - . , C +Пространство имен в котором находится модуль. по умолчению совпадает с именем класса приложения, например C =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Security.pm --- a/Lib/IMPL/Web/Security.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Security.pm Fri Dec 30 23:40:00 2011 +0300 @@ -62,7 +62,7 @@ =head1 NAME -C . +C Модуль для аутентификации и авторизации веб запроса. =head1 SINOPSYS @@ -82,20 +82,20 @@ =head1 DESCRIPTION - . - , , - . - . - . +Отвечает за инфраструктуру аутентификации и авторизации запросов. Основная особенность +заключается в том, что запросы приходят через значительные интевалы времени, хотя и +относятся к одной логической транзакции. В промежутках между запросами сервер не +сохраняет свое состояние. Поэтому при каждом обращении сервер восстанавливает +контекст безопасности. -C -. , - . +C Объект обеспечивающий сохранение состояния в рамках одной сессии +пользователя. Кроме контекста безопасности хранит дополнительние данные, которые необходимо +сохранить между обработкой запросов. -C , -C, - C. +C Объект, устанавливающий связь между идентификатором пользователя +C, его ролями и данными безопасности для создания объектов +аутентификации C. =head1 MEMBERS -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/Security/Session.pm --- a/Lib/IMPL/Web/Security/Session.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/Security/Session.pm Fri Dec 30 23:40:00 2011 +0300 @@ -18,7 +18,7 @@ =head1 NAME -C - . +C - Сессия пользователя. =head1 SINOPSYS @@ -41,8 +41,8 @@ C - , . - . +Представляет собой контекст безопасности, имеет идентификатор. Является базовым классом +для расширения дополнительными атрибутами. =head1 MEMBERS @@ -50,8 +50,8 @@ =item C<[get] id> - +Идентификатор сессии =back -=cut \ No newline at end of file +=cut diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/TT/Collection.pm --- a/Lib/IMPL/Web/TT/Collection.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/TT/Collection.pm Fri Dec 30 23:40:00 2011 +0300 @@ -38,4 +38,4 @@ return; } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/TT/Control.pm --- a/Lib/IMPL/Web/TT/Control.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/TT/Control.pm Fri Dec 30 23:40:00 2011 +0300 @@ -42,4 +42,4 @@ } } } -1; \ No newline at end of file +1; diff -r b3d91ff7aea9 -r d1676be8afcc Lib/IMPL/Web/TT/Document.pm --- a/Lib/IMPL/Web/TT/Document.pm Tue Dec 20 23:00:30 2011 +0300 +++ b/Lib/IMPL/Web/TT/Document.pm Fri Dec 30 23:40:00 2011 +0300 @@ -230,7 +230,7 @@ return $this->context->process($this->template); } -# +# Формирует представление для произвольных объектов sub _process { my ($this,@items) = @_; @@ -286,7 +286,7 @@ =head1 NAME -C - , +C - Документ, позволяющий строить представление по шаблону =head1 SYNOPSIS @@ -307,13 +307,13 @@ C -, Template::Toolkit. , - . C, -.. DOM . +Документ, основанный на шаблоне Template::Toolkit. Позволяет загрузить шаблон, +и сформировать окончательный документ. Является наследником C, +т.о. может быть использован для реализации DOM модели. - C . - , - C . +Внутри шаблона переменная C ссылается на объект документа. По этой +причине образуется циклическая ссылка между объектами шаблона и документом, что +требует вызова метода C для освобождения документа. =head1 METHODS @@ -321,34 +321,34 @@ =item C - , C 'C' +Создает новый экземпляр документа, свойство C устанавливается в 'C' =item C<$doc->LoadFile($fileName,$encoding)> - C<$fileName>, C<$encoding>. - , utf-8. +Загружает шаблон из файла C<$fileName>, используя кодировку C<$encoding>. Если +кодировка не указана, использует utf-8. =item C<$doc->Render()> - . +Возвращает данные построенные на основе загруженного шаблона. =item C<$doc->Dispose()> - . +Освобождает ресурсы и помечает объект как освобожденный. =back =head1 DOM - DOM , , - . C