Подписка на блог

Ещё есть Тумблер и ЖЖ.

В  Телеграме пишу обо всяком и собираю по крупицам годноту, которая потом появляется в блоге.

А в  Твиттере иногда репощу всякие смехуечки и пишу о том, как всё плохо.

Все остальные соцсеточки только для того, чтобы пошарить ссылку на новый пост.

Как использовать типограф Лебедева из консоли

В работе мне часто бывает нужно оттипографить какой-либо текст, и поскольку я достаточно ленив, мне хотелось как-то облегчить этот процесс. Ведь посудите сами: скопировать текст, попытаться найти вкладку с типографом, забить и открыть новую, ввести урл, нажать энтер, вставить текст, нажать кнопку, кликнуть на поле, выделить текст, скопировать, найти редактор, вставить — это ж сумасшествие какое-то. А поскольку всегда открыта консоль, было бы круто делать это из консоли, не так ли?

И тут на помощь приходит тот факт, что АПИ типографа у Студии открытое, и даже выложены клиенты на нескольких языках. Поскольку из предложенного списка мне ближе Пайтон, то речь будет дальше о нём. Хотя, возможно, скомпилировать под себя клиент на Си++ было бы удобнее, т. к. для запуска не требовалось бы лишних интерпретаторов.

Итак, скачав архив с клиентом на Пайтоне по ссылке выше, берём из него RemoteTypograf.py и кладём в удобное для запуска место. У меня это ~/.scripts/typograf/. Теперь нам нужно написать простой скриптец, который будет брать входной поток, типографить его и выдавать результат в выходной поток. За основу можно взять файлы с примерами, которые лежат в загруженном архиве. Разобраться в настройках можно почитав RemoteTypograf.py. Разве что стоит оговориться, что пользователям Виндоус скорее всего придётся указывать кодировку (чего нет в скрипте ниже).

В моём случае получился вот такой простой скриптец:

# -*- encoding: utf-8 -*-

import sys
from RemoteTypograf import RemoteTypograf

rt = RemoteTypograf() # UTF-8

rt.nobr(0)
rt.p(0)
rt.br(0)
rt.htmlEntities()

sys.stdout.write(rt.processText(sys.stdin.read()).strip())

Возможно, читатель, знающий Пайтон лучше меня, осудит за sys.stdout.write, но я что-то не сообразил, как мне избавиться от новой строки в конце вывода, если использовать print.

Положив этот скрипт рядом с RemoteTypograf.py (назовём его script.py, чего тут думать-то), напишем функцию, которая будет всё это дело запускать. Я пишу её прямо у себя в ~/.zshrc. У вас это, возможно, будет ~/.bashrc или что-то подобное. Собственно, возможно вам так же удобно будет задать для функции элиас, чего я не делаю в коде ниже.

Получаем такую функцию:

pbtypo() {
    pbpaste | python ~/.scripts/typograf/script.py | pbcopy && echo "Text from clipboard was typografed."
}

typografed, ага.

В этой функции я также использую pbpaste и pbcopy для операций нас буфером обмена. Если у вас не макОС, тогда скорее всего вам придётся искать альтернативу. Говорят, что для Линуксов есть xsel и xclip с соответствующими параметрами. На Виндоус же придётся поискать самостоятельно, там вроде бы тоже много написанных велосипедов.

Положив это в наш rc-файл, перезагружаем сессию в терминале (или просто . ~/.zshrc) и — вуа-ля! — набрав pbtypo автоматически получаем в буфере обмена результат работы типографа над скопированным ранее текстом. Красота же :)

Подписаться на блог
Поделиться
Отправить
Ваш комментарий
адрес не будет опубликован

ХТМЛ не работает

Ctrl + Enter
Популярное