Кодер - отчет 01 -mdx-combine
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Work completed
·
6m38s
Итог работы (на момент исчерпания лимита вызовов инструментов)
Что сделано в /workspace/src/mdx-combine.html (файл собран, 496 строк, вместо заглушки)
База v8: сетка карточек (title / abbrlink / метаданные / флаги — каждая в своей
.card), классы valid/invalid с красной рамкой, тексты ошибок под конкретными полями (errTitle, errAbbrlink, errContent), память полей через localStorage, дата new Date().toISOString().split('T')[0].Перенесено из v3: автотранслит title → slug (RU_MAP, все 33 буквы, исправлено по ТЗ
ё→yo, щ→sch, ъ/ь→пусто; затем replace(/[^a-z0-9-]+/g,'') — _ не появляется нигде); select toc ровно с двумя option: true и false.Реализовано по ТЗ:
- abbrlink — отдельная карточка от title, своя валидация
/^[a-z0-9-]+$/, свой текст ошибки; автозаполнение транслитом только до первой ручной правки (dirty-флагabbrDirty), ручной ввод не перетирается; - имя файла (readonly-поле
filename):abbrlink-slug.mdпри валидном непустом abbrlink (разделитель — дефис),slug.mdпри пустом, дубльslug-slugне собирается (проверка побуквенного равенства); - frontmatter строго: title, abbrlink (не выводится вовсе, если abbrlink пуст/невалиден), published (YYYY-MM-DD), updated
'', tags YAML-списком («два пробела, дефис, пробел»), draft/pin без кавычек, toc булево, lang в кавычках (по умолчанию'ru'), authorIds YAML-списком; description нет никогда; - интерфейс на русском; «Создать .md» неактивна пока не заполнены title + (валидный или намеренно пустой) abbrlink + контент; любая правка гасит «Скачать»/«Копировать»; Preview показывает содержимое файла плюс итоговое имя файла первой строкой;
- конвертер HTML→MD: заголовки, списки, ссылки, strong/em, pre/code, img→
с вырезаниемim_/и относительные src→/assets/, лишние<div>убираются; если тегов нет — текст берётся как есть (hasHtmlTags); - скачивание Blob→appendChild→click→
setTimeout(revoke,1000); копирование:navigator.clipboardс catch→выделение<pre>+document.execCommand('copy'); - память:
localStorageс префиксомmdxc:только для authors/tags/pin/draft/toc/lang; title/abbrlink/контент/filename не сохраняются; кнопка «Сбросить память»; - метка версии:
<!-- build: 1.1.0 -->в<head>+ бейдж рядом с<h1>(следующая за 1.0.0 в VERSIONS.json); - без CDN/import/script src/зависимостей; id не переименованы.
Самопроверка (частично выполнена, результаты тестов в jsdom)
Прогнаны функциональные тесты (jsdom): 37 PASS. Подтверждено: транслит (
bratskaya-mogila-v-korpechi, yozh-schit — ё→yo, щ→sch, ъ/ь пусто), отсутствие _ в имени, разделитель-дефис my-link-yozh-schit-novyy, дубль не собирается, пустой abbrlink → ключ abbrlink: отсутствует и имя = slug.md, невалидный abbrlink → красная рамка + ошибка под своим полем + кнопка выключена, порядок и формат всех ключей frontmatter, published без T/Z, tags/authorIds списками, toc два option, правка гасит Download/Copy, localStorage ровно 6 ключей mdxc:*, reset чистает память, markdown без тегов не пережёван. Статические проверки: обратного слеша перед $ нет (единственное вхождение было в комментарии — удалено), кавычек-бэктиков чётное число (8), все getElementById имеют пары, JS проходит node --check.Не завершено (остановлено лимитом вызовов)
- Последний найденный дефект: очистка
im_/реализована какsrc.replace(/im_\//,'')(по эталону v8), из-за чего из URL.../web/20161026035710im_/http://...остаётся20161026035710http://...— тест ожидает.../web/20161026035710/http://.... Нужна правка одной строки на вариант, сохраняющий слэш после timestamp (напримерsrc.replace(/im_\//, '/')либо regex\/[^\/]*im_\/c корректной обработкой случая). - Функция restoreFields читает память, но
saveFieldпривязан только кchange— сохранение происходит; формально всё по ТЗ, но стоит перепроверить восстановление в новом экземпляре. - Коммит не сделан, VERSIONS.json и CHANGELOG.md не обновлены (нужны: versions+history с 1.1.0, current.version=1.1.0, changelogEntry для [1.1.0]; запись в CHANGELOG.md), и финальный
git diffне выводился.
Рекомендация для продолжения: исправить строку очистки
im_/ в htmlToMarkdown, перезапустить тесты (/tmp/test-combine.mjs, ожидалось 38 PASS), затем одним коммитом зафиксировать src/mdx-combine.html, VERSIONS.json, CHANGELOG.md и показать полный git diff HEAD~1 плюс три итоговые строки (что изменено / что перенесено из v3 / что проверено).- Получить ссылку
- X
- Электронная почта
- Другие приложения
Комментарии
Отправить комментарий