You are here

public function ctools_math_expr::__construct in Chaos Tool Suite (ctools) 7

Public constructor.

File

includes/math-expr.inc, line 144
=============================================================================.

Class

ctools_math_expr
ctools_math_expr Class.

Code

public function __construct() {
  $this->userfuncs = array();
  $this->simplefuncs = array(
    'sin',
    'sinh',
    'asin',
    'asinh',
    'cos',
    'cosh',
    'acos',
    'acosh',
    'tan',
    'tanh',
    'atan',
    'atanh',
    'exp',
    'sqrt',
    'abs',
    'log',
    'ceil',
    'floor',
    'round',
  );
  $this->ops = array(
    '+' => array(
      'precedence' => 0,
    ),
    '-' => array(
      'precedence' => 0,
    ),
    '*' => array(
      'precedence' => 1,
    ),
    '/' => array(
      'precedence' => 1,
    ),
    '^' => array(
      'precedence' => 2,
      'right' => TRUE,
    ),
    '_' => array(
      'precedence' => 1,
    ),
    '==' => array(
      'precedence' => -1,
    ),
    '!=' => array(
      'precedence' => -1,
    ),
    '>=' => array(
      'precedence' => -1,
    ),
    '<=' => array(
      'precedence' => -1,
    ),
    '>' => array(
      'precedence' => -1,
    ),
    '<' => array(
      'precedence' => -1,
    ),
  );
  $this->binaryops = array(
    '+',
    '-',
    '*',
    '/',
    '^',
    '==',
    '!=',
    '<',
    '<=',
    '>=',
    '>',
  );
  $this->funcs = array(
    'ln' => array(
      'function' => 'log',
      'arguments' => 1,
    ),
    'arcsin' => array(
      'function' => 'asin',
      'arguments' => 1,
    ),
    'arcsinh' => array(
      'function' => 'asinh',
      'arguments' => 1,
    ),
    'arccos' => array(
      'function' => 'acos',
      'arguments' => 1,
    ),
    'arccosh' => array(
      'function' => 'acosh',
      'arguments' => 1,
    ),
    'arctan' => array(
      'function' => 'atan',
      'arguments' => 1,
    ),
    'arctanh' => array(
      'function' => 'atanh',
      'arguments' => 1,
    ),
    'min' => array(
      'function' => 'min',
      'arguments' => 2,
      'max arguments' => 99,
    ),
    'max' => array(
      'function' => 'max',
      'arguments' => 2,
      'max arguments' => 99,
    ),
    'pow' => array(
      'function' => 'pow',
      'arguments' => 2,
    ),
    'if' => array(
      'function' => 'ctools_math_expr_if',
      'arguments' => 2,
      'max arguments' => 3,
    ),
    'number' => array(
      'function' => 'ctools_math_expr_number',
      'arguments' => 1,
    ),
    'time' => array(
      'function' => 'time',
      'arguments' => 0,
    ),
  );

  // Allow modules to add custom functions.
  $context = array(
    'final' => &$this->funcs,
  );
  drupal_alter('ctools_math_expression_functions', $this->simplefuncs, $context);

  // Set up the initial constants and mark them read-only.
  $this->vars = array(
    'e' => exp(1),
    'pi' => pi(),
  );
  drupal_alter('ctools_math_expression_constants', $this->vars);
  $this->constvars = array_keys($this->vars);

  // Translate the older, simpler style into the newer, richer style.
  foreach ($this->simplefuncs as $function) {
    $this->funcs[$function] = array(
      'function' => $function,
      'arguments' => 1,
    );
  }
}