From b4a5efb1f24dfbf9b550805f69edde041fdfaa5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20P=C3=A9rez?= Date: Thu, 17 Oct 2024 09:22:33 +0200 Subject: [PATCH] initial commit --- esfaker.go | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++ go.mod | 3 ++ 2 files changed, 107 insertions(+) create mode 100644 esfaker.go create mode 100644 go.mod diff --git a/esfaker.go b/esfaker.go new file mode 100644 index 0000000..504e979 --- /dev/null +++ b/esfaker.go @@ -0,0 +1,104 @@ +package esfaker + +import ( + "math/rand" + "strings" +) + +const uppercaseAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +const lowercaseAlphabet = "abcdefghijklmnopqrstuvwxyz" +const numbers = "0123456789" +const symbols = "!@#$%^&*()_+{}|:<>?~" + +var maleNames = []string{ + "Pedro", "Juan", "Pepe", "Francisco", "Luis", "Carlos", "Javier", "José", "Antonio", "Manuel", +} +var femaleNames = []string{ + "María", "Ana", "Isabel", "Laura", "Carmen", "Rosa", "Julia", "Elena", "Sara", "Lucía", +} +var lastNames = []string{ + "García", "Fernández", "González", "Rodríguez", "López", "Martínez", "Sánchez", "Pérez", "Gómez", "Martín", +} + +func MaleName() string { + return maleNames[rand.Intn(len(maleNames))] +} + +func FemaleName() string { + return femaleNames[rand.Intn(len(femaleNames))] +} + +func Name() string { + allNames := append(maleNames, femaleNames...) + return allNames[rand.Intn(len(allNames))] +} + +func LastName() string { + return lastNames[rand.Intn(len(lastNames))] +} + +func Email(beforeAt string) string { + return beforeAt + "@" + AllChars(5, 10) + ".local" +} + +func Int(min, max int64) int64 { + return min + rand.Int63n(max-min+1) +} + +func Float(min, max float64) float64 { + return min + rand.Float64()*(max-min) +} + +func Bool() bool { + return rand.Intn(2) == 0 +} + +func Chars(min, max int) string { + var sb strings.Builder + k := len(lowercaseAlphabet) + + for i := 0; i < rand.Intn(max-min+1)+min; i++ { + c := lowercaseAlphabet[rand.Intn(k)] + sb.WriteByte(c) + } + + return sb.String() +} + +func AllChars(min, max int) string { + allChars := uppercaseAlphabet + lowercaseAlphabet + numbers + symbols + var sb strings.Builder + k := len(allChars) + + for i := 0; i < rand.Intn(max-min+1)+min; i++ { + c := allChars[rand.Intn(k)] + sb.WriteByte(c) + } + + return sb.String() +} + +func AllCharsOrEmpty(min, max int) string { + if Bool() { + return "" + } + return AllChars(min, max) +} + +func AllCharsOrNil(min, max int) *string { + if Bool() { + return nil + } + s := AllChars(min, max) + return &s +} + +func NumericString(length int) string { + var sb strings.Builder + + for i := 0; i < length; i++ { + sb.WriteByte(numbers[rand.Intn(len(numbers))]) + } + + return sb.String() +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4cced25 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/zepyrshut/esfaker + +go 1.23.0