1
Quality
s.zotov edited this page 2026-04-12 20:46:42 +00:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Проверки качества

Спеллчекер

Как работает

  1. Кнопка АБВtoggleSpellCheck()
  2. extractTextFromHtml(previewHtml) — извлекает текст из HTML:
    • DOM-парсинг через DOMParser
    • Убирает <style>, <script>
    • Убирает шаблонные теги: {%...%}, {{...}}, @{...}, ${...}
    • Дедуплицирует повторяющиеся фрагменты
    • Нормализует пробелы
    • Макс 9500 символов
  3. POST к Яндекс.Спеллеру через прокси /speller/services/spellservice.json/checkText
    • Параметры: text, lang=ru,en, options=518 (все проверки)
  4. injectSpellMarks(previewHtml, errors) — инжектирует метки:
    • Ищет ошибочные слова в HTML (только в текстовых нодах, не в тегах)
    • Оборачивает в <mark class="va-spell" title="подсказка">слово</mark>
    • Wavy red underline (CSS)
    • Tooltip: "Повтор слова" / "→ предложения" / "Неизвестное слово"
  5. Результат показывается в iframe вместо обычного превью

Библиотека spellcheck.js

  • extractTextFromHtml(html) — DOM-based, handles encoding
  • injectSpellMarks(html, errors) — position-aware injection

Проверка ссылок

Как работает

  1. Кнопка 🔗runLinkCheck()
  2. extractLinksFromHtml(previewHtml) — DOM-парсинг, извлекает все href и src
  3. POST /api/check-links с массивом URL (макс 50)
  4. Backend проверяет каждый URL:
    • HEAD запрос с таймаутом 10 сек
    • isPublicUrl() фильтр (без localhost/private IP)
    • Возвращает: {url, status, ok, redirected, finalUrl, error}
  5. Результаты показываются в панели:
    • Зелёный — 2xx
    • 🔄 Жёлтый — редирект
    • Красный — ошибка / 4xx / 5xx

Типограф

Как работает

  1. Кнопка Типограф или кнопка Т на отдельном поле
  2. SOAP-запрос к Art. Lebedev Типограф через прокси /typograf/
  3. sanitizeTypograf(text) — очистка перед отправкой:
    • Убирает <br>, <p> теги
    • Нормализует пробелы
  4. Результат: правильные кавычки «», тире —, неразрывные пробелы
  5. applyNowrapSpaces(block, field) — после типографа, заменяет пробел после 1-3-буквенных слов на &nbsp;

typografAll()

Применяет типограф ко ВСЕМ текстовым полям всех блоков за один проход.

Форматирование текста

Кнопки в шапке каждого блока:

Кнопка Функция Результат в Pug
Ж wrapBold() <span style="font-weight:700">текст</span>
insertBullet() &bull;&nbsp; перед текстом
br insertBr() <br> в позиции курсора
A Цвет текста <span style="color:#hex">текст</span>
URL insertLink() <a href="url">текст</a>
👁 Превью блока Показывает рендер одного блока

Shift+Enter в textarea → вставляет <br> вместо переноса строки.