↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
StragaSevera
17 сентября 2015
Aa Aa
#рубиновый_поезд
#айтишный_быт
#проект_fanficmd
Обнаружил нетривиальные свойства тегов Фанфикса.
Например, теги выравнивания можно ставить в середине предложения, и они действуют не до закрывающего тега, а до СЛЕДУЮЩЕГО ОТКРЫВАЮЩЕГО тега выравнивания.
Товарищ ReFeRy, это нормальное поведение? Можно его вписывать в спецификацию?
17 сентября 2015
13 комментариев из 14
ReFeRy
Э-м-м, нет.

Я проверил: текст "Лорем ипсумом <center>об</center> стенку, <right>мы шагаем широко!</right> Размахнувшись в зов вселенной, мы убьем всех дураков!" форматируется как:

<p class="fict" id="c0p3">Лорем ипсумом
<p class="fict" style="text-align: center;">об стенку,
<p class="fict" style="text-align: right;">мы шагаем широко! Размахнувшись в зов вселенной, мы убьем всех дураков!</p>

Т.е. с незакрытыми тегами и без учета закрывающего тега center/right.

Учитывать нужно, ибо должно быть преобразование fanficsme > markdown. Вдруг автор так экзотически форматирует свой фанфик, а он не распарсится?
И все равно не понимаю, зачем нужно анализировать верстку текста для читателей - ведь автор-то будет импортировать свой авторский текст.

Вот здесь мы и видим, что я предусмотрел не все виды извращений со стороны авторов. Выравнивание внутри абзаца... наверное, стоит автоматически разносить теги на края абзаца, внутри которого они стоят, как это делает Word.
> И все равно не понимаю, зачем нужно анализировать верстку текста для читателей - ведь автор-то будет импортировать свой авторский текст.
Хм. Тоже верно.

> Выравнивание внутри абзаца... наверное, стоит автоматически разносить теги на края абзаца, внутри которого они стоят, как это делает Word.
Можно. А можно просто воспринимать закрывающий тег </center> как </p>. Это и интуитивнее, и проще.
Кстати говоря, а разве перекрывающиеся теги валидны? о_О

<p class="fict" id="c0p5">тест <b>ляля</p>
<a name="c0p6"></a>
<p class="fict" id="c0p6"><i>многострочных</b></p>
<a name="c0p7"></a>
<p class="fict" id="c0p7">тегов</i></p>
Я не проверяю правильность порядка вложенности тегов. Если открывающие и закрывающие теги стоят подряд и перепутаны местами, это исправляю. А если они разнесены, то даже не пытаюсь. У меня нет анализа тегов с древовидным разбором, чисто регулярки. Может и на них это можно сделать, но я не делал.

Хотя приведен странный кусок - это именно вывод после сохранения текста? Или вручную написанный пример?
Нет, это продукт разбора следующего:
тест <b>ляля
<i>многострочных</b>
тегов</i>

Понятно. Я-то пытаюсь сделать древовидку, чтобы было удобнее в разные форматы конвертировать. Видимо, придется в ручном режиме при обнаружении фиксить.
Кстати, регулярки же вроде могут заглядывать в будущее/прошлое, не?
Могут. Они вообще очень много чего могут - все освоить не так-то и просто, особенно самостоятельно :)
*улыбнулся и кивнул*
Допилил пару перестановок:

1. Сделал корректную обработку переноса строки внутри тегов жирного и курсива (расставляет новые теги в конце и в начале строки).

2. Сделал автоматическое исправление ошибочного порядка закрытия тегов жирного и курсива внутри одной строки.

P.S. Срабатывает в момент сохранения изменений в главе, в предпросмотре теперь будут косяки.
<b>ляля
<i>многострочных</b>
тегов</i>

=

<b>ляля</b>
<b><i>многострочных</i></b>
<i>тегов</i>
О. Ня.
Благодарю ^_^
*думает, сворачивать ли написание перестановкоустойчивого парсера, или фикбук таким тоже чудит*
В чем проблема проверить?)

Вот, что получается на фикбуке:

<div class="public_beta">
<b>ляля<br/>
<i>многострочных</b><br/>
тегов</i><br/>
</div>
Проблема в лени =-)
Благодарю-с.
ПОИСК
ФАНФИКОВ







Закрыть
Закрыть
Закрыть