/** * Метод создаёт экземпляр класса, хранящего в себе информацию о формулах, входящих в строку текста. * * @param type $string * @param type $replcaAllToImaged * @return TexExtractor */ public static function inst($string, $replcaAllToImaged) { $extractor = new TexExtractor(); $extractor->originalText = $string; $extractor->maskedText = TexTools::replaceTeX($string, array($extractor, '_extract'), $replcaAllToImaged); return $extractor; }
/** * Спрайт для формулы */ public static function getFormulaSprite(Spritable $item, $formula, $classes = null) { $itemName = TexTools::formulaHash($formula); $atts = array(); $atts['data']['tex'] = $itemName; $atts['class'][] = $classes; return self::getSprite($item)->getSpriteSpan($itemName, $atts); }
public static function safeShortText($string) { check_condition($string, 'Пустое сообщение'); check_condition(!TexTools::hasTex($string), 'Короткое сообщение не может содержать формулы'); check_condition(ps_strlen($string) <= 255, 'Текст не должен превышать 255 символов'); $string = htmlspecialchars($string); $string = nl2brr($string); return normalize_string($string); }
public static function validateLongText($data, $required = true) { if (isEmpty($data)) { return $required ? 'required' : false; } $error = TexTools::getTexError($data); if ($error) { return $error; } return self::censure($data); }
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); }
/** * Метод вызывается и производит замены в TeX формул посредством вызова $callback. * * @param string $string - строка, в которой будет производиться поиск * @param callable $callback - функция обратного вызова * function($original, $content, $isBlock). Пример: function(\[x\], x, true). * @param bool $replcaAllToImaged - признак, нужно ли предварительно заменить все формулы * на их представление, заменяемое на картинки * @return string - строка с произведёнными заменами */ public static function replaceTeX($string, $callback, $replcaAllToImaged) { if (isEmpty($string)) { return ''; } if (!self::assertTexValid($string)) { return $string; } if ($replcaAllToImaged) { $string = self::replaceMacrosToImaged($string); } $b_callback = function ($matches) use(&$callback) { $formula = TexTools::safeFormula($matches[1]); return call_user_func($callback, "\\[{$formula}\\]", $formula, true); }; $string = preg_replace_callback('/\\\\\\[(.+?)\\\\\\]/si', $b_callback, $string); $i_callback = function ($matches) use(&$callback) { $formula = TexTools::safeFormula($matches[1]); return call_user_func($callback, "\\({$formula}\\)", $formula, false); }; $string = preg_replace_callback('/\\\\\\((.+?)\\\\\\)/si', $i_callback, $string); return $string; }
/** * Метод возвращает оригинальный TEX по захешированному представлению */ public function decodeTexFromHash($hash) { TexTools::assertValidFormulaHash($hash); return $this->DM->getHashedDirItem(null, $hash, $hash, 'gif.tex')->getFileContents(false, null); }