Самым простым способом было бы просто использовать ответ, описанный здесь , чтобы извлечь данные 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.