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
 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"))