49 lines
938 B
Lua
49 lines
938 B
Lua
local obj = {}
|
|
obj.__index = obj
|
|
obj.__name = "seal_rot13"
|
|
|
|
function obj:commands()
|
|
return {
|
|
rot13 = {
|
|
cmd = "rot13",
|
|
fn = obj.rot13,
|
|
name = "ROT13",
|
|
description = "Apply ROT13 substitution cipher"
|
|
}
|
|
}
|
|
end
|
|
|
|
function obj:bare()
|
|
return nil
|
|
end
|
|
|
|
function obj.rot13(query)
|
|
-- ROT13 implementation taken from https://rosettacode.org/wiki/Rot-13#Lua
|
|
local a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
|
local b = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
|
|
local rot13Text =
|
|
query:gsub(
|
|
"%a",
|
|
function(c)
|
|
return b:sub(a:find(c))
|
|
end
|
|
)
|
|
|
|
return {
|
|
{
|
|
text = rot13Text,
|
|
subText = "Copy result to clipboard",
|
|
plugin = obj.__name,
|
|
type = "copyToClipboard"
|
|
}
|
|
}
|
|
end
|
|
|
|
function obj.completionCallback(rowInfo)
|
|
if rowInfo["type"] == "copyToClipboard" then
|
|
hs.pasteboard.setContents(rowInfo["text"])
|
|
end
|
|
end
|
|
|
|
return obj
|