Skip to content

Commit

Permalink
refactoring some tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
figdice committed May 16, 2014
1 parent e8137ea commit 40f4cb6
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 38 deletions.
6 changes: 4 additions & 2 deletions src/figdice/classes/TagFigInclude.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
namespace figdice\classes;

use figdice\View;
use figdice\exceptions\RequiredAttributeException;

class TagFigInclude extends TagFig {
const TAGNAME = 'include';
Expand All @@ -35,8 +36,9 @@ public function __construct($xmlLineNumber) {
public function validate()
{
// "file" attribute is mandatory.
if (! $this->hasAttribute('file')) {
throw new Exception('TODO: MISSING ATTRIBUTE');
if (! $this->hasAttribute('file')) {
//TODO: validate() should be invoked with a filename ?
throw new RequiredAttributeException(self::TAGNAME, ''/*$filename*/, $this->getLineNumber(), '"file" attribute is missing in include tag.');
}
}

Expand Down
14 changes: 7 additions & 7 deletions src/figdice/classes/functions/Function_first.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2013, Gabriel Zerbib.
* @version 2.0.0
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -24,8 +24,8 @@
namespace figdice\classes\functions;

use \figdice\FigFunction;
use \figdice\classes\ViewElementTag;
use \figdice\LoggerFactory;
use \figdice\classes\Tag;
use \figdice\classes\Renderer;

class Function_first implements FigFunction {
public function __construct() {
Expand All @@ -36,8 +36,8 @@ public function __construct() {
* @param integer $arity
* @param array $arguments
*/
public function evaluate(ViewElementTag $viewElement, $arity, $arguments) {
$iteration = $viewElement->getIteration();
public function evaluate(Tag $viewElement, Renderer $renderer, $arity, $arguments) {
$iteration = $renderer->getIteration();
return $iteration->first();
}
}
}
17 changes: 10 additions & 7 deletions src/figdice/classes/lexer/TokenAnd.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2013, Gabriel Zerbib.
* @version 2.0.0
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -22,22 +22,25 @@
*/

namespace figdice\classes\lexer;
use \figdice\classes\ViewElementTag;

use \figdice\classes\Tag;
use \figdice\classes\Renderer;

class TokenAnd extends TokenBinop {
public function __construct() {
parent::__construct(self::PRIORITY_AND_OR);
}

/**
* @param ViewElement $viewElement
* @param Tag $viewElement
* @param Renderer $renderer
* @return mixed
*/
public function evaluate(ViewElementTag $viewElement) {
public function evaluate(Tag $viewElement, Renderer $renderer) {
$opL = $this->operands[0];
if(true == $opL->evaluate($viewElement)) {
if(true == $opL->evaluate($viewElement, $renderer)) {
$opR = $this->operands[1];
return (true == $opR->evaluate($viewElement));
return (true == $opR->evaluate($viewElement, $renderer));
}
return false;
}
Expand Down
17 changes: 10 additions & 7 deletions src/figdice/classes/lexer/TokenComparisonBinop.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2013, Gabriel Zerbib.
* @version 2.0.0
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -22,7 +22,8 @@
*/

namespace figdice\classes\lexer;
use \figdice\classes\ViewElementTag;
use \figdice\classes\Tag;
use \figdice\classes\Renderer;
use \figdice\exceptions\LexerArrayToStringConversionException;


Expand All @@ -36,9 +37,9 @@ public function __construct($comparator) {
parent::__construct(self::PRIORITY_COMPARATOR);
$this->comparator = $comparator;
}
public function evaluate(ViewElementTag $viewElement) {
$opL = $this->operands[0]->evaluate($viewElement);
$opR = $this->operands[1]->evaluate($viewElement);
public function evaluate(Tag $viewElement, Renderer $renderer) {
$opL = $this->operands[0]->evaluate($viewElement, $renderer);
$opR = $this->operands[1]->evaluate($viewElement, $renderer);

switch($this->comparator) {
case 'gt' : return ($opL > $opR);
Expand All @@ -61,7 +62,9 @@ public function evaluate(ViewElementTag $viewElement) {
if(is_array($opL) || is_array($opR)) {
//But if the other is an array, we cannot convert Array to String
//to perform the comparison, so we throw an error.
throw new LexerArrayToStringConversionException();

throw new LexerArrayToStringConversionException('Array to string conversion exception in file: ' .
$renderer->getView()->getFilename() . '('.$viewElement->getLineNumber().')');
}
else {
return (0 === strcmp($opL, $opR));
Expand Down
16 changes: 9 additions & 7 deletions src/figdice/classes/lexer/TokenDiv.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2013, Gabriel Zerbib.
* @version 2.0.0
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -22,7 +22,9 @@
*/

namespace figdice\classes\lexer;
use \figdice\classes\ViewElementTag;

use \figdice\classes\Tag;
use \figdice\classes\Renderer;

class TokenDiv extends TokenBinop {
/**
Expand All @@ -35,14 +37,14 @@ public function __construct() {
* @param ViewElement $viewElement
* @return mixed
*/
public function evaluate(ViewElementTag $viewElement) {
public function evaluate(Tag $viewElement, Renderer $renderer) {
$opL = $this->operands[0];
$opR = $this->operands[1];

$valR = $opR->evaluate($viewElement);
$valR = $opR->evaluate($viewElement, $renderer);
if($valR == 0) {
return 0;
}
return $opL->evaluate($viewElement) / $valR;
return $opL->evaluate($viewElement, $renderer) / $valR;
}
}
}
14 changes: 8 additions & 6 deletions src/figdice/classes/lexer/TokenMul.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?php
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2013, Gabriel Zerbib.
* @version 2.0.0
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -22,7 +22,8 @@
*/

namespace figdice\classes\lexer;
use \figdice\classes\ViewElementTag;
use \figdice\classes\Tag;
use \figdice\classes\Renderer;

class TokenMul extends TokenOperator {
public function __construct() {
Expand All @@ -33,10 +34,11 @@ public function getNumOperands() {
}

/**
* @param ViewElement $viewElement
* @param Tag $viewElement
* @param Renderer $renderer
* @return mixed
*/
public function evaluate(ViewElementTag $viewElement) {
return $this->operands[0]->evaluate($viewElement) * $this->operands[1]->evaluate($viewElement);
public function evaluate(Tag $viewElement, Renderer $renderer) {
return $this->operands[0]->evaluate($viewElement, $renderer) * $this->operands[1]->evaluate($viewElement, $renderer);
}
}
6 changes: 4 additions & 2 deletions test/UserDefinedFunctionFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
/**
* @author Gabriel Zerbib <gabriel@figdice.org>
* @copyright 2004-2014, Gabriel Zerbib.
* @version 2.0.3
* @version 2.1.0
* @package FigDice
*
* This file is part of FigDice.
Expand All @@ -27,6 +27,8 @@
use figdice\classes\File;
use figdice\classes\lexer\Lexer;
use figdice\classes\ViewElementTag;
use figdice\classes\Tag;
use figdice\classes\Renderer;
use figdice\exceptions\LexerUnexpectedCharException;


Expand Down Expand Up @@ -131,7 +133,7 @@ public function create($funcName) {
* returns the argument multiplied by 2.
*/
class MyCustomFigFunc implements FigFunction {
public function evaluate(ViewElementTag $viewElement, $arity, $arguments) {
public function evaluate(Tag $viewElement, Renderer $renderer, $arity, $arguments) {
if($arity < 1) {
return null;
}
Expand Down

0 comments on commit 40f4cb6

Please sign in to comment.