module RandomNames exposing (..)

import List.Nonempty as Nonempty

-- Docker container name generator lists + Ubuntu release names
adjectives =
    [ "admiring"
    , "adoring"
    , "affectionate"
    , "agitated"
    , "amazing"
    , "angry"
    , "artful"
    , "awesome"
    , "blissful"
    , "boring"
    , "brave"
    , "breezy"
    , "clever"
    , "cocky"
    , "compassionate"
    , "competent"
    , "condescending"
    , "confident"
    , "crafty"
    , "cranky"
    , "dapper"
    , "dazzling"
    , "determined"
    , "distracted"
    , "dreamy"
    , "eager"
    , "ecstatic",
    , "edgy"
    , "elastic"
    , "elated"
    , "elegant"
    , "eloquent"
    , "epic"
    , "feisty"
    , "fervent"
    , "festive"
    , "flamboyant"
    , "focused"
    , "friendly"
    , "frosty"
    , "gallant"
    , "gifted"
    , "goofy"
    , "gracious"
    , "gutsy"
    , "happy"
    , "hardcore"
    , "hardy"
    , "heuristic"
    , "hoary"
    , "hopeful"
    , "hungry"
    , "infallible"
    , "inspiring"
    , "intrepid"
    , "jaunty"
    , "jolly"
    , "jovial"
    , "karmic"
    , "keen"
    , "kind"
    , "laughing"
    , "loving"
    , "lucid"
    , "maverick"
    , "mystifying"
    , "modest"
    , "musing"
    , "naughty"
    , "nervous"
    , "natty"
    , "nifty"
    , "nostalgic"
    , "objective"
    , "oneiric"
    , "optimistic"
    , "peaceful"
    , "pedantic"
    , "pensive"
    , "practical"
    , "precise"
    , "priceless"
    , "quantal"
    , "quirky"
    , "quizzical"
    , "raring"
    , "relaxed"
    , "reverent"
    , "romantic"
    , "sad"
    , "saucy"
    , "serene"
    , "sharp"
    , "silly"
    , "sleepy"
    , "stoic"
    , "stupefied"
    , "suspicious"
    , "tender"
    , "thirsty"
    , "trusty"
    , "trusting"
    , "unruffled"
    , "upbeat"
    , "utopic"
    , "vibrant"
    , "vigilant"
    , "vigorous"
    , "vivid"
    , "warty"
    , "wily"
    , "wizardly"
    , "wonderful"
    , "xenial"
    , "xenodochial"
    , "yakkety"
    , "youthful"
    , "zealous"
    , "zesty"
    , "zen"
    ]

-- http://www.birdphotography.com/birdlist2.html
birds =
    [ "albatross"
    , "auklet"
    , "bittern"
    , "blackbird"
    , "bluebird"
    , "booby"
    , "bunting"
    , "chickadee"
    , "cormorant"
    , "cowbird"
    , "crow"
    , "dove"
    , "dowitcher"
    , "duck"
    , "eagle"
    , "egret"
    , "falcon"
    , "finch"
    , "flycatcher"
    , "gallinule"
    , "gnatcatcher"
    , "godwit"
    , "goldeneye"
    , "goldfinch"
    , "goose"
    , "grackle"
    , "grebe"
    , "grosbeak"
    , "gull"
    , "hawk"
    , "heron"
    , "hummingbird"
    , "ibis"
    , "jaeger"
    , "jay"
    , "junco"
    , "kingbird"
    , "kinglet"
    , "kite"
    , "loon"
    , "magpie"
    , "meadowlark"
    , "merganser"
    , "murrelet"
    , "nuthatch"
    , "oriole"
    , "owl"
    , "pelican"
    , "petrel"
    , "pewee"
    , "phalarope"
    , "phoebe"
    , "pigeon"
    , "pipit"
    , "plover"
    , "puffin"
    , "quail"
    , "rail"
    , "raven"
    , "redstart"
    , "sandpiper"
    , "sapsucker"
    , "scaup"
    , "scoter"
    , "shearwater"
    , "shrike"
    , "skua"
    , "sparrow"
    , "storm-petrel"
    , "swallow"
    , "swift"
    , "tanager"
    , "teal"
    , "tern"
    , "thrasher"
    , "thrush"
    , "titmouse"
    , "towhee"
    , "turnstone"
    , "vireo"
    , "vulture"
    , "warbler"
    , "wigeon"
    , "woodpecker"
    , "wren"
    , "yellowlegs"
    ]

greekLetters =
    [ "alpha"
    , "beta"
    , "gamma"
    , "delta"
    , "epsilon"
    , "zeta"
    , "eta"
    , "theta"
    , "iota"
    , "kappa"
    , "lambda"
    , "mu"
    , "nu"
    , "xi"
    , "omicron"
    , "pi"
    , "rho"
    , "sigma"
    , "tau"
    , "upsilon"
    , "phi"
    , "chi"
    , "psi"
    , "omega"
    ]

pick : List a -> Random.Generator a
pick =
    Nonempty.fromList >> Nonempty.sample

name : String -> List (List String) -> Random.Generator String
name separator lists =
    List.map pick lists
    |> String.join separator