New user registration is currently disabled due to spam abuse / Регистрация новых пользователей в настоящее время приостановлена из-за злоупотреблений спаммерами

Странные пустые абзацы выводятся в HTML из DSL-словаря

Сообщаем о найденных ошибках сюда

Странные пустые абзацы выводятся в HTML из DSL-словаря

Postby Novikov » Sun Feb 05, 2012 3:24 am

Вот фрагмент кода словаря:
Code: Select all
[m2][c darkmagenta][b]USE EYES[/b][/c]
   [m3][c red][b]1.[/b][/c] [c orangered]intransitive[/c] [c darkgray] [/c]{{d}}to turn your eyes in a particular direction{{/d}}


Вот что выходит в HTML:
Code: Select all
<div class="dsl_m2"><font color="darkmagenta"><b class="dsl_b">USE EYES</b></font>
<p></p><p>   </p></div><div class="dsl_m3"><font color="red"><b class="dsl_b">1.</b></font> <font color="orangered">intransitive</font> <font color="darkgray"> </font>to turn your eyes in a particular direction
<p></p><p>   </p></div>


Как видим, в конце каждого DIV'а есть конструкция <p></p><p> </p>. Я подозреваю, что близкостоящим тегам <p> соответствует перевод строки, а тем, между которыми символ табуляции -- символ табуляции в начале новой строки кода словаря. Это подтверждается тем, что когда я заменяю таб в начале строки на пробел, между тегами <p> </p> в HTML-коде встает пробел.

Подозреваю, что есть баг, связанный с тем, что переводы строк и табы обрамляются тегами <p></p> при выводе карточки DSL-словаря.

Этот баг, наряду с еще одной особенностью верстки, начинает мешать при создании CSS-тем словаря.

И сопутствующая особенность. Если у нас есть код словаря вида
Code: Select all
[m1]• blablabla
• blablabla
• blablabla
• blablabla


То в HTML пойдет все как надо:
Code: Select all
<div class="dsl_m1">
<p>• blablabla</p>
<p>• blablabla</p>
<p>• blablabla</p>
</div>


Но если у нас только один элемент:
Code: Select all
[m1]• blablabla


То он выводится без тега <p>, что лишает возможности задавать отступы для строк в списках так, чтобы при наличии только одной строки отступы все равно работали:
Code: Select all
<div class="dsl_m1">• blablabla</div


Предлагаю формировать HTML код при выводе карточек DSL-словарей так, чтобы:
  • Теги [m0]-[m9] открывали бы теги <div> с соответствующими классами "m0-m9" (префикс dsl_, кстати, можно опустить, так как при необходимости задать что-то именно для DSL-словаря можно воспользоваться наследованием в CSS). Закрытие тегов <div> чтобы происходило по началу следующего тега [m], а также по закрывающему тегу [/m] и по окончанию вывода карточки, если тег был открыт.
  • Каждая новая строка в DSL-файле порождала бы тег <p>
  • Пробелы и табы в начале и конце строк, а также символы новой строки не порождали бы тегов, а помещались бы вне оных или схлопывались бы.

Баг на сайте: нумерованные списки не выводятся, вместо них лезет разметка.
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm

Re: Странные пустые абзацы выводятся в HTML из DSL-словаря

Postby Novikov » Sun Feb 05, 2012 6:49 am

Кстати, вот как вылезают эти пустые абзацы и портят попытки сделать эргономичное представление словаря:
Image
Novikov
 
Posts: 164
Joined: Mon Jan 23, 2012 8:29 pm


Return to Ошибки

Who is online

Users browsing this forum: No registered users and 21 guests