public function preCompile($source) { $source = str_replace('\\(', '{literal}\\(', $source); $source = str_replace('\\)', '\\){/literal}', $source); $source = str_replace('\\{', '{literal}\\{', $source); $source = str_replace('\\}', '\\}{/literal}', $source); $source = str_replace('\\[', '{literal}\\[', $source); $source = str_replace('\\]', '\\]{/literal}', $source); $source = PsStrings::pregReplaceCyclic('/\\$\\$/', $source, array('{literal}$$', '$${/literal}')); //Обернём математический текст, например: α перейдёт в <span class="math_text">α</span> $source = TextFormulesProcessor::replaceMathText($source); //Заменим некоторые блоки на вызов методов данного класса $source = SmartyReplacesIf::preCompile($source); return $source; }
function smarty_block_f($params, $content, Smarty_Internal_Template &$template) { if (isEmpty($content)) { return; //--- } /* * Если это не TeX формула \[\], то это текстовая формула и её надо обработать. */ if (!TexTools::isBlockFormula($content)) { $content = TextFormulesProcessor::processBlockFormula($content); } /* * Проверим, задан ли идентификатор для формулы. * Если задан - пронумеруем её, т.к. на неё будут ссылаться. */ $formulaId = trim(value_Array(array('id', 'num'), $params)); if (!$formulaId) { return $content; } return FoldedContextWatcher::getInstance()->getFormulaNumeratorContext()->wrapFormulaBox($formulaId, $content); }