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; }