/protected/components/ezcomponents/Template/src/functions/math_functions.php

https://github.com/kamarulismail/kamarul-playground · PHP · 154 lines · 58 code · 24 blank · 72 comment · 1 complexity · 7f8118597172b789740f6b9a3802d925 MD5 · raw file

  1. <?php
  2. /**
  3. * File containing the ezcTemplateMathFunctions class
  4. *
  5. * @package Template
  6. * @version 1.4.2
  7. * @copyright Copyright (C) 2005-2009 eZ Systems AS. All rights reserved.
  8. * @license http://ez.no/licenses/new_bsd New BSD License
  9. * @access private
  10. */
  11. /**
  12. * @package Template
  13. * @version 1.4.2
  14. * @access private
  15. */
  16. class ezcTemplateMathFunctions extends ezcTemplateFunctions
  17. {
  18. /**
  19. * Translates a function used in the Template language to a PHP function call.
  20. * The function call is represented by an array with three elements:
  21. *
  22. * 1. The return typehint. Is it an array, a non-array, or both.
  23. * 2. The parameter input definition.
  24. * 3. The AST nodes.
  25. *
  26. * @param string $functionName
  27. * @param array(ezcTemplateAstNode) $parameters
  28. * @return array(mixed)
  29. */
  30. public static function getFunctionSubstitution( $functionName, $parameters )
  31. {
  32. switch ( $functionName )
  33. {
  34. // max( $v1 , $v2 [, ...] )::
  35. // max( $v1 , $v2 [, ...] )
  36. case "math_max": return array( array( "%val", "%..." ),
  37. self::functionCall( "max", array( "%val", "%..." ) ) );
  38. // min( $v1 , $v2 [, ...] )::
  39. // min( $v1 , $v2 [, ...] )
  40. case "math_min": return array( array( "%val", "%..." ),
  41. self::functionCall( "min", array( "%val", "%..." ) ) );
  42. // abs( $v )::
  43. // abs( $v )
  44. case "math_abs": return array( array( "%val" ),
  45. self::functionCall( "abs", array( "%val" ) ) );
  46. // ceil( $v )::
  47. // ceil( $v )
  48. case "math_ceil": return array( array( "%val" ),
  49. self::functionCall( "ceil", array( "%val" ) ) );
  50. // floor( $v )::
  51. // floor( $v )
  52. case "math_floor": return array( array( "%val" ),
  53. self::functionCall( "floor", array( "%val" ) ) );
  54. // round( $v )::
  55. // round( $v )
  56. case "math_round": return array( array( "%val" ),
  57. self::functionCall( "round", array( "%val" ) ) );
  58. // sqrt( $v )::
  59. // sqrt( $v )
  60. case "math_sqrt": return array( array( "%val" ),
  61. self::functionCall( "sqrt", array( "%val" ) ) );
  62. // exp( $arg )::
  63. // exp( $arg )
  64. case "math_exp": return array( array( "%arg" ),
  65. self::functionCall( "exp", array( "%arg" ) ) );
  66. // pow( $base, $exp )::
  67. // pow( $base, $exp )
  68. case "math_pow": return array( array( "%base", "%exp" ),
  69. self::functionCall( "pow", array( "%base", "%exp" ) ) );
  70. // log( $arg, $base )::
  71. // log( $arg, $base )
  72. case "math_log": return array( array( "%arg", "%base" ),
  73. self::functionCall( "log", array( "%arg", "%base" ) ) );
  74. // log10( $arg )::
  75. // log10( $arg )
  76. case "math_log10": return array( array( "%arg" ),
  77. self::functionCall( "log10", array( "%arg" ) ) );
  78. // float_mod( $v )::
  79. // fmod( $v )
  80. case "math_float_mod": return array( array( "%x", "%y" ),
  81. self::functionCall( "fmod", array( "%x", "%y" ) ) );
  82. // rand( $min, $max )::
  83. // mt_rand( $min, $max )
  84. case "math_rand": return array( array( "%min", "%max" ),
  85. self::functionCall( "mt_rand", array( "%min", "%max" ) ) );
  86. // pi()::
  87. // pi()
  88. case "math_pi": return array( array( ),
  89. self::functionCall( "pi", array() ) );
  90. // is_finite( $v )::
  91. // is_finite( $v )
  92. case "math_is_finite": return array( array( "%val" ),
  93. self::functionCall( "is_finite", array( "%val") ) );
  94. // is_infinite( $v )::
  95. // is_infinite( $v )
  96. case "math_is_infinite": return array( array( "%val" ),
  97. self::functionCall( "is_infinite", array( "%val") ) );
  98. // is_nan( $v )::
  99. // is_nan( $v )
  100. case "math_is_nan": return array( array( "%val" ),
  101. self::functionCall( "is_nan", array( "%val") ) );
  102. // bin_to_dec( $s )::
  103. // bindec( $s )
  104. case "math_bin_to_dec": return array( array( "%string" ),
  105. self::functionCall( "bindec", array( "%string") ) );
  106. // hex_to_dec( $s )::
  107. // hexdec( $s )
  108. case "math_hex_to_dec": return array( array( "%string" ),
  109. self::functionCall( "hexdec", array( "%string") ) );
  110. // oct_to_dec( $s )::
  111. // octdec( $s )
  112. case "math_oct_to_dec": return array( array( "%string" ),
  113. self::functionCall( "octdec", array( "%string") ) );
  114. // dec_to_bin( $v )::
  115. // decbin( $v )
  116. case "math_dec_to_bin": return array( array( "%val" ),
  117. self::functionCall( "decbin", array( "%val") ) );
  118. // dec_to_hex( $v )::
  119. // dechex( $v )
  120. case "math_dec_to_hex": return array( array( "%val" ),
  121. self::functionCall( "dechex", array( "%val") ) );
  122. // dec_to_oct( $v )::
  123. // decoct( $v )
  124. case "math_dec_to_oct": return array( array( "%val" ),
  125. self::functionCall( "decoct", array( "%val") ) );
  126. }
  127. return null;
  128. }
  129. }
  130. ?>