lollipop

A PHP-framework
Log | Files | Refs

TemplateMethods.php (3081B)


      1 <?php
      2 
      3 namespace Lollipop {
      4 
      5     /// this class contains all built-in functions for the templater
      6     class TemplateMethods
      7     {
      8         public static function add(array &$tokens)
      9         {
     10             $right = array_pop($tokens);
     11             $left = array_pop($tokens);
     12 
     13             if (is_null($left) || is_null($right)) {
     14                 throw new ErrorException("Stack is empty");
     15             }
     16 
     17             return $left + $right;
     18 
     19         }
     20 
     21         public static function sub(array &$tokens)
     22         {
     23             $right = array_pop($tokens);
     24             $left = array_pop($tokens);
     25 
     26             if (is_null($left) || is_null($right)) {
     27                 throw new ErrorException("Stack is empty");
     28             }
     29 
     30             return intval($left) - intval($right);
     31         }
     32 
     33         public static function mul(array &$tokens)
     34         {
     35             $right = array_pop($tokens);
     36             $left = array_pop($tokens);
     37 
     38             if (is_null($left) || is_null($right)) {
     39                 throw new ErrorException("Stack is empty");
     40             }
     41 
     42             return intval($left) * intval($right);
     43         }
     44 
     45         public static function div(array &$tokens)
     46         {
     47             $right = array_pop($tokens);
     48             $left = array_pop($tokens);
     49 
     50             if (is_null($left) || is_null($right)) {
     51                 throw new ErrorException("Stack is empty");
     52             }
     53 
     54             return intval($left) / intval($right);
     55         }
     56 
     57         public static function cat(array &$tokens)
     58         {
     59             $right = array_pop($tokens);
     60             $left = array_pop($tokens);
     61 
     62             if (is_null($left) || is_null($right)) {
     63                 throw new ErrorException("Stack is empty");
     64             }
     65 
     66             return $left . $right;
     67         }
     68 
     69         public static function to_int(array &$tokens)
     70         {
     71             $val = array_pop($val);
     72 
     73             if (is_null($val)) {
     74                 throw new ErrorException("Stack is empty");
     75             }
     76 
     77             return inval($val);
     78         }
     79 
     80         public static function include(array &$tokens)
     81         {
     82             $name = array_pop($tokens);
     83 
     84             if ($name  == null) {
     85                 throw new ErrorException("Stack is empty");
     86             }
     87 
     88             include($name);
     89         }
     90 
     91         public static function eval(array &$tokens)
     92         {
     93             $expr = array_pop($tokens);
     94 
     95             if (is_null($expr)) {
     96                 throw new ErrorException("Stack is empty");
     97             }
     98 
     99             return eval("return ($expr);");
    100         }
    101 
    102         public static function format_if(array &$stack)
    103         {
    104             $format_false = array_pop($stack);
    105             $format_true = array_pop($stack);
    106             $expr = array_pop($stack);
    107 
    108             if (is_null($expr) || is_null($format_true) || is_null($format_false)) {
    109                 throw new ErrorException("Stack is empty");
    110             }
    111 
    112             if ($expr == "") {
    113                 return $format_false;
    114             } else {
    115                 return str_replace("%%", $expr, $format_true);
    116             }
    117         }
    118     }
    119 }