Как я могу преобразовать содержимое картона richtext в открытый текст с помощью hamerspoon? - PullRequest
0 голосов
/ 10 февраля 2019

Я ищу решение для автоматического преобразования форматированного текста, скопированного в буфер обмена (вставка), в обычный текст в Hammerspoon (код lua).

Я знаю, как получить доступ к вставке в lua, но не знаюо том, как связать это действие с событием копирования или вставки, чтобы автоматизировать его (ни о том, как преобразовать содержимое в простой текст).

local pasteboard = require("hs.pasteboard")

1 Ответ

0 голосов
/ 09 апреля 2019

Самым простым способом было бы просто использовать ответ, описанный здесь , чтобы извлечь данные RTF в монтажном столе и передать данные в уже имеющуюся команду textutil для ее преобразованияв обычный текст в стандартный вывод:

osascript -e 'the clipboard as «class RTF »' | \
    perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | \
    textutil -stdin -stdout -convert txt

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

local text = hs.execute([[
    osascript -e 'the clipboard as «class RTF »' | \
        perl -ne 'print chr foreach unpack("C*",pack("H*",substr($_,11,-3)))' | \
        textutil -stdin -stdout -convert txt
]])

К вашему сведению API Hammerspoon делает , позволяя извлекать данные RTF из монтажного стола, используя hs.pasteboard.readDataForUTI, используя "public.rtf" UTI, поэтомутехнически вы можете сделать все это в Lua, но вам придется вручную преобразовывать данные RTF.

...