Clone
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.
Проверки качества
Спеллчекер
Как работает
- Кнопка АБВ →
toggleSpellCheck() extractTextFromHtml(previewHtml)— извлекает текст из HTML:- DOM-парсинг через DOMParser
- Убирает
<style>,<script> - Убирает шаблонные теги:
{%...%},{{...}},@{...},${...} - Дедуплицирует повторяющиеся фрагменты
- Нормализует пробелы
- Макс 9500 символов
- POST к Яндекс.Спеллеру через прокси
/speller/services/spellservice.json/checkText- Параметры:
text,lang=ru,en,options=518(все проверки)
- Параметры:
injectSpellMarks(previewHtml, errors)— инжектирует метки:- Ищет ошибочные слова в HTML (только в текстовых нодах, не в тегах)
- Оборачивает в
<mark class="va-spell" title="подсказка">слово</mark> - Wavy red underline (CSS)
- Tooltip: "Повтор слова" / "→ предложения" / "Неизвестное слово"
- Результат показывается в iframe вместо обычного превью
Библиотека spellcheck.js
extractTextFromHtml(html)— DOM-based, handles encodinginjectSpellMarks(html, errors)— position-aware injection
Проверка ссылок
Как работает
- Кнопка 🔗 →
runLinkCheck() extractLinksFromHtml(previewHtml)— DOM-парсинг, извлекает всеhrefиsrc- POST
/api/check-linksс массивом URL (макс 50) - Backend проверяет каждый URL:
- HEAD запрос с таймаутом 10 сек
isPublicUrl()фильтр (без localhost/private IP)- Возвращает:
{url, status, ok, redirected, finalUrl, error}
- Результаты показываются в панели:
- ✅ Зелёный — 2xx
- 🔄 Жёлтый — редирект
- ❌ Красный — ошибка / 4xx / 5xx
Типограф
Как работает
- Кнопка Типограф или кнопка Т на отдельном поле
- SOAP-запрос к Art. Lebedev Типограф через прокси
/typograf/ sanitizeTypograf(text)— очистка перед отправкой:- Убирает
<br>,<p>теги - Нормализует пробелы
- Убирает
- Результат: правильные кавычки «», тире —, неразрывные пробелы
applyNowrapSpaces(block, field)— после типографа, заменяет пробел после 1-3-буквенных слов на
typografAll()
Применяет типограф ко ВСЕМ текстовым полям всех блоков за один проход.
Форматирование текста
Кнопки в шапке каждого блока:
| Кнопка | Функция | Результат в Pug |
|---|---|---|
| Ж | wrapBold() |
<span style="font-weight:700">текст</span> |
| • | insertBullet() |
• перед текстом |
| br | insertBr() |
<br> в позиции курсора |
| A | Цвет текста | <span style="color:#hex">текст</span> |
| URL | insertLink() |
<a href="url">текст</a> |
| 👁 | Превью блока | Показывает рендер одного блока |
Shift+Enter в textarea → вставляет <br> вместо переноса строки.