src/robots/frantic-barista.lisp @ 26d560b85b8a

Fucking make
author Steve Losh <steve@stevelosh.com>
date Sat, 03 Feb 2018 16:07:49 -0500
parents af9390b6947b
children (none)
(in-package :magitek.robots.frantic-barista)
(named-readtables:in-readtable :chancery)

;;;; Utils --------------------------------------------------------------------
(defun english-number (n)
  (format nil "~R" n))


;;;; Names --------------------------------------------------------------------
(define-string name-simple
  "Sophia"
  "Jackson"
  "Emma"
  "Aiden"
  "Olivia"
  "Lucas"
  "Ava"
  "Liam"
  "Mia"
  "Noah"
  "Isabella"
  "Ethan"
  "Riley"
  "Mason"
  "Aria"
  "Caden"
  "Zoe"
  "Oliver"
  "Charlotte"
  "Elijah"
  "Lily"
  "Grayson"
  "Layla"
  "Jacob"
  "Amelia"
  "Michael"
  "Emily"
  "Benjamin"
  "Madelyn"
  "Carter"
  "Aubrey"
  "James"
  "Adalyn"
  "Jayden"
  "Madison"
  "Logan"
  "Chloe"
  "Alexander"
  "Harper"
  "Caleb")

(define-string name-twitter
  "@stevelosh"
  "@fu86"
  "@rpg_shopkeeper"
  "@git_commands")

(define-string (name :distribution :weighted)
  (50 name-simple)
  (1 name-twitter))


;;;; Liquids ------------------------------------------------------------------
(define-string liquid
  "coffee"
  "cappuccino"
  "mocha"
  "latte"
  "espresso"
  "tea"
  "chai"
  "hot chocolate")


;;;; Sizes --------------------------------------------------------------------
(define-string size-simple
  "small"
  "medium"
  "large")

(define-string size-pretentious
  "short"
  "tall"
  "grande"
  "venti")

(define-string (size :distribution :weighted)
  (5 size-simple)
  (1 size-pretentious))


;;;; Flavor -------------------------------------------------------------------
(define-string adjective
  "artisanal"
  "hand-crafted"
  "fresh"
  "decaf"
  "day-old")

(define-string topping
  "whipped cream"
  "cinnamon"
  "sprinkles")


;;;; Main ---------------------------------------------------------------------
(define-string drink-base
  liquid
  (size liquid)
  (adjective size liquid)
  (adjective liquid))

(define-string drink
  drink-base
  (drink-base "with" topping))

(define-string order
  ("I've got" [drink a] "for" name "here!")
  ([!(random-range-inclusive 2 9) english-number cap]
   [drink-base s] "under" name :. ", to go!"))


;;;; API ----------------------------------------------------------------------
(defun random-tweet ()
  (order))