From: Jan T. <de...@us...> - 2002-05-11 13:08:23
|
Update of /cvsroot/net-script/netscript2/src/perl/NetScript/Engine In directory usw-pr-cvs1:/tmp/cvs-serv10117 Modified Files: BasicStatement.pm Class.pm DOMWalker.pm Event.pm EventListener.pm EventRelay.pm State.pm Statement.pm StatementEvaluator.pm Log Message: * speed improvements * fixed bug in event relay, which prevented non-priorized listeners from being added * added new events to DOMWalker Index: BasicStatement.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/BasicStatement.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BasicStatement.pm 9 May 2002 19:11:03 -0000 1.3 --- BasicStatement.pm 11 May 2002 13:08:20 -0000 1.4 *************** *** 22,26 **** package NetScript::Engine::BasicStatement; use base qw(NetScript::Engine::Statement); ! use vars qw($VERSION); use XML::DOM2::Node; --- 22,26 ---- package NetScript::Engine::BasicStatement; use base qw(NetScript::Engine::Statement); ! use XML::DOM2::Node; *************** *** 29,33 **** # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 29,33 ---- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** *************** *** 75,79 **** # Check for the Node Type. ! if ( $newNode -> nodeType() == XML::DOM2::Node -> ELEMENT_NODE() ) { # attributes in elements will be checked for variables my $attributes = $newNode -> attributes(); --- 75,79 ---- # Check for the Node Type. ! if ( $newNode -> nodeType() == $XML::DOM2::Node::ELEMENT_NODE ) { # attributes in elements will be checked for variables my $attributes = $newNode -> attributes(); *************** *** 87,91 **** } } ! elsif ( $newNode -> nodeType() == XML::DOM2::Node -> TEXT_NODE() ) { my $text = $newNode -> data(); $text = $interpreter -> getStatementEvaluator() --- 87,91 ---- } } ! elsif ( $newNode -> nodeType() == $XML::DOM2::Node::TEXT_NODE ) { my $text = $newNode -> data(); $text = $interpreter -> getStatementEvaluator() Index: Class.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/Class.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Class.pm 8 Apr 2002 21:30:14 -0000 1.2 --- Class.pm 11 May 2002 13:08:20 -0000 1.3 *************** *** 14,23 **** #*/ package NetScript::Engine::Class; ! use vars qw($VERSION); #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 14,23 ---- #*/ package NetScript::Engine::Class; ! #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** Index: DOMWalker.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/DOMWalker.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DOMWalker.pm 9 May 2002 19:11:03 -0000 1.2 --- DOMWalker.pm 11 May 2002 13:08:20 -0000 1.3 *************** *** 21,25 **** #*/ package NetScript::Engine::DOMWalker; ! use vars qw($VERSION); use NetScript::Engine::BasicStatement; --- 21,25 ---- #*/ package NetScript::Engine::DOMWalker; ! use NetScript::Engine::BasicStatement; *************** *** 29,37 **** #/** # Event which is generated upon start of an element. # @public # @final #*/ ! sub ELEMENT_START_EVENT { "DOMWALKER_ELEMENT_START_EVENT"; } #/** --- 29,51 ---- #/** + # Event which is generated upon start of the document + # @public + # @final + #*/ + our $DOCUMENT_START_EVENT = "DOMWALKER_DOCUMENT_START_EVENT"; + + #/** + # Event which is generated upon start of the document + # @public + # @final + #*/ + our $DOCUMENT_END_EVENT = "DOMWALKER_DOCUMENT_END_EVENT"; + + #/** # Event which is generated upon start of an element. # @public # @final #*/ ! our $ELEMENT_START_EVENT = "DOMWALKER_ELEMENT_START_EVENT"; #/** *************** *** 40,44 **** # @final #*/ ! sub ELEMENT_END_EVENT { "DOMWALKER_ELEMENT_END_EVENT"; } #/** --- 54,58 ---- # @final #*/ ! our $ELEMENT_END_EVENT = "DOMWALKER_ELEMENT_END_EVENT"; #/** *************** *** 47,51 **** # @final #*/ ! sub PI_EVENT { "DOMWALKER_PI_EVENT"; } #/** --- 61,65 ---- # @final #*/ ! our $PI_EVENT = "DOMWALKER_PI_EVENT"; #/** *************** *** 54,58 **** # @final #*/ ! sub OTHER_NODE_EVENT { } #/** --- 68,72 ---- # @final #*/ ! our $OTHER_NODE_EVENT = "DOMWALKER_OTHER_NODE_EVENT"; #/** *************** *** 61,65 **** # @final #*/ ! sub TEXT_EVENT { "DOMWALKER_TEXT_EVENT"; } #/** --- 75,79 ---- # @final #*/ ! our $TEXT_EVENT = "DOMWALKER_TEXT_EVENT"; #/** *************** *** 68,72 **** # @final #*/ ! sub COMMENT_EVENT { "DOMWALKER_COMMENT_EVENT"; } #/** --- 82,86 ---- # @final #*/ ! our $COMMENT_EVENT = "DOMWALKER_COMMENT_EVENT"; #/** *************** *** 210,214 **** # set current target node to new node ! if ( $clone -> nodeType() == XML::DOM2::Node -> ELEMENT_NODE() && $isRefNode ) { $this -> currentTarget( $clone ) ; --- 224,228 ---- # set current target node to new node ! if ( $clone -> nodeType() == $XML::DOM2::Node::ELEMENT_NODE && $isRefNode ) { $this -> currentTarget( $clone ) ; *************** *** 279,293 **** $this -> currentSource( $node ); ! if ($node -> nodeType == XML::DOM2::Node -> ELEMENT_NODE() ) { ! # create end Event ! $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( ! $this -> ELEMENT_END_EVENT(), undef, $this ); ! } ! } #/** ! # Creates an even for the given node. # @param an instance of <code>XML::DOM2::Node</code> # @private --- 293,302 ---- $this -> currentSource( $node ); ! $this -> createEndEvent( $node ); } #/** ! # Creates an event for the given node. # @param an instance of <code>XML::DOM2::Node</code> # @private *************** *** 297,318 **** my $nodeType = $node -> nodeType(); my $eventType; ! ! if ( $nodeType == XML::DOM2::Node -> ELEMENT_NODE() ) { ! $eventType = $this -> ELEMENT_START_EVENT(); } ! elsif ( $nodeType == XML::DOM2::Node -> TEXT_NODE() ) { ! $eventType = $this -> TEXT_EVENT(); } ! elsif ( $nodeType == XML::DOM2::Node -> PROCESSING_INSTRUCTION_NODE() ) { ! $eventType = $this -> PI_EVENT(); } ! elsif ( $nodeType == XML::DOM2::Node -> COMMENT_NODE() ) { ! $eventType = $this -> COMMENT_EVENT(); } else { ! $eventType = $this -> OTHER_NODE_EVENT(); } $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( $eventType, undef, $this ); } --- 306,353 ---- my $nodeType = $node -> nodeType(); my $eventType; ! if ( $nodeType == $XML::DOM2::Node::ELEMENT_NODE ) { ! $eventType = $NetScript::Engine::DOMWalker::ELEMENT_START_EVENT; } ! elsif ( $nodeType == $XML::DOM2::Node::TEXT_NODE ) { ! $eventType = $NetScript::Engine::DOMWalker::TEXT_EVENT; } ! elsif ( $nodeType == $XML::DOM2::Node::PROCESSING_INSTRUCTION_NODE ) { ! $eventType = $NetScript::Engine::DOMWalker::PI_EVENT; } ! elsif ( $nodeType == $XML::DOM2::Node::COMMENT_NODE ) { ! $eventType = $NetScript::Engine::DOMWalker::COMMENT_EVENT; ! } ! elsif ( $nodeType == $XML::DOM2::Node::DOCUMENT_NODE ) { ! $eventType = $NetScript::Engine::DOMWalker::DOCUMENT_START_EVENT; } else { ! $eventType = $NetScript::Engine::DOMWalker::OTHER_NODE_EVENT; } $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( $eventType, undef, $this ); + } + + #/** + # Creates an end event for the given node. + # @param an instance of <code>XML::DOM2::Node</code> + # @private + #*/ + sub createEndEvent { + my ( $this, $node ) = @_; + my $nodeType = $node -> nodeType(); + my $eventType; + if ($node -> nodeType == $XML::DOM2::Node::ELEMENT_NODE ) { + $eventType = $NetScript::Engine::DOMWalker::ELEMENT_END_EVENT; + } + elsif ( $node -> nodeType == $XML::DOM2::Node::DOCUMENT_NODE ) { + $eventType = $NetScript::Engine::DOMWalker::DOCUMENT_END_EVENT; + } + else { + # no event on unknown node + return; + } + + $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( + $eventType, undef, $this ); } Index: Event.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/Event.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Event.pm 9 May 2002 19:11:03 -0000 1.4 --- Event.pm 11 May 2002 13:08:20 -0000 1.5 *************** *** 14,23 **** use strict; package NetScript::Engine::Event; ! use vars qw($VERSION); #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 14,23 ---- use strict; package NetScript::Engine::Event; ! #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** Index: EventListener.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/EventListener.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EventListener.pm 9 May 2002 19:11:03 -0000 1.1 --- EventListener.pm 11 May 2002 13:08:20 -0000 1.2 *************** *** 17,21 **** #*/ package NetScript::Engine::EventListener; ! use vars qw($VERSION); #-------------------------------------------------------- --- 17,21 ---- #*/ package NetScript::Engine::EventListener; ! #-------------------------------------------------------- *************** *** 27,31 **** # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 27,31 ---- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** *************** *** 34,38 **** # @final #*/ ! sub PRIORITY_FIRST { 1; } #/** --- 34,38 ---- # @final #*/ ! our $PRIORITY_FIRST = 1; #/** *************** *** 41,45 **** # @final #*/ ! sub PRIORITY_LAST { 2; } #/** --- 41,45 ---- # @final #*/ ! our $PRIORITY_LAST = 2; #/** Index: EventRelay.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/EventRelay.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EventRelay.pm 9 May 2002 19:11:03 -0000 1.5 --- EventRelay.pm 11 May 2002 13:08:20 -0000 1.6 *************** *** 22,26 **** #*/ package NetScript::Engine::EventRelay; ! use vars qw($VERSION); #-------------------------------------------------------- --- 22,26 ---- #*/ package NetScript::Engine::EventRelay; ! #-------------------------------------------------------- *************** *** 33,37 **** # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 33,37 ---- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** *************** *** 66,70 **** my $arrayRef = $this -> { m_EventListeners } -> { $listener -> eventType() }; - # create array if doesn't exist unless ( defined( $arrayRef ) ) { --- 66,69 ---- *************** *** 76,83 **** my $priority = $listener -> priority(); ! if ( $priority == $listener -> PRIORITY_FIRST() ) { unshift( @{ $arrayRef }, $listener ); } ! elsif ( $priority == $listener -> PRIORITY_LAST() ) { push( @{ $arrayRef }, $listener ); } --- 75,82 ---- my $priority = $listener -> priority(); ! if ( $priority == $NetScript::Engine::EventListener::PRIORITY_FIRST ) { unshift( @{ $arrayRef }, $listener ); } ! elsif ( $priority == $NetScript::Engine::EventListener::PRIORITY_LAST ) { push( @{ $arrayRef }, $listener ); } *************** *** 87,92 **** for ( @{ $arrayRef } ) { splice( @{ $arrayRef }, $index, 0, $listener ), last if ! $_ -> priority() != $listener -> PRIORITY_FIRST(); $index++; } } --- 86,95 ---- for ( @{ $arrayRef } ) { splice( @{ $arrayRef }, $index, 0, $listener ), last if ! $_ -> priority() != $NetScript::Engine::EventListener::PRIORITY_FIRST; $index++; + } + # nothing within or all priority-first + if ( $index == scalar( @{$arrayRef} ) ) { + push( @{$arrayRef}, $listener ); # just append } } Index: State.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/State.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** State.pm 1 Apr 2002 20:30:56 -0000 1.2 --- State.pm 11 May 2002 13:08:20 -0000 1.3 *************** *** 12,21 **** use strict; package NetScript::Engine::State; ! use vars qw($VERSION); #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 12,21 ---- use strict; package NetScript::Engine::State; ! #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** Index: Statement.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/Statement.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Statement.pm 8 Apr 2002 21:30:14 -0000 1.3 --- Statement.pm 11 May 2002 13:08:20 -0000 1.4 *************** *** 16,25 **** #*/ package NetScript::Engine::Statement; ! use vars qw($VERSION); #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; #/** --- 16,25 ---- #*/ package NetScript::Engine::Statement; ! #-------------------------------------------------------- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; #/** Index: StatementEvaluator.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Engine/StatementEvaluator.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** StatementEvaluator.pm 2 May 2002 14:20:04 -0000 1.3 --- StatementEvaluator.pm 11 May 2002 13:08:20 -0000 1.4 *************** *** 14,18 **** #*/ package NetScript::Engine::StatementEvaluator; ! use vars qw($VERSION); --- 14,18 ---- #*/ package NetScript::Engine::StatementEvaluator; ! *************** *** 24,28 **** # Globals #-------------------------------------------------------- ! $VERSION = '1.0'; --- 24,28 ---- # Globals #-------------------------------------------------------- ! our $VERSION = '1.0'; |