mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-04 14:48:53 +00:00
50 lines
1.8 KiB
Swift
Executable File
50 lines
1.8 KiB
Swift
Executable File
#!/usr/bin/swift
|
|
|
|
// Required parameters:
|
|
// @raycast.schemaVersion 1
|
|
// @raycast.title Zalgo Text
|
|
// @raycast.mode silent
|
|
// @raycast.author Adam Zethraeus
|
|
// @raycast.authorURL https://github.com/adam-zethraeus
|
|
// @raycast.packageName Conversions
|
|
// @raycast.icon 👹
|
|
// @raycast.argument1 { "type": "text", "placeholder": "Text to Z̶̶͚̯͗a̩̞͜͜l̫͕ͬͨ̿g͈̫͂ͤ͆͢o̠͚̞ͥ" }
|
|
// @raycast.argument2 { "type": "text", "optional": true, "placeholder": "Intensity=5" }
|
|
|
|
// Documentation:
|
|
// @raycast.description Converts text to z̫̫̐a̳ͩl̓͂̀ͅg͔̚o̷̦̣͢ t̳͆ḛ̊͟ẍ̮̝́t̵̔ͯ͝
|
|
|
|
import Cocoa
|
|
|
|
// zalgo function credit mattt @ https://gist.github.com/mattt/b46ab5027f1ee6ab1a45583a41240033
|
|
func zalgo(_ string: String, intensity: Int = 5) -> String {
|
|
let combiningDiacriticMarks = 0x0300...0x036f
|
|
let latinAlphabetUppercase = 0x0041...0x005a
|
|
let latinAlphabetLowercase = 0x0061...0x007a
|
|
|
|
var output: [UnicodeScalar] = []
|
|
for scalar in string.unicodeScalars {
|
|
output.append(scalar)
|
|
guard (latinAlphabetUppercase).contains(numericCast(scalar.value)) ||
|
|
(latinAlphabetLowercase).contains(numericCast(scalar.value))
|
|
else {
|
|
continue
|
|
}
|
|
|
|
for _ in 0...(Int.random(in: 1...intensity)) {
|
|
let randomScalarValue = Int.random(in: combiningDiacriticMarks)
|
|
output.append(Unicode.Scalar(randomScalarValue)!)
|
|
}
|
|
}
|
|
|
|
return String(String.UnicodeScalarView(output))
|
|
}
|
|
|
|
NSPasteboard.general.clearContents()
|
|
let text = CommandLine.arguments[1]
|
|
let intensityString = CommandLine.arguments[2]
|
|
let intensity = Int(intensityString) ?? 5
|
|
let zalgoText = zalgo(text, intensity: intensity)
|
|
NSPasteboard.general.setString(zalgoText, forType: .string)
|
|
print("\(zalgoText) copied to clipboard")
|