pub const ADJECTIVES: &[&str] = &[
"cute",
"dapper",
"large",
"small",
"long",
"short",
"thick",
"narrow",
"deep",
"flat",
"whole",
"low",
"high",
"near",
"far",
"fast",
"quick",
"slow",
"early",
"late",
"bright",
"dark",
"cloudy",
"warm",
"cool",
"cold",
"windy",
"noisy",
"loud",
"quiet",
"dry",
"clear",
"hard",
"soft",
"heavy",
"light",
"strong",
"weak",
"tidy",
"clean",
"dirty",
"empty",
"full",
"close",
"thirsty",
"hungry",
"fat",
"old",
"fresh",
"dead",
"healthy",
"sweet",
"sour",
"bitter",
"salty",
"good",
"bad",
"great",
"important",
"useful",
"expensive",
"cheap",
"free",
"difficult",
"able",
"rich",
"afraid",
"brave",
"fine",
"sad",
"proud",
"comfortable",
"happy",
"clever",
"interesting",
"famous",
"exciting",
"funny",
"kind",
"polite",
"fair",
"busy",
"lazy",
"lucky",
"careful",
"safe",
"dangerous",
];
pub const NOUNS: &[&str] = &[
"rabbit",
"badger",
"fox",
"chicken",
"bat",
"deer",
"snake",
"hare",
"hedgehog",
"platypus",
"mole",
"mouse",
"otter",
"rat",
"squirrel",
"stoat",
"weasel",
"crow",
"dove",
"duck",
"goose",
"hawk",
"heron",
"kingfisher",
"owl",
"peacock",
"pheasant",
"pigeon",
"robin",
"rook",
"sparrow",
"starling",
"swan",
"ant",
"bee",
"butterfly",
"dragonfly",
"fly",
"moth",
"spider",
"pike",
"salmon",
"trout",
"frog",
"newt",
"toad",
"crab",
"lobster",
"clam",
"cockle",
"mussel",
"oyster",
"snail",
"cow",
"dog",
"donkey",
"goat",
"horse",
"pig",
"sheep",
"ferret",
"gerbil",
"guinea-pig",
"parrot",
"book",
"table",
"chair",
"lamp",
"phone",
"computer",
"window",
"door",
];
pub const VERBS: &[&str] = &[
"sing", "play", "knit", "flounder", "dance", "listen", "run", "talk",
"cuddle", "sit", "kiss", "hug", "whimper", "hide", "fight", "whisper",
"cry", "snuggle", "walk", "drive", "loiter", "feel", "jump", "hop", "go",
"marry", "engage", "sleep", "eat", "drink", "read", "write", "swim", "fly",
"climb", "build", "create", "explore", "discover", "learn",
];
pub const ADVERBS: &[&str] = &[
"jovially",
"merrily",
"cordially",
"carefully",
"correctly",
"eagerly",
"easily",
"fast",
"loudly",
"patiently",
"quickly",
"quietly",
"slowly",
"gently",
"firmly",
"softly",
"boldly",
"bravely",
"calmly",
"clearly",
"closely",
"deeply",
"directly",
"exactly",
"fairly",
"freely",
"fully",
];
pub const PREPOSITIONS: &[&str] = &[
"in", "on", "at", "by", "for", "with", "from", "to", "of", "about",
"under", "over", "through", "between", "among", "during", "before",
"after", "above", "below", "beside", "behind", "beyond", "within",
"without", "across",
];
#[derive(Debug, Clone, Copy)]
pub struct DictionaryStats {
pub adjectives: usize,
pub nouns: usize,
pub verbs: usize,
pub adverbs: usize,
pub prepositions: usize,
}
impl DictionaryStats {
pub const fn new() -> Self {
Self {
adjectives: ADJECTIVES.len(),
nouns: NOUNS.len(),
verbs: VERBS.len(),
adverbs: ADVERBS.len(),
prepositions: PREPOSITIONS.len(),
}
}
}
#[derive(Debug, Clone)]
pub struct Dictionary {
pub adjectives: &'static [&'static str],
pub nouns: &'static [&'static str],
pub verbs: &'static [&'static str],
pub adverbs: &'static [&'static str],
pub prepositions: &'static [&'static str],
pub stats: DictionaryStats,
}
impl Dictionary {
pub const fn new() -> Self {
Self {
adjectives: ADJECTIVES,
nouns: NOUNS,
verbs: VERBS,
adverbs: ADVERBS,
prepositions: PREPOSITIONS,
stats: DictionaryStats::new(),
}
}
}
impl Default for Dictionary {
fn default() -> Self {
Self::new()
}
}
pub const fn get_dictionary() -> Dictionary {
Dictionary::new()
}
pub const fn get_dictionary_stats() -> DictionaryStats {
DictionaryStats::new()
}