nandi/freeqsay-nimpublic Fork 0
main
Commits
Clone
git clone https://git.rickub.com/nandi/freeqsay-nim.git
git clone ssh://git@rickub.com/nandi/freeqsay-nim.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

say.nim · 20 lines · 810 BNim Blame HistoryRaw
freeqsay: Nim port of the Clojure implementation fa53aa2 nandi 6h ago1## freeqsay: handle + message → cowsay balloon over a FreeqWorld ANSI avatar.
2
3import std/strutils
4import ./ansi, ./avatar, ./balloon, ./resolve
5
6type Said* = object
7 did*, handle*, text*, output*: string
8
9proc freeqsay*(handleOrDid, message: string, width = 40, think = false,
10 tailIndent = 8, scale = 2, facing = fSouth, frame = 0,
11 resolveOpts = ResolveOpts()): Said =
12 ## Compose a cowsay balloon + FreeqWorld character for a handle and message.
13 let
14 id = resolveIdentity(handleOrDid, resolveOpts)
15 av = deriveAvatar(id.did)
16 balloon = makeBalloon(message, width, think)
17 tail = makeTail(think, tailIndent)
18 face = avatarToAnsi(av, scale, facing, frame)
19 Said(did: id.did, handle: id.handle, text: message,
20 output: [balloon, tail, face].join("\n"))