From: Jan T. <de...@us...> - 2003-05-31 22:39:38
|
Update of /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries In directory sc8-pr-cvs1:/tmp/cvs-serv4485/NetScript/Libraries Modified Files: ClassLibrary.pm ControlStructuresLibrary.pm DatabaseLibrary.pm DateLibrary.pm DefaultLibrary.pm FormsLibrary.pm Library.pm StringsLibrary.pm VariablesLibrary.pm wipeout.project Added Files: XSLTLibrary.pm Log Message: * finished XSLT implementation --- NEW FILE: XSLTLibrary.pm --- #-------------------------------------------------------- # $Id: XSLTLibrary.pm,v 1.1 2003/05/31 22:39:33 derkork Exp $ # # # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. # (C) 2000-2002 by Jan Thom?, insOMnia # mailto: ko...@in... #-------------------------------------------------------- use strict; #/** # The XSLT library serves the purpose of applying XSLT stylesheets to the # processed NetScript. The XSLT-library depends on a DAL capable of performing # XSLT statements. If you try to use the library with a DAL not capable of # no processing will be done. To use this library in your scripts put the # following statements into your NetScript. # <pre> # <?netscript use XSLT?> # </pre> # The XSLT library uses the following namespace uri:"http://xslt.netscript.insomnia-hq.de" # You will have to put this uri into your document element. # <pre> # <yourdocumentelement xmlns:xsl="http://xslt.netscript.insomnia-hq.de"/> # </pre> # # After that you can use the XSLT-library as follows: # <pre> # <xsl:transform default="[stylesheet.xsl]"> # <xsl:browser matches="[regexp]"> # ...processing instruction... # </xsl:browser> # <xsl:browser matches="[regexp]" stylesheet="[stylesheet.xsl]"/> # </xsl:transform> # </pre> # This will apply the given stylesheet to the DOM. As the Microsoft IE is # capable of doing XSLT transformations and most browsers will probably be # able to do so in the future, you can specify a processing instruction # to be put on top of your document so that the browser is able to perform # the transformation. You can also specify different stylesheets to be applied # for different browsers. An example: # <pre> # <!-- mystylesheet.xsl is generic for all browsers --> # <xsl:transform default="mystylesheet.xsl"> # <xsl:browser matches="MSIE6.0"> <!-- IE 6.0 --> # <?xml-stylesheet type="text/xsl" href="mystylesheet.xsl"?> # </xsl:browser> # <!-- special sheet for opera --> # <xsl:browser matches="Opera" stylesheet="mystylesheet_opera.xsl"/> # </xsl:transform> # </pre> # You may add the directives anywhere in your document. However you can only apply # one stylesheet to the document. If you put more than one instance of the # directives in the document, the library chooses an arbitrary one of them. #*/ package NetScript::Libraries::XSLTLibrary; use base qw(NetScript::Libraries::Library); use NetScript::Engine::EventListener; use NetScript::Engine::EventRelay; use NetScript::Interpreter; use NetScript::Engine::DOMWalker; use vars qw( $XSLT_NAMESPACE_URI ); $XSLT_NAMESPACE_URI = "http://xslt.netscript.insomnia-hq.de"; #/** # Ctor. Creates a new DefaultLibrary Object. # @public #*/ sub new { my $proto = shift; # get Prototype my $class = ref($proto) || $proto; my $this = $class -> SUPER::new(); $this; } sub init { my ($this, $interpreter) = @_; $this -> SUPER::init( $interpreter ); if ( $this -> dal() -> supportsXSLT() ) { #only if XSLT is supported # create event listeners for all events my $eventListener1 = NetScript::Engine::EventListener -> new(); $eventListener1 -> init( $NetScript::Engine::DOMWalker::DOCUMENT_END_EVENT, "documentFinished", $this, $NetScript::Engine::EventListener::PRIORITY_LAST ); my $eventListener2 = NetScript::Engine::EventListener -> new(); $eventListener2 -> init( $NetScript::Engine::DOMWalker::ELEMENT_START_EVENT, "elementStarted", $this ); my $eventListener3 = NetScript::Engine::EventListener -> new(); $eventListener3 -> init( $NetScript::Engine::DOMWalker::ELEMENT_END_EVENT, "elementFinished", $this ); my $eventRelay = $this -> interpreter() -> getEventRelay(); $eventRelay -> addEventListener( $eventListener1 ); $eventRelay -> addEventListener( $eventListener2 ); $eventRelay -> addEventListener( $eventListener3 ); } else { warn( "XSLT is not supported by the DAL!" ); } } #/** # Processes an <code><xsl:transform/></code>-tag # @callback #*/ sub processTransform { my ( $this, $domWalker, $node ) = @_; my %stylehash = (); my $defaultStylesheet = $this -> dal() -> getAttribute( $node, "default" ); if ( $defaultStylesheet eq "" ) { $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( $NetScript::Interpreter::FATAL_EVENT, "There was no default stylesheet given!" ); return; } $stylehash{ "default" } = $defaultStylesheet; my $nodeList = $this -> dal() -> getChildNodes( $node ); my $length = $this -> dal() -> getLength( $nodeList ); my $isClientProcessed = 0; for ( 0..$length-1 ) { my $aNode = $this -> dal() -> getItemAt( $nodeList, $_ ); if ( $this -> dal() -> isElementNode( $aNode ) && $this -> dal() -> getNamespaceURI( $aNode ) eq $XSLT_NAMESPACE_URI && $this -> dal() -> getLocalName( $aNode ) eq "browser" ) { my $regexp = $this -> dal() -> getAttribute( $aNode, "matches" ); my $stylesheet = $this -> dal() -> getAttribute( $aNode, "stylesheet" ); if ( $stylesheet ne "" ) { # server processed $stylehash{ $regexp } = $stylesheet; } else { # client processed if ( $this -> browserMatches( $regexp ) ) { # if the browser matches the regexp $isClientProcessed = 1; # set xml content type $this -> interpreter() -> setContentType( "text/xml" ); #find the first PI under this node and put a copy of it #to the target document my $childNodes = $this -> dal() -> getChildNodes( $aNode ); my $childLength = $this -> dal() -> getLength( $childNodes ); for ( 0..$childLength-1 ) { my $piNode = $this -> dal() -> getItemAt( $childNodes, $_ ); if ( $this -> dal() -> isProcessingInstructionNode( $piNode ) ) { # found it, now import it into the target document # XXX this is another hack, as libraries should not access # the target document directly my $targetDocument = $domWalker -> targetDocument(); my $importedNode = $this -> dal() -> importNode( $targetDocument, $piNode, 0 ); my $rootElement = $this -> dal() -> getDocumentElement( $targetDocument ); $this -> dal() -> insertBefore( $targetDocument, $rootElement, $importedNode ); } } } } } } unless( $isClientProcessed ) { $this -> { m_stylesheets } = \%stylehash; } $domWalker -> stepSourceNext(); } #/** # Start of the element. # @callback #*/ sub elementStarted { my ( $this, $event ) = @_; my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); if ( $this -> dal() -> getNamespaceURI( $node ) eq $XSLT_NAMESPACE_URI ) { if ($this -> dal() -> getLocalName( $node ) eq "transform") { $this -> processTransform( $domWalker, $node ); 0; # consume event } else { 1; # do not consume event } } else { 1; # do not consume event } } #/** # End of element. # @callback #*/ sub elementFinished { my ( $this, $event ) = @_; my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); if ( $this -> dal() -> getNamespaceURI( $node ) eq $XSLT_NAMESPACE_URI ) { if ($this -> dal() -> getLocalName( $node ) eq "transform") { 0; # consume event } else { 1; # do not consume event } } else { 1; # do not consume event } } #/** # Returns nonzero if the browser identification string matches the given regexp. # @param a regexp to match. #*/ sub browserMatches { my ( $this, $regexp ) = @_; my $browser = $this -> interpreter() -> getCGI() -> user_agent(); if ( $browser =~ /$regexp/ ) { return 1; } else { return 0; } } #/** # Called when the document is finished. # @param an instance of <code>NetScript::Engine::Event</code>. # @callback #*/ sub documentFinished { my ( $this, $event ) = @_; my $domWalker = $event -> getEventUnknown(); # now we have to look if we find a matching regexp my $stylehashref = $this -> { m_stylesheets }; unless ( defined( $stylehashref ) ) { return; } my %stylehash = %{ $stylehashref }; my $stylesheet = $stylehash{ "default" }; foreach my $key ( keys( %stylehash ) ) { if ( $this -> browserMatches( $key ) ) { $stylesheet = $stylehash{ $key }; } } $stylesheet = $this -> checkURL( $stylesheet ); my $styleContent = $this -> interpreter() -> getFileRetriever() -> retrieveFile( $stylesheet ); my $styleDocument = $this -> dal() -> parseString( $styleContent ); my $target = $domWalker -> targetDocument(); # XXX: next hack, complete rewrite of the whole target document. my $result = $this -> dal() -> applyXSLT( $target, $styleDocument ); $domWalker -> setTargetDocument( $result ); 0; #consume event - no one operates after stylesheet } sub shutdown { my ($this) = @_; $this -> SUPER::shutdown(); } sub getName { "XSLT Library"; } sub getVersion { 1.0; } sub getDescription { "This library provides XSLT support."; } 1; #make require happy Index: ClassLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/ClassLibrary.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ClassLibrary.pm 29 May 2003 16:04:26 -0000 1.5 --- ClassLibrary.pm 31 May 2003 22:39:33 -0000 1.6 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- Index: ControlStructuresLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/ControlStructuresLibrary.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ControlStructuresLibrary.pm 29 May 2003 16:04:27 -0000 1.15 --- ControlStructuresLibrary.pm 31 May 2003 22:39:33 -0000 1.16 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- *************** *** 374,386 **** my $theVar; my $createVar = 0; if ( $var eq "" && $name ne "" ) { $theVar = $name; $createVar = 1; ! $this -> { m_forLoopsVarNames } -> { $node } = $nameOrig; } elsif( $var ne "" && $name eq "" ) { $theVar = $var; ! $this -> { m_forLoopsVarNames } -> { $node } = $varOrig; } else { --- 374,391 ---- my $theVar; my $createVar = 0; + + my $nodeId = $this -> getNodeId( $node ); + unless( defined( $nodeId ) ) { + $nodeId = $this -> createNodeId( $node ); + } if ( $var eq "" && $name ne "" ) { $theVar = $name; $createVar = 1; ! $this -> { m_forLoopsVarNames } -> { $nodeId } = $nameOrig; } elsif( $var ne "" && $name eq "" ) { $theVar = $var; ! $this -> { m_forLoopsVarNames } -> { $nodeId } = $varOrig; } else { *************** *** 391,395 **** } ! my $value = $this -> { m_forLoops } -> { $node }; unless ( defined( $value ) ) { # variable is yet unknown so we initialize it $value = $from; --- 396,400 ---- } ! my $value = $this -> { m_forLoops } -> { $nodeId }; unless ( defined( $value ) ) { # variable is yet unknown so we initialize it $value = $from; *************** *** 411,420 **** setVariable( $theVar, $value ); } ! $this -> { m_forLoops } -> { $node } = $value; if ( ( $from < $to && ( $value > $to || $value < $from ) ) || ( $from > $to && ( $value < $to || $value > $from ) ) || ( $from == $to && $value != $from ) ) { # check if loop should be executed # no it should not, skip node ! delete $this -> { m_forLoops } -> { $node }; # delete $this -> { m_forLoopsVarNames } -> { $node }; $this -> interpreter() -> dropState(); --- 416,425 ---- setVariable( $theVar, $value ); } ! $this -> { m_forLoops } -> { $nodeId } = $value; if ( ( $from < $to && ( $value > $to || $value < $from ) ) || ( $from > $to && ( $value < $to || $value > $from ) ) || ( $from == $to && $value != $from ) ) { # check if loop should be executed # no it should not, skip node ! delete $this -> { m_forLoops } -> { $nodeId }; # delete $this -> { m_forLoopsVarNames } -> { $node }; $this -> interpreter() -> dropState(); *************** *** 428,431 **** --- 433,463 ---- #/** + # This sub returns the value of the "netscriptforloopnodeid" - attribute. + # This is actually a hack, since i need to mark the nodes somehow. + # @todo i need to get rid of this hack. + #*/ + sub getNodeId { + my ( $this, $node ) = @_; + my $result = $this -> dal() -> getAttribute( $node, "netscriptforloopnodeid" ); + if ( $result ne "" ) { + return $result; + } + return undef; + } + + #/** + # Generates a unique id and attaches it to the "netscriptforloopnodeid" - attribute + # of the given node. This is part of the id-hack. + # @todo i need to get rid of this hack + # @return the generated id + #*/ + sub createNodeId { + my ( $this, $node ) = @_; + my $id = $this -> interpreter() -> getUID(); + $this -> dal() -> setAttribute( $node, "netscriptforloopnodeid", $id ); + $id; + } + + #/** # Called when a for-loop ends.. # @param an instance of NetScript::Engine::DOMWalker *************** *** 435,446 **** sub forEnd { my ($this, $domWalker, $node) = @_; ! if ( defined( $this -> { m_forLoops } -> { $node } ) ) { # if the variable value was changed in the loop we have to # reflect this in our internal setting. my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $varName = $this -> { m_forLoopsVarNames } -> { $node }; $varName = $se -> evaluateStatement( $varName ); my $varValue = $se -> resolveObjectValue( $varName ); ! $this -> { m_forLoops } -> { $node } = $varValue; $this -> interpreter() -> dropState(); --- 467,479 ---- sub forEnd { my ($this, $domWalker, $node) = @_; ! my $nodeId = $this -> getNodeId( $node ); ! if ( defined( $this -> { m_forLoops } -> { $nodeId } ) ) { # if the variable value was changed in the loop we have to # reflect this in our internal setting. my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $varName = $this -> { m_forLoopsVarNames } -> { $nodeId }; $varName = $se -> evaluateStatement( $varName ); my $varValue = $se -> resolveObjectValue( $varName ); ! $this -> { m_forLoops } -> { $nodeId } = $varValue; $this -> interpreter() -> dropState(); *************** *** 573,577 **** my $sibling = $this -> dal() -> getNextSibling( $node ); ! if ( $parent -> getNodeType() != $XML::DOM2::Node::ELEMENT_NODE ) { $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( $NetScript::Interpreter::FATAL_EVENT, --- 606,610 ---- my $sibling = $this -> dal() -> getNextSibling( $node ); ! if (! $this -> dal() -> isElementNode( $parent ) ) { $this -> interpreter() -> getEventRelay() -> createAndRaiseEvent( $NetScript::Interpreter::FATAL_EVENT, *************** *** 694,753 **** - #/** - # Checks the given URL for having a protocol and makes - # absolute URLs out of relative URLs. - # @param the URL to check - # @return the checked URL - #*/ - sub checkURL { - my ( $this, $fileURL ) = @_; - unless ( $fileURL =~ /^[A-Za-z]+:/ ) { # check for protocol - # no protocol, check for relative URL - if ( $fileURL =~ /^\./ ) { # is relativeUrl - $fileURL = $this -> calculateRelativeURL( $fileURL ); - } - else { - # no relative URL - assume "file:"-protocol - $fileURL = "file:".$fileURL; - } - } - return $fileURL; - } - - #/** - # Calculates the resulting URL out of the known URL of the currently executed - # script and the given relative URL. - # @public - # @param a relative URL - # @return an absolute URL - #*/ - sub calculateRelativeURL { - my ( $this, $relativeURL ) = @_; - my $scriptURL = $this -> interpreter() -> getScriptURL(); - - $scriptURL =~ /(.*)\/[^\/]+$/; - $scriptURL = $1; # strip filename - - # for each single point we stay here, for each double point - # we go one folder down... - while ($relativeURL =~ /^([^\/]+)\/(.*)$/ ) { - my $prefix = $1; - $relativeURL = $2; - if ( $prefix eq "." ) { - next; # stay in the same folder - } - elsif ( $prefix eq ".." ) { - $scriptURL =~ /(.*)\/[^\/]+$/; - $scriptURL = $1; # skip folder... - next; - } - else { # its a name - $scriptURL .= "/".$prefix; - next; - } - } - $scriptURL .= "/".$relativeURL; - return $scriptURL; - } sub getName { --- 727,730 ---- Index: DatabaseLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/DatabaseLibrary.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DatabaseLibrary.pm 29 May 2003 16:04:30 -0000 1.5 --- DatabaseLibrary.pm 31 May 2003 22:39:33 -0000 1.6 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- Index: DateLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/DateLibrary.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** DateLibrary.pm 29 May 2003 16:04:30 -0000 1.2 --- DateLibrary.pm 31 May 2003 22:39:33 -0000 1.3 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- Index: DefaultLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/DefaultLibrary.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** DefaultLibrary.pm 7 Jul 2002 14:34:37 -0000 1.4 --- DefaultLibrary.pm 31 May 2003 22:39:33 -0000 1.5 *************** *** 5,9 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 5,9 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- Index: FormsLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/FormsLibrary.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** FormsLibrary.pm 29 Oct 2002 10:35:35 -0000 1.8 --- FormsLibrary.pm 31 May 2003 22:39:33 -0000 1.9 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- *************** *** 117,122 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $NetScript::Interpreter::NAMESPACE_URI ) { ! my $localName = $node -> getLocalName(); if ($localName eq "cookie") { $this -> setCookie( $node, $domWalker ); --- 117,122 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $NetScript::Interpreter::NAMESPACE_URI ) { ! my $localName = $this -> dal() -> getLocalName( $node ); if ($localName eq "cookie") { $this -> setCookie( $node, $domWalker ); *************** *** 143,148 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $NetScript::Interpreter::NAMESPACE_URI ) { ! my $localName = $node -> getLocalName(); if ($localName eq "cookie" || $localName eq "upload") { 0; # consume event --- 143,148 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $NetScript::Interpreter::NAMESPACE_URI ) { ! my $localName = $this -> dal() -> getLocalName( $node ); if ($localName eq "cookie" || $localName eq "upload") { 0; # consume event *************** *** 198,204 **** sub setCookie { my ( $this, $node, $walker ) = @_; ! my $name = $node -> getAttribute( "name" ); ! my $value = $node -> getAttribute( "val" ); ! my $expires = $node -> getAttribute( "expires"); my $se = $this -> interpreter() -> getStatementEvaluator(); --- 198,204 ---- sub setCookie { my ( $this, $node, $walker ) = @_; ! my $name = $this -> dal() -> getAttribute( $node, "name" ); ! my $value = $this -> dal() -> getAttribute( $node, "val" ); ! my $expires = $this -> dal() -> getAttribute( $node, "expires" ); my $se = $this -> interpreter() -> getStatementEvaluator(); *************** *** 219,223 **** my $se = $this -> interpreter() -> getStatementEvaluator(); my $aCGI = $this -> interpreter() -> getCGI(); ! my $limit = $se -> evaluateStatement( $node -> getAttribute( "limit" ) ); if ($limit ne "") { --- 219,223 ---- my $se = $this -> interpreter() -> getStatementEvaluator(); my $aCGI = $this -> interpreter() -> getCGI(); ! my $limit = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "limit" ) ); if ($limit ne "") { *************** *** 228,233 **** } ! my $filename = $se -> evaluateStatement( $node -> getAttribute( "filename" ) ); ! my $parameter = $se -> evaluateStatement( $node -> getAttribute( "parameter" ) ); $filename = $aCGI -> param( $parameter ) if $filename eq ''; my $upload = $aCGI -> param( $parameter); --- 228,233 ---- } ! my $filename = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "filename" ) ); ! my $parameter = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "parameter" ) ); $filename = $aCGI -> param( $parameter ) if $filename eq ''; my $upload = $aCGI -> param( $parameter); *************** *** 239,245 **** } ! my $directory = $se -> evaluateStatement( $node -> getAttribute( "directory" ) ); $filename = $directory."/".$filename; ! my $bytes = $se -> evaluateStatement( $node -> getAttribute( "bytes" ) ); if (! defined($aCGI->uploadInfo($upload))) { if ( $bytes ne '' ) { --- 239,245 ---- } ! my $directory = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "directory" ) ); $filename = $directory."/".$filename; ! my $bytes = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "bytes" ) ); if (! defined($aCGI->uploadInfo($upload))) { if ( $bytes ne '' ) { *************** *** 256,264 **** my $bytesread; my $overallsize = 0; ! my $file = $se -> evaluateStatement( $node -> getAttribute( "file" ) ); if ($file ne '') { $se -> setVariable( $file, $filename ); } ! my $overwrite = $se -> evaluateStatement( $node -> getAttribute( "overwrite" ) ); if ($overwrite ne 'yes' && -e $filename) { if ($bytes ne '') { --- 256,264 ---- my $bytesread; my $overallsize = 0; ! my $file = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "file" ) ); if ($file ne '') { $se -> setVariable( $file, $filename ); } ! my $overwrite = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "overwrite" ) ); if ($overwrite ne 'yes' && -e $filename) { if ($bytes ne '') { Index: Library.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/Library.pm,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Library.pm 29 May 2003 20:09:43 -0000 1.9 --- Library.pm 31 May 2003 22:39:33 -0000 1.10 *************** *** 129,132 **** --- 129,189 ---- #/** + # Checks the given URL for having a protocol and makes + # absolute URLs out of relative URLs. + # @param the URL to check + # @return the checked URL + #*/ + sub checkURL { + my ( $this, $fileURL ) = @_; + unless ( $fileURL =~ /^[A-Za-z]+:/ ) { # check for protocol + # no protocol, check for relative URL + if ( $fileURL =~ /^\./ ) { # is relativeUrl + $fileURL = $this -> calculateRelativeURL( $fileURL ); + } + else { + # no relative URL - assume "file:"-protocol + $fileURL = "file:".$fileURL; + } + } + return $fileURL; + } + + #/** + # Calculates the resulting URL out of the known URL of the currently executed + # script and the given relative URL. + # @public + # @param a relative URL + # @return an absolute URL + #*/ + sub calculateRelativeURL { + my ( $this, $relativeURL ) = @_; + my $scriptURL = $this -> interpreter() -> getScriptURL(); + $scriptURL =~ /(.*\/)[^\/]+$/; + $scriptURL = $1; # strip filename + + # for each single point we stay here, for each double point + # we go one folder down... + while ($relativeURL =~ /^([^\/]+)\/(.*)$/ ) { + my $prefix = $1; + $relativeURL = $2; + if ( $prefix eq "." ) { + next; # stay in the same folder + } + elsif ( $prefix eq ".." ) { + $scriptURL =~ /(.*)\/[^\/]+$/; + $scriptURL = $1; # skip folder... + next; + } + else { # its a name + $scriptURL .= "/".$prefix; + next; + } + } + $scriptURL .= $relativeURL; + return $scriptURL; + } + + + #/** # Returns the name of the library. # @public Index: StringsLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/StringsLibrary.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** StringsLibrary.pm 24 Sep 2002 22:22:03 -0000 1.2 --- StringsLibrary.pm 31 May 2003 22:39:33 -0000 1.3 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- *************** *** 96,101 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $STR_NAMESPACE_URI ) { ! my $name = $node -> getLocalName(); if ($name eq "replace") { $this -> doReplace( $node, $domWalker ); --- 96,101 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $STR_NAMESPACE_URI ) { ! my $name = $this -> dal() -> getLocalName( $node ); if ($name eq "replace") { $this -> doReplace( $node, $domWalker ); *************** *** 124,129 **** my ( $this, $node, $domWalker ) = @_; my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $string = $se -> evaluateStatement( $node -> getAttribute( "string" ) ); ! my $delim = $se -> evaluateStatement( $node -> getAttribute( "delim" ) ); my ( $createVar, $varName ) = $this -> getVariableInfo( $node ); --- 124,129 ---- my ( $this, $node, $domWalker ) = @_; my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $string = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "string" ) ); ! my $delim = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "delim" ) ); my ( $createVar, $varName ) = $this -> getVariableInfo( $node ); *************** *** 169,175 **** my ( $this, $node, $domWalker ) = @_; my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $string = $se -> evaluateStatement( $node -> getAttribute( "string" ) ); ! my $search = $se -> evaluateStatement( $node -> getAttribute( "search" ) ); ! my $replace = $se -> evaluateStatement( $node -> getAttribute( "replace" ) ); my ($createVar, $varName) = $this -> getVariableInfo( $node ); --- 169,175 ---- my ( $this, $node, $domWalker ) = @_; my $se = $this -> interpreter() -> getStatementEvaluator(); ! my $string = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "string" ) ); ! my $search = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "search" ) ); ! my $replace = $se -> evaluateStatement( $this -> dal() -> getAttribute( $node, "replace" ) ); my ($createVar, $varName) = $this -> getVariableInfo( $node ); *************** *** 208,213 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $STR_NAMESPACE_URI ) { ! my $name = $node -> getLocalName(); if ($name eq "split" || $name eq "replace") { 0; # consume event --- 208,213 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $STR_NAMESPACE_URI ) { ! my $name = $this -> dal() -> getLocalName( $node ); if ($name eq "split" || $name eq "replace") { 0; # consume event Index: VariablesLibrary.pm =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/VariablesLibrary.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** VariablesLibrary.pm 14 Aug 2002 22:23:35 -0000 1.5 --- VariablesLibrary.pm 31 May 2003 22:39:33 -0000 1.6 *************** *** 4,8 **** # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomä, insOMnia # mailto: ko...@in... #-------------------------------------------------------- --- 4,8 ---- # NetScript and all related materials, such as documentation, # are protected under the terms and conditions of the Artistic License. ! # (C) 2000-2002 by Jan Thomae, insOMnia # mailto: ko...@in... #-------------------------------------------------------- *************** *** 65,70 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $NetScript::Interpreter::NAMESPACE_URI ) { ! if ($node -> getLocalName() eq "var") { $this -> varStart( $domWalker, $node ); 0; # consume event --- 65,70 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $NetScript::Interpreter::NAMESPACE_URI ) { ! if ($this -> dal() -> getLocalName( $node ) eq "var") { $this -> varStart( $domWalker, $node ); 0; # consume event *************** *** 87,92 **** my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $node -> getNamespaceURI() eq $NetScript::Interpreter::NAMESPACE_URI ) { ! if ($node -> getLocalName() eq "var") { 0; # consume event } --- 87,92 ---- my $domWalker = $event -> getEventUnknown(); my $node = $domWalker -> currentSource(); ! if ( $this -> dal() -> getNamespaceURI( $node ) eq $NetScript::Interpreter::NAMESPACE_URI ) { ! if ($this -> dal() -> getLocalName( $node ) eq "var") { 0; # consume event } *************** *** 111,116 **** my $se = $this -> interpreter() -> getStatementEvaluator(); my ( $createVar, $varName ) = $this -> getVariableInfo( $node ); ! my $value = $node -> getAttribute( "val"); ! my $rvalue = $node -> getAttribute( "rval" ); if ( $rvalue eq "" && defined( $value ) ) { --- 111,116 ---- my $se = $this -> interpreter() -> getStatementEvaluator(); my ( $createVar, $varName ) = $this -> getVariableInfo( $node ); ! my $value = $this -> dal() -> getAttribute( $node, "val" ); ! my $rvalue = $this -> dal() -> getAttribute( $node, "rval" ); if ( $rvalue eq "" && defined( $value ) ) { Index: wipeout.project =================================================================== RCS file: /cvsroot/net-script/netscript2/src/perl/NetScript/Libraries/wipeout.project,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** wipeout.project 27 Sep 2002 17:52:11 -0000 1.9 --- wipeout.project 31 May 2003 22:39:33 -0000 1.10 *************** *** 1,292 **** b ! C DmDictionary 0 26aab 8 ! c 0 26d02 9 ! C Category 1 7c76 ! c 0 26d42 4 ! C DmString 2 26d49 2 e3 ! c 2 26d48 a defaultExe ! C DmSet 3 26d4b 1 ! c 2 7c85 2 e3 ! L 7c85 ! c 2 26d4a b executables ! c 3 26d46 3 ! c 2 7c8c 3 *.C ! L 7c8c ! c 2 7c8f 4 *.cc ! L 7c8f ! c 2 7c92 5 *.cpp ! L 7c92 ! c 2 26d45 a extensions ! c 2 26d44 a CPP_source ! c 2 26d43 4 name ! c 2 26d04 a CPP_source ! c 1 7ca7 ! c 0 26d88 4 ! c 2 26d8f 2 e3 ! c 2 26d8e a defaultExe ! c 3 26d91 1 ! c 2 7cb4 2 e3 ! L 7cb4 ! c 2 26d90 b executables ! c 3 26d8c 1 ! c 2 7cbb 3 *.c ! L 7cbb ! c 2 26d8b a extensions ! c 2 26d8a 8 C_source ! c 2 26d89 4 name ! c 2 26d05 8 C_source ! c 1 7cd0 ! c 0 26dc2 4 ! c 2 26dc9 2 e3 ! c 2 26dc8 a defaultExe ! c 3 26dcb 1 ! c 2 7cdd 2 e3 ! L 7cdd ! c 2 26dca b executables ! c 3 26dc6 1 ! c 2 7ce4 3 *.e ! L 7ce4 ! c 2 26dc5 a extensions ! c 2 26dc4 6 Eiffel ! c 2 26dc3 4 name ! c 2 26d06 6 Eiffel ! c 1 7cf9 ! c 0 26dfc 4 ! c 2 26e03 2 e3 ! c 2 26e02 a defaultExe ! c 3 26e05 1 ! c 2 7d06 2 e3 ! L 7d06 ! c 2 26e04 b executables ! c 3 26e00 4 ! c 2 7d0d 3 *.F ! L 7d0d ! c 2 7d10 3 *.f ! L 7d10 ! c 2 7d13 5 *.for ! L 7d13 ! c 2 7d16 5 *.fpp ! L 7d16 ! c 2 26dff a extensions ! c 2 26dfe 7 Fortran ! c 2 26dfd 4 name ! c 2 26d07 7 Fortran ! c 1 7d2b ! c 0 26e42 4 ! c 2 26e49 2 e3 ! c 2 26e48 a defaultExe ! c 3 26e4b 1 ! c 2 7d38 2 e3 ! L 7d38 ! c 2 26e4a b executables ! c 3 26e46 2 ! c 2 7d3f 3 *.H ! L 7d3f ! c 2 7d42 3 *.h ! L 7d42 ! c 2 26e45 a extensions ! c 2 26e44 6 Header ! c 2 26e43 4 name ! c 2 26d08 6 Header ! c 1 7d57 ! c 0 26e80 4 ! c 2 26e87 9 surfboard ! c 2 26e86 a defaultExe ! c 3 26e89 2 ! c 2 7d64 2 e3 ! L 7d64 ! c 2 7d67 9 surfboard ! L 7d67 ! c 2 26e88 b executables ! c 3 26e84 2 ! c 2 7d6e 5 *.htm ! L 7d6e ! c 2 7d71 6 *.html ! L 7d71 ! c 2 26e83 a extensions ! c 2 26e82 4 Html ! c 2 26e81 4 name ! c 2 26d09 4 Html ! c 1 7d86 ! c 0 26ec2 4 ! c 2 26ec9 2 e3 ! c 2 26ec8 a defaultExe ! c 3 26ecb 1 ! c 2 7d93 2 e3 ! L 7d93 ! c 2 26eca b executables ! c 3 26ec6 1 ! c 2 7d9a 6 *.java ! L 7d9a ! c 2 26ec5 a extensions ! c 2 26ec4 4 Java ! c 2 26ec3 4 name ! c 2 26d0a 4 Java ! c 1 7daf ! c 0 26efc 4 ! c 2 26f03 2 e3 ! c 2 26f02 a defaultExe ! c 3 26f05 1 ! c 2 7dbc 2 e3 ! L 7dbc ! c 2 26f04 b executables ! c 3 26f00 1 ! c 2 7dc3 5 *.tex ! L 7dc3 ! c 2 26eff a extensions ! c 2 26efe 5 Latex ! c 2 26efd 4 name ! c 2 26d0b 5 Latex ! c 1 7dd8 ! c 0 26f36 4 ! c 2 26f3d 2 e3 ! c 2 26f3c a defaultExe ! c 3 26f3f 1 ! c 2 7de5 2 e3 ! L 7de5 ! c 2 26f3e b executables ! c 3 26f3a 0 ! c 2 26f39 a extensions ! c 2 26f38 5 Other ! c 2 26f37 4 name ! c 2 26d0c 5 Other ! c 2 26d01 a categories ! c 0 26d0e 1 ! C ProjectDir 4 7e02 ! c 2 7e03 28 netscript2/src/perl/NetScript/Libraries/ 11 81 ! c 2 7e04 0 0 ! c 2 26d10 28 netscript2/src/perl/NetScript/Libraries/ ! c 2 26d0d b directories ! C DmBag 5 26ab7 b ! c 2 26aed de b ! C DmDictionary 0 26ab9 3 ! C DmString 1 26acb 36 b ! C DmSet 0 7e4a 1 ! C DmString 1 7e78 5 Other ! L 7e78 ! c 1 26aca a categories ! c 1 26abb f ClassLibrary.pm ! c 1 26aba 4 name ! C DmInteger 2 26acd 1 ! c 1 26acc 9 substMode ! c 2 26b22 eb b ! C DmDictionary 0 26aee 3 ! C DmString 1 26b00 36 b ! C DmSet 0 7e89 1 ! C DmString 1 7eb7 5 Other ! L 7eb7 ! c 1 26aff a categories ! c 1 26af0 1b ControlStructuresLibrary.pm ! c 1 26aef 4 name ! C DmInteger 2 26b02 1 ! c 1 26b01 9 substMode ! c 2 26b57 e2 b ! C DmDictionary 0 26b23 3 ! C DmString 1 26b35 36 b ! C DmSet 0 7ec8 1 ! C DmString 1 7ef6 5 Other ! L 7ef6 ! c 1 26b34 a categories ! c 1 26b25 12 DatabaseLibrary.pm ! c 1 26b24 4 name ! C DmInteger 2 26b37 1 ! c 1 26b36 9 substMode ! c 2 26b8c e0 b ! C DmDictionary 0 26b58 3 ! C DmString 1 26b6a 39 b ! C DmSet 0 26926 1 ! C DmString 1 26aa0 5 Other ! L 26aa0 ! c 1 26b69 a categories ! c 1 26b5a e DateLibrary.pm ! c 1 26b59 4 name ! C DmInteger 2 26b6c 1 ! c 1 26b6b 9 substMode ! c 2 26bc1 de b ! C DmDictionary 0 26b8d 3 ! C DmString 1 26b9f 36 b ! C DmSet 0 7f07 1 ! C DmString 1 7f35 5 Other ! L 7f35 ! c 1 26b9e a categories ! c 1 26b8f f DebugLibrary.pm ! c 1 26b8e 4 name ! C DmInteger 2 26ba1 1 ! c 1 26ba0 9 substMode ! c 2 26bf6 e1 b ! C DmDictionary 0 26bc2 3 ! C DmString 1 26bd4 36 b ! C DmSet 0 7f46 1 ! C DmString 1 7f74 5 Other ! L 7f74 ! c 1 26bd3 a categories ! c 1 26bc4 11 DefaultLibrary.pm ! c 1 26bc3 4 name ! C DmInteger 2 26bd6 1 ! c 1 26bd5 9 substMode ! c 2 26c2b de b ! C DmDictionary 0 26bf7 3 ! C DmString 1 26c09 36 b ! C DmSet 0 7f85 1 ! C DmString 1 7fb3 5 Other ! L 7fb3 ! c 1 26c08 a categories ! c 1 26bf9 f FilesLibrary.pm ! c 1 26bf8 4 name ! C DmInteger 2 26c0b 1 ! c 1 26c0a 9 substMode ! c 2 26c60 de b ! C DmDictionary 0 26c2c 3 ! C DmString 1 26c3e 36 b ! C DmSet 0 7fc4 1 ! C DmString 1 7ff2 5 Other ! L 7ff2 ! c 1 26c3d a categories ! c 1 26c2e f FormsLibrary.pm ! c 1 26c2d 4 name ! C DmInteger 2 26c40 1 ! c 1 26c3f 9 substMode ! c 2 26c95 d9 b ! C DmDictionary 0 26c61 3 ! C DmString 1 26c73 36 b ! C DmSet 0 8003 1 ! C DmString 1 8031 5 Other ! L 8031 ! c 1 26c72 a categories ! c 1 26c63 a Library.pm ! c 1 26c62 4 name ! C DmInteger 2 26c75 1 ! c 1 26c74 9 substMode ! c 2 26cca e1 b ! C DmDictionary 0 26c96 3 ! C DmString 1 26ca8 36 b ! C DmSet 0 8042 1 ! C DmString 1 8070 5 Other ! L 8070 ! c 1 26ca7 a categories ! c 1 26c98 11 StringsLibrary.pm ! c 1 26c97 4 name ! C DmInteger 2 26caa 1 ! c 1 26ca9 9 substMode ! c 2 26cff e3 b ! C DmDictionary 0 26ccb 3 ! C DmString 1 26cdd 36 b ! C DmSet 0 8081 1 ! C DmString 1 80af 5 Other ! L 80af ! c 1 26cdc a categories ! c 1 26ccd 13 VariablesLibrary.pm ! c 1 26ccc 4 name ! C DmInteger 2 26cdf 1 ! c 1 26cde 9 substMode ! c 2 26d00 5 files ! c 2 26ab3 94 xterm -ls -fn -*-lucidatypewriter-medium-r-normal-*-12-* -bg gray90 -T Program -geometry 80x10+0+0 -e "[set command with 'Project->Launch Command']" ! c 2 26ab2 6 launch ! c 2 26aaf 4 make ! c 2 26aae 4 make ! c 2 26ab1 0 ! c 2 26ab0 8 makeFile ! c 5 26ab4 0 ! c 2 26ab6 7 modules ! c 2 26aad 9 Libraries ! c 2 26aac 4 name --- 1,303 ---- b ! C DmDictionary 0 3917d 8 ! c 0 39409 9 ! C Category 1 83eb ! c 0 39449 4 ! C DmString 2 39450 2 e3 ! c 2 3944f a defaultExe ! C DmSet 3 39452 1 ! c 2 83fa 2 e3 ! L 83fa ! c 2 39451 b executables ! c 3 3944d 3 ! c 2 8401 3 *.C ! L 8401 ! c 2 8404 4 *.cc ! L 8404 ! c 2 8407 5 *.cpp ! L 8407 ! c 2 3944c a extensions ! c 2 3944b a CPP_source ! c 2 3944a 4 name ! c 2 3940b a CPP_source ! c 1 841c ! c 0 3948f 4 ! c 2 39496 2 e3 ! c 2 39495 a defaultExe ! c 3 39498 1 ! c 2 8429 2 e3 ! L 8429 ! c 2 39497 b executables ! c 3 39493 1 ! c 2 8430 3 *.c ! L 8430 ! c 2 39492 a extensions ! c 2 39491 8 C_source ! c 2 39490 4 name ! c 2 3940c 8 C_source ! c 1 8445 ! c 0 394c9 4 ! c 2 394d0 2 e3 ! c 2 394cf a defaultExe ! c 3 394d2 1 ! c 2 8452 2 e3 ! L 8452 ! c 2 394d1 b executables ! c 3 394cd 1 ! c 2 8459 3 *.e ! L 8459 ! c 2 394cc a extensions ! c 2 394cb 6 Eiffel ! c 2 394ca 4 name ! c 2 3940d 6 Eiffel ! c 1 846e ! c 0 39503 4 ! c 2 3950a 2 e3 ! c 2 39509 a defaultExe ! c 3 3950c 1 ! c 2 847b 2 e3 ! L 847b ! c 2 3950b b executables ! c 3 39507 4 ! c 2 8482 3 *.F ! L 8482 ! c 2 8485 3 *.f ! L 8485 ! c 2 8488 5 *.for ! L 8488 ! c 2 848b 5 *.fpp ! L 848b ! c 2 39506 a extensions ! c 2 39505 7 Fortran ! c 2 39504 4 name ! c 2 3940e 7 Fortran ! c 1 84a0 ! c 0 39549 4 ! c 2 39550 2 e3 ! c 2 3954f a defaultExe ! c 3 39552 1 ! c 2 84ad 2 e3 ! L 84ad ! c 2 39551 b executables ! c 3 3954d 2 ! c 2 84b4 3 *.H ! L 84b4 ! c 2 84b7 3 *.h ! L 84b7 ! c 2 3954c a extensions ! c 2 3954b 6 Header ! c 2 3954a 4 name ! c 2 3940f 6 Header ! c 1 84cc ! c 0 39587 4 ! c 2 3958e 9 surfboard ! c 2 3958d a defaultExe ! c 3 39590 2 ! c 2 84d9 2 e3 ! L 84d9 ! c 2 84dc 9 surfboard ! L 84dc ! c 2 3958f b executables ! c 3 3958b 2 ! c 2 84e3 5 *.htm ! L 84e3 ! c 2 84e6 6 *.html ! L 84e6 ! c 2 3958a a extensions ! c 2 39589 4 Html ! c 2 39588 4 name ! c 2 39410 4 Html ! c 1 84fb ! c 0 395c9 4 ! c 2 395d0 2 e3 ! c 2 395cf a defaultExe ! c 3 395d2 1 ! c 2 8508 2 e3 ! L 8508 ! c 2 395d1 b executables ! c 3 395cd 1 ! c 2 850f 6 *.java ! L 850f ! c 2 395cc a extensions ! c 2 395cb 4 Java ! c 2 395ca 4 name ! c 2 39411 4 Java ! c 1 8524 ! c 0 39603 4 ! c 2 3960a 2 e3 ! c 2 39609 a defaultExe ! c 3 3960c 1 ! c 2 8531 2 e3 ! L 8531 ! c 2 3960b b executables ! c 3 39607 1 ! c 2 8538 5 *.tex ! L 8538 ! c 2 39606 a extensions ! c 2 39605 5 Latex ! c 2 39604 4 name ! c 2 39412 5 Latex ! c 1 854d ! c 0 3963d 4 ! c 2 39644 2 e3 ! c 2 39643 a defaultExe ! c 3 39646 1 ! c 2 855a 2 e3 ! L 855a ! c 2 39645 b executables ! c 3 39641 0 ! c 2 39640 a extensions ! c 2 3963f 5 Other ! c 2 3963e 4 name ! c 2 39413 5 Other ! c 2 39408 a categories ! c 0 39415 1 ! C ProjectDir 4 8577 ! c 2 8578 28 netscript2/src/perl/NetScript/Libraries/ 11 81 ! c 2 8579 0 0 ! c 2 39417 28 netscript2/src/perl/NetScript/Libraries/ ! c 2 39414 b directories ! C DmBag 5 39189 c ! c 2 391bf de b ! C DmDictionary 0 3918b 3 ! C DmString 1 3919d 36 b ! C DmSet 0 85c1 1 ! C DmString 1 85ef 5 Other ! L 85ef ! c 1 3919c a categories ! c 1 3918d f ClassLibrary.pm ! c 1 3918c 4 name ! C DmInteger 2 3919f 1 ! c 1 3919e 9 substMode ! c 2 391f4 eb b ! C DmDictionary 0 391c0 3 ! C DmString 1 391d2 36 b ! C DmSet 0 8600 1 ! C DmString 1 862e 5 Other ! L 862e ! c 1 391d1 a categories ! c 1 391c2 1b ControlStructuresLibrary.pm ! c 1 391c1 4 name ! C DmInteger 2 391d4 1 ! c 1 391d3 9 substMode ! c 2 39229 e2 b ! C DmDictionary 0 391f5 3 ! C DmString 1 39207 36 b ! C DmSet 0 863f 1 ! C DmString 1 866d 5 Other ! L 866d ! c 1 39206 a categories ! c 1 391f7 12 DatabaseLibrary.pm ! c 1 391f6 4 name ! C DmInteger 2 39209 1 ! c 1 39208 9 substMode ! c 2 3925e dd b ! C DmDictionary 0 3922a 3 ! C DmString 1 3923c 36 b ! C DmSet 0 867e 1 ! C DmString 1 86ac 5 Other ! L 86ac ! c 1 3923b a categories ! c 1 3922c e DateLibrary.pm ! c 1 3922b 4 name ! C DmInteger 2 3923e 1 ! c 1 3923d 9 substMode ! c 2 39293 de b ! C DmDictionary 0 3925f 3 ! C DmString 1 39271 36 b ! C DmSet 0 86bd 1 ! C DmString 1 86eb 5 Other ! L 86eb ! c 1 39270 a categories ! c 1 39261 f DebugLibrary.pm ! c 1 39260 4 name ! C DmInteger 2 39273 1 ! c 1 39272 9 substMode ! c 2 392c8 e1 b ! C DmDictionary 0 39294 3 ! C DmString 1 392a6 36 b ! C DmSet 0 86fc 1 ! C DmString 1 872a 5 Other ! L 872a ! c 1 392a5 a categories ! c 1 39296 11 DefaultLibrary.pm ! c 1 39295 4 name ! C DmInteger 2 392a8 1 ! c 1 392a7 9 substMode ! c 2 392fd de b ! C DmDictionary 0 392c9 3 ! C DmString 1 392db 36 b ! C DmSet 0 873b 1 ! C DmString 1 8769 5 Other ! L 8769 ! c 1 392da a categories ! c 1 392cb f FilesLibrary.pm ! c 1 392ca 4 name ! C DmInteger 2 392dd 1 ! c 1 392dc 9 substMode ! c 2 39332 de b ! C DmDictionary 0 392fe 3 ! C DmString 1 39310 36 b ! C DmSet 0 877a 1 ! C DmString 1 87a8 5 Other ! L 87a8 ! c 1 3930f a categories ! c 1 39300 f FormsLibrary.pm ! c 1 392ff 4 name ! C DmInteger 2 39312 1 ! c 1 39311 9 substMode ! c 2 39367 d9 b ! C DmDictionary 0 39333 3 ! C DmString 1 39345 36 b ! C DmSet 0 87b9 1 ! C DmString 1 87e7 5 Other ! L 87e7 ! c 1 39344 a categories ! c 1 39335 a Library.pm ! c 1 39334 4 name ! C DmInteger 2 39347 1 ! c 1 39346 9 substMode ! c 2 3939c e1 b ! C DmDictionary 0 39368 3 ! C DmString 1 3937a 36 b ! C DmSet 0 87f8 1 ! C DmString 1 8826 5 Other ! L 8826 ! c 1 39379 a categories ! c 1 3936a 11 StringsLibrary.pm ! c 1 39369 4 name ! C DmInteger 2 3937c 1 ! c 1 3937b 9 substMode ! c 2 393d1 e3 b ! C DmDictionary 0 3939d 3 ! C DmString 1 393af 36 b ! C DmSet 0 8837 1 ! C DmString 1 8865 5 Other ! L 8865 ! c 1 393ae a categories ! c 1 3939f 13 VariablesLibrary.pm ! c 1 3939e 4 name ! C DmInteger 2 393b1 1 ! c 1 393b0 9 substMode ! c 2 39406 e0 b ! C DmDictionary 0 393d2 3 ! C DmString 1 393e4 39 b ! C DmSet 0 38ff8 1 ! C DmString 1 39172 5 Other ! L 39172 ! c 1 393e3 a categories ! c 1 393d4 e XSLTLibrary.pm ! c 1 393d3 4 name ! C DmInteger 2 393e6 1 ! c 1 393e5 9 substMode ! c 2 39407 5 files ! c 2 39185 94 xterm -ls -fn -*-lucidatypewriter-medium-r-normal-*-12-* -bg gray90 -T Program -geometry 80x10+0+0 -e "[set command with 'Project->Launch Command']" ! c 2 39184 6 launch ! c 2 39181 4 make ! c 2 39180 4 make ! c 2 39183 0 ! c 2 39182 8 makeFile ! c 5 39186 0 ! c 2 39188 7 modules ! c 2 3917f 9 Libraries ! c 2 3917e 4 name |