[Wact-cvs] SF.net SVN: wact: [51] trunk/wact/template/compiler
Status: Pre-Alpha
Brought to you by:
jeffmoore
From: <jef...@us...> - 2006-03-24 20:01:32
|
Revision: 51 Author: jeffmoore Date: 2006-03-24 11:59:36 -0800 (Fri, 24 Mar 2006) ViewCVS: http://svn.sourceforge.net/wact/?rev=51&view=rev Log Message: ----------- Added constructor to WactTemplateNode. Made tagInfo, tag, and sourceLocation instance variables protected. Added accessor methods for these instance variables. Removed getSourceLocationFile and getSourceLocationLine. Modified Paths: -------------- trunk/wact/template/compiler/compiler.inc.php trunk/wact/template/compiler/expression/databinding.inc.php trunk/wact/template/compiler/expression/databinding.test.php trunk/wact/template/compiler/expression/expression.inc.php trunk/wact/template/compiler/expression/output.inc.php trunk/wact/template/compiler/formatter/formatter.inc.php trunk/wact/template/compiler/node/directive.test.php trunk/wact/template/compiler/node/php.inc.php trunk/wact/template/compiler/node/root.test.php trunk/wact/template/compiler/node/tagview.inc.php trunk/wact/template/compiler/node/tagview.test.php trunk/wact/template/compiler/node/template.inc.php trunk/wact/template/compiler/node/template.test.php trunk/wact/template/compiler/node/text.inc.php trunk/wact/template/compiler/node/text.test.php trunk/wact/template/compiler/parser/nodebuilder.inc.php trunk/wact/template/compiler/parser/sourcefile.inc.php trunk/wact/template/compiler/parser/state.test.php trunk/wact/template/compiler/parser/treebuilder.inc.php trunk/wact/template/compiler/parser/treebuilder.test.php trunk/wact/template/compiler/tag/dictionary.test.php Added Paths: ----------- trunk/wact/template/compiler/common/location.inc.php Added: trunk/wact/template/compiler/common/location.inc.php =================================================================== --- trunk/wact/template/compiler/common/location.inc.php (rev 0) +++ trunk/wact/template/compiler/common/location.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -0,0 +1,41 @@ +<?php +/** +* Web Application Component Toolkit +* +* @link http://www.phpwact.org/ +* +* @author Wact Development Team +* @link http://www.phpwact.org/team +* +* @copyright Copyright 2006, Jeff Moore +* @license http://opensource.org/licenses/mit-license.php MIT +* +* @package Template +* @version 0.9 +*/ + +class WactSourceLocation { + + /** + * Used to identify the source template file, when generating compile time + * error messages. + * @var string source template filename + * @access private + */ + var $file; + + /** + * Used to indentify the line number where a compile time error occurred. + * @var int line number + * @access private + */ + var $line; + + function __construct($file, $line) { + $this->file = $file; + $this->line = $line; + } + +} + +?> \ No newline at end of file Property changes on: trunk/wact/template/compiler/common/location.inc.php ___________________________________________________________________ Name: svn:executable + * Modified: trunk/wact/template/compiler/compiler.inc.php =================================================================== --- trunk/wact/template/compiler/compiler.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/compiler.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -109,8 +109,7 @@ $code = new CodeWriter(); $code->setFunctionPrefix(md5($destfile)); - $Tree = GetComponentTree(TRUE); - $Tree->SourceLocation = new WactSourceLocation($sourcefile, ''); + $Tree = new WactRootTemplateNode(NULL, NULL, new WactSourceLocation($sourcefile, 0)); $TreeBuilder = new WactTreeBuilder; $sfp = new SourceFileParser($sourcefile, $TreeBuilder); @@ -133,19 +132,4 @@ writeTemplateFile($destfile, $code->getCode()); } -/** -* Used to maintain a single instance of ComponentTree for a single -* template file. -* Called from CompileTemplateFile and WactTreeBuilder::checkServerId() -* @param boolean (default = FALSE) whether to create a new instance -* @return WactRootTemplateNode -* @access public -*/ -function GetComponentTree($newInstance = FALSE) { - static $Tree = NULL; - if ( $newInstance || is_null($Tree) ) { - $Tree = new WactRootTemplateNode(); - } - return $Tree; -} ?> \ No newline at end of file Modified: trunk/wact/template/compiler/expression/databinding.inc.php =================================================================== --- trunk/wact/template/compiler/expression/databinding.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/expression/databinding.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -81,8 +81,8 @@ } else { require_once 'wact/template/compiler/expression/badbinding.xcpt.php'; throw new WactBadBindingException( - $originalcontext->getSourceLocationFile(), - $originalcontext->getSourceLocationLine(), + $originalcontext->getSourceLocation()->file, + $originalcontext->getSourceLocation()->line, $this->expression ); } @@ -130,8 +130,8 @@ if (is_null($this->property) || !$this->property->isConstant()) { require_once 'wact/template/compiler/expression/unresolvedbinding.xcpt.php'; throw new WactUnresolvedBindingException( - $this->context->getSourceLocationFile(), - $this->context->getSourceLocationLine(), + $this->context->getSourceLocation()->file, + $this->context->getSourceLocation()->line, $this->expression ); } else { Modified: trunk/wact/template/compiler/expression/databinding.test.php =================================================================== --- trunk/wact/template/compiler/expression/databinding.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/expression/databinding.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -7,6 +7,7 @@ require_once 'wact/compiler/codewriter.inc.php'; Mock::Generate('WactTemplateNode', 'MockTemplateNode'); +Mock::GeneratePartial('WactTemplateNode', 'PartialMockTemplateNode', array('getDataSource', 'getProperty')); Mock::Generate('CompilerProperty', 'MockCompilerProperty'); Mock::Generate('WactCodeWriter', 'MockCodeWriter'); @@ -70,7 +71,9 @@ $dataspace = new MockTemplateNode($this); $dataspace->setReturnValue('getProperty', NULL); - $context = new MockTemplateNode($this); + + $context = new PartialMockTemplateNode($this); + $context->__construct(NULL, NULL, new WactSourceLocation('file', 123)); $context->setReturnReference('getDataSource', $dataspace); $DBE = new DataBindingExpression($expression, $context); @@ -91,7 +94,9 @@ $expression = 'Test'; $dataspace = new MockTemplateNode($this); - $context = new MockTemplateNode($this); + + $context = new PartialMockTemplateNode($this); + $context->__construct(NULL, NULL, new WactSourceLocation('file', 123)); $context->setReturnReference('getDataSource', $dataspace); $context->setReturnValue('getProperty', NULL); $context->expectAtLeastOnce('getProperty', array('Test')); Modified: trunk/wact/template/compiler/expression/expression.inc.php =================================================================== --- trunk/wact/template/compiler/expression/expression.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/expression/expression.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -86,15 +86,15 @@ $this->filterChain = $base; } else { $filter = new $filter_class(); - $filter->SourceLocation = $ComponentContext->SourceLocation; + $filter->sourceLocation = $ComponentContext->getSourceLocation(); $filter->registerBase($base); $this->filterChain = $filter; } } else { require_once 'wact/template/compiler/expression/missingfilter.xcpt.php'; throw new WactMissingFilterException( - $ComponentContext->getSourceLocationFile(), - $ComponentContext->getSourceLocationLine(), + $ComponentContext->getSourceLocation()->file, + $ComponentContext->getSourceLocation()->line, $DefaultFilter ); } @@ -157,8 +157,8 @@ if ( is_null($Fp->Name) ) { require_once 'wact/template/compiler/expression/invalidfilterspec.xcpt.php'; throw new WactInvalidFilterSpecException( - $ComponentContext->getSourceLocationFile(), - $ComponentContext->getSourceLocationLine() + $ComponentContext->getSourceLocation()->file, + $ComponentContext->getSourceLocation()->llne ); return $Value; } @@ -168,8 +168,8 @@ if (!is_object($FilterInfo)) { require_once 'wact/template/compiler/expression/missingfilter.xcpt.php'; throw new WactMissingFilterException( - $ComponentContext->getSourceLocationFile(), - $ComponentContext->getSourceLocationLine(), + $ComponentContext->getSourceLocation()->file, + $ComponentContext->getSourceLocation()->line, $Fp->Name ); return $Value; @@ -187,8 +187,8 @@ if ( $numArgs < $FilterInfo->MinParameterCount ) { require_once 'wact/template/compiler/expression/missingfilterparameter.xcpt.php'; throw new WactMissingFilterParameterException( - $ComponentContext->getSourceLocationFile(), - $ComponentContext->getSourceLocationLine(), + $ComponentContext->getSourceLocation()->file, + $ComponentContext->getSourceLocation()->line, $Fp->Name ); return $Value; @@ -197,8 +197,8 @@ if ($numArgs > $FilterInfo->MaxParameterCount) { require_once 'wact/template/compiler/expression/toomanyparameters.xcpt.php'; throw new WactTooManyParametersException( - $ComponentContext->getSourceLocationFile(), - $ComponentContext->getSourceLocationLine(), + $ComponentContext->getSourceLocation()->file, + $ComponentContext->getSourceLocation()->line, $Fp->Name ); return $Value; Modified: trunk/wact/template/compiler/expression/output.inc.php =================================================================== --- trunk/wact/template/compiler/expression/output.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/expression/output.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -37,10 +37,13 @@ /** */ - function __construct($expression, $filterDictionary) { + function __construct($tag, $tagInfo, $sourceLocation, $expression, $filterDictionary) { + parent::__construct($tag, $tagInfo, $sourceLocation); $this->expression = new Expression($expression, $this, $filterDictionary, 'html'); } + /** + */ function prepare() { $this->expression->prepare(); parent::prepare(); Modified: trunk/wact/template/compiler/formatter/formatter.inc.php =================================================================== --- trunk/wact/template/compiler/formatter/formatter.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/formatter/formatter.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -20,7 +20,7 @@ var $base; var $parameters = array(); - var $SourceLocation; + var $sourceLocation; function registerBase($base) { $this->base = $base; Modified: trunk/wact/template/compiler/node/directive.test.php =================================================================== --- trunk/wact/template/compiler/node/directive.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/directive.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -13,7 +13,8 @@ class WactDirectiveTemplateNodeTestCase extends UnitTestCase { function setUp() { - $this->component = new WactDirectiveTemplateNode(); + $this->component = new WactDirectiveTemplateNode('testtag', NULL, + new WactSourceLocation('file', 123)); } function tearDown() { Modified: trunk/wact/template/compiler/node/php.inc.php =================================================================== --- trunk/wact/template/compiler/node/php.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/php.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -39,7 +39,8 @@ * @param string contents of the PHP node * @access protected */ - function __construct($text) { + function __construct($tag, $tagInfo, $sourceLocation, $text) { + parent::__construct($tag, $tagInfo, $sourceLocation); $this->contents = $text; } Modified: trunk/wact/template/compiler/node/root.test.php =================================================================== --- trunk/wact/template/compiler/node/root.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/root.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -9,7 +9,8 @@ class WactRootTemplateNodeTestCase extends UnitTestCase { function setUp() { - $this->component = new WactRootTemplateNode(); + $this->component = new WactRootTemplateNode(NULL, NULL, + new WactSourceLocation('file', 0)); } function tearDown() { Modified: trunk/wact/template/compiler/node/tagview.inc.php =================================================================== --- trunk/wact/template/compiler/node/tagview.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/tagview.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -95,7 +95,7 @@ parent::generateConstructor($code); // Determine which attributes should not propigate to runtime - $CompileTimeAttributes = $this->TagInfo->CompilerAttributes; + $CompileTimeAttributes = $this->tagInfo->CompilerAttributes; // Add the runat attribute to the list of attributes to filter out $CompileTimeAttributes[] = PARSER_TRIGGER_ATTR_NAME; Modified: trunk/wact/template/compiler/node/tagview.test.php =================================================================== --- trunk/wact/template/compiler/node/tagview.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/tagview.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -16,10 +16,12 @@ function setUp() { $this->component = new WactTagViewTemplateNodeTestVersion($this); + $this->component->__construct( + 'test', + new TagInfo('test', 'testclass'), + new WactSourceLocation('file', 123)); + $this->component->hasClosingTag = TRUE; $this->component->setReturnValue('getServerId','id001'); - $this->component->tag = 'test'; - $this->component->hasClosingTag = TRUE; - $this->component->TagInfo = new TagInfo('test', 'testclass'); $MockParent = new MockTemplateNode($this); $MockParent->setReturnValue('getComponentRefCode','$DataSpace'); Modified: trunk/wact/template/compiler/node/template.inc.php =================================================================== --- trunk/wact/template/compiler/node/template.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/template.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -18,6 +18,7 @@ * file level includes */ require_once 'wact/template/compiler/node/attribute.inc.php'; +require_once 'wact/template/compiler/common/location.inc.php'; /** * Base class for compile time components. Compile time component methods are @@ -73,17 +74,15 @@ * Name of the XML tag as it appears in the template. This would include * the namespace prefix, if applicable. * @var string tag name - * @access private */ - var $tag = ''; + protected $tag; /** * Used to identify the source template file, when generating compile time * error messages. - * @var string source template filename - * @access private + * @var */ - var $SourceLocation; + protected $sourceLocation; /** * Defines whether the tag is allowed to have a closing tag @@ -103,7 +102,7 @@ * TagInfo metadata for this component * @var TagInfo */ - var $TagInfo = NULL; + protected $tagInfo = NULL; /** * Counter for generating unique id numbers @@ -112,32 +111,26 @@ private static $serverIdCounter = 1; /** - * Returns the file name of the internal SourceLocation object - * or the string 'unknown file' - * - * @return string SourceLocation file name - */ - function getSourceLocationFile() { - if (!is_object($this->SourceLocation)) { - return 'unknown file'; - } - - return $this->SourceLocation->file; + */ + function __construct($tag, $tagInfo, $sourceLocation) { + $this->tag = $tag; + $this->tagInfo = $tagInfo; + $this->sourceLocation = $sourceLocation; } - + /** - * Returns the line number of the internal SourceLocation object - * or the string 'unknown line' - * - * @return string SourceLocation line number - */ - function getSourceLocationLine() { - if (!is_object($this->SourceLocation)) { - return 'unknown line'; - } - - return $this->SourceLocation->line; + * Returns an object representing the source location of this object. + */ + function getSourceLocation() { + return $this->sourceLocation; } + + /** + * Returns the tag used to define this object. + */ + function getTag() { + return $this->tag; + } /** * Sets the XML attributes for this component (as extracted from the @@ -151,8 +144,8 @@ if (isset($this->attributeNodes[$attrib])) { require_once 'wact/template/compiler/node/duplicateattribute.xcpt.php'; throw new WactDuplicateAttributeException( - $this->getSourceLocationFile(), - $this->getSourceLocationLine(), + $this->sourceLocation->file, + $this->sourceLocation->line, $this->tag, $attrib ); Modified: trunk/wact/template/compiler/node/template.test.php =================================================================== --- trunk/wact/template/compiler/node/template.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/template.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -1,6 +1,7 @@ <?php require_once 'wact/template/compiler/node/template.inc.php'; +require_once 'wact/template/compiler/common/location.inc.php'; require_once 'wact/compiler/codewriter.inc.php'; Mock::generate('WactTemplateNode', 'MockTemplateNode'); @@ -8,93 +9,106 @@ class WactTemplateNodeTestCase extends UnitTestCase { + protected $node; + function setUp() { - $this->component = new WactTemplateNode(); + $this->node = new WactTemplateNode('tagtag', NULL, + new WactSourceLocation('filename', 123)); } function tearDown() { - unset ( $this->component ); + unset($this->node); } function testGetClientId() { - $this->component->setAttribute('id', 'TestId'); - $this->assertEqual($this->component->getClientId(), 'TestId'); + $this->node->setAttribute('id', 'TestId'); + $this->assertEqual($this->node->getClientId(), 'TestId'); } function testGetClientIdUnset() { - $this->assertNull($this->component->getClientId()); + $this->assertNull($this->node->getClientId()); } function testGetServerIdFromId() { - $this->component->setAttribute('id', 'TestId'); - $this->assertEqual($this->component->getServerId(), 'TestId'); + $this->node->setAttribute('id', 'TestId'); + $this->assertEqual($this->node->getServerId(), 'TestId'); } function testGetServerIdFromWactId() { - $this->component->setAttribute('wact:id', 'TestId'); - $this->assertEqual($this->component->getServerId(), 'TestId'); + $this->node->setAttribute('wact:id', 'TestId'); + $this->assertEqual($this->node->getServerId(), 'TestId'); } function testGetServerIdGenerated() { - $id = $this->component->getServerId(); - $this->assertEqual($this->component->getServerId(), $id); + $id = $this->node->getServerId(); + $this->assertEqual($this->node->getServerId(), $id); } function testFindChild() { - $mock = new MockTemplateNode($this); - $mock->setReturnValue('getServerId', 'Test'); - $this->component->addChild($mock); - $this->assertIsA($this->component->findChild('Test'), 'MockTemplateNode'); + $child = new MockTemplateNode($this); + $child->setReturnValue('getServerId', 'Test'); + + $this->node->addChild($child); + + $this->assertIsA($this->node->findChild('Test'), 'MockTemplateNode'); } function testFindChildNotFound() { - $this->assertFalse($this->component->findChild('Test')); + $this->assertFalse($this->node->findChild('Test')); } function testFindChildByClass() { - $mock = new MockTemplateNode($this); - $this->component->addChild($mock); - $this->assertIsA($this->component->findChildByClass('MockTemplateNode'), 'MockTemplateNode'); + $child = new MockTemplateNode($this); + + $this->node->addChild($child); + + $this->assertIsA($this->node->findChildByClass('MockTemplateNode'), 'MockTemplateNode'); } function testFindChildByClassNotFound() { - $this->assertFalse($this->component->findChildByClass('MockTemplateNode')); + $this->assertFalse($this->node->findChildByClass('MockTemplateNode')); } function testFindParentByChilld() { - $parent = new WactTemplateNode(); - $parent->addChild($this->component); - $this->assertIsA($this->component->findParentByClass('WactTemplateNode'), 'WactTemplateNode'); + $parent = new WactTemplateNode('childtag', NULL, new WactSourceLocation('file', 1)); + $parent->addChild($this->node); + $this->assertIsA($this->node->findParentByClass('WactTemplateNode'), 'WactTemplateNode'); } function testFindParentByClassNotFound() { - $this->assertFalse($this->component->findParentByClass('Test')); + $this->assertFalse($this->node->findParentByClass('Test')); } function testRemoveChild() { - $mock = new MockTemplateNode($this); - $mock->setReturnValue('getServerId', 'Test'); - $this->component->addChild($mock); - $this->assertIsA($this->component->removeChild('Test'), 'MockTemplateNode'); + $child = new MockTemplateNode($this); + $child->setReturnValue('getServerId', 'Test'); + + $this->node->addChild($child); + + $this->assertIsA($this->node->removeChild('Test'), 'MockTemplateNode'); } function testGetChildren() { - $mock = new MockTemplateNode($this); - $this->component->addChild($mock); - $children = $this->component->getChildren(); - $this->assertReference($mock, $children[0]); + $child = new MockTemplateNode($this); + + $this->node->addChild($child); + + $children = $this->node->getChildren(); + $this->assertReference($child, $children[0]); } function testPrepare() { - $child =new MockTemplateNode($this); - $this->component->addChild($child); + $child = new MockTemplateNode($this); $child->expectCallCount('prepare', 1); - $this->component->prepare(); + + $this->node->addChild($child); + $this->node->prepare(); + $child->tally(); } function testPreParse() { - $this->assertEqual($this->component->preParse(NULL), WactTemplateNode::REQUIRE_PARSING); + $this->assertEqual($this->node->preParse(NULL), WactTemplateNode::REQUIRE_PARSING); } function testGetDataSource() { @@ -102,8 +116,8 @@ $parent = new MockTemplateNode($this); $mockds = new MockDataSource($this); $parent->setReturnValue('getDataSource', $mockds); - $this->component->parent = $parent; - $this->assertIsA($this->component->getDataSource(), 'MockDataSource'); + $this->node->parent = $parent; + $this->assertIsA($this->node->getDataSource(), 'MockDataSource'); */ } @@ -115,78 +129,91 @@ $testparent->expectCallCount('getDataSource', 1); $mockds->parent = $testparent; $parent->setReturnValue('getDataSource', $mockds); - $this->component->parent = $parent; + $this->node->parent = $parent; */ } function testGetRootDataSource() { - $parent =new MockTemplateNode($this); + $parent = new MockTemplateNode($this); $parent->parent = NULL; - $this->component->parent = $parent; - $this->assertIsA($this->component->getRootDataSource(), 'MockTemplateNode'); + $this->node->parent = $parent; + + $this->assertIsA($this->node->getRootDataSource(), 'MockTemplateNode'); } function testgetDataSourceRefCode() { - $parent =new MockTemplateNode($this); + $parent = new MockTemplateNode($this); $parent->setReturnValue('getDataSourceRefCode', 'Test'); - $this->component->parent = $parent; - $this->assertEqual($this->component->getDataSourceRefCode(), 'Test'); + $this->node->parent = $parent; + + $this->assertEqual($this->node->getDataSourceRefCode(), 'Test'); } function testGenerateConstructor() { $code = new MockCodeWriter($this); + $child = new MockTemplateNode($this); $child->expectCallCount('generateConstructor', 1); - $this->component->addChild($child); - $this->component->generateConstructor($code); + + $this->node->addChild($child); + $this->node->generateConstructor($code); + $child->tally(); } function testGenerateContents() { $code = new MockCodeWriter($this); + $child = new MockTemplateNode($this); $child->expectCallCount('generate', 1); - $this->component->addChild($child); - $this->component->generateContents($code); + + $this->node->addChild($child); + $this->node->generateContents($code); + $child->tally(); } function testGenerate(){ $code = new MockCodeWriter($this); + $child = new MockTemplateNode($this); $child->expectCallCount('generate', 1); - $this->component->addChild($child); - $this->component->generate($code); + + $this->node->addChild($child); + $this->node->generate($code); + $child->tally(); } function testGetAttribute() { - $this->component->setAttribute('foo', 'bar'); - $this->assertEqual($this->component->getAttribute('foo'), 'bar'); - $this->assertEqual($this->component->getAttribute('FOO'), 'bar'); + $this->node->setAttribute('foo', 'bar'); + + $this->assertEqual($this->node->getAttribute('foo'), 'bar'); + $this->assertEqual($this->node->getAttribute('FOO'), 'bar'); } function testGetAttributeUnset() { - $this->assertNull($this->component->getAttribute('foo')); + $this->assertNull($this->node->getAttribute('foo')); } function testHasAttribute() { - $this->component->setAttribute('foo', 'bar'); - $this->component->setAttribute('tricky', NULL); - $this->assertTrue( $this->component->hasAttribute('foo')); - $this->assertTrue( $this->component->hasAttribute('tricky')); - $this->assertFalse( $this->component->hasAttribute('missing')); - $this->assertTrue( $this->component->hasAttribute('FOO')); - $this->assertTrue( $this->component->hasAttribute('TRICKY')); - $this->assertFalse( $this->component->hasAttribute('MISSING')); + $this->node->setAttribute('foo', 'bar'); + $this->node->setAttribute('tricky', NULL); + + $this->assertTrue( $this->node->hasAttribute('foo')); + $this->assertTrue( $this->node->hasAttribute('tricky')); + $this->assertFalse( $this->node->hasAttribute('missing')); + $this->assertTrue( $this->node->hasAttribute('FOO')); + $this->assertTrue( $this->node->hasAttribute('TRICKY')); + $this->assertFalse( $this->node->hasAttribute('MISSING')); } function testDuplicateAttribute() { // Once set, attributes at compile time are immutable. - $this->component->setAttribute('SAME', 'value 1'); + $this->node->setAttribute('SAME', 'value 1'); try { - $this->component->setAttribute('same', 'value 2'); + $this->node->setAttribute('same', 'value 2'); $this->fail('Expected exception not thrown'); } catch (WactDuplicateAttributeException $e) { $this->pass(); @@ -194,47 +221,47 @@ } function testRemoveAttribute() { - $this->component->setAttribute('foo', 'bar'); - $this->component->setAttribute('untouched', 'value'); - $this->assertTrue( $this->component->hasAttribute('foo')); - $this->component->removeAttribute('FOO'); - $this->assertFalse( $this->component->hasAttribute('foo')); + $this->node->setAttribute('foo', 'bar'); + $this->node->setAttribute('untouched', 'value'); + $this->assertTrue( $this->node->hasAttribute('foo')); + $this->node->removeAttribute('FOO'); + $this->assertFalse( $this->node->hasAttribute('foo')); } function testBooleanAttribute() { //true cases - $this->component->setAttribute('A', NULL); - $this->component->setAttribute('B', 'True'); - $this->component->setAttribute('C', 'Something'); + $this->node->setAttribute('A', NULL); + $this->node->setAttribute('B', 'True'); + $this->node->setAttribute('C', 'Something'); //false cases - $this->component->setAttribute('D', 'False'); - $this->component->setAttribute('F', 'n'); - $this->component->setAttribute('G', 'No'); - $this->component->setAttribute('H', 'none'); - $this->component->setAttribute('I', '0'); + $this->node->setAttribute('D', 'False'); + $this->node->setAttribute('F', 'n'); + $this->node->setAttribute('G', 'No'); + $this->node->setAttribute('H', 'none'); + $this->node->setAttribute('I', '0'); //assertions - $this->assertTrue( $this->component->getBoolAttribute('A')); - $this->assertTrue( $this->component->getBoolAttribute('B')); - $this->assertTrue( $this->component->getBoolAttribute('C')); - $this->assertFalse( $this->component->getBoolAttribute('D')); - $this->assertFalse( $this->component->getBoolAttribute('E')); - $this->assertFalse( $this->component->getBoolAttribute('F')); - $this->assertFalse( $this->component->getBoolAttribute('G')); - $this->assertFalse( $this->component->getBoolAttribute('H')); - $this->assertFalse( $this->component->getBoolAttribute('I')); + $this->assertTrue( $this->node->getBoolAttribute('A')); + $this->assertTrue( $this->node->getBoolAttribute('B')); + $this->assertTrue( $this->node->getBoolAttribute('C')); + $this->assertFalse( $this->node->getBoolAttribute('D')); + $this->assertFalse( $this->node->getBoolAttribute('E')); + $this->assertFalse( $this->node->getBoolAttribute('F')); + $this->assertFalse( $this->node->getBoolAttribute('G')); + $this->assertFalse( $this->node->getBoolAttribute('H')); + $this->assertFalse( $this->node->getBoolAttribute('I')); } function testAddChildAttribute() { $attrib = new AttributeNode('Foo', 'bar'); - $this->component->addChildAttribute($attrib); - $this->assertEqual($this->component->getAttribute('FOO'), 'bar'); + $this->node->addChildAttribute($attrib); + $this->assertEqual($this->node->getAttribute('FOO'), 'bar'); } function testGetAttributesAsArray() { - $this->component->setAttribute('foo', 'bar'); - $this->component->setAttribute('tricky', NULL); + $this->node->setAttribute('foo', 'bar'); + $this->node->setAttribute('tricky', NULL); $this->assertIdentical( - $this->component->getAttributesAsArray(array('tricky')), + $this->node->getAttributesAsArray(array('tricky')), array('foo' => 'bar')); } } Modified: trunk/wact/template/compiler/node/text.inc.php =================================================================== --- trunk/wact/template/compiler/node/text.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/text.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -39,7 +39,8 @@ * @param string contents of the text node * @access protected */ - function __construct($text) { + function __construct($tag, $tagInfo, $sourceLocation, $text) { + parent::__construct($tag, $tagInfo, $sourceLocation); $this->contents = $text; } Modified: trunk/wact/template/compiler/node/text.test.php =================================================================== --- trunk/wact/template/compiler/node/text.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/node/text.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -6,8 +6,11 @@ Mock::generate('WactCodeWriter', 'MockCodeWriter'); class TextNodeTestCase extends UnitTestCase { + function setUp() { - $this->component = new TextNode('test'); + $this->component = new TextNode(NULL, NULL, + new WactSourceLocation('file', 123), + 'test'); } function tearDown() { Modified: trunk/wact/template/compiler/parser/nodebuilder.inc.php =================================================================== --- trunk/wact/template/compiler/parser/nodebuilder.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/parser/nodebuilder.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -28,31 +28,6 @@ define('WACT_EXPPARSER_AFTER_CONTENT', 5); /**#@-*/ -class WactSourceLocation { - - /** - * Used to identify the source template file, when generating compile time - * error messages. - * @var string source template filename - * @access private - */ - var $file; - - /** - * Used to indentify the line number where a compile time error occurred. - * @var int line number - * @access private - */ - var $line; - - function __construct($file, $line) { - $this->file = $file; - $this->line = $line; - } - -} - - /** * Responsible for building nodes of the component tree. * WactTreeBuilder is responsible for the tree structure. @@ -167,11 +142,15 @@ $TreeBuilder->addTextNode($match[WACT_EXPPARSER_BEFORE_CONTENT]); } - $expression = new OutputExpression($match[WACT_EXPPARSER_EXPRESSION], - $this->filterDictionary); - $expression->SourceLocation = new WactSourceLocation( + $location = new WactSourceLocation( $this->locator->getPublicId(), $this->locator->getLineNumber()); + + $expression = new OutputExpression( + NULL, NULL, + $location, + $match[WACT_EXPPARSER_EXPRESSION], + $this->filterDictionary); $TreeBuilder->addNode($expression); @@ -202,7 +181,7 @@ $php = 'echo "<?'.$target.' '; // Whitespace assumption $php.= str_replace('"','\"',$instruction); $php.= '?>\n";'; // Newline assumption - $TreeBuilder->addNode(new PHPNode($php)); + $TreeBuilder->addNode(new PHPNode(NULL, NULL, NULL, $php)); } } @@ -216,11 +195,11 @@ function createComponent($TagInfo, $tag) { $class = $TagInfo->TagClass; $component = new $class(); - $component->SourceLocation = new WactSourceLocation( + $component->sourceLocation = new WactSourceLocation( $this->locator->getPublicId(), $this->locator->getLineNumber()); $component->tag = $tag; - $component->TagInfo = $TagInfo; + $component->tagInfo = $TagInfo; $properties = $this->propertyDictionary->getPropertyList($tag); foreach ($properties as $property) { $property->load(); Modified: trunk/wact/template/compiler/parser/sourcefile.inc.php =================================================================== --- trunk/wact/template/compiler/parser/sourcefile.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/parser/sourcefile.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -122,8 +122,8 @@ if ($tagCountBeforeParse != $this->TreeBuilder->getExpectedTagCount()) { require_once 'wact/template/compiler/parser/missingclosingtag.xcpt.php'; throw new WactMissingClosingTagException( - $ComponentRoot->getSourceLocationFile(), - $ComponentRoot->getSourceLocationLine(), + $ComponentRoot->getSourceLocation()->file, + $ComponentRoot->getSourceLocation()->line, $this->TreeBuilder->getExpectedTag() ); } Modified: trunk/wact/template/compiler/parser/state.test.php =================================================================== --- trunk/wact/template/compiler/parser/state.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/parser/state.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -182,9 +182,7 @@ function testEndElementNoMatch() { - $Component = new WactTemplateNode(); - $Component->tag = 'testtag'; - $Component->SourceLocation = new WactSourceLocation('file', 123); + $Component = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); $TreeBuilder = new WactTreeBuilder(); $TreeBuilder->setCursor($Component); Modified: trunk/wact/template/compiler/parser/treebuilder.inc.php =================================================================== --- trunk/wact/template/compiler/parser/treebuilder.inc.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/parser/treebuilder.inc.php 2006-03-24 19:59:36 UTC (rev 51) @@ -133,7 +133,7 @@ if (isset($this->lastAddedChild) && is_a($this->lastAddedChild, 'TextNode')) { $this->lastAddedChild->append($text); } else { - $TextNode = new TextNode($text); + $TextNode = new TextNode(NULL, NULL, NULL, $text); $this->addNode($TextNode); } } @@ -207,8 +207,8 @@ // Prossibly only for malformed test cases? // In which case, we shouldn't test for it. if (isset($this->component->tag)) { - $file = $this->component->SourceLocation->file; - $line = $this->component->SourceLocation->line; + $file = $this->component->sourceLocation->file; + $line = $this->component->sourceLocation->line; } else { $file = $this->locator->getPublicId(); $line = $this->locator->getLineNumber(); @@ -265,8 +265,8 @@ if (in_array($id, $childServerIds)) { require_once 'wact/template/compiler/parser/duplicateserverid.xcpt.php'; throw new WactDuplicateServerIdException( - $children[$key]->SourceLocation->file, - $children[$key]->SourceLocation->line, + $children[$key]->sourceLocation->file, + $children[$key]->sourceLocation->line, $children[$key]->tag, $id ); Modified: trunk/wact/template/compiler/parser/treebuilder.test.php =================================================================== --- trunk/wact/template/compiler/parser/treebuilder.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/parser/treebuilder.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -100,10 +100,10 @@ // the cursor returns where it was before step (2) // (5) New components added should appear under this orig point. - $Root = new WactTemplateNode(); - $InsertionPoint = new WactTemplateNode(); - $ChildOne = new WactTemplateNode(); - $ChildTwo = new WactTemplateNode(); + $Root = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); + $InsertionPoint = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); + $ChildOne = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); + $ChildTwo = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); // set up an open tag at root $this->TreeBuilder->setCursor($Root); @@ -167,7 +167,7 @@ } function testCheckServerIds() { - $Root = new WactTemplateNode(); + $Root = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); $ChildOne = new MockTemplateNode($this); $ChildOne->setReturnValue('getChildren', array()); $ChildTwo = new MockTemplateNode($this); @@ -188,18 +188,18 @@ } function testDuplicateServerIdsError() { - $Root = new WactTemplateNode(); + $Root = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); $ChildOne = new MockTemplateNode($this); $ChildOne->tag = 'testtag'; - $ChildOne->SourceLocation = new WactSourceLocation('file', 123); + $ChildOne->sourceLocation = new WactSourceLocation('file', 123); $ChildOne->setReturnValue('getChildren', array()); $ChildOne->setReturnValue('getServerId', 'dup'); $Root->addChild($ChildOne); $ChildTwo = new MockTemplateNode($this); $ChildTwo->tag = 'testtag'; - $ChildTwo->SourceLocation = new WactSourceLocation('file', 123); + $ChildTwo->sourceLocation = new WactSourceLocation('file', 123); $ChildTwo->setReturnValue('getChildren', array()); $ChildTwo->setReturnValue('getServerId', 'dup'); $Root->addChild($ChildTwo); @@ -218,9 +218,9 @@ } function testDuplicateIdIsLegalInDifferentBranch() { - $Root = new WactTemplateNode(); + $Root = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); - $Branch = new WactTemplateNode(); + $Branch = new WactTemplateNode('testtag', NULL, new WactSourceLocation('file', 123)); $ChildOne = new MockTemplateNode($this); $ChildOne->setReturnValue('getChildren', array()); $Branch->addChild($ChildOne); Modified: trunk/wact/template/compiler/tag/dictionary.test.php =================================================================== --- trunk/wact/template/compiler/tag/dictionary.test.php 2006-03-24 02:33:59 UTC (rev 50) +++ trunk/wact/template/compiler/tag/dictionary.test.php 2006-03-24 19:59:36 UTC (rev 51) @@ -23,21 +23,21 @@ } function testNotATag() { - $KnownParent = new WactTagViewTemplateNode($this); + $KnownParent = new WactTagViewTemplateNode(NULL, NULL, NULL); $tag = 'notatag'; $attrs = array(); $this->assertFalse($this->dict->findComponent($tag, $attrs, FALSE, $KnownParent)); } function testRunatEqualsClient() { - $KnownParent = new WactTagViewTemplateNode($this); + $KnownParent = new WactTagViewTemplateNode(NULL, NULL, NULL); $tag = 'foo'; $attrs = array('runat'=>'client'); $this->assertNull($this->dict->findComponent($tag, $attrs, FALSE, $KnownParent)); } function testComponentWithRunatServer() { - $KnownParent = new WactTagViewTemplateNode($this); + $KnownParent = new WactTagViewTemplateNode(NULL, NULL, NULL); $this->dict->_registerTag(new TagInfo('isatag', 'blah')); $tag = 'iSaTag'; $attrs = array('runat'=>'server'); @@ -45,14 +45,14 @@ } function testGenericTag() { - $KnownParent = new WactTagViewTemplateNode($this); + $KnownParent = new WactTagViewTemplateNode(NULL, NULL, NULL); $tag = 'iSaGenericTag'; $attrs = array('runat' => 'server'); $this->assertIsA($this->dict->findComponent($tag, $attrs, TRUE, $KnownParent), 'TagInfo'); } function testGenericContainerTag() { - $KnownParent = new WactTagViewTemplateNode($this); + $KnownParent = new WactTagViewTemplateNode(NULL, NULL, NULL); $tag = 'iSaGenericContainerTag'; $attrs = array('runat'=>'server'); $this->assertIsA($this->dict->findComponent($tag, $attrs, FALSE, $KnownParent), 'TagInfo'); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |