codenamer.luau/examples/simple.luau

65 lines
1.6 KiB
Text
Raw Normal View History

--[[
examples/simple.luau
Description: A basic codenamer example, which requests the user for a
number of codenames to generate, the way to format them, and
then generates and prints them.
]]--
2023-08-15 13:03:32 +01:00
local Codenamer = require("../dist/codenamer")
local stdio = require("@lune/stdio")
local process = require("@lune/process")
local task = require("@lune/task")
local INTERVAL_WAIT_TIME = 1
local _, count = xpcall(
function ()
return tonumber(stdio.prompt("text", "Number of codenames to be requested: "))
end,
function ()
warn("Please enter a valid number.")
process.exit(1)
end
)
local fmt_type = stdio.prompt(
"select",
"What type of formatting should the codenames use?",
{ "Phrase-like", "Variable-like" }
)
local sep: string?
if fmt_type == 1 then
sep = " "
elseif fmt_type == 2 then
sep = nil
end
local codenames: string | {[number]: string} = {}
print(`Generating codenames, expected wait time: {INTERVAL_WAIT_TIME * count}s.`)
local i: number = 1
repeat
table.insert(codenames, Codenamer.new():get_codename(sep))
i += 1
-- Gather some entropy by waiting
task.wait(INTERVAL_WAIT_TIME / 10)
until i - 1 == count
2023-08-15 13:03:32 +01:00
-- Codenamer also allows for optional separators. Here, we tell codenamer to
-- use a space instead of `_`, which is the default separator for words.
local fmt_arrow = "\n╰╸╾> "
codenames = table.concat(codenames, fmt_arrow)
print("===============")
print("Generated codenames:")
print(fmt_arrow .. codenames)
print("===============")