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