Ejemplo n.º 1
0
 /**
  * Метод создаёт экземпляр класса, хранящего в себе информацию о формулах, входящих в строку текста.
  * 
  * @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;
 }
Ejemplo n.º 2
0
 /**
  * Спрайт для формулы
  */
 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);
 }
Ejemplo n.º 3
0
 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);
 }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
 /**
  * Метод вызывается и производит замены в 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;
 }
Ejemplo n.º 7
0
 /**
  * Метод возвращает оригинальный TEX по захешированному представлению
  */
 public function decodeTexFromHash($hash)
 {
     TexTools::assertValidFormulaHash($hash);
     return $this->DM->getHashedDirItem(null, $hash, $hash, 'gif.tex')->getFileContents(false, null);
 }