Ноу-хау: примеры автоматизации в MacOS

m/mdclip.png

Чем по-настоящему хороша MacOS, так это наличием средств разработки и автоматизации задач «из коробки». В частности, для управления приложениями и совместной их эксплуатации есть язык AppleScript, предоставляющий очень мощные возможности.

Если в меню вашего любимого приложения есть пункт с изображением свитка, то вам очень повезло — его разработчик дал вам возможность практически неограниченно расширять его возможности собственными скриптами.

Рассмотрим, например, расширение редактора CotEditor для работы с Markdown. Этот редактор бесплатен, бесплатны и все упомянутые ниже сторонние приложения.

Откроем системный редактор скриптов и создадим в нём следующий сценарий:

-- Открывает файл в другом приложении

tell application "CotEditor"
    save front document
    set markdownFile to file of front document
end tell

tell application "Markoff"
    open markdownFile
    activate
end tell

Сохраним его под именем Markoff и затем с помощью Finder перенесём в папку скриптов CotEditor (её можно открыть непосредственно из приложения).

Всё работает очень просто: текущий документ (тот, что на переднем плане) в редакторе сохраняется и затем открывается в другом приложении — в данном случае используется Markdown-просмотрщик Markoff.

А вот более сложный пример, в котором файл транслируется в HTML при помощи консольной утилиты MultiMarkdown, и результат со стандартного выхода перехватывается в буфер обмена:

-- Запускает трансляцию Markdown для документа на переднем плане

tell application "CotEditor"
    save front document
    set fnm to file of front document
end tell

set fnmp to quoted form of (the POSIX path of fnm)

set the clipboard to (do shell script "/usr/local/bin/mmd " & fnmp)

Перед практическим применением этого скрипта нужно убедиться, что транслятор присутствует у вас в системе (команды which mmd и which multimarkdown подскажут вам пути к нему). Вместо него можно использовать pandoc, тогда вызов в последней строке должен иметь вид

"/usr/local/bin/pandoc -f markdown -t html "

или где он у вас установлен.

В качестве другого примера рассмотрим создание собственного приложения на базе того же MultiMarkdown или Pandoc. Ситуация в каком-то смысле обратная: в буфере есть размеченный markdown-текст (например, некоторые текстовые процессоры умеют его так копировать), который нужно заменить на его html-представление.

Можно, конечно, открыть тот же CotEditor, создать в нём новый документ, вставить содержимое буфера и воспользоваться приведённым выше рецептом. Однако нетрудно создать решение, которое будет делать то же самое ровно в один клик.

Для этого нам понадобится ещё одно штатное средство разработки, Automator. Запускаем его, создаём новое приложение и буквально за пару минут собираем схему, показанную в шапке этого поста. Сохраняем созданное приложение и при желании назначаем ему какую-нибудь желаемую иконку (в сети их вагон). Если делать такую штуку приходится часто, то перетаскиваем приложение в док (и лучше дать ему како-нибудь «говорящее» название, которое будет показываться как всплывающая подсказка).

Всё. Один клик, и содержимое буфера обмена заменяется с markdown-текста на его html-представление. Можно вставлять его в админку… осталось только сказать одну вещь.

Некоторые движки вешают на свои админки умные скрипты, которые при вставке текста подменяют «опасные» символы (в первую очередь знаки «больше/меньше») на их мнемоники. Если это так, то нужно вместо обычной вставки («Вставка» или «Paste») пользоваться в меню браузера пунктом «Вставить и согласовать стиль» («Paste and Match Style»), только и всего.