Beispiel #1
0
 public function parseVariables($text, Pagemill_Doctype $encoder = null)
 {
     $result = $text;
     preg_match_all('/@{([\\w\\W\\s\\S]*?)}@/i', $text, $matches);
     foreach ($matches[0] as $index => $container) {
         $expression = $matches[1][$index];
         $evaluated = $this->evaluate($expression);
         if (!is_null($evaluated) && !is_scalar($evaluated)) {
             if (is_array($evaluated)) {
                 $evaluated = self::IsAssoc($evaluated) ? '(Object)' : '(Array)';
             } else {
                 if (is_a($evaluated, 'Pagemill_Data')) {
                     $evaluated = '(Object)';
                 } else {
                     if (Pagemill_Data::LikeArray($evaluated)) {
                         $evaluated = '(ArrayInterface)';
                     } else {
                         if (Pagemill_Data::LikeAssoc($evaluated)) {
                             $evaluated = '(Interface)';
                         } else {
                             $evaluated = '(Unknown)';
                         }
                     }
                 }
             }
         }
         if ($encoder) {
             $evaluated = $encoder->encodeEntities($evaluated);
         }
         $result = str_replace($container, $evaluated, $result);
     }
     preg_match_all('/#{([\\w\\W\\s\\S]*?)}#/i', $result, $matches);
     foreach ($matches[0] as $index => $container) {
         $expression = $matches[1][$index];
         $evaluated = $this->evaluate($expression);
         if (!is_null($evaluated) && !is_scalar($evaluated)) {
             if (is_array($evaluated)) {
                 $evaluated = self::IsAssoc($evaluated) ? '(Object)' : '(Array)';
             } else {
                 if (is_a($evaluated, 'Pagemill_Data')) {
                     $evaluated = '(Object)';
                 } else {
                     if (Pagemill_Data::LikeArray($evaluated)) {
                         $evaluated = '(ArrayInterface)';
                     } else {
                         if (Pagemill_Data::LikeAssoc($evaluated)) {
                             $evaluated = '(Interface)';
                         } else {
                             $evaluated = '(Unknown)';
                         }
                     }
                 }
             }
         }
         if ($encoder) {
             $evaluated = $encoder->encodeEntities($evaluated);
         }
         $result = str_replace($container, '@{' . $evaluated . '}@', $result);
     }
     return $result;
 }