From 043ec03080b8bab4083ab7be73430a266256b636 Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Sat, 3 Jun 2017 22:51:40 +0200 Subject: [PATCH 1/5] Add importer for data from corpora. See #30 for more. --- cmd/importcorpora/main.go | 203 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 cmd/importcorpora/main.go diff --git a/cmd/importcorpora/main.go b/cmd/importcorpora/main.go new file mode 100644 index 0000000..63a48e8 --- /dev/null +++ b/cmd/importcorpora/main.go @@ -0,0 +1,203 @@ +// Usage: go run cmd/importcorpora/main.go +// +// Updates the at the bottom of this file specified data files with content from dariusk/corpora. +package main + +import ( + "archive/zip" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + "os" + "path/filepath" + "strings" +) + +// URL to zip file +const corporaArchive = "https://github.com/dariusk/corpora/archive/master.zip" + +// Path to write Go file to +const targetDir = "pkg/data" + +// Content of a Go file +const fileTemplate = `package data + +var %s = %s` + +func main() { + // Check if running in repo directory + _, err := os.Stat(targetDir) + if err != nil && !os.IsNotExist(err) { + log.Fatal(err) + } + if err != nil { + log.Fatalf("The data directory cannot be found at %s. Ensure the importer is running in the correct location.", targetDir) + } + + dir, err := downloadCorpora() + defer func() { + if dir == "" { + return + } + if err := os.RemoveAll(dir); err != nil { + panic(err) + } + }() + if err != nil { + log.Fatal(err) + } + + for _, d := range data { + // Get data from JSON file + f, err := ioutil.ReadFile(filepath.Join(dir, "corpora-master/data", d.From)) + if err != nil { + log.Fatal(err) + } + var jsonData map[string]interface{} + if err := json.Unmarshal(f, &jsonData); err != nil { + log.Fatal(err) + } + + // Fix formatting + value := strings.Replace(fmt.Sprintf("%#v\n", jsonData[d.Key]), "interface {}", "string", 1) + content := fmt.Sprintf(fileTemplate, d.Var, value) + + // Create required directories + to := filepath.Join("pkg/data", d.To) + if err := os.MkdirAll(filepath.Dir(to), 0777); err != nil { + log.Fatal(err) + } + + // Write to Go file + if err := ioutil.WriteFile(to, []byte(content), 0644); err != nil { + log.Fatal(err) + } + } +} + +// Download corpora repo into a tmp dir and return path to dir +func downloadCorpora() (string, error) { + // Create tmp dir + dir, err := ioutil.TempDir("", "fakedata-import-") + if err != nil { + return dir, err + } + + // Create tmp file to write zip file to + tmpArchive, err := ioutil.TempFile("", "fakedata-import-archive") + if err != nil { + return dir, err + } + defer func() { + if err := os.Remove(tmpArchive.Name()); err != nil { + panic(err) + } + }() + + // Download zip file + resp, err := http.Get(corporaArchive) + defer func() { + if err := resp.Body.Close(); err != nil { + panic(err) + } + }() + _, err = io.Copy(tmpArchive, resp.Body) + if err != nil { + return dir, err + } + if err := tmpArchive.Close(); err != nil { + return dir, err + } + + // Unzip to tmp dir (adopted from https://stackoverflow.com/a/24792688/986455) + r, err := zip.OpenReader(tmpArchive.Name()) + if err != nil { + return dir, err + } + defer func() { + if err := r.Close(); err != nil { + panic(err) + } + }() + + extractAndWriteFile := func(zipFile *zip.File) error { + zipReader, err := zipFile.Open() + if err != nil { + return err + } + defer func() { + if err := zipReader.Close(); err != nil { + panic(err) + } + }() + + path := filepath.Join(dir, zipFile.Name) + if zipFile.FileInfo().IsDir() { + return os.MkdirAll(path, zipFile.Mode()) + } + if err := os.MkdirAll(filepath.Dir(path), zipFile.Mode()); err != nil { + return err + } + + target, err := os.Create(path) + if err != nil { + return err + } + defer func() { + if err := target.Close(); err != nil { + panic(err) + } + }() + + _, err = io.Copy(target, zipReader) + return err + } + + for _, f := range r.File { + if err := extractAndWriteFile(f); err != nil { + return dir, err + } + } + + return dir, nil +} + +// Data to import is specified +var data = []struct { + // JSON file to read from + From string + // Key containing data in JSON file + Key string + // Go File to write to + To string + // Variable name in the Go File + Var string +}{ + { + From: "words/nouns.json", + Key: "nouns", + To: "nouns.go", + Var: "Nouns", + }, + { + From: "animals/common.json", + Key: "animals", + To: "animals.go", + Var: "Animals", + }, + { + From: "animals/cats.json", + Key: "cats", + To: "cats.go", + Var: "Cats", + }, + { + From: "words/emoji/emoji.json", + Key: "emoji", + To: "emojis.go", + Var: "Emojis", + }, +} From aaa8cc34cdd35921fdf82eaa60af3791d8728447 Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Sat, 3 Jun 2017 23:04:24 +0200 Subject: [PATCH 2/5] Add first corpora generators: animal, cat, noun, emoji. --- cmd/importcorpora/main.go | 2 +- integration/generators.golden | 4 ++++ pkg/data/animals.go | 3 +++ pkg/data/cats.go | 3 +++ pkg/data/emojis.go | 3 +++ pkg/data/nouns.go | 3 +++ pkg/fakedata/generator.go | 30 ++++++++++++++++++++++++++++++ 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 pkg/data/animals.go create mode 100644 pkg/data/cats.go create mode 100644 pkg/data/emojis.go create mode 100644 pkg/data/nouns.go diff --git a/cmd/importcorpora/main.go b/cmd/importcorpora/main.go index 63a48e8..ece04db 100644 --- a/cmd/importcorpora/main.go +++ b/cmd/importcorpora/main.go @@ -66,7 +66,7 @@ func main() { content := fmt.Sprintf(fileTemplate, d.Var, value) // Create required directories - to := filepath.Join("pkg/data", d.To) + to := filepath.Join(targetDir, d.To) if err := os.MkdirAll(filepath.Dir(to), 0777); err != nil { log.Fatal(err) } diff --git a/integration/generators.golden b/integration/generators.golden index 595a19b..64a4ecd 100644 --- a/integration/generators.golden +++ b/integration/generators.golden @@ -1,3 +1,5 @@ +animal random animal name +cat random cat breed color one word color country Full country name country.code 2-digit country code @@ -7,6 +9,7 @@ domain.name example|test domain.tld name|info|com|org|me|us double double number email email +emoji random emoji enum a random value from an enum. Defaults to "foo..bar..baz" event.action clicked|purchased|viewed|watched file Read a random line from a file. Pass filepath with 'file,path/to/file.txt'. @@ -20,6 +23,7 @@ mac.address mac address name name.first + " " + name.last name.first capitalized first name name.last capitalized last name +noun random noun product.category Beauty|Games|Movies|Tools|.. product.name invented product name state Full US state name diff --git a/pkg/data/animals.go b/pkg/data/animals.go new file mode 100644 index 0000000..0c5e612 --- /dev/null +++ b/pkg/data/animals.go @@ -0,0 +1,3 @@ +package data + +var Animals = []string{"aardvark", "alligator", "alpaca", "antelope", "ape", "armadillo", "baboon", "badger", "bat", "bear", "beaver", "bison", "boar", "buffalo", "bull", "camel", "canary", "capybara", "cat", "chameleon", "cheetah", "chimpanzee", "chinchilla", "chipmunk", "cougar", "cow", "coyote", "crocodile", "crow", "deer", "dingo", "dog", "donkey", "dromedary", "elephant", "elk", "ewe", "ferret", "finch", "fish", "fox", "frog", "gazelle", "gila monster", "giraffe", "gnu", "goat", "gopher", "gorilla", "grizzly bear", "ground hog", "guinea pig", "hamster", "hedgehog", "hippopotamus", "hog", "horse", "hyena", "ibex", "iguana", "impala", "jackal", "jaguar", "kangaroo", "koala", "lamb", "lemur", "leopard", "lion", "lizard", "llama", "lynx", "mandrill", "marmoset", "mink", "mole", "mongoose", "monkey", "moose", "mountain goat", "mouse", "mule", "muskrat", "mustang", "mynah bird", "newt", "ocelot", "opossum", "orangutan", "oryx", "otter", "ox", "panda", "panther", "parakeet", "parrot", "pig", "platypus", "polar bear", "porcupine", "porpoise", "prairie dog", "puma", "rabbit", "raccoon", "ram", "rat", "reindeer", "reptile", "rhinoceros", "salamander", "seal", "sheep", "shrew", "silver fox", "skunk", "sloth", "snake", "squirrel", "tapir", "tiger", "toad", "turtle", "walrus", "warthog", "weasel", "whale", "wildcat", "wolf", "wolverine", "wombat", "woodchuck", "yak", "zebra"} diff --git a/pkg/data/cats.go b/pkg/data/cats.go new file mode 100644 index 0000000..63d8a60 --- /dev/null +++ b/pkg/data/cats.go @@ -0,0 +1,3 @@ +package data + +var Cats = []string{"Abyssinian", "Aegean", "American Bobtail", "American Curl", "American Shorthair", "American Wirehair", "Arabian Mau", "Asian", "Asian Semi-longhair", "Australian Mist", "Balinese", "Bambino", "Bengal", "Birman", "Bombay", "Brazilian Shorthair", "British Longhair", "British Semi-longhair", "British Shorthair", "Burmese", "Burmilla", "California Spangled", "Chantilly-Tiffany", "Chartreux", "Chausie", "Cheetoh", "Colorpoint Shorthair", "Cornish Rex", "Cymric", "Cyprus", "Devon Rex", "Donskoy", "Dragon Li", "Dwarf cat", "Egyptian Mau", "European Shorthair", "Exotic Shorthair", "Foldex", "German Rex", "Havana Brown", "Highlander", "Himalayan", "Japanese Bobtail", "Javanese", "Khao Manee", "Korat", "Korean Bobtail", "Korn Ja", "Kurilian Bobtail", "LaPerm", "Lykoi", "Maine Coon", "Manx", "Mekong Bobtail", "Minskin", "Munchkin", "Napoleon", "Nebelung", "Norwegian Forest cat", "Ocicat", "Ojos Azules", "Oregon Rex", "Oriental Bicolor", "Oriental Longhair", "Oriental Shorthair", "PerFold", "Persian (Modern)", "Persian (Traditional)", "Peterbald", "Pixie-bob", "Raas", "Ragamuffin", "Ragdoll", "Russian Blue", "Russian White, Black and Tabby", "Sam Sawet", "Savannah", "Scottish Fold", "Selkirk Rex", "Serengeti", "Serrade Petit", "Siamese", "Siberian", "Singapura", "Snowshoe", "Sokoke", "Somali", "Sphynx", "Suphalak", "Thai", "Thai Lilac", "Tonkinese", "Toyger", "Turkish Angora", "Turkish Van", "Ukrainian Levkoy"} diff --git a/pkg/data/emojis.go b/pkg/data/emojis.go new file mode 100644 index 0000000..9ea4405 --- /dev/null +++ b/pkg/data/emojis.go @@ -0,0 +1,3 @@ +package data + +var Emojis = []string{"๐Ÿ€„", "๐Ÿƒ", "๐Ÿ…ฐ", "๐Ÿ…ฑ", "๐Ÿ…พ", "๐Ÿ…ฟ", "๐Ÿ†Ž", "๐Ÿ†‘", "๐Ÿ†’", "๐Ÿ†“", "๐Ÿ†”", "๐Ÿ†•", "๐Ÿ†–", "๐Ÿ†—", "๐Ÿ†˜", "๐Ÿ†™", "๐Ÿ†š", "๐Ÿ‡ฆ", "๐Ÿ‡ง", "๐Ÿ‡จ", "๐Ÿ‡ฉ", "๐Ÿ‡ช", "๐Ÿ‡ซ", "๐Ÿ‡ฌ", "๐Ÿ‡ญ", "๐Ÿ‡ฎ", "๐Ÿ‡ฏ", "๐Ÿ‡ฐ", "๐Ÿ‡ฑ", "๐Ÿ‡ฒ", "๐Ÿ‡ณ", "๐Ÿ‡ด", "๐Ÿ‡ต", "๐Ÿ‡ถ", "๐Ÿ‡ท", "๐Ÿ‡ธ", "๐Ÿ‡น", "๐Ÿ‡บ", "๐Ÿ‡ป", "๐Ÿ‡ผ", "๐Ÿ‡ฝ", "๐Ÿ‡พ", "๐Ÿ‡ฟ", "๐Ÿˆ", "๐Ÿˆ‚", "๐Ÿˆš", "๐Ÿˆฏ", "๐Ÿˆฒ", "๐Ÿˆณ", "๐Ÿˆด", "๐Ÿˆต", "๐Ÿˆถ", "๐Ÿˆท", "๐Ÿˆธ", "๐Ÿˆน", "๐Ÿˆบ", "๐Ÿ‰", "๐Ÿ‰‘", "๐ŸŒ€", "๐ŸŒ", "๐ŸŒ‚", "๐ŸŒƒ", "๐ŸŒ„", "๐ŸŒ…", "๐ŸŒ†", "๐ŸŒ‡", "๐ŸŒˆ", "๐ŸŒ‰", "๐ŸŒŠ", "๐ŸŒ‹", "๐ŸŒŒ", "๐ŸŒ", "๐ŸŒŽ", "๐ŸŒ", "๐ŸŒ", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", "๐ŸŒ™", "๐ŸŒš", "๐ŸŒ›", "๐ŸŒœ", "๐ŸŒ", "๐ŸŒž", "๐ŸŒŸ", "๐ŸŒ ", "๐ŸŒฐ", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒณ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒท", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒบ", "๐ŸŒป", "๐ŸŒผ", "๐ŸŒฝ", "๐ŸŒพ", "๐ŸŒฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐ŸŽ€", "๐ŸŽ", "๐ŸŽ‚", "๐ŸŽƒ", "๐ŸŽ„", "๐ŸŽ…", "๐ŸŽ†", "๐ŸŽ‡", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽŠ", "๐ŸŽ‹", "๐ŸŽŒ", "๐ŸŽ", "๐ŸŽŽ", "๐ŸŽ", "๐ŸŽ", "๐ŸŽ‘", "๐ŸŽ’", "๐ŸŽ“", "๐ŸŽ ", "๐ŸŽก", "๐ŸŽข", "๐ŸŽฃ", "๐ŸŽค", "๐ŸŽฅ", "๐ŸŽฆ", "๐ŸŽง", "๐ŸŽจ", "๐ŸŽฉ", "๐ŸŽช", "๐ŸŽซ", "๐ŸŽฌ", "๐ŸŽญ", "๐ŸŽฎ", "๐ŸŽฏ", "๐ŸŽฐ", "๐ŸŽฑ", "๐ŸŽฒ", "๐ŸŽณ", "๐ŸŽด", "๐ŸŽต", "๐ŸŽถ", "๐ŸŽท", "๐ŸŽธ", "๐ŸŽน", "๐ŸŽบ", "๐ŸŽป", "๐ŸŽผ", "๐ŸŽฝ", "๐ŸŽพ", "๐ŸŽฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐Ÿฝ", "๐Ÿพ", "๐Ÿ‘€", "๐Ÿ‘‚", "๐Ÿ‘ƒ", "๐Ÿ‘„", "๐Ÿ‘…", "๐Ÿ‘†", "๐Ÿ‘‡", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘Š", "๐Ÿ‘‹", "๐Ÿ‘Œ", "๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘", "๐Ÿ‘", "๐Ÿ‘‘", "๐Ÿ‘’", "๐Ÿ‘“", "๐Ÿ‘”", "๐Ÿ‘•", "๐Ÿ‘–", "๐Ÿ‘—", "๐Ÿ‘˜", "๐Ÿ‘™", "๐Ÿ‘š", "๐Ÿ‘›", "๐Ÿ‘œ", "๐Ÿ‘", "๐Ÿ‘ž", "๐Ÿ‘Ÿ", "๐Ÿ‘ ", "๐Ÿ‘ก", "๐Ÿ‘ข", "๐Ÿ‘ฃ", "๐Ÿ‘ค", "๐Ÿ‘ฅ", "๐Ÿ‘ฆ", "๐Ÿ‘ง", "๐Ÿ‘จ", "๐Ÿ‘ฉ", "๐Ÿ‘ช", "๐Ÿ‘ซ", "๐Ÿ‘ฌ", "๐Ÿ‘ญ", "๐Ÿ‘ฎ", "๐Ÿ‘ฏ", "๐Ÿ‘ฐ", "๐Ÿ‘ฑ", "๐Ÿ‘ฒ", "๐Ÿ‘ณ", "๐Ÿ‘ด", "๐Ÿ‘ต", "๐Ÿ‘ถ", "๐Ÿ‘ท", "๐Ÿ‘ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ผ", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿ‘ฟ", "๐Ÿ’€", "๐Ÿ’", "๐Ÿ’‚", "๐Ÿ’ƒ", "๐Ÿ’„", "๐Ÿ’…", "๐Ÿ’†", "๐Ÿ’‡", "๐Ÿ’ˆ", "๐Ÿ’‰", "๐Ÿ’Š", "๐Ÿ’‹", "๐Ÿ’Œ", "๐Ÿ’", "๐Ÿ’Ž", "๐Ÿ’", "๐Ÿ’", "๐Ÿ’‘", "๐Ÿ’’", "๐Ÿ’“", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’–", "๐Ÿ’—", "๐Ÿ’˜", "๐Ÿ’™", "๐Ÿ’š", "๐Ÿ’›", "๐Ÿ’œ", "๐Ÿ’", "๐Ÿ’ž", "๐Ÿ’Ÿ", "๐Ÿ’ ", "๐Ÿ’ก", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ค", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’ง", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ช", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ’ญ", "๐Ÿ’ฎ", "๐Ÿ’ฏ", "๐Ÿ’ฐ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "๐Ÿ’ณ", "๐Ÿ’ด", "๐Ÿ’ต", "๐Ÿ’ถ", "๐Ÿ’ท", "๐Ÿ’ธ", "๐Ÿ’น", "๐Ÿ’บ", "๐Ÿ’ป", "๐Ÿ’ผ", "๐Ÿ’ฝ", "๐Ÿ’พ", "๐Ÿ’ฟ", "๐Ÿ“€", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“ƒ", "๐Ÿ“„", "๐Ÿ“…", "๐Ÿ“†", "๐Ÿ“‡", "๐Ÿ“ˆ", "๐Ÿ“‰", "๐Ÿ“Š", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“", "๐Ÿ“Ž", "๐Ÿ“", "๐Ÿ“", "๐Ÿ“‘", "๐Ÿ“’", "๐Ÿ““", "๐Ÿ“”", "๐Ÿ“•", "๐Ÿ“–", "๐Ÿ“—", "๐Ÿ“˜", "๐Ÿ“™", "๐Ÿ“š", "๐Ÿ“›", "๐Ÿ“œ", "๐Ÿ“", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“ก", "๐Ÿ“ข", "๐Ÿ“ฃ", "๐Ÿ“ค", "๐Ÿ“ฅ", "๐Ÿ“ฆ", "๐Ÿ“ง", "๐Ÿ“จ", "๐Ÿ“ฉ", "๐Ÿ“ช", "๐Ÿ“ซ", "๐Ÿ“ฌ", "๐Ÿ“ญ", "๐Ÿ“ฎ", "๐Ÿ“ฏ", "๐Ÿ“ฐ", "๐Ÿ“ฑ", "๐Ÿ“ฒ", "๐Ÿ“ณ", "๐Ÿ“ด", "๐Ÿ“ต", "๐Ÿ“ถ", "๐Ÿ“ท", "๐Ÿ“น", "๐Ÿ“บ", "๐Ÿ“ป", "๐Ÿ“ผ", "๐Ÿ”€", "๐Ÿ”", "๐Ÿ”‚", "๐Ÿ”ƒ", "๐Ÿ”„", "๐Ÿ”…", "๐Ÿ”†", "๐Ÿ”‡", "๐Ÿ”ˆ", "๐Ÿ”‰", "๐Ÿ”Š", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ”", "๐Ÿ”Ž", "๐Ÿ”", "๐Ÿ”", "๐Ÿ”‘", "๐Ÿ”’", "๐Ÿ”“", "๐Ÿ””", "๐Ÿ”•", "๐Ÿ”–", "๐Ÿ”—", "๐Ÿ”˜", "๐Ÿ”™", "๐Ÿ”š", "๐Ÿ”›", "๐Ÿ”œ", "๐Ÿ”", "๐Ÿ”ž", "๐Ÿ”Ÿ", "๐Ÿ” ", "๐Ÿ”ก", "๐Ÿ”ข", "๐Ÿ”ฃ", "๐Ÿ”ค", "๐Ÿ”ฅ", "๐Ÿ”ฆ", "๐Ÿ”ง", "๐Ÿ”จ", "๐Ÿ”ฉ", "๐Ÿ”ช", "๐Ÿ”ซ", "๐Ÿ”ฌ", "๐Ÿ”ญ", "๐Ÿ”ฎ", "๐Ÿ”ฏ", "๐Ÿ”ฐ", "๐Ÿ”ฑ", "๐Ÿ”ฒ", "๐Ÿ”ณ", "๐Ÿ”ด", "๐Ÿ”ต", "๐Ÿ”ถ", "๐Ÿ”ท", "๐Ÿ”ธ", "๐Ÿ”น", "๐Ÿ”บ", "๐Ÿ”ป", "๐Ÿ”ผ", "๐Ÿ”ฝ", "๐Ÿ•", "๐Ÿ•‘", "๐Ÿ•’", "๐Ÿ•“", "๐Ÿ•”", "๐Ÿ••", "๐Ÿ•–", "๐Ÿ•—", "๐Ÿ•˜", "๐Ÿ•™", "๐Ÿ•š", "๐Ÿ•›", "๐Ÿ•œ", "๐Ÿ•", "๐Ÿ•ž", "๐Ÿ•Ÿ", "๐Ÿ• ", "๐Ÿ•ก", "๐Ÿ•ข", "๐Ÿ•ฃ", "๐Ÿ•ค", "๐Ÿ•ฅ", "๐Ÿ•ฆ", "๐Ÿ•ง", "๐Ÿ—ป", "๐Ÿ—ผ", "๐Ÿ—ฝ", "๐Ÿ—พ", "๐Ÿ—ฟ", "๐Ÿ˜€", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿ˜‡", "๐Ÿ˜ˆ", "๐Ÿ˜‰", "๐Ÿ˜Š", "๐Ÿ˜‹", "๐Ÿ˜Œ", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜’", "๐Ÿ˜“", "๐Ÿ˜”", "๐Ÿ˜•", "๐Ÿ˜–", "๐Ÿ˜—", "๐Ÿ˜˜", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿ˜ž", "๐Ÿ˜Ÿ", "๐Ÿ˜ ", "๐Ÿ˜ก", "๐Ÿ˜ข", "๐Ÿ˜ฃ", "๐Ÿ˜ค", "๐Ÿ˜ฅ", "๐Ÿ˜ฆ", "๐Ÿ˜ง", "๐Ÿ˜จ", "๐Ÿ˜ฉ", "๐Ÿ˜ช", "๐Ÿ˜ซ", "๐Ÿ˜ฌ", "๐Ÿ˜ญ", "๐Ÿ˜ฎ", "๐Ÿ˜ฏ", "๐Ÿ˜ฐ", "๐Ÿ˜ฑ", "๐Ÿ˜ฒ", "๐Ÿ˜ณ", "๐Ÿ˜ด", "๐Ÿ˜ต", "๐Ÿ˜ถ", "๐Ÿ˜ท", "๐Ÿ˜ธ", "๐Ÿ˜น", "๐Ÿ˜บ", "๐Ÿ˜ป", "๐Ÿ˜ผ", "๐Ÿ˜ฝ", "๐Ÿ˜พ", "๐Ÿ˜ฟ", "๐Ÿ™€", "๐Ÿ™", "๐Ÿ™‚", "๐Ÿ™…", "๐Ÿ™†", "๐Ÿ™‡", "๐Ÿ™ˆ", "๐Ÿ™‰", "๐Ÿ™Š", "๐Ÿ™‹", "๐Ÿ™Œ", "๐Ÿ™", "๐Ÿ™Ž", "๐Ÿ™", "๐Ÿš€", "๐Ÿš", "๐Ÿš‚", "๐Ÿšƒ", "๐Ÿš„", "๐Ÿš…", "๐Ÿš†", "๐Ÿš‡", "๐Ÿšˆ", "๐Ÿš‰", "๐ŸšŠ", "๐Ÿš‹", "๐ŸšŒ", "๐Ÿš", "๐ŸšŽ", "๐Ÿš", "๐Ÿš", "๐Ÿš‘", "๐Ÿš’", "๐Ÿš“", "๐Ÿš”", "๐Ÿš•", "๐Ÿš–", "๐Ÿš—", "๐Ÿš˜", "๐Ÿš™", "๐Ÿšš", "๐Ÿš›", "๐Ÿšœ", "๐Ÿš", "๐Ÿšž", "๐ŸšŸ", "๐Ÿš ", "๐Ÿšก", "๐Ÿšข", "๐Ÿšฃ", "๐Ÿšค", "๐Ÿšฅ", "๐Ÿšฆ", "๐Ÿšง", "๐Ÿšจ", "๐Ÿšฉ", "๐Ÿšช", "๐Ÿšซ", "๐Ÿšฌ", "๐Ÿšญ", "๐Ÿšฎ", "๐Ÿšฏ", "๐Ÿšฐ", "๐Ÿšฑ", "๐Ÿšฒ", "๐Ÿšณ", "๐Ÿšด", "๐Ÿšต", "๐Ÿšถ", "๐Ÿšท", "๐Ÿšธ", "๐Ÿšน", "๐Ÿšบ", "๐Ÿšป", "๐Ÿšผ", "๐Ÿšฝ", "๐Ÿšพ", "๐Ÿšฟ", "๐Ÿ›€", "๐Ÿ›", "๐Ÿ›‚", "๐Ÿ›ƒ", "๐Ÿ›„", "๐Ÿ›…", "โ€ผ", "โ‰", "โ„ข", "โ„น", "โ†”", "โ†•", "โ†–", "โ†—", "โ†˜", "โ†™", "โ†ฉ", "โ†ช", "#", "โŒš", "โŒ›", "โฉ", "โช", "โซ", "โฌ", "โฐ", "โณ", "โ“‚", "โ–ช", "โ–ซ", "โ–ถ", "โ—€", "โ—ป", "โ—ผ", "โ—ฝ", "โ—พ", "โ˜€", "โ˜", "โ˜Ž", "โ˜‘", "โ˜”", "โ˜•", "โ˜", "โ˜บ", "โ™ˆ", "โ™‰", "โ™Š", "โ™‹", "โ™Œ", "โ™", "โ™Ž", "โ™", "โ™", "โ™‘", "โ™’", "โ™“", "โ™ ", "โ™ฃ", "โ™ฅ", "โ™ฆ", "โ™จ", "โ™ป", "โ™ฟ", "โš“", "โš ", "โšก", "โšช", "โšซ", "โšฝ", "โšพ", "โ›„", "โ›…", "โ›Ž", "โ›”", "โ›ช", "โ›ฒ", "โ›ณ", "โ›ต", "โ›บ", "โ›ฝ", "โœ‚", "โœ…", "โœˆ", "โœ‰", "โœŠ", "โœ‹", "โœŒ", "โœ", "โœ’", "โœ”", "โœ–", "โœจ", "โœณ", "โœด", "โ„", "โ‡", "โŒ", "โŽ", "โ“", "โ”", "โ•", "โ—", "โค", "โž•", "โž–", "โž—", "โžก", "โžฐ", "โžฟ", "โคด", "โคต", "โฌ…", "โฌ†", "โฌ‡", "โฌ›", "โฌœ", "โญ", "โญ•", "0", "ใ€ฐ", "ใ€ฝ", "1", "2", "ใŠ—", "ใŠ™", "3", "4", "5", "6", "7", "8", "9", "ยฉ", "ยฎ", "\ue50a"} diff --git a/pkg/data/nouns.go b/pkg/data/nouns.go new file mode 100644 index 0000000..6b680b9 --- /dev/null +++ b/pkg/data/nouns.go @@ -0,0 +1,3 @@ +package data + +var Nouns = []string{"Armour", "Barrymore", "Cabot", "Catholicism", "Chihuahua", "Christianity", "Easter", "Frenchman", "Lowry", "Mayer", "Orientalism", "Pharaoh", "Pueblo", "Pullman", "Rodeo", "Saturday", "Sister", "Snead", "Syrah", "Tuesday", "Woodward", "abbey", "absence", "absorption", "abstinence", "absurdity", "abundance", "acceptance", "accessibility", "accommodation", "accomplice", "accountability", "accounting", "accreditation", "accuracy", "acquiescence", "acreage", "actress", "actuality", "adage", "adaptation", "adherence", "adjustment", "adoption", "adultery", "advancement", "advert", "advertisement", "advertising", "advice", "aesthetics", "affinity", "aggression", "agriculture", "aircraft", "airtime", "allegation", "allegiance", "allegory", "allergy", "allies", "alligator", "allocation", "allotment", "altercation", "ambulance", "ammonia", "anatomy", "anemia", "ankle", "announcement", "annoyance", "annuity", "anomaly", "anthropology", "anxiety", "apartheid", "apologise", "apostle", "apparatus", "appeasement", "appellation", "appendix", "applause", "appointment", "appraisal", "archery", "archipelago", "architecture", "ardor", "arrears", "arrow", "artisan", "artistry", "ascent", "assembly", "assignment", "association", "asthma", "atheism", "attacker", "attraction", "attractiveness", "auspices", "authority", "avarice", "aversion", "aviation", "babbling", "backlash", "baker", "ballet", "balls", "banjo", "baron", "barrier", "barrister", "bases", "basin", "basis", "battery", "battling", "bedtime", "beginner", "begun", "bending", "bicycle", "billing", "bingo", "biography", "biology", "birthplace", "blackberry", "blather", "blossom", "boardroom", "boasting", "bodyguard", "boldness", "bomber", "bondage", "bonding", "bones", "bonus", "bookmark", "boomer", "booty", "bounds", "bowling", "brainstorming", "breadth", "breaker", "brewer", "brightness", "broccoli", "broth", "brotherhood", "browsing", "brunch", "brunt", "building", "bullion", "bureaucracy", "burglary", "buyout", "by-election", "cabal", "cabbage", "calamity", "campaign", "canonization", "captaincy", "carcass", "carrier", "cartridge", "cassette", "catfish", "caught", "celebrity", "cemetery", "certainty", "certification", "charade", "chasm", "check-in", "cheerleader", "cheesecake", "chemotherapy", "chili", "china", "chivalry", "cholera", "cilantro", "circus", "civilisation", "civility", "clearance", "clearing", "clerk", "climber", "closeness", "clothing", "clutches", "coaster", "coconut", "coding", "collaborator", "colleague", "college", "collision", "colors", "combustion", "comedian", "comer", "commander", "commemoration", "commenter", "commissioner", "commune", "competition", "completeness", "complexity", "computing", "comrade", "concur", "condominium", "conduit", "confidant", "configuration", "confiscation", "conflagration", "conflict", "consist", "consistency", "consolidation", "conspiracy", "constable", "consul", "consultancy", "contentment", "contents", "contractor", "conversation", "cornerstone", "corpus", "correlation", "councilman", "counselor", "countdown", "countryman", "coverage", "covering", "coyote", "cracker", "creator", "criminality", "crocodile", "cropping", "cross-examination", "crossover", "crossroads", "culprit", "cumin", "curator", "curfew", "cursor", "custard", "cutter", "cyclist", "cyclone", "cylinder", "cynicism", "daddy", "damsel", "darkness", "dawning", "daybreak", "dealing", "dedication", "deduction", "defection", "deference", "deficiency", "definition", "deflation", "degeneration", "delegation", "delicacy", "delirium", "deliverance", "demeanor", "demon", "demonstration", "denomination", "dentist", "departure", "depletion", "depression", "designation", "despotism", "detention", "developer", "devolution", "dexterity", "diagnosis", "dialect", "differentiation", "digger", "digress", "dioxide", "diploma", "disability", "disarmament", "discord", "discovery", "dishonesty", "dismissal", "disobedience", "dispatcher", "disservice", "distribution", "distributor", "diver", "diversity", "docking", "dollar", "dominance", "domination", "dominion", "donkey", "doorstep", "doorway", "dossier", "downside", "drafting", "drank", "drilling", "driver", "drumming", "drunkenness", "duchess", "ducking", "dugout", "dumps", "dwelling", "dynamics", "eagerness", "earnestness", "earnings", "eater", "editor", "effectiveness", "electricity", "elements", "eloquence", "emancipation", "embodiment", "embroidery", "emperor", "employment", "encampment", "enclosure", "encouragement", "endangerment", "enlightenment", "enthusiasm", "environment", "environs", "envoy", "epilepsy", "equation", "equator", "error", "espionage", "estimation", "evacuation", "exaggeration", "examination", "exclamation", "expediency", "exploitation", "extinction", "eyewitness", "falls", "fascism", "fastball", "feces", "feedback", "ferocity", "fertilization", "fetish", "finale", "firing", "fixing", "flashing", "flask", "flora", "fluke", "folklore", "follower", "foothold", "footing", "forefinger", "forefront", "forgiveness", "formality", "formation", "formula", "foyer", "fragmentation", "framework", "fraud", "freestyle", "frequency", "friendliness", "fries", "frigate", "fulfillment", "function", "functionality", "fundraiser", "fusion", "futility", "gallantry", "gallery", "genesis", "genitals", "girlfriend", "glamour", "glitter", "glucose", "google", "grandeur", "grappling", "greens", "gridlock", "grocer", "groundwork", "grouping", "gunman", "gusto", "habitation", "hacker", "hallway", "hamburger", "hammock", "handling", "hands", "handshake", "happiness", "hardship", "headcount", "header", "headquarters", "heads", "headset", "hearth", "hearts", "heath", "hegemony", "height", "hello", "helper", "helping", "helplessness", "hierarchy", "hoarding", "hockey", "homeland", "homer", "honesty", "horror", "horseman", "hostility", "housing", "humility", "hurricane", "iceberg", "ignition", "illness", "illustration", "illustrator", "immunity", "immunization", "imperialism", "imprisonment", "inaccuracy", "inaction", "inactivity", "inauguration", "indecency", "indicator", "inevitability", "infamy", "infiltration", "influx", "iniquity", "innocence", "innovation", "insanity", "inspiration", "instruction", "instructor", "insurer", "interact", "intercession", "intercourse", "intermission", "interpretation", "intersection", "interval", "intolerance", "intruder", "invasion", "investment", "involvement", "irrigation", "iteration", "jenny", "jogging", "jones", "joseph", "juggernaut", "juncture", "jurisprudence", "juror", "kangaroo", "kingdom", "knocking", "laborer", "larceny", "laurels", "layout", "leadership", "leasing", "legislation", "leopard", "liberation", "licence", "lifeblood", "lifeline", "ligament", "lighting", "likeness", "line-up", "lineage", "liner", "lineup", "liquidation", "listener", "literature", "litigation", "litre", "loathing", "locality", "lodging", "logic", "longevity", "lookout", "lordship", "lustre", "ma'am", "machinery", "madness", "magnificence", "mahogany", "mailing", "mainframe", "maintenance", "majority", "manga", "mango", "manifesto", "mantra", "manufacturer", "maple", "martin", "martyrdom", "mathematician", "matrix", "matron", "mayhem", "mayor", "means", "meantime", "measurement", "mechanics", "mediator", "medics", "melodrama", "memory", "mentality", "metaphysics", "method", "metre", "miner", "mirth", "misconception", "misery", "mishap", "misunderstanding", "mobility", "molasses", "momentum", "monarchy", "monument", "morale", "mortality", "motto", "mouthful", "mouthpiece", "mover", "movie", "mowing", "murderer", "musician", "mutation", "mythology", "narration", "narrator", "nationality", "negligence", "neighborhood", "neighbour", "nervousness", "networking", "nexus", "nightmare", "nobility", "nobody", "noodle", "normalcy", "notification", "nourishment", "novella", "nucleus", "nuisance", "nursery", "nutrition", "nylon", "oasis", "obscenity", "obscurity", "observer", "offense", "onslaught", "operation", "opportunity", "opposition", "oracle", "orchestra", "organisation", "organizer", "orientation", "originality", "ounce", "outage", "outcome", "outdoors", "outfield", "outing", "outpost", "outset", "overseer", "owner", "oxygen", "pairing", "panther", "paradox", "parliament", "parsley", "parson", "passenger", "pasta", "patchwork", "pathos", "patriotism", "pendulum", "penguin", "permission", "persona", "perusal", "pessimism", "peter", "philosopher", "phosphorus", "phrasing", "physique", "piles", "plateau", "playing", "plaza", "plethora", "plurality", "pneumonia", "pointer", "poker", "policeman", "polling", "poster", "posterity", "posting", "postponement", "potassium", "pottery", "poultry", "pounding", "pragmatism", "precedence", "precinct", "preoccupation", "pretense", "priesthood", "prisoner", "privacy", "probation", "proceeding", "proceedings", "processing", "processor", "progression", "projection", "prominence", "propensity", "prophecy", "prorogation", "prospectus", "protein", "prototype", "providence", "provider", "provocation", "proximity", "puberty", "publicist", "publicity", "publisher", "pundit", "putting", "quantity", "quart", "quilting", "quorum", "racism", "radiance", "ralph", "rancher", "ranger", "rapidity", "rapport", "ratification", "rationality", "reaction", "reader", "reassurance", "rebirth", "receptor", "recipe", "recognition", "recourse", "recreation", "rector", "recurrence", "redemption", "redistribution", "redundancy", "refinery", "reformer", "refrigerator", "regularity", "regulator", "reinforcement", "reins", "reinstatement", "relativism", "relaxation", "rendition", "repayment", "repentance", "repertoire", "repository", "republic", "reputation", "resentment", "residency", "resignation", "restaurant", "resurgence", "retailer", "retention", "retirement", "reviewer", "riches", "righteousness", "roadblock", "robber", "rocks", "rubbing", "runoff", "saloon", "salvation", "sarcasm", "saucer", "savior", "scarcity", "scenario", "scenery", "schism", "scholarship", "schoolboy", "schooner", "scissors", "scolding", "scooter", "scouring", "scrimmage", "scrum", "seating", "sediment", "seduction", "seeder", "seizure", "self-confidence", "self-control", "self-respect", "semicolon", "semiconductor", "semifinal", "senator", "sending", "serenity", "seriousness", "servitude", "sesame", "setup", "sewing", "sharpness", "shaving", "shoplifting", "shopping", "siding", "simplicity", "simulation", "sinking", "skate", "sloth", "slugger", "snack", "snail", "snapshot", "snark", "soccer", "solemnity", "solicitation", "solitude", "somewhere", "sophistication", "sorcery", "souvenir", "spaghetti", "specification", "specimen", "specs", "spectacle", "spectre", "speculation", "sperm", "spoiler", "squad", "squid", "staging", "stagnation", "staircase", "stairway", "stamina", "standpoint", "standstill", "stanza", "statement", "stillness", "stimulus", "stocks", "stole", "stoppage", "storey", "storyteller", "stylus", "subcommittee", "subscription", "subsidy", "suburb", "success", "sufferer", "supposition", "suspension", "sweater", "sweepstakes", "swimmer", "syndrome", "synopsis", "syntax", "system", "tablespoon", "taker", "tavern", "technology", "telephony", "template", "tempo", "tendency", "tendon", "terrier", "terror", "terry", "theater", "theology", "therapy", "thicket", "thoroughfare", "threshold", "thriller", "thunderstorm", "ticker", "tiger", "tights", "to-day", "tossing", "touchdown", "tourist", "tourney", "toxicity", "tracing", "tractor", "translation", "transmission", "transmitter", "trauma", "traveler", "treadmill", "trilogy", "trout", "tuning", "twenties", "tycoon", "tyrant", "ultimatum", "underdog", "underwear", "unhappiness", "unification", "university", "uprising", "vaccination", "validity", "vampire", "vanguard", "variation", "vegetation", "verification", "viability", "vicinity", "victory", "viewpoint", "villa", "vindication", "violation", "vista", "vocalist", "vogue", "volcano", "voltage", "vomiting", "vulnerability", "waistcoat", "waitress", "wardrobe", "warmth", "watchdog", "wealth", "weariness", "whereabouts", "whisky", "whiteness", "widget", "width", "windfall", "wiring", "witchcraft", "withholding", "womanhood", "words", "workman", "youngster"} diff --git a/pkg/fakedata/generator.go b/pkg/fakedata/generator.go index a0010fb..2ceff0a 100644 --- a/pkg/fakedata/generator.go +++ b/pkg/fakedata/generator.go @@ -203,6 +203,12 @@ var file = func(column Column) string { return list[rand.Intn(len(list))] } +var corporaGenerator = func(source []string) func(Column) string { + return func(column Column) string { + return source[rand.Intn(len(source))] + } +} + func init() { generators = make(map[string]Generator) @@ -364,4 +370,28 @@ func init() { Desc: `Read a random line from a file. Pass filepath with 'file,path/to/file.txt'.`, Func: file, } + + generators["noun"] = Generator{ + Name: "noun", + Desc: "random noun", + Func: corporaGenerator(data.Nouns), + } + + generators["emoji"] = Generator{ + Name: "emoji", + Desc: "random emoji", + Func: corporaGenerator(data.Emojis), + } + + generators["cat"] = Generator{ + Name: "cat", + Desc: "random cat breed", + Func: corporaGenerator(data.Cats), + } + + generators["animal"] = Generator{ + Name: "animal", + Desc: "random animal name", + Func: corporaGenerator(data.Animals), + } } From 30e4050f3f21b5a902bd9baebdf39b5892adbc3f Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Sun, 4 Jun 2017 20:08:30 +0200 Subject: [PATCH 3/5] Add 'make corpora' task. Use withList. Generate comments. --- Makefile | 3 +++ cmd/importcorpora/main.go | 3 ++- pkg/data/animals.go | 1 + pkg/data/cats.go | 1 + pkg/data/emojis.go | 1 + pkg/data/nouns.go | 1 + pkg/fakedata/generator.go | 14 ++++---------- 7 files changed, 13 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index a8a2582..12331ec 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,9 @@ ci: lint test ## Run all the tests and code checks build: ## Build a dev version of fakedata go build +corpora: ## Import the latest data from dariusk/corpora + go run cmd/importcorpora/main.go + # Absolutely awesome: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/cmd/importcorpora/main.go b/cmd/importcorpora/main.go index ece04db..5453ccf 100644 --- a/cmd/importcorpora/main.go +++ b/cmd/importcorpora/main.go @@ -25,6 +25,7 @@ const targetDir = "pkg/data" // Content of a Go file const fileTemplate = `package data +// %s is a list of %s var %s = %s` func main() { @@ -63,7 +64,7 @@ func main() { // Fix formatting value := strings.Replace(fmt.Sprintf("%#v\n", jsonData[d.Key]), "interface {}", "string", 1) - content := fmt.Sprintf(fileTemplate, d.Var, value) + content := fmt.Sprintf(fileTemplate, d.Var, strings.ToLower(d.Var), d.Var, value) // Create required directories to := filepath.Join(targetDir, d.To) diff --git a/pkg/data/animals.go b/pkg/data/animals.go index 0c5e612..320f487 100644 --- a/pkg/data/animals.go +++ b/pkg/data/animals.go @@ -1,3 +1,4 @@ package data +// Animals is a list of animals var Animals = []string{"aardvark", "alligator", "alpaca", "antelope", "ape", "armadillo", "baboon", "badger", "bat", "bear", "beaver", "bison", "boar", "buffalo", "bull", "camel", "canary", "capybara", "cat", "chameleon", "cheetah", "chimpanzee", "chinchilla", "chipmunk", "cougar", "cow", "coyote", "crocodile", "crow", "deer", "dingo", "dog", "donkey", "dromedary", "elephant", "elk", "ewe", "ferret", "finch", "fish", "fox", "frog", "gazelle", "gila monster", "giraffe", "gnu", "goat", "gopher", "gorilla", "grizzly bear", "ground hog", "guinea pig", "hamster", "hedgehog", "hippopotamus", "hog", "horse", "hyena", "ibex", "iguana", "impala", "jackal", "jaguar", "kangaroo", "koala", "lamb", "lemur", "leopard", "lion", "lizard", "llama", "lynx", "mandrill", "marmoset", "mink", "mole", "mongoose", "monkey", "moose", "mountain goat", "mouse", "mule", "muskrat", "mustang", "mynah bird", "newt", "ocelot", "opossum", "orangutan", "oryx", "otter", "ox", "panda", "panther", "parakeet", "parrot", "pig", "platypus", "polar bear", "porcupine", "porpoise", "prairie dog", "puma", "rabbit", "raccoon", "ram", "rat", "reindeer", "reptile", "rhinoceros", "salamander", "seal", "sheep", "shrew", "silver fox", "skunk", "sloth", "snake", "squirrel", "tapir", "tiger", "toad", "turtle", "walrus", "warthog", "weasel", "whale", "wildcat", "wolf", "wolverine", "wombat", "woodchuck", "yak", "zebra"} diff --git a/pkg/data/cats.go b/pkg/data/cats.go index 63d8a60..6a7d5a1 100644 --- a/pkg/data/cats.go +++ b/pkg/data/cats.go @@ -1,3 +1,4 @@ package data +// Cats is a list of cats var Cats = []string{"Abyssinian", "Aegean", "American Bobtail", "American Curl", "American Shorthair", "American Wirehair", "Arabian Mau", "Asian", "Asian Semi-longhair", "Australian Mist", "Balinese", "Bambino", "Bengal", "Birman", "Bombay", "Brazilian Shorthair", "British Longhair", "British Semi-longhair", "British Shorthair", "Burmese", "Burmilla", "California Spangled", "Chantilly-Tiffany", "Chartreux", "Chausie", "Cheetoh", "Colorpoint Shorthair", "Cornish Rex", "Cymric", "Cyprus", "Devon Rex", "Donskoy", "Dragon Li", "Dwarf cat", "Egyptian Mau", "European Shorthair", "Exotic Shorthair", "Foldex", "German Rex", "Havana Brown", "Highlander", "Himalayan", "Japanese Bobtail", "Javanese", "Khao Manee", "Korat", "Korean Bobtail", "Korn Ja", "Kurilian Bobtail", "LaPerm", "Lykoi", "Maine Coon", "Manx", "Mekong Bobtail", "Minskin", "Munchkin", "Napoleon", "Nebelung", "Norwegian Forest cat", "Ocicat", "Ojos Azules", "Oregon Rex", "Oriental Bicolor", "Oriental Longhair", "Oriental Shorthair", "PerFold", "Persian (Modern)", "Persian (Traditional)", "Peterbald", "Pixie-bob", "Raas", "Ragamuffin", "Ragdoll", "Russian Blue", "Russian White, Black and Tabby", "Sam Sawet", "Savannah", "Scottish Fold", "Selkirk Rex", "Serengeti", "Serrade Petit", "Siamese", "Siberian", "Singapura", "Snowshoe", "Sokoke", "Somali", "Sphynx", "Suphalak", "Thai", "Thai Lilac", "Tonkinese", "Toyger", "Turkish Angora", "Turkish Van", "Ukrainian Levkoy"} diff --git a/pkg/data/emojis.go b/pkg/data/emojis.go index 9ea4405..304277b 100644 --- a/pkg/data/emojis.go +++ b/pkg/data/emojis.go @@ -1,3 +1,4 @@ package data +// Emojis is a list of emojis var Emojis = []string{"๐Ÿ€„", "๐Ÿƒ", "๐Ÿ…ฐ", "๐Ÿ…ฑ", "๐Ÿ…พ", "๐Ÿ…ฟ", "๐Ÿ†Ž", "๐Ÿ†‘", "๐Ÿ†’", "๐Ÿ†“", "๐Ÿ†”", "๐Ÿ†•", "๐Ÿ†–", "๐Ÿ†—", "๐Ÿ†˜", "๐Ÿ†™", "๐Ÿ†š", "๐Ÿ‡ฆ", "๐Ÿ‡ง", "๐Ÿ‡จ", "๐Ÿ‡ฉ", "๐Ÿ‡ช", "๐Ÿ‡ซ", "๐Ÿ‡ฌ", "๐Ÿ‡ญ", "๐Ÿ‡ฎ", "๐Ÿ‡ฏ", "๐Ÿ‡ฐ", "๐Ÿ‡ฑ", "๐Ÿ‡ฒ", "๐Ÿ‡ณ", "๐Ÿ‡ด", "๐Ÿ‡ต", "๐Ÿ‡ถ", "๐Ÿ‡ท", "๐Ÿ‡ธ", "๐Ÿ‡น", "๐Ÿ‡บ", "๐Ÿ‡ป", "๐Ÿ‡ผ", "๐Ÿ‡ฝ", "๐Ÿ‡พ", "๐Ÿ‡ฟ", "๐Ÿˆ", "๐Ÿˆ‚", "๐Ÿˆš", "๐Ÿˆฏ", "๐Ÿˆฒ", "๐Ÿˆณ", "๐Ÿˆด", "๐Ÿˆต", "๐Ÿˆถ", "๐Ÿˆท", "๐Ÿˆธ", "๐Ÿˆน", "๐Ÿˆบ", "๐Ÿ‰", "๐Ÿ‰‘", "๐ŸŒ€", "๐ŸŒ", "๐ŸŒ‚", "๐ŸŒƒ", "๐ŸŒ„", "๐ŸŒ…", "๐ŸŒ†", "๐ŸŒ‡", "๐ŸŒˆ", "๐ŸŒ‰", "๐ŸŒŠ", "๐ŸŒ‹", "๐ŸŒŒ", "๐ŸŒ", "๐ŸŒŽ", "๐ŸŒ", "๐ŸŒ", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", "๐ŸŒ™", "๐ŸŒš", "๐ŸŒ›", "๐ŸŒœ", "๐ŸŒ", "๐ŸŒž", "๐ŸŒŸ", "๐ŸŒ ", "๐ŸŒฐ", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒณ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒท", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒบ", "๐ŸŒป", "๐ŸŒผ", "๐ŸŒฝ", "๐ŸŒพ", "๐ŸŒฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐ŸŽ€", "๐ŸŽ", "๐ŸŽ‚", "๐ŸŽƒ", "๐ŸŽ„", "๐ŸŽ…", "๐ŸŽ†", "๐ŸŽ‡", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽŠ", "๐ŸŽ‹", "๐ŸŽŒ", "๐ŸŽ", "๐ŸŽŽ", "๐ŸŽ", "๐ŸŽ", "๐ŸŽ‘", "๐ŸŽ’", "๐ŸŽ“", "๐ŸŽ ", "๐ŸŽก", "๐ŸŽข", "๐ŸŽฃ", "๐ŸŽค", "๐ŸŽฅ", "๐ŸŽฆ", "๐ŸŽง", "๐ŸŽจ", "๐ŸŽฉ", "๐ŸŽช", "๐ŸŽซ", "๐ŸŽฌ", "๐ŸŽญ", "๐ŸŽฎ", "๐ŸŽฏ", "๐ŸŽฐ", "๐ŸŽฑ", "๐ŸŽฒ", "๐ŸŽณ", "๐ŸŽด", "๐ŸŽต", "๐ŸŽถ", "๐ŸŽท", "๐ŸŽธ", "๐ŸŽน", "๐ŸŽบ", "๐ŸŽป", "๐ŸŽผ", "๐ŸŽฝ", "๐ŸŽพ", "๐ŸŽฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐Ÿฝ", "๐Ÿพ", "๐Ÿ‘€", "๐Ÿ‘‚", "๐Ÿ‘ƒ", "๐Ÿ‘„", "๐Ÿ‘…", "๐Ÿ‘†", "๐Ÿ‘‡", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘Š", "๐Ÿ‘‹", "๐Ÿ‘Œ", "๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘", "๐Ÿ‘", "๐Ÿ‘‘", "๐Ÿ‘’", "๐Ÿ‘“", "๐Ÿ‘”", "๐Ÿ‘•", "๐Ÿ‘–", "๐Ÿ‘—", "๐Ÿ‘˜", "๐Ÿ‘™", "๐Ÿ‘š", "๐Ÿ‘›", "๐Ÿ‘œ", "๐Ÿ‘", "๐Ÿ‘ž", "๐Ÿ‘Ÿ", "๐Ÿ‘ ", "๐Ÿ‘ก", "๐Ÿ‘ข", "๐Ÿ‘ฃ", "๐Ÿ‘ค", "๐Ÿ‘ฅ", "๐Ÿ‘ฆ", "๐Ÿ‘ง", "๐Ÿ‘จ", "๐Ÿ‘ฉ", "๐Ÿ‘ช", "๐Ÿ‘ซ", "๐Ÿ‘ฌ", "๐Ÿ‘ญ", "๐Ÿ‘ฎ", "๐Ÿ‘ฏ", "๐Ÿ‘ฐ", "๐Ÿ‘ฑ", "๐Ÿ‘ฒ", "๐Ÿ‘ณ", "๐Ÿ‘ด", "๐Ÿ‘ต", "๐Ÿ‘ถ", "๐Ÿ‘ท", "๐Ÿ‘ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ผ", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿ‘ฟ", "๐Ÿ’€", "๐Ÿ’", "๐Ÿ’‚", "๐Ÿ’ƒ", "๐Ÿ’„", "๐Ÿ’…", "๐Ÿ’†", "๐Ÿ’‡", "๐Ÿ’ˆ", "๐Ÿ’‰", "๐Ÿ’Š", "๐Ÿ’‹", "๐Ÿ’Œ", "๐Ÿ’", "๐Ÿ’Ž", "๐Ÿ’", "๐Ÿ’", "๐Ÿ’‘", "๐Ÿ’’", "๐Ÿ’“", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’–", "๐Ÿ’—", "๐Ÿ’˜", "๐Ÿ’™", "๐Ÿ’š", "๐Ÿ’›", "๐Ÿ’œ", "๐Ÿ’", "๐Ÿ’ž", "๐Ÿ’Ÿ", "๐Ÿ’ ", "๐Ÿ’ก", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ค", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’ง", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ช", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ’ญ", "๐Ÿ’ฎ", "๐Ÿ’ฏ", "๐Ÿ’ฐ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "๐Ÿ’ณ", "๐Ÿ’ด", "๐Ÿ’ต", "๐Ÿ’ถ", "๐Ÿ’ท", "๐Ÿ’ธ", "๐Ÿ’น", "๐Ÿ’บ", "๐Ÿ’ป", "๐Ÿ’ผ", "๐Ÿ’ฝ", "๐Ÿ’พ", "๐Ÿ’ฟ", "๐Ÿ“€", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“ƒ", "๐Ÿ“„", "๐Ÿ“…", "๐Ÿ“†", "๐Ÿ“‡", "๐Ÿ“ˆ", "๐Ÿ“‰", "๐Ÿ“Š", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“", "๐Ÿ“Ž", "๐Ÿ“", "๐Ÿ“", "๐Ÿ“‘", "๐Ÿ“’", "๐Ÿ““", "๐Ÿ“”", "๐Ÿ“•", "๐Ÿ“–", "๐Ÿ“—", "๐Ÿ“˜", "๐Ÿ“™", "๐Ÿ“š", "๐Ÿ“›", "๐Ÿ“œ", "๐Ÿ“", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“ก", "๐Ÿ“ข", "๐Ÿ“ฃ", "๐Ÿ“ค", "๐Ÿ“ฅ", "๐Ÿ“ฆ", "๐Ÿ“ง", "๐Ÿ“จ", "๐Ÿ“ฉ", "๐Ÿ“ช", "๐Ÿ“ซ", "๐Ÿ“ฌ", "๐Ÿ“ญ", "๐Ÿ“ฎ", "๐Ÿ“ฏ", "๐Ÿ“ฐ", "๐Ÿ“ฑ", "๐Ÿ“ฒ", "๐Ÿ“ณ", "๐Ÿ“ด", "๐Ÿ“ต", "๐Ÿ“ถ", "๐Ÿ“ท", "๐Ÿ“น", "๐Ÿ“บ", "๐Ÿ“ป", "๐Ÿ“ผ", "๐Ÿ”€", "๐Ÿ”", "๐Ÿ”‚", "๐Ÿ”ƒ", "๐Ÿ”„", "๐Ÿ”…", "๐Ÿ”†", "๐Ÿ”‡", "๐Ÿ”ˆ", "๐Ÿ”‰", "๐Ÿ”Š", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ”", "๐Ÿ”Ž", "๐Ÿ”", "๐Ÿ”", "๐Ÿ”‘", "๐Ÿ”’", "๐Ÿ”“", "๐Ÿ””", "๐Ÿ”•", "๐Ÿ”–", "๐Ÿ”—", "๐Ÿ”˜", "๐Ÿ”™", "๐Ÿ”š", "๐Ÿ”›", "๐Ÿ”œ", "๐Ÿ”", "๐Ÿ”ž", "๐Ÿ”Ÿ", "๐Ÿ” ", "๐Ÿ”ก", "๐Ÿ”ข", "๐Ÿ”ฃ", "๐Ÿ”ค", "๐Ÿ”ฅ", "๐Ÿ”ฆ", "๐Ÿ”ง", "๐Ÿ”จ", "๐Ÿ”ฉ", "๐Ÿ”ช", "๐Ÿ”ซ", "๐Ÿ”ฌ", "๐Ÿ”ญ", "๐Ÿ”ฎ", "๐Ÿ”ฏ", "๐Ÿ”ฐ", "๐Ÿ”ฑ", "๐Ÿ”ฒ", "๐Ÿ”ณ", "๐Ÿ”ด", "๐Ÿ”ต", "๐Ÿ”ถ", "๐Ÿ”ท", "๐Ÿ”ธ", "๐Ÿ”น", "๐Ÿ”บ", "๐Ÿ”ป", "๐Ÿ”ผ", "๐Ÿ”ฝ", "๐Ÿ•", "๐Ÿ•‘", "๐Ÿ•’", "๐Ÿ•“", "๐Ÿ•”", "๐Ÿ••", "๐Ÿ•–", "๐Ÿ•—", "๐Ÿ•˜", "๐Ÿ•™", "๐Ÿ•š", "๐Ÿ•›", "๐Ÿ•œ", "๐Ÿ•", "๐Ÿ•ž", "๐Ÿ•Ÿ", "๐Ÿ• ", "๐Ÿ•ก", "๐Ÿ•ข", "๐Ÿ•ฃ", "๐Ÿ•ค", "๐Ÿ•ฅ", "๐Ÿ•ฆ", "๐Ÿ•ง", "๐Ÿ—ป", "๐Ÿ—ผ", "๐Ÿ—ฝ", "๐Ÿ—พ", "๐Ÿ—ฟ", "๐Ÿ˜€", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿ˜‡", "๐Ÿ˜ˆ", "๐Ÿ˜‰", "๐Ÿ˜Š", "๐Ÿ˜‹", "๐Ÿ˜Œ", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜’", "๐Ÿ˜“", "๐Ÿ˜”", "๐Ÿ˜•", "๐Ÿ˜–", "๐Ÿ˜—", "๐Ÿ˜˜", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿ˜ž", "๐Ÿ˜Ÿ", "๐Ÿ˜ ", "๐Ÿ˜ก", "๐Ÿ˜ข", "๐Ÿ˜ฃ", "๐Ÿ˜ค", "๐Ÿ˜ฅ", "๐Ÿ˜ฆ", "๐Ÿ˜ง", "๐Ÿ˜จ", "๐Ÿ˜ฉ", "๐Ÿ˜ช", "๐Ÿ˜ซ", "๐Ÿ˜ฌ", "๐Ÿ˜ญ", "๐Ÿ˜ฎ", "๐Ÿ˜ฏ", "๐Ÿ˜ฐ", "๐Ÿ˜ฑ", "๐Ÿ˜ฒ", "๐Ÿ˜ณ", "๐Ÿ˜ด", "๐Ÿ˜ต", "๐Ÿ˜ถ", "๐Ÿ˜ท", "๐Ÿ˜ธ", "๐Ÿ˜น", "๐Ÿ˜บ", "๐Ÿ˜ป", "๐Ÿ˜ผ", "๐Ÿ˜ฝ", "๐Ÿ˜พ", "๐Ÿ˜ฟ", "๐Ÿ™€", "๐Ÿ™", "๐Ÿ™‚", "๐Ÿ™…", "๐Ÿ™†", "๐Ÿ™‡", "๐Ÿ™ˆ", "๐Ÿ™‰", "๐Ÿ™Š", "๐Ÿ™‹", "๐Ÿ™Œ", "๐Ÿ™", "๐Ÿ™Ž", "๐Ÿ™", "๐Ÿš€", "๐Ÿš", "๐Ÿš‚", "๐Ÿšƒ", "๐Ÿš„", "๐Ÿš…", "๐Ÿš†", "๐Ÿš‡", "๐Ÿšˆ", "๐Ÿš‰", "๐ŸšŠ", "๐Ÿš‹", "๐ŸšŒ", "๐Ÿš", "๐ŸšŽ", "๐Ÿš", "๐Ÿš", "๐Ÿš‘", "๐Ÿš’", "๐Ÿš“", "๐Ÿš”", "๐Ÿš•", "๐Ÿš–", "๐Ÿš—", "๐Ÿš˜", "๐Ÿš™", "๐Ÿšš", "๐Ÿš›", "๐Ÿšœ", "๐Ÿš", "๐Ÿšž", "๐ŸšŸ", "๐Ÿš ", "๐Ÿšก", "๐Ÿšข", "๐Ÿšฃ", "๐Ÿšค", "๐Ÿšฅ", "๐Ÿšฆ", "๐Ÿšง", "๐Ÿšจ", "๐Ÿšฉ", "๐Ÿšช", "๐Ÿšซ", "๐Ÿšฌ", "๐Ÿšญ", "๐Ÿšฎ", "๐Ÿšฏ", "๐Ÿšฐ", "๐Ÿšฑ", "๐Ÿšฒ", "๐Ÿšณ", "๐Ÿšด", "๐Ÿšต", "๐Ÿšถ", "๐Ÿšท", "๐Ÿšธ", "๐Ÿšน", "๐Ÿšบ", "๐Ÿšป", "๐Ÿšผ", "๐Ÿšฝ", "๐Ÿšพ", "๐Ÿšฟ", "๐Ÿ›€", "๐Ÿ›", "๐Ÿ›‚", "๐Ÿ›ƒ", "๐Ÿ›„", "๐Ÿ›…", "โ€ผ", "โ‰", "โ„ข", "โ„น", "โ†”", "โ†•", "โ†–", "โ†—", "โ†˜", "โ†™", "โ†ฉ", "โ†ช", "#", "โŒš", "โŒ›", "โฉ", "โช", "โซ", "โฌ", "โฐ", "โณ", "โ“‚", "โ–ช", "โ–ซ", "โ–ถ", "โ—€", "โ—ป", "โ—ผ", "โ—ฝ", "โ—พ", "โ˜€", "โ˜", "โ˜Ž", "โ˜‘", "โ˜”", "โ˜•", "โ˜", "โ˜บ", "โ™ˆ", "โ™‰", "โ™Š", "โ™‹", "โ™Œ", "โ™", "โ™Ž", "โ™", "โ™", "โ™‘", "โ™’", "โ™“", "โ™ ", "โ™ฃ", "โ™ฅ", "โ™ฆ", "โ™จ", "โ™ป", "โ™ฟ", "โš“", "โš ", "โšก", "โšช", "โšซ", "โšฝ", "โšพ", "โ›„", "โ›…", "โ›Ž", "โ›”", "โ›ช", "โ›ฒ", "โ›ณ", "โ›ต", "โ›บ", "โ›ฝ", "โœ‚", "โœ…", "โœˆ", "โœ‰", "โœŠ", "โœ‹", "โœŒ", "โœ", "โœ’", "โœ”", "โœ–", "โœจ", "โœณ", "โœด", "โ„", "โ‡", "โŒ", "โŽ", "โ“", "โ”", "โ•", "โ—", "โค", "โž•", "โž–", "โž—", "โžก", "โžฐ", "โžฟ", "โคด", "โคต", "โฌ…", "โฌ†", "โฌ‡", "โฌ›", "โฌœ", "โญ", "โญ•", "0", "ใ€ฐ", "ใ€ฝ", "1", "2", "ใŠ—", "ใŠ™", "3", "4", "5", "6", "7", "8", "9", "ยฉ", "ยฎ", "\ue50a"} diff --git a/pkg/data/nouns.go b/pkg/data/nouns.go index 6b680b9..fd138b0 100644 --- a/pkg/data/nouns.go +++ b/pkg/data/nouns.go @@ -1,3 +1,4 @@ package data +// Nouns is a list of nouns var Nouns = []string{"Armour", "Barrymore", "Cabot", "Catholicism", "Chihuahua", "Christianity", "Easter", "Frenchman", "Lowry", "Mayer", "Orientalism", "Pharaoh", "Pueblo", "Pullman", "Rodeo", "Saturday", "Sister", "Snead", "Syrah", "Tuesday", "Woodward", "abbey", "absence", "absorption", "abstinence", "absurdity", "abundance", "acceptance", "accessibility", "accommodation", "accomplice", "accountability", "accounting", "accreditation", "accuracy", "acquiescence", "acreage", "actress", "actuality", "adage", "adaptation", "adherence", "adjustment", "adoption", "adultery", "advancement", "advert", "advertisement", "advertising", "advice", "aesthetics", "affinity", "aggression", "agriculture", "aircraft", "airtime", "allegation", "allegiance", "allegory", "allergy", "allies", "alligator", "allocation", "allotment", "altercation", "ambulance", "ammonia", "anatomy", "anemia", "ankle", "announcement", "annoyance", "annuity", "anomaly", "anthropology", "anxiety", "apartheid", "apologise", "apostle", "apparatus", "appeasement", "appellation", "appendix", "applause", "appointment", "appraisal", "archery", "archipelago", "architecture", "ardor", "arrears", "arrow", "artisan", "artistry", "ascent", "assembly", "assignment", "association", "asthma", "atheism", "attacker", "attraction", "attractiveness", "auspices", "authority", "avarice", "aversion", "aviation", "babbling", "backlash", "baker", "ballet", "balls", "banjo", "baron", "barrier", "barrister", "bases", "basin", "basis", "battery", "battling", "bedtime", "beginner", "begun", "bending", "bicycle", "billing", "bingo", "biography", "biology", "birthplace", "blackberry", "blather", "blossom", "boardroom", "boasting", "bodyguard", "boldness", "bomber", "bondage", "bonding", "bones", "bonus", "bookmark", "boomer", "booty", "bounds", "bowling", "brainstorming", "breadth", "breaker", "brewer", "brightness", "broccoli", "broth", "brotherhood", "browsing", "brunch", "brunt", "building", "bullion", "bureaucracy", "burglary", "buyout", "by-election", "cabal", "cabbage", "calamity", "campaign", "canonization", "captaincy", "carcass", "carrier", "cartridge", "cassette", "catfish", "caught", "celebrity", "cemetery", "certainty", "certification", "charade", "chasm", "check-in", "cheerleader", "cheesecake", "chemotherapy", "chili", "china", "chivalry", "cholera", "cilantro", "circus", "civilisation", "civility", "clearance", "clearing", "clerk", "climber", "closeness", "clothing", "clutches", "coaster", "coconut", "coding", "collaborator", "colleague", "college", "collision", "colors", "combustion", "comedian", "comer", "commander", "commemoration", "commenter", "commissioner", "commune", "competition", "completeness", "complexity", "computing", "comrade", "concur", "condominium", "conduit", "confidant", "configuration", "confiscation", "conflagration", "conflict", "consist", "consistency", "consolidation", "conspiracy", "constable", "consul", "consultancy", "contentment", "contents", "contractor", "conversation", "cornerstone", "corpus", "correlation", "councilman", "counselor", "countdown", "countryman", "coverage", "covering", "coyote", "cracker", "creator", "criminality", "crocodile", "cropping", "cross-examination", "crossover", "crossroads", "culprit", "cumin", "curator", "curfew", "cursor", "custard", "cutter", "cyclist", "cyclone", "cylinder", "cynicism", "daddy", "damsel", "darkness", "dawning", "daybreak", "dealing", "dedication", "deduction", "defection", "deference", "deficiency", "definition", "deflation", "degeneration", "delegation", "delicacy", "delirium", "deliverance", "demeanor", "demon", "demonstration", "denomination", "dentist", "departure", "depletion", "depression", "designation", "despotism", "detention", "developer", "devolution", "dexterity", "diagnosis", "dialect", "differentiation", "digger", "digress", "dioxide", "diploma", "disability", "disarmament", "discord", "discovery", "dishonesty", "dismissal", "disobedience", "dispatcher", "disservice", "distribution", "distributor", "diver", "diversity", "docking", "dollar", "dominance", "domination", "dominion", "donkey", "doorstep", "doorway", "dossier", "downside", "drafting", "drank", "drilling", "driver", "drumming", "drunkenness", "duchess", "ducking", "dugout", "dumps", "dwelling", "dynamics", "eagerness", "earnestness", "earnings", "eater", "editor", "effectiveness", "electricity", "elements", "eloquence", "emancipation", "embodiment", "embroidery", "emperor", "employment", "encampment", "enclosure", "encouragement", "endangerment", "enlightenment", "enthusiasm", "environment", "environs", "envoy", "epilepsy", "equation", "equator", "error", "espionage", "estimation", "evacuation", "exaggeration", "examination", "exclamation", "expediency", "exploitation", "extinction", "eyewitness", "falls", "fascism", "fastball", "feces", "feedback", "ferocity", "fertilization", "fetish", "finale", "firing", "fixing", "flashing", "flask", "flora", "fluke", "folklore", "follower", "foothold", "footing", "forefinger", "forefront", "forgiveness", "formality", "formation", "formula", "foyer", "fragmentation", "framework", "fraud", "freestyle", "frequency", "friendliness", "fries", "frigate", "fulfillment", "function", "functionality", "fundraiser", "fusion", "futility", "gallantry", "gallery", "genesis", "genitals", "girlfriend", "glamour", "glitter", "glucose", "google", "grandeur", "grappling", "greens", "gridlock", "grocer", "groundwork", "grouping", "gunman", "gusto", "habitation", "hacker", "hallway", "hamburger", "hammock", "handling", "hands", "handshake", "happiness", "hardship", "headcount", "header", "headquarters", "heads", "headset", "hearth", "hearts", "heath", "hegemony", "height", "hello", "helper", "helping", "helplessness", "hierarchy", "hoarding", "hockey", "homeland", "homer", "honesty", "horror", "horseman", "hostility", "housing", "humility", "hurricane", "iceberg", "ignition", "illness", "illustration", "illustrator", "immunity", "immunization", "imperialism", "imprisonment", "inaccuracy", "inaction", "inactivity", "inauguration", "indecency", "indicator", "inevitability", "infamy", "infiltration", "influx", "iniquity", "innocence", "innovation", "insanity", "inspiration", "instruction", "instructor", "insurer", "interact", "intercession", "intercourse", "intermission", "interpretation", "intersection", "interval", "intolerance", "intruder", "invasion", "investment", "involvement", "irrigation", "iteration", "jenny", "jogging", "jones", "joseph", "juggernaut", "juncture", "jurisprudence", "juror", "kangaroo", "kingdom", "knocking", "laborer", "larceny", "laurels", "layout", "leadership", "leasing", "legislation", "leopard", "liberation", "licence", "lifeblood", "lifeline", "ligament", "lighting", "likeness", "line-up", "lineage", "liner", "lineup", "liquidation", "listener", "literature", "litigation", "litre", "loathing", "locality", "lodging", "logic", "longevity", "lookout", "lordship", "lustre", "ma'am", "machinery", "madness", "magnificence", "mahogany", "mailing", "mainframe", "maintenance", "majority", "manga", "mango", "manifesto", "mantra", "manufacturer", "maple", "martin", "martyrdom", "mathematician", "matrix", "matron", "mayhem", "mayor", "means", "meantime", "measurement", "mechanics", "mediator", "medics", "melodrama", "memory", "mentality", "metaphysics", "method", "metre", "miner", "mirth", "misconception", "misery", "mishap", "misunderstanding", "mobility", "molasses", "momentum", "monarchy", "monument", "morale", "mortality", "motto", "mouthful", "mouthpiece", "mover", "movie", "mowing", "murderer", "musician", "mutation", "mythology", "narration", "narrator", "nationality", "negligence", "neighborhood", "neighbour", "nervousness", "networking", "nexus", "nightmare", "nobility", "nobody", "noodle", "normalcy", "notification", "nourishment", "novella", "nucleus", "nuisance", "nursery", "nutrition", "nylon", "oasis", "obscenity", "obscurity", "observer", "offense", "onslaught", "operation", "opportunity", "opposition", "oracle", "orchestra", "organisation", "organizer", "orientation", "originality", "ounce", "outage", "outcome", "outdoors", "outfield", "outing", "outpost", "outset", "overseer", "owner", "oxygen", "pairing", "panther", "paradox", "parliament", "parsley", "parson", "passenger", "pasta", "patchwork", "pathos", "patriotism", "pendulum", "penguin", "permission", "persona", "perusal", "pessimism", "peter", "philosopher", "phosphorus", "phrasing", "physique", "piles", "plateau", "playing", "plaza", "plethora", "plurality", "pneumonia", "pointer", "poker", "policeman", "polling", "poster", "posterity", "posting", "postponement", "potassium", "pottery", "poultry", "pounding", "pragmatism", "precedence", "precinct", "preoccupation", "pretense", "priesthood", "prisoner", "privacy", "probation", "proceeding", "proceedings", "processing", "processor", "progression", "projection", "prominence", "propensity", "prophecy", "prorogation", "prospectus", "protein", "prototype", "providence", "provider", "provocation", "proximity", "puberty", "publicist", "publicity", "publisher", "pundit", "putting", "quantity", "quart", "quilting", "quorum", "racism", "radiance", "ralph", "rancher", "ranger", "rapidity", "rapport", "ratification", "rationality", "reaction", "reader", "reassurance", "rebirth", "receptor", "recipe", "recognition", "recourse", "recreation", "rector", "recurrence", "redemption", "redistribution", "redundancy", "refinery", "reformer", "refrigerator", "regularity", "regulator", "reinforcement", "reins", "reinstatement", "relativism", "relaxation", "rendition", "repayment", "repentance", "repertoire", "repository", "republic", "reputation", "resentment", "residency", "resignation", "restaurant", "resurgence", "retailer", "retention", "retirement", "reviewer", "riches", "righteousness", "roadblock", "robber", "rocks", "rubbing", "runoff", "saloon", "salvation", "sarcasm", "saucer", "savior", "scarcity", "scenario", "scenery", "schism", "scholarship", "schoolboy", "schooner", "scissors", "scolding", "scooter", "scouring", "scrimmage", "scrum", "seating", "sediment", "seduction", "seeder", "seizure", "self-confidence", "self-control", "self-respect", "semicolon", "semiconductor", "semifinal", "senator", "sending", "serenity", "seriousness", "servitude", "sesame", "setup", "sewing", "sharpness", "shaving", "shoplifting", "shopping", "siding", "simplicity", "simulation", "sinking", "skate", "sloth", "slugger", "snack", "snail", "snapshot", "snark", "soccer", "solemnity", "solicitation", "solitude", "somewhere", "sophistication", "sorcery", "souvenir", "spaghetti", "specification", "specimen", "specs", "spectacle", "spectre", "speculation", "sperm", "spoiler", "squad", "squid", "staging", "stagnation", "staircase", "stairway", "stamina", "standpoint", "standstill", "stanza", "statement", "stillness", "stimulus", "stocks", "stole", "stoppage", "storey", "storyteller", "stylus", "subcommittee", "subscription", "subsidy", "suburb", "success", "sufferer", "supposition", "suspension", "sweater", "sweepstakes", "swimmer", "syndrome", "synopsis", "syntax", "system", "tablespoon", "taker", "tavern", "technology", "telephony", "template", "tempo", "tendency", "tendon", "terrier", "terror", "terry", "theater", "theology", "therapy", "thicket", "thoroughfare", "threshold", "thriller", "thunderstorm", "ticker", "tiger", "tights", "to-day", "tossing", "touchdown", "tourist", "tourney", "toxicity", "tracing", "tractor", "translation", "transmission", "transmitter", "trauma", "traveler", "treadmill", "trilogy", "trout", "tuning", "twenties", "tycoon", "tyrant", "ultimatum", "underdog", "underwear", "unhappiness", "unification", "university", "uprising", "vaccination", "validity", "vampire", "vanguard", "variation", "vegetation", "verification", "viability", "vicinity", "victory", "viewpoint", "villa", "vindication", "violation", "vista", "vocalist", "vogue", "volcano", "voltage", "vomiting", "vulnerability", "waistcoat", "waitress", "wardrobe", "warmth", "watchdog", "wealth", "weariness", "whereabouts", "whisky", "whiteness", "widget", "width", "windfall", "wiring", "witchcraft", "withholding", "womanhood", "words", "workman", "youngster"} diff --git a/pkg/fakedata/generator.go b/pkg/fakedata/generator.go index 2ceff0a..4c6de58 100644 --- a/pkg/fakedata/generator.go +++ b/pkg/fakedata/generator.go @@ -203,12 +203,6 @@ var file = func(column Column) string { return list[rand.Intn(len(list))] } -var corporaGenerator = func(source []string) func(Column) string { - return func(column Column) string { - return source[rand.Intn(len(source))] - } -} - func init() { generators = make(map[string]Generator) @@ -374,24 +368,24 @@ func init() { generators["noun"] = Generator{ Name: "noun", Desc: "random noun", - Func: corporaGenerator(data.Nouns), + Func: withList(data.Nouns), } generators["emoji"] = Generator{ Name: "emoji", Desc: "random emoji", - Func: corporaGenerator(data.Emojis), + Func: withList(data.Emojis), } generators["cat"] = Generator{ Name: "cat", Desc: "random cat breed", - Func: corporaGenerator(data.Cats), + Func: withList(data.Cats), } generators["animal"] = Generator{ Name: "animal", Desc: "random animal name", - Func: corporaGenerator(data.Animals), + Func: withList(data.Animals), } } From ce601f2921c47cd4443cdd1513d0eb367ecb3f34 Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Sun, 4 Jun 2017 20:22:10 +0200 Subject: [PATCH 4/5] Simplify corpora importer by downloading single JSON files instead of the whole repository. --- cmd/importcorpora/main.go | 125 +++++--------------------------------- 1 file changed, 15 insertions(+), 110 deletions(-) diff --git a/cmd/importcorpora/main.go b/cmd/importcorpora/main.go index 5453ccf..972f225 100644 --- a/cmd/importcorpora/main.go +++ b/cmd/importcorpora/main.go @@ -1,13 +1,11 @@ // Usage: go run cmd/importcorpora/main.go // -// Updates the at the bottom of this file specified data files with content from dariusk/corpora. +// Updates the at the bottom of this file specified data from dariusk/corpora. package main import ( - "archive/zip" "encoding/json" "fmt" - "io" "io/ioutil" "log" "net/http" @@ -16,10 +14,10 @@ import ( "strings" ) -// URL to zip file -const corporaArchive = "https://github.com/dariusk/corpora/archive/master.zip" +// Base URL to download JSON files from +const baseURL = "https://raw.githubusercontent.com/dariusk/corpora/master/data/" -// Path to write Go file to +// Path to write Go files to const targetDir = "pkg/data" // Content of a Go file @@ -38,27 +36,21 @@ func main() { log.Fatalf("The data directory cannot be found at %s. Ensure the importer is running in the correct location.", targetDir) } - dir, err := downloadCorpora() - defer func() { - if dir == "" { - return - } - if err := os.RemoveAll(dir); err != nil { - panic(err) - } - }() - if err != nil { - log.Fatal(err) - } - for _, d := range data { - // Get data from JSON file - f, err := ioutil.ReadFile(filepath.Join(dir, "corpora-master/data", d.From)) + // Get JSON from URL + resp, err := http.Get(baseURL + d.From) if err != nil { log.Fatal(err) } + defer func() { + if err := resp.Body.Close(); err != nil { + panic(err) + } + }() + + // Get data from JSON var jsonData map[string]interface{} - if err := json.Unmarshal(f, &jsonData); err != nil { + if err := json.NewDecoder(resp.Body).Decode(&jsonData); err != nil { log.Fatal(err) } @@ -79,94 +71,7 @@ func main() { } } -// Download corpora repo into a tmp dir and return path to dir -func downloadCorpora() (string, error) { - // Create tmp dir - dir, err := ioutil.TempDir("", "fakedata-import-") - if err != nil { - return dir, err - } - - // Create tmp file to write zip file to - tmpArchive, err := ioutil.TempFile("", "fakedata-import-archive") - if err != nil { - return dir, err - } - defer func() { - if err := os.Remove(tmpArchive.Name()); err != nil { - panic(err) - } - }() - - // Download zip file - resp, err := http.Get(corporaArchive) - defer func() { - if err := resp.Body.Close(); err != nil { - panic(err) - } - }() - _, err = io.Copy(tmpArchive, resp.Body) - if err != nil { - return dir, err - } - if err := tmpArchive.Close(); err != nil { - return dir, err - } - - // Unzip to tmp dir (adopted from https://stackoverflow.com/a/24792688/986455) - r, err := zip.OpenReader(tmpArchive.Name()) - if err != nil { - return dir, err - } - defer func() { - if err := r.Close(); err != nil { - panic(err) - } - }() - - extractAndWriteFile := func(zipFile *zip.File) error { - zipReader, err := zipFile.Open() - if err != nil { - return err - } - defer func() { - if err := zipReader.Close(); err != nil { - panic(err) - } - }() - - path := filepath.Join(dir, zipFile.Name) - if zipFile.FileInfo().IsDir() { - return os.MkdirAll(path, zipFile.Mode()) - } - if err := os.MkdirAll(filepath.Dir(path), zipFile.Mode()); err != nil { - return err - } - - target, err := os.Create(path) - if err != nil { - return err - } - defer func() { - if err := target.Close(); err != nil { - panic(err) - } - }() - - _, err = io.Copy(target, zipReader) - return err - } - - for _, f := range r.File { - if err := extractAndWriteFile(f); err != nil { - return dir, err - } - } - - return dir, nil -} - -// Data to import is specified +// Data to import is specified here var data = []struct { // JSON file to read from From string From eace86fb86c60035a71f8b44ede78f17a65d6cfb Mon Sep 17 00:00:00 2001 From: Jorin Vogel Date: Sun, 4 Jun 2017 20:30:32 +0200 Subject: [PATCH 5/5] Call it array, not list to be consistent. --- cmd/importcorpora/main.go | 2 +- pkg/data/animals.go | 2 +- pkg/data/cats.go | 2 +- pkg/data/emojis.go | 2 +- pkg/data/nouns.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/importcorpora/main.go b/cmd/importcorpora/main.go index 972f225..0980e31 100644 --- a/cmd/importcorpora/main.go +++ b/cmd/importcorpora/main.go @@ -23,7 +23,7 @@ const targetDir = "pkg/data" // Content of a Go file const fileTemplate = `package data -// %s is a list of %s +// %s is an array of %s var %s = %s` func main() { diff --git a/pkg/data/animals.go b/pkg/data/animals.go index 320f487..d3bd4ff 100644 --- a/pkg/data/animals.go +++ b/pkg/data/animals.go @@ -1,4 +1,4 @@ package data -// Animals is a list of animals +// Animals is an array of animals var Animals = []string{"aardvark", "alligator", "alpaca", "antelope", "ape", "armadillo", "baboon", "badger", "bat", "bear", "beaver", "bison", "boar", "buffalo", "bull", "camel", "canary", "capybara", "cat", "chameleon", "cheetah", "chimpanzee", "chinchilla", "chipmunk", "cougar", "cow", "coyote", "crocodile", "crow", "deer", "dingo", "dog", "donkey", "dromedary", "elephant", "elk", "ewe", "ferret", "finch", "fish", "fox", "frog", "gazelle", "gila monster", "giraffe", "gnu", "goat", "gopher", "gorilla", "grizzly bear", "ground hog", "guinea pig", "hamster", "hedgehog", "hippopotamus", "hog", "horse", "hyena", "ibex", "iguana", "impala", "jackal", "jaguar", "kangaroo", "koala", "lamb", "lemur", "leopard", "lion", "lizard", "llama", "lynx", "mandrill", "marmoset", "mink", "mole", "mongoose", "monkey", "moose", "mountain goat", "mouse", "mule", "muskrat", "mustang", "mynah bird", "newt", "ocelot", "opossum", "orangutan", "oryx", "otter", "ox", "panda", "panther", "parakeet", "parrot", "pig", "platypus", "polar bear", "porcupine", "porpoise", "prairie dog", "puma", "rabbit", "raccoon", "ram", "rat", "reindeer", "reptile", "rhinoceros", "salamander", "seal", "sheep", "shrew", "silver fox", "skunk", "sloth", "snake", "squirrel", "tapir", "tiger", "toad", "turtle", "walrus", "warthog", "weasel", "whale", "wildcat", "wolf", "wolverine", "wombat", "woodchuck", "yak", "zebra"} diff --git a/pkg/data/cats.go b/pkg/data/cats.go index 6a7d5a1..13deb80 100644 --- a/pkg/data/cats.go +++ b/pkg/data/cats.go @@ -1,4 +1,4 @@ package data -// Cats is a list of cats +// Cats is an array of cats var Cats = []string{"Abyssinian", "Aegean", "American Bobtail", "American Curl", "American Shorthair", "American Wirehair", "Arabian Mau", "Asian", "Asian Semi-longhair", "Australian Mist", "Balinese", "Bambino", "Bengal", "Birman", "Bombay", "Brazilian Shorthair", "British Longhair", "British Semi-longhair", "British Shorthair", "Burmese", "Burmilla", "California Spangled", "Chantilly-Tiffany", "Chartreux", "Chausie", "Cheetoh", "Colorpoint Shorthair", "Cornish Rex", "Cymric", "Cyprus", "Devon Rex", "Donskoy", "Dragon Li", "Dwarf cat", "Egyptian Mau", "European Shorthair", "Exotic Shorthair", "Foldex", "German Rex", "Havana Brown", "Highlander", "Himalayan", "Japanese Bobtail", "Javanese", "Khao Manee", "Korat", "Korean Bobtail", "Korn Ja", "Kurilian Bobtail", "LaPerm", "Lykoi", "Maine Coon", "Manx", "Mekong Bobtail", "Minskin", "Munchkin", "Napoleon", "Nebelung", "Norwegian Forest cat", "Ocicat", "Ojos Azules", "Oregon Rex", "Oriental Bicolor", "Oriental Longhair", "Oriental Shorthair", "PerFold", "Persian (Modern)", "Persian (Traditional)", "Peterbald", "Pixie-bob", "Raas", "Ragamuffin", "Ragdoll", "Russian Blue", "Russian White, Black and Tabby", "Sam Sawet", "Savannah", "Scottish Fold", "Selkirk Rex", "Serengeti", "Serrade Petit", "Siamese", "Siberian", "Singapura", "Snowshoe", "Sokoke", "Somali", "Sphynx", "Suphalak", "Thai", "Thai Lilac", "Tonkinese", "Toyger", "Turkish Angora", "Turkish Van", "Ukrainian Levkoy"} diff --git a/pkg/data/emojis.go b/pkg/data/emojis.go index 304277b..2110a88 100644 --- a/pkg/data/emojis.go +++ b/pkg/data/emojis.go @@ -1,4 +1,4 @@ package data -// Emojis is a list of emojis +// Emojis is an array of emojis var Emojis = []string{"๐Ÿ€„", "๐Ÿƒ", "๐Ÿ…ฐ", "๐Ÿ…ฑ", "๐Ÿ…พ", "๐Ÿ…ฟ", "๐Ÿ†Ž", "๐Ÿ†‘", "๐Ÿ†’", "๐Ÿ†“", "๐Ÿ†”", "๐Ÿ†•", "๐Ÿ†–", "๐Ÿ†—", "๐Ÿ†˜", "๐Ÿ†™", "๐Ÿ†š", "๐Ÿ‡ฆ", "๐Ÿ‡ง", "๐Ÿ‡จ", "๐Ÿ‡ฉ", "๐Ÿ‡ช", "๐Ÿ‡ซ", "๐Ÿ‡ฌ", "๐Ÿ‡ญ", "๐Ÿ‡ฎ", "๐Ÿ‡ฏ", "๐Ÿ‡ฐ", "๐Ÿ‡ฑ", "๐Ÿ‡ฒ", "๐Ÿ‡ณ", "๐Ÿ‡ด", "๐Ÿ‡ต", "๐Ÿ‡ถ", "๐Ÿ‡ท", "๐Ÿ‡ธ", "๐Ÿ‡น", "๐Ÿ‡บ", "๐Ÿ‡ป", "๐Ÿ‡ผ", "๐Ÿ‡ฝ", "๐Ÿ‡พ", "๐Ÿ‡ฟ", "๐Ÿˆ", "๐Ÿˆ‚", "๐Ÿˆš", "๐Ÿˆฏ", "๐Ÿˆฒ", "๐Ÿˆณ", "๐Ÿˆด", "๐Ÿˆต", "๐Ÿˆถ", "๐Ÿˆท", "๐Ÿˆธ", "๐Ÿˆน", "๐Ÿˆบ", "๐Ÿ‰", "๐Ÿ‰‘", "๐ŸŒ€", "๐ŸŒ", "๐ŸŒ‚", "๐ŸŒƒ", "๐ŸŒ„", "๐ŸŒ…", "๐ŸŒ†", "๐ŸŒ‡", "๐ŸŒˆ", "๐ŸŒ‰", "๐ŸŒŠ", "๐ŸŒ‹", "๐ŸŒŒ", "๐ŸŒ", "๐ŸŒŽ", "๐ŸŒ", "๐ŸŒ", "๐ŸŒ‘", "๐ŸŒ’", "๐ŸŒ“", "๐ŸŒ”", "๐ŸŒ•", "๐ŸŒ–", "๐ŸŒ—", "๐ŸŒ˜", "๐ŸŒ™", "๐ŸŒš", "๐ŸŒ›", "๐ŸŒœ", "๐ŸŒ", "๐ŸŒž", "๐ŸŒŸ", "๐ŸŒ ", "๐ŸŒฐ", "๐ŸŒฑ", "๐ŸŒฒ", "๐ŸŒณ", "๐ŸŒด", "๐ŸŒต", "๐ŸŒท", "๐ŸŒธ", "๐ŸŒน", "๐ŸŒบ", "๐ŸŒป", "๐ŸŒผ", "๐ŸŒฝ", "๐ŸŒพ", "๐ŸŒฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐ŸŽ€", "๐ŸŽ", "๐ŸŽ‚", "๐ŸŽƒ", "๐ŸŽ„", "๐ŸŽ…", "๐ŸŽ†", "๐ŸŽ‡", "๐ŸŽˆ", "๐ŸŽ‰", "๐ŸŽŠ", "๐ŸŽ‹", "๐ŸŽŒ", "๐ŸŽ", "๐ŸŽŽ", "๐ŸŽ", "๐ŸŽ", "๐ŸŽ‘", "๐ŸŽ’", "๐ŸŽ“", "๐ŸŽ ", "๐ŸŽก", "๐ŸŽข", "๐ŸŽฃ", "๐ŸŽค", "๐ŸŽฅ", "๐ŸŽฆ", "๐ŸŽง", "๐ŸŽจ", "๐ŸŽฉ", "๐ŸŽช", "๐ŸŽซ", "๐ŸŽฌ", "๐ŸŽญ", "๐ŸŽฎ", "๐ŸŽฏ", "๐ŸŽฐ", "๐ŸŽฑ", "๐ŸŽฒ", "๐ŸŽณ", "๐ŸŽด", "๐ŸŽต", "๐ŸŽถ", "๐ŸŽท", "๐ŸŽธ", "๐ŸŽน", "๐ŸŽบ", "๐ŸŽป", "๐ŸŽผ", "๐ŸŽฝ", "๐ŸŽพ", "๐ŸŽฟ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿ€", "๐Ÿ", "๐Ÿ‚", "๐Ÿƒ", "๐Ÿ„", "๐Ÿ…", "๐Ÿ†", "๐Ÿ‡", "๐Ÿˆ", "๐Ÿ‰", "๐ŸŠ", "๐Ÿ‹", "๐ŸŒ", "๐Ÿ", "๐ŸŽ", "๐Ÿ", "๐Ÿ", "๐Ÿ‘", "๐Ÿ’", "๐Ÿ“", "๐Ÿ”", "๐Ÿ•", "๐Ÿ–", "๐Ÿ—", "๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›", "๐Ÿœ", "๐Ÿ", "๐Ÿž", "๐ŸŸ", "๐Ÿ ", "๐Ÿก", "๐Ÿข", "๐Ÿฃ", "๐Ÿค", "๐Ÿฅ", "๐Ÿฆ", "๐Ÿง", "๐Ÿจ", "๐Ÿฉ", "๐Ÿช", "๐Ÿซ", "๐Ÿฌ", "๐Ÿญ", "๐Ÿฎ", "๐Ÿฏ", "๐Ÿฐ", "๐Ÿฑ", "๐Ÿฒ", "๐Ÿณ", "๐Ÿด", "๐Ÿต", "๐Ÿถ", "๐Ÿท", "๐Ÿธ", "๐Ÿน", "๐Ÿบ", "๐Ÿป", "๐Ÿผ", "๐Ÿฝ", "๐Ÿพ", "๐Ÿ‘€", "๐Ÿ‘‚", "๐Ÿ‘ƒ", "๐Ÿ‘„", "๐Ÿ‘…", "๐Ÿ‘†", "๐Ÿ‘‡", "๐Ÿ‘ˆ", "๐Ÿ‘‰", "๐Ÿ‘Š", "๐Ÿ‘‹", "๐Ÿ‘Œ", "๐Ÿ‘", "๐Ÿ‘Ž", "๐Ÿ‘", "๐Ÿ‘", "๐Ÿ‘‘", "๐Ÿ‘’", "๐Ÿ‘“", "๐Ÿ‘”", "๐Ÿ‘•", "๐Ÿ‘–", "๐Ÿ‘—", "๐Ÿ‘˜", "๐Ÿ‘™", "๐Ÿ‘š", "๐Ÿ‘›", "๐Ÿ‘œ", "๐Ÿ‘", "๐Ÿ‘ž", "๐Ÿ‘Ÿ", "๐Ÿ‘ ", "๐Ÿ‘ก", "๐Ÿ‘ข", "๐Ÿ‘ฃ", "๐Ÿ‘ค", "๐Ÿ‘ฅ", "๐Ÿ‘ฆ", "๐Ÿ‘ง", "๐Ÿ‘จ", "๐Ÿ‘ฉ", "๐Ÿ‘ช", "๐Ÿ‘ซ", "๐Ÿ‘ฌ", "๐Ÿ‘ญ", "๐Ÿ‘ฎ", "๐Ÿ‘ฏ", "๐Ÿ‘ฐ", "๐Ÿ‘ฑ", "๐Ÿ‘ฒ", "๐Ÿ‘ณ", "๐Ÿ‘ด", "๐Ÿ‘ต", "๐Ÿ‘ถ", "๐Ÿ‘ท", "๐Ÿ‘ธ", "๐Ÿ‘น", "๐Ÿ‘บ", "๐Ÿ‘ป", "๐Ÿ‘ผ", "๐Ÿ‘ฝ", "๐Ÿ‘พ", "๐Ÿ‘ฟ", "๐Ÿ’€", "๐Ÿ’", "๐Ÿ’‚", "๐Ÿ’ƒ", "๐Ÿ’„", "๐Ÿ’…", "๐Ÿ’†", "๐Ÿ’‡", "๐Ÿ’ˆ", "๐Ÿ’‰", "๐Ÿ’Š", "๐Ÿ’‹", "๐Ÿ’Œ", "๐Ÿ’", "๐Ÿ’Ž", "๐Ÿ’", "๐Ÿ’", "๐Ÿ’‘", "๐Ÿ’’", "๐Ÿ’“", "๐Ÿ’”", "๐Ÿ’•", "๐Ÿ’–", "๐Ÿ’—", "๐Ÿ’˜", "๐Ÿ’™", "๐Ÿ’š", "๐Ÿ’›", "๐Ÿ’œ", "๐Ÿ’", "๐Ÿ’ž", "๐Ÿ’Ÿ", "๐Ÿ’ ", "๐Ÿ’ก", "๐Ÿ’ข", "๐Ÿ’ฃ", "๐Ÿ’ค", "๐Ÿ’ฅ", "๐Ÿ’ฆ", "๐Ÿ’ง", "๐Ÿ’จ", "๐Ÿ’ฉ", "๐Ÿ’ช", "๐Ÿ’ซ", "๐Ÿ’ฌ", "๐Ÿ’ญ", "๐Ÿ’ฎ", "๐Ÿ’ฏ", "๐Ÿ’ฐ", "๐Ÿ’ฑ", "๐Ÿ’ฒ", "๐Ÿ’ณ", "๐Ÿ’ด", "๐Ÿ’ต", "๐Ÿ’ถ", "๐Ÿ’ท", "๐Ÿ’ธ", "๐Ÿ’น", "๐Ÿ’บ", "๐Ÿ’ป", "๐Ÿ’ผ", "๐Ÿ’ฝ", "๐Ÿ’พ", "๐Ÿ’ฟ", "๐Ÿ“€", "๐Ÿ“", "๐Ÿ“‚", "๐Ÿ“ƒ", "๐Ÿ“„", "๐Ÿ“…", "๐Ÿ“†", "๐Ÿ“‡", "๐Ÿ“ˆ", "๐Ÿ“‰", "๐Ÿ“Š", "๐Ÿ“‹", "๐Ÿ“Œ", "๐Ÿ“", "๐Ÿ“Ž", "๐Ÿ“", "๐Ÿ“", "๐Ÿ“‘", "๐Ÿ“’", "๐Ÿ““", "๐Ÿ“”", "๐Ÿ“•", "๐Ÿ“–", "๐Ÿ“—", "๐Ÿ“˜", "๐Ÿ“™", "๐Ÿ“š", "๐Ÿ“›", "๐Ÿ“œ", "๐Ÿ“", "๐Ÿ“ž", "๐Ÿ“Ÿ", "๐Ÿ“ ", "๐Ÿ“ก", "๐Ÿ“ข", "๐Ÿ“ฃ", "๐Ÿ“ค", "๐Ÿ“ฅ", "๐Ÿ“ฆ", "๐Ÿ“ง", "๐Ÿ“จ", "๐Ÿ“ฉ", "๐Ÿ“ช", "๐Ÿ“ซ", "๐Ÿ“ฌ", "๐Ÿ“ญ", "๐Ÿ“ฎ", "๐Ÿ“ฏ", "๐Ÿ“ฐ", "๐Ÿ“ฑ", "๐Ÿ“ฒ", "๐Ÿ“ณ", "๐Ÿ“ด", "๐Ÿ“ต", "๐Ÿ“ถ", "๐Ÿ“ท", "๐Ÿ“น", "๐Ÿ“บ", "๐Ÿ“ป", "๐Ÿ“ผ", "๐Ÿ”€", "๐Ÿ”", "๐Ÿ”‚", "๐Ÿ”ƒ", "๐Ÿ”„", "๐Ÿ”…", "๐Ÿ”†", "๐Ÿ”‡", "๐Ÿ”ˆ", "๐Ÿ”‰", "๐Ÿ”Š", "๐Ÿ”‹", "๐Ÿ”Œ", "๐Ÿ”", "๐Ÿ”Ž", "๐Ÿ”", "๐Ÿ”", "๐Ÿ”‘", "๐Ÿ”’", "๐Ÿ”“", "๐Ÿ””", "๐Ÿ”•", "๐Ÿ”–", "๐Ÿ”—", "๐Ÿ”˜", "๐Ÿ”™", "๐Ÿ”š", "๐Ÿ”›", "๐Ÿ”œ", "๐Ÿ”", "๐Ÿ”ž", "๐Ÿ”Ÿ", "๐Ÿ” ", "๐Ÿ”ก", "๐Ÿ”ข", "๐Ÿ”ฃ", "๐Ÿ”ค", "๐Ÿ”ฅ", "๐Ÿ”ฆ", "๐Ÿ”ง", "๐Ÿ”จ", "๐Ÿ”ฉ", "๐Ÿ”ช", "๐Ÿ”ซ", "๐Ÿ”ฌ", "๐Ÿ”ญ", "๐Ÿ”ฎ", "๐Ÿ”ฏ", "๐Ÿ”ฐ", "๐Ÿ”ฑ", "๐Ÿ”ฒ", "๐Ÿ”ณ", "๐Ÿ”ด", "๐Ÿ”ต", "๐Ÿ”ถ", "๐Ÿ”ท", "๐Ÿ”ธ", "๐Ÿ”น", "๐Ÿ”บ", "๐Ÿ”ป", "๐Ÿ”ผ", "๐Ÿ”ฝ", "๐Ÿ•", "๐Ÿ•‘", "๐Ÿ•’", "๐Ÿ•“", "๐Ÿ•”", "๐Ÿ••", "๐Ÿ•–", "๐Ÿ•—", "๐Ÿ•˜", "๐Ÿ•™", "๐Ÿ•š", "๐Ÿ•›", "๐Ÿ•œ", "๐Ÿ•", "๐Ÿ•ž", "๐Ÿ•Ÿ", "๐Ÿ• ", "๐Ÿ•ก", "๐Ÿ•ข", "๐Ÿ•ฃ", "๐Ÿ•ค", "๐Ÿ•ฅ", "๐Ÿ•ฆ", "๐Ÿ•ง", "๐Ÿ—ป", "๐Ÿ—ผ", "๐Ÿ—ฝ", "๐Ÿ—พ", "๐Ÿ—ฟ", "๐Ÿ˜€", "๐Ÿ˜", "๐Ÿ˜‚", "๐Ÿ˜ƒ", "๐Ÿ˜„", "๐Ÿ˜…", "๐Ÿ˜†", "๐Ÿ˜‡", "๐Ÿ˜ˆ", "๐Ÿ˜‰", "๐Ÿ˜Š", "๐Ÿ˜‹", "๐Ÿ˜Œ", "๐Ÿ˜", "๐Ÿ˜Ž", "๐Ÿ˜", "๐Ÿ˜", "๐Ÿ˜‘", "๐Ÿ˜’", "๐Ÿ˜“", "๐Ÿ˜”", "๐Ÿ˜•", "๐Ÿ˜–", "๐Ÿ˜—", "๐Ÿ˜˜", "๐Ÿ˜™", "๐Ÿ˜š", "๐Ÿ˜›", "๐Ÿ˜œ", "๐Ÿ˜", "๐Ÿ˜ž", "๐Ÿ˜Ÿ", "๐Ÿ˜ ", "๐Ÿ˜ก", "๐Ÿ˜ข", "๐Ÿ˜ฃ", "๐Ÿ˜ค", "๐Ÿ˜ฅ", "๐Ÿ˜ฆ", "๐Ÿ˜ง", "๐Ÿ˜จ", "๐Ÿ˜ฉ", "๐Ÿ˜ช", "๐Ÿ˜ซ", "๐Ÿ˜ฌ", "๐Ÿ˜ญ", "๐Ÿ˜ฎ", "๐Ÿ˜ฏ", "๐Ÿ˜ฐ", "๐Ÿ˜ฑ", "๐Ÿ˜ฒ", "๐Ÿ˜ณ", "๐Ÿ˜ด", "๐Ÿ˜ต", "๐Ÿ˜ถ", "๐Ÿ˜ท", "๐Ÿ˜ธ", "๐Ÿ˜น", "๐Ÿ˜บ", "๐Ÿ˜ป", "๐Ÿ˜ผ", "๐Ÿ˜ฝ", "๐Ÿ˜พ", "๐Ÿ˜ฟ", "๐Ÿ™€", "๐Ÿ™", "๐Ÿ™‚", "๐Ÿ™…", "๐Ÿ™†", "๐Ÿ™‡", "๐Ÿ™ˆ", "๐Ÿ™‰", "๐Ÿ™Š", "๐Ÿ™‹", "๐Ÿ™Œ", "๐Ÿ™", "๐Ÿ™Ž", "๐Ÿ™", "๐Ÿš€", "๐Ÿš", "๐Ÿš‚", "๐Ÿšƒ", "๐Ÿš„", "๐Ÿš…", "๐Ÿš†", "๐Ÿš‡", "๐Ÿšˆ", "๐Ÿš‰", "๐ŸšŠ", "๐Ÿš‹", "๐ŸšŒ", "๐Ÿš", "๐ŸšŽ", "๐Ÿš", "๐Ÿš", "๐Ÿš‘", "๐Ÿš’", "๐Ÿš“", "๐Ÿš”", "๐Ÿš•", "๐Ÿš–", "๐Ÿš—", "๐Ÿš˜", "๐Ÿš™", "๐Ÿšš", "๐Ÿš›", "๐Ÿšœ", "๐Ÿš", "๐Ÿšž", "๐ŸšŸ", "๐Ÿš ", "๐Ÿšก", "๐Ÿšข", "๐Ÿšฃ", "๐Ÿšค", "๐Ÿšฅ", "๐Ÿšฆ", "๐Ÿšง", "๐Ÿšจ", "๐Ÿšฉ", "๐Ÿšช", "๐Ÿšซ", "๐Ÿšฌ", "๐Ÿšญ", "๐Ÿšฎ", "๐Ÿšฏ", "๐Ÿšฐ", "๐Ÿšฑ", "๐Ÿšฒ", "๐Ÿšณ", "๐Ÿšด", "๐Ÿšต", "๐Ÿšถ", "๐Ÿšท", "๐Ÿšธ", "๐Ÿšน", "๐Ÿšบ", "๐Ÿšป", "๐Ÿšผ", "๐Ÿšฝ", "๐Ÿšพ", "๐Ÿšฟ", "๐Ÿ›€", "๐Ÿ›", "๐Ÿ›‚", "๐Ÿ›ƒ", "๐Ÿ›„", "๐Ÿ›…", "โ€ผ", "โ‰", "โ„ข", "โ„น", "โ†”", "โ†•", "โ†–", "โ†—", "โ†˜", "โ†™", "โ†ฉ", "โ†ช", "#", "โŒš", "โŒ›", "โฉ", "โช", "โซ", "โฌ", "โฐ", "โณ", "โ“‚", "โ–ช", "โ–ซ", "โ–ถ", "โ—€", "โ—ป", "โ—ผ", "โ—ฝ", "โ—พ", "โ˜€", "โ˜", "โ˜Ž", "โ˜‘", "โ˜”", "โ˜•", "โ˜", "โ˜บ", "โ™ˆ", "โ™‰", "โ™Š", "โ™‹", "โ™Œ", "โ™", "โ™Ž", "โ™", "โ™", "โ™‘", "โ™’", "โ™“", "โ™ ", "โ™ฃ", "โ™ฅ", "โ™ฆ", "โ™จ", "โ™ป", "โ™ฟ", "โš“", "โš ", "โšก", "โšช", "โšซ", "โšฝ", "โšพ", "โ›„", "โ›…", "โ›Ž", "โ›”", "โ›ช", "โ›ฒ", "โ›ณ", "โ›ต", "โ›บ", "โ›ฝ", "โœ‚", "โœ…", "โœˆ", "โœ‰", "โœŠ", "โœ‹", "โœŒ", "โœ", "โœ’", "โœ”", "โœ–", "โœจ", "โœณ", "โœด", "โ„", "โ‡", "โŒ", "โŽ", "โ“", "โ”", "โ•", "โ—", "โค", "โž•", "โž–", "โž—", "โžก", "โžฐ", "โžฟ", "โคด", "โคต", "โฌ…", "โฌ†", "โฌ‡", "โฌ›", "โฌœ", "โญ", "โญ•", "0", "ใ€ฐ", "ใ€ฝ", "1", "2", "ใŠ—", "ใŠ™", "3", "4", "5", "6", "7", "8", "9", "ยฉ", "ยฎ", "\ue50a"} diff --git a/pkg/data/nouns.go b/pkg/data/nouns.go index fd138b0..fc7cb31 100644 --- a/pkg/data/nouns.go +++ b/pkg/data/nouns.go @@ -1,4 +1,4 @@ package data -// Nouns is a list of nouns +// Nouns is an array of nouns var Nouns = []string{"Armour", "Barrymore", "Cabot", "Catholicism", "Chihuahua", "Christianity", "Easter", "Frenchman", "Lowry", "Mayer", "Orientalism", "Pharaoh", "Pueblo", "Pullman", "Rodeo", "Saturday", "Sister", "Snead", "Syrah", "Tuesday", "Woodward", "abbey", "absence", "absorption", "abstinence", "absurdity", "abundance", "acceptance", "accessibility", "accommodation", "accomplice", "accountability", "accounting", "accreditation", "accuracy", "acquiescence", "acreage", "actress", "actuality", "adage", "adaptation", "adherence", "adjustment", "adoption", "adultery", "advancement", "advert", "advertisement", "advertising", "advice", "aesthetics", "affinity", "aggression", "agriculture", "aircraft", "airtime", "allegation", "allegiance", "allegory", "allergy", "allies", "alligator", "allocation", "allotment", "altercation", "ambulance", "ammonia", "anatomy", "anemia", "ankle", "announcement", "annoyance", "annuity", "anomaly", "anthropology", "anxiety", "apartheid", "apologise", "apostle", "apparatus", "appeasement", "appellation", "appendix", "applause", "appointment", "appraisal", "archery", "archipelago", "architecture", "ardor", "arrears", "arrow", "artisan", "artistry", "ascent", "assembly", "assignment", "association", "asthma", "atheism", "attacker", "attraction", "attractiveness", "auspices", "authority", "avarice", "aversion", "aviation", "babbling", "backlash", "baker", "ballet", "balls", "banjo", "baron", "barrier", "barrister", "bases", "basin", "basis", "battery", "battling", "bedtime", "beginner", "begun", "bending", "bicycle", "billing", "bingo", "biography", "biology", "birthplace", "blackberry", "blather", "blossom", "boardroom", "boasting", "bodyguard", "boldness", "bomber", "bondage", "bonding", "bones", "bonus", "bookmark", "boomer", "booty", "bounds", "bowling", "brainstorming", "breadth", "breaker", "brewer", "brightness", "broccoli", "broth", "brotherhood", "browsing", "brunch", "brunt", "building", "bullion", "bureaucracy", "burglary", "buyout", "by-election", "cabal", "cabbage", "calamity", "campaign", "canonization", "captaincy", "carcass", "carrier", "cartridge", "cassette", "catfish", "caught", "celebrity", "cemetery", "certainty", "certification", "charade", "chasm", "check-in", "cheerleader", "cheesecake", "chemotherapy", "chili", "china", "chivalry", "cholera", "cilantro", "circus", "civilisation", "civility", "clearance", "clearing", "clerk", "climber", "closeness", "clothing", "clutches", "coaster", "coconut", "coding", "collaborator", "colleague", "college", "collision", "colors", "combustion", "comedian", "comer", "commander", "commemoration", "commenter", "commissioner", "commune", "competition", "completeness", "complexity", "computing", "comrade", "concur", "condominium", "conduit", "confidant", "configuration", "confiscation", "conflagration", "conflict", "consist", "consistency", "consolidation", "conspiracy", "constable", "consul", "consultancy", "contentment", "contents", "contractor", "conversation", "cornerstone", "corpus", "correlation", "councilman", "counselor", "countdown", "countryman", "coverage", "covering", "coyote", "cracker", "creator", "criminality", "crocodile", "cropping", "cross-examination", "crossover", "crossroads", "culprit", "cumin", "curator", "curfew", "cursor", "custard", "cutter", "cyclist", "cyclone", "cylinder", "cynicism", "daddy", "damsel", "darkness", "dawning", "daybreak", "dealing", "dedication", "deduction", "defection", "deference", "deficiency", "definition", "deflation", "degeneration", "delegation", "delicacy", "delirium", "deliverance", "demeanor", "demon", "demonstration", "denomination", "dentist", "departure", "depletion", "depression", "designation", "despotism", "detention", "developer", "devolution", "dexterity", "diagnosis", "dialect", "differentiation", "digger", "digress", "dioxide", "diploma", "disability", "disarmament", "discord", "discovery", "dishonesty", "dismissal", "disobedience", "dispatcher", "disservice", "distribution", "distributor", "diver", "diversity", "docking", "dollar", "dominance", "domination", "dominion", "donkey", "doorstep", "doorway", "dossier", "downside", "drafting", "drank", "drilling", "driver", "drumming", "drunkenness", "duchess", "ducking", "dugout", "dumps", "dwelling", "dynamics", "eagerness", "earnestness", "earnings", "eater", "editor", "effectiveness", "electricity", "elements", "eloquence", "emancipation", "embodiment", "embroidery", "emperor", "employment", "encampment", "enclosure", "encouragement", "endangerment", "enlightenment", "enthusiasm", "environment", "environs", "envoy", "epilepsy", "equation", "equator", "error", "espionage", "estimation", "evacuation", "exaggeration", "examination", "exclamation", "expediency", "exploitation", "extinction", "eyewitness", "falls", "fascism", "fastball", "feces", "feedback", "ferocity", "fertilization", "fetish", "finale", "firing", "fixing", "flashing", "flask", "flora", "fluke", "folklore", "follower", "foothold", "footing", "forefinger", "forefront", "forgiveness", "formality", "formation", "formula", "foyer", "fragmentation", "framework", "fraud", "freestyle", "frequency", "friendliness", "fries", "frigate", "fulfillment", "function", "functionality", "fundraiser", "fusion", "futility", "gallantry", "gallery", "genesis", "genitals", "girlfriend", "glamour", "glitter", "glucose", "google", "grandeur", "grappling", "greens", "gridlock", "grocer", "groundwork", "grouping", "gunman", "gusto", "habitation", "hacker", "hallway", "hamburger", "hammock", "handling", "hands", "handshake", "happiness", "hardship", "headcount", "header", "headquarters", "heads", "headset", "hearth", "hearts", "heath", "hegemony", "height", "hello", "helper", "helping", "helplessness", "hierarchy", "hoarding", "hockey", "homeland", "homer", "honesty", "horror", "horseman", "hostility", "housing", "humility", "hurricane", "iceberg", "ignition", "illness", "illustration", "illustrator", "immunity", "immunization", "imperialism", "imprisonment", "inaccuracy", "inaction", "inactivity", "inauguration", "indecency", "indicator", "inevitability", "infamy", "infiltration", "influx", "iniquity", "innocence", "innovation", "insanity", "inspiration", "instruction", "instructor", "insurer", "interact", "intercession", "intercourse", "intermission", "interpretation", "intersection", "interval", "intolerance", "intruder", "invasion", "investment", "involvement", "irrigation", "iteration", "jenny", "jogging", "jones", "joseph", "juggernaut", "juncture", "jurisprudence", "juror", "kangaroo", "kingdom", "knocking", "laborer", "larceny", "laurels", "layout", "leadership", "leasing", "legislation", "leopard", "liberation", "licence", "lifeblood", "lifeline", "ligament", "lighting", "likeness", "line-up", "lineage", "liner", "lineup", "liquidation", "listener", "literature", "litigation", "litre", "loathing", "locality", "lodging", "logic", "longevity", "lookout", "lordship", "lustre", "ma'am", "machinery", "madness", "magnificence", "mahogany", "mailing", "mainframe", "maintenance", "majority", "manga", "mango", "manifesto", "mantra", "manufacturer", "maple", "martin", "martyrdom", "mathematician", "matrix", "matron", "mayhem", "mayor", "means", "meantime", "measurement", "mechanics", "mediator", "medics", "melodrama", "memory", "mentality", "metaphysics", "method", "metre", "miner", "mirth", "misconception", "misery", "mishap", "misunderstanding", "mobility", "molasses", "momentum", "monarchy", "monument", "morale", "mortality", "motto", "mouthful", "mouthpiece", "mover", "movie", "mowing", "murderer", "musician", "mutation", "mythology", "narration", "narrator", "nationality", "negligence", "neighborhood", "neighbour", "nervousness", "networking", "nexus", "nightmare", "nobility", "nobody", "noodle", "normalcy", "notification", "nourishment", "novella", "nucleus", "nuisance", "nursery", "nutrition", "nylon", "oasis", "obscenity", "obscurity", "observer", "offense", "onslaught", "operation", "opportunity", "opposition", "oracle", "orchestra", "organisation", "organizer", "orientation", "originality", "ounce", "outage", "outcome", "outdoors", "outfield", "outing", "outpost", "outset", "overseer", "owner", "oxygen", "pairing", "panther", "paradox", "parliament", "parsley", "parson", "passenger", "pasta", "patchwork", "pathos", "patriotism", "pendulum", "penguin", "permission", "persona", "perusal", "pessimism", "peter", "philosopher", "phosphorus", "phrasing", "physique", "piles", "plateau", "playing", "plaza", "plethora", "plurality", "pneumonia", "pointer", "poker", "policeman", "polling", "poster", "posterity", "posting", "postponement", "potassium", "pottery", "poultry", "pounding", "pragmatism", "precedence", "precinct", "preoccupation", "pretense", "priesthood", "prisoner", "privacy", "probation", "proceeding", "proceedings", "processing", "processor", "progression", "projection", "prominence", "propensity", "prophecy", "prorogation", "prospectus", "protein", "prototype", "providence", "provider", "provocation", "proximity", "puberty", "publicist", "publicity", "publisher", "pundit", "putting", "quantity", "quart", "quilting", "quorum", "racism", "radiance", "ralph", "rancher", "ranger", "rapidity", "rapport", "ratification", "rationality", "reaction", "reader", "reassurance", "rebirth", "receptor", "recipe", "recognition", "recourse", "recreation", "rector", "recurrence", "redemption", "redistribution", "redundancy", "refinery", "reformer", "refrigerator", "regularity", "regulator", "reinforcement", "reins", "reinstatement", "relativism", "relaxation", "rendition", "repayment", "repentance", "repertoire", "repository", "republic", "reputation", "resentment", "residency", "resignation", "restaurant", "resurgence", "retailer", "retention", "retirement", "reviewer", "riches", "righteousness", "roadblock", "robber", "rocks", "rubbing", "runoff", "saloon", "salvation", "sarcasm", "saucer", "savior", "scarcity", "scenario", "scenery", "schism", "scholarship", "schoolboy", "schooner", "scissors", "scolding", "scooter", "scouring", "scrimmage", "scrum", "seating", "sediment", "seduction", "seeder", "seizure", "self-confidence", "self-control", "self-respect", "semicolon", "semiconductor", "semifinal", "senator", "sending", "serenity", "seriousness", "servitude", "sesame", "setup", "sewing", "sharpness", "shaving", "shoplifting", "shopping", "siding", "simplicity", "simulation", "sinking", "skate", "sloth", "slugger", "snack", "snail", "snapshot", "snark", "soccer", "solemnity", "solicitation", "solitude", "somewhere", "sophistication", "sorcery", "souvenir", "spaghetti", "specification", "specimen", "specs", "spectacle", "spectre", "speculation", "sperm", "spoiler", "squad", "squid", "staging", "stagnation", "staircase", "stairway", "stamina", "standpoint", "standstill", "stanza", "statement", "stillness", "stimulus", "stocks", "stole", "stoppage", "storey", "storyteller", "stylus", "subcommittee", "subscription", "subsidy", "suburb", "success", "sufferer", "supposition", "suspension", "sweater", "sweepstakes", "swimmer", "syndrome", "synopsis", "syntax", "system", "tablespoon", "taker", "tavern", "technology", "telephony", "template", "tempo", "tendency", "tendon", "terrier", "terror", "terry", "theater", "theology", "therapy", "thicket", "thoroughfare", "threshold", "thriller", "thunderstorm", "ticker", "tiger", "tights", "to-day", "tossing", "touchdown", "tourist", "tourney", "toxicity", "tracing", "tractor", "translation", "transmission", "transmitter", "trauma", "traveler", "treadmill", "trilogy", "trout", "tuning", "twenties", "tycoon", "tyrant", "ultimatum", "underdog", "underwear", "unhappiness", "unification", "university", "uprising", "vaccination", "validity", "vampire", "vanguard", "variation", "vegetation", "verification", "viability", "vicinity", "victory", "viewpoint", "villa", "vindication", "violation", "vista", "vocalist", "vogue", "volcano", "voltage", "vomiting", "vulnerability", "waistcoat", "waitress", "wardrobe", "warmth", "watchdog", "wealth", "weariness", "whereabouts", "whisky", "whiteness", "widget", "width", "windfall", "wiring", "witchcraft", "withholding", "womanhood", "words", "workman", "youngster"}