Simpler range AST constructors

This commit is contained in:
Mathieu Darse
2015-04-09 11:51:18 +02:00
parent b3f9dd4ca2
commit 34a88d9ac6
2 changed files with 24 additions and 4 deletions

View File

@@ -12,6 +12,26 @@ class RangeExpression extends Node
private $higher_bound;
private $higher_inclusive;
public static function lessThan(Field $field, $bound)
{
return new self($field, $bound, false);
}
public static function lessThanOrEqual(Field $field, $bound)
{
return new self($field, $bound, true);
}
public static function greaterThan(Field $field, $bound)
{
return new self($field, null, null, $bound, false);
}
public static function greaterThanOrEqual(Field $field, $bound)
{
return new self($field, null, null, $bound, true);
}
public function __construct(Field $field, $lb, $li = false, $hb = null, $hi = false)
{
$this->field = $field;

View File

@@ -137,13 +137,13 @@ class QueryVisitor implements Visit
switch ($node->getId()) {
case NodeTypes::LT_EXPR:
return new AST\RangeExpression($field, $expression, false);
return AST\RangeExpression::lessThan($field, $expression);
case NodeTypes::LTE_EXPR:
return new AST\RangeExpression($field, $expression, true);
return AST\RangeExpression::lessThanOrEqual($field, $expression);
case NodeTypes::GT_EXPR:
return new AST\RangeExpression($field, null, null, $expression, false);
return AST\RangeExpression::greaterThan($field, $expression);
case NodeTypes::GTE_EXPR:
return new AST\RangeExpression($field, null, null, $expression, true);
return AST\RangeExpression::greaterThanOrEqual($field, $expression);
}
}