Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправление ошибки переноса, когда тире в конце предложения и перевод строки "сьедался" #4

Open
psnet opened this issue Jan 13, 2015 · 0 comments

Comments

@psnet
Copy link

psnet commented Jan 13, 2015

Проблема

Ошибка связана с тем, что парсер Jevix скушает перевод строки если в конце предложения стоит тире:

Ряд 1 -
Второй

будет

Ряд 1 — Второй

И ещё целая куча проблем связанная с этим. Например, невозможность оставить дефис просто так:

текст 1

---
[перевод строки который парсеру тоже не по нраву]
текст 2

будет:

текст 1 - текст 2

И таких "приключений" много. Часто такое грустное поведение можно встретить если на сайте публикуются стихотворения.

Решение

Чтобы исправить такое положение дел нужно внести правки в jevix.class.php метод
protected function dash(&$dash)

нужно заменить на:

/**
 * Проверка на дефис
 * fix by Serge Pustovit (PSNet)
 *
 * @param $dash         возвращаемое представление дефиса
 * @return bool
 */
protected function dash(&$dash){
  if ($this->curCh != '-') {
    return false;
  }
  $dash = '';
  $this->saveState();
  $this->getCh();
  // Несколько подряд
  while ($this->curCh == '-') {
    $this->getCh();
  }
  /*
   * количество переводов строк
   */
  $iNL = 0;
  if (!$this->skipNL($iNL) && !$this->skipSpaces()) {
    $this->restoreState();
    return false;
  }
  $dash = $this->dash;
  if ($iNL) {
    /*
     * вернуть нужное количествово переводов строк
     */
    $dash .= str_repeat($this->br, $iNL);
  }
  return true;
}

Тест

После такой модификации проверочный текст:

Ряд 1 -
Второй
Ещё какая-то строка
Спелая груша - съедобная, парарам да-да-да

---

Строка -

Через строку

будет не таким (как его видит парсер сейчас):

Ряд 1 — Второй
Ещё какая-то строка
Спелая груша — съедобная, парарам да-да-да
— Строка — Через строку 

а как ему и положено быть:

Ряд 1 —
Второй
Ещё какая-то строка
Спелая груша — съедобная, парарам да-да-да
—

Строка —

Через строку 

т.е. где нужно оставлены дефисы, где-то заменены на тире, также оставлены переводы строк, где их задумал автор.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant