Clean Clipper Установить – бесплатно

Кому это

Документация в Markdown без доводки

Перенос документации обычно состоит из конвертации HTML, а потом из ещё более долгой уборки того, что конвертер оставил. Именно эта уборка здесь и построена, и замерена: ноль остатков HTML на 512 страницах корпуса и 102 повтора строк меню против 282, 478 и 491 у сравниваемых движков.

Конвертация – не работа

Лёгкая часть переноса – та, на которую все смотрят. Конвертер выдаёт Markdown за несколько секунд, а настоящая работа начинается после: убрать боковое меню, скопированное в каждый файл, переключатель версий, колонку «На этой странице», подвал с юридическими ссылками. На двухстах страницах это не делается ни руками, ни одними регулярками.

Структура тоже не выходит невредимой. Пустые заголовки, оставленные навигационными блоками, создают в оглавлении разделы-призраки, врезки теряют смысл, заборы теряют язык, а таблицы параметров складываются. Импортированная документация вроде бы есть, но перед употреблением её надо перечитать страницу за страницей.

Отдельная потеря – врезки. В исходной документации у них есть тип: примечание, совет, предупреждение, «не делайте так никогда». В Markdown стандартного синтаксиса для них нет, поэтому все они становятся одинаковыми цитатами, и после переноса предупреждение о потере данных выглядит ровно так же, как совет про удобное сочетание клавиш. Восстанавливать тип приходится глазами, по тексту, – на двухстах страницах это отдельная работа, которую никто не закладывает в срок.

Что переносится без потерь

Заголовок, забор с меткой языка и врезка – стандартный Markdowndocs.python.org/ru/3/library/pathlib.html
---
title: "pathlib – пути файловой системы в объектном стиле"
source: "https://docs.python.org/ru/3/library/pathlib.html"
extraction: "dom"
---

## Основное использование

```python
from pathlib import Path

for file in Path(".").glob("**/*.md"):
    print(file)
```

> Примечание: класс `Path` сам выбирает реализацию под текущую систему.

Как переносить документацию страницами

Перенос – это не одно действие, а двести одинаковых. Настройка ниже нужна затем, чтобы каждое из них состояло из одного нажатия и не требовало решений.

  1. В настройках, в разделе «Куда сохранять», выберите папку назначения на диске и оставьте шаблон имени {title}. Имена файлов должны повторять названия разделов – по ним потом собирается оглавление в репозитории.
  2. Переключите «Клик по иконке» на «Положить в папку». На двухстах страницах разница между одним нажатием и тремя – это разница между работой на два дня и работой на неделю.
  3. Заведите в разделе «Правила по сайтам» правило на домен документации со своей подпапкой. Если разделов несколько, меняйте подпапку по ходу: одна подпапка на раздел избавляет от разбора кучи в конце.
  4. Идите по оглавлению исходной документации сверху вниз и на каждой странице жмите Alt+Shift+M. Краулера здесь нет: двести страниц – это двести нажатий, зато каждая снимается такой, какой её отрисовал браузер, включая внутреннюю документацию за входом.
  5. Раз в двадцать страниц открывайте последний файл и смотрите на заборы кода и таблицы. Метки языка стоят там, где их объявила исходная страница: на замеренном корпусе метка пережила клип в 73 заборах из 156 против 20 и 0 у двух сравниваемых движков.
  6. После переноса пройдитесь по набору поиском по ](http, чтобы найти ссылки на исходный сайт. Они остались абсолютными намеренно – переписывать их под структуру вашего репозитория расширение не берётся, и это единственный шаг, который придётся делать отдельно.

Готовые настройки для переноса документации

Набор рассчитан на однообразную работу в один заход. Всё, что требует решения на каждой странице, из него убрано заранее.

НастройкаЗначениеПочему именно так
Клик по иконкеПоложить в папкудвести страниц – двести нажатий; окно превью умножает работу втрое
Имя файла`{title}`имена файлов повторяют названия разделов, и оглавление в репозитории собирается по ним
Правила по сайтампо правилу на раздел документациираскладка по подпапкам в момент сохранения дешевле разбора общей кучи в конце
Картинкиоставлять ссылкамиссылка отмечает место схемы в тексте; сами файлы всё равно придётся собрать отдельно
Сноскивыносить в конец заметкив спецификациях примечаний много, и в конце файла они не рвут абзац
Свойства`title`, `source``source` – единственный способ через месяц найти исходную страницу для сверки
Срезать навигациювключенона сайтах документации навигация занимает больше места, чем сам раздел
Сложный случай: врезка стала цитатой, а таблица аргументов с кодом в ячейках доехала целойdocs.python.org/ru/3/library/shutil.html
---
title: "shutil – операции с файлами высокого уровня"
source: "https://docs.python.org/ru/3/library/shutil.html"
extraction: "dom"
---

## shutil.copytree

> Предупреждение: даже высокоуровневые функции копирования не переносят
> все метаданные файла.

| Аргумент | По умолчанию | Что делает |
| --- | --- | --- |
| `symlinks` | `False` | копирует цель ссылки, а не саму ссылку |
| `dirs_exist_ok` | `False` | разрешает писать в существующий каталог |

Три сценария целиком

Двести страниц за два дня

Документация переезжает с закрывающейся платформы, экспорта нет, доступ к базе никто не даст. Вы настраиваете папку, шаблон имени и правило на домен, а дальше идёте по оглавлению сверху вниз, нажимая одну и ту же клавишу.

На выходе двести файлов с одинаковой схемой имён, сохранёнными уровнями заголовков и таблицами параметров. Пустые заголовки, которые оставляют навигационные блоки, удалены – разделов-призраков в оглавлении не появится. Остаётся ручная работа: переписать внутренние ссылки и разобраться, какие врезки были предупреждениями.

Сверка терминов с документацией смежной команды

Вам нужно понять, как соседний отдел называет те же сущности, но их документация живёт за корпоративным входом. Клип снимает страницу, которую браузер отрисовал после вашей авторизации, – внутренние страницы клипаются так же, как публичные.

Двадцать файлов в папке ищутся полнотекстовым поиском, и расхождение в терминах видно за один запрос. Сам текст при этом никуда не уходит: внутренние документы остаются на вашем диске, и их содержимое браузер не покидает.

Черновик своей страницы по чужому руководству

Вы пишете раздел про интеграцию и опираетесь на официальное руководство поставщика. Выделяете нужный кусок с примерами, клипаете выделение – к нему не применяется ни срезка, ни отказ «статьи нет» – и вставляете в черновик.

Заборы приезжают с метками, поэтому подсветка в вашем движке документации включается сразу. Текст при этом не переписан и не пересказан: конвертация структурная, и что из чужого руководства можно использовать, а что нельзя, решаете вы.

Чем это заменяет привычные способы

Перенос делают пятью способами, и выбор между ними – это выбор между масштабом и качеством. Строчка про скрипт честно признаёт, где он сильнее.

СпособЧто получаетсяЧего стоит
Скрипт-краулер плюс конвертеробходит сайт целиком и без вашего участиястраницу за логином и сайт на JavaScript он обычно не возьмёт, а обвязку срезает общими правилами
Универсальный конвертер HTML в Markdownбыстро и на любом объёмеменю, переключатель версий и колонка «На этой странице» копируются в каждый файл, а заборы теряют язык
Экспорт из исходной системысамый точный результат из возможныхбывает не у всех платформ, а на закрывающейся – как раз обычно и не бывает
Копировать в редактор вручнуюполный контроль над каждой страницейна двухстах страницах это недели, и структура всё равно расползается от файла к файлу
Печать страниц в PDFсохраняется вид документациив репозиторий такое не положишь, и ни поиск, ни сравнение версий по нему не работают
Clean Clipperноль остатков HTML на 512 замеренных страницах, заборы с метками, таблицы целымиодна страница за раз; внутренние ссылки и оглавление не пересобираются, врезки становятся цитатами

Что мешает при переносе

Почему все врезки стали одинаковыми цитатами?

Потому что в Markdown нет стандартного синтаксиса для врезок. Примечание, совет и предупреждение выражаются одним и тем же блоком цитаты: содержимое сохраняется, тип – нет.

Восстанавливать тип придётся по тексту. Если ваш движок документации поддерживает свой синтаксис врезок, самый быстрый путь – пройти набор поиском по первому слову внутри цитаты: «Примечание», «Внимание», «Предупреждение».

Почему у части заборов нет метки языка?

Потому что исходная страница её не объявила. Язык читается из атрибутов и классов на самом блоке кода и на двух родителях выше – угадывать по содержимому расширение не станет. На замеренном корпусе метка пережила клип в 73 заборах из 156, против 20 и 0 у двух сравниваемых движков: это заметно больше, но не все.

Почему внутренние ссылки ведут на старый сайт?

Потому что они достроены до абсолютных – намеренно. Так ссылка из перенесённого файла открывается, а не ломается. Якоря внутри страницы при этом остаются якорями: #parameters не превращается в чужой адрес. Переписать ссылки под структуру репозитория – отдельный шаг, и расширение за него не берётся.

Почему на обзорной странице раздела написано, что статьи нет?

Потому что обзорная страница состоит из ссылок: указатель методов, список компонентов, карта раздела. Когда тела статьи не находится или больше четверти текста приходится на подписи ссылок, расширение отдаёт шапку с адресом. Такие страницы в переносе всё равно обычно пересобирают заново – оглавление проще написать, чем чинить.

Чего он не делает

Он не обходит сайт: одна страница за раз, та, что перед вами, без краулера и пакетной обработки – на документацию в двести страниц придётся двести клипов. Он не скачивает картинки и схемы, они остаются ссылками на исходный сайт. Врезки и предупреждения становятся цитатами, потому что стандартного синтаксиса для них в Markdown нет: содержимое сохраняется, оформление нет. И он не пересобирает ни внутренние ссылки документации, ни её оглавление.

Установить – бесплатноБесплатно целиком, без аккаунта и без ограничений.

Вопросы

Точно ли сохраняется структура заголовков?
Да. Уровни заголовков переносятся такими, какими они стоят в теле статьи, а пустые заголовки – частый след навигационных блоков – удаляются.
А врезки и предупреждения?
Они становятся цитатами. Стандартного синтаксиса для врезок в Markdown нет: содержимое сохраняется, оформление – нет.
Можно ли обработать весь сайт документации?
Нет. Одна страница за раз, та, что перед вами: ни краулера, ни пакетной обработки.
Переписываются ли внутренние ссылки документации?
Нет. Они остаются абсолютными ссылками на исходный сайт – переписать их под структуру своего репозитория придётся отдельно.
Работает ли на документации, которая рисуется на JavaScript?
Да. Расширение читает DOM после отрисовки, поэтому сайт документации на JavaScript снимается таким, каким вы его видите.
Что происходит с пустыми заголовками?
Они удаляются. Пустой заголовок – частый след навигационного блока, и в перенесённой документации он превращается в раздел-призрак: в оглавлении есть, содержимого нет.
Переносится ли оглавление документации?
Нет, и это осознанно. Оглавление исходного сайта – навигация, а не текст: оно срезается вместе с боковым меню. Оглавление своего набора собирают заново, по именам файлов.
Что делать с картинками и схемами?
Собирать отдельно. В тексте остаётся ссылка на исходный сайт, потому что двоичных файлов расширение не скачивает. Для переноса это отдельный этап, и планировать его надо заранее.
Сохраняются ли ссылки внутри страницы?
Да, якорями. Ссылка вида #parameters остаётся такой же и работает внутри перенесённого файла, а вот ссылки на другие страницы достраиваются до абсолютных адресов исходного сайта.
Сколько времени займёт перенос двухсот страниц?
Столько, сколько двести нажатий с настроенным сохранением в папку, – это работа на день-два, а не на неделю. Ускорить её нечем: краулера и пакетной обработки здесь нет.