| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package gofakeit
- import (
- "math/rand"
- "github.com/brianvoe/gofakeit/data"
- )
- const hashtag = '#'
- const questionmark = '?'
- // Check if in lib
- func dataCheck(dataVal []string) bool {
- var checkOk bool
- if len(dataVal) == 2 {
- _, checkOk = data.Data[dataVal[0]]
- if checkOk {
- _, checkOk = data.Data[dataVal[0]][dataVal[1]]
- }
- }
- return checkOk
- }
- // Check if in lib
- func intDataCheck(dataVal []string) bool {
- if len(dataVal) != 2 {
- return false
- }
- _, checkOk := data.IntData[dataVal[0]]
- if checkOk {
- _, checkOk = data.IntData[dataVal[0]][dataVal[1]]
- }
- return checkOk
- }
- // Get Random Value
- func getRandValue(dataVal []string) string {
- if !dataCheck(dataVal) {
- return ""
- }
- return data.Data[dataVal[0]][dataVal[1]][rand.Intn(len(data.Data[dataVal[0]][dataVal[1]]))]
- }
- // Get Random Integer Value
- func getRandIntValue(dataVal []string) int {
- if !intDataCheck(dataVal) {
- return 0
- }
- return data.IntData[dataVal[0]][dataVal[1]][rand.Intn(len(data.IntData[dataVal[0]][dataVal[1]]))]
- }
- // Replace # with numbers
- func replaceWithNumbers(str string) string {
- if str == "" {
- return str
- }
- bytestr := []byte(str)
- for i := 0; i < len(bytestr); i++ {
- if bytestr[i] == hashtag {
- bytestr[i] = byte(randDigit())
- }
- }
- if bytestr[0] == '0' {
- bytestr[0] = byte(rand.Intn(8)+1) + '0'
- }
- return string(bytestr)
- }
- // Replace ? with ASCII lowercase letters
- func replaceWithLetters(str string) string {
- if str == "" {
- return str
- }
- bytestr := []byte(str)
- for i := 0; i < len(bytestr); i++ {
- if bytestr[i] == questionmark {
- bytestr[i] = byte(randLetter())
- }
- }
- return string(bytestr)
- }
- // Generate random lowercase ASCII letter
- func randLetter() rune {
- return rune(byte(rand.Intn(26)) + 'a')
- }
- // Generate random ASCII digit
- func randDigit() rune {
- return rune(byte(rand.Intn(10)) + '0')
- }
- // Generate random integer between min and max
- func randIntRange(min, max int) int {
- if min == max {
- return min
- }
- return rand.Intn((max+1)-min) + min
- }
- func randFloat32Range(min, max float32) float32 {
- if min == max {
- return min
- }
- return rand.Float32()*(max-min) + min
- }
- func randFloat64Range(min, max float64) float64 {
- if min == max {
- return min
- }
- return rand.Float64()*(max-min) + min
- }
- // Categories will return a map string array of available data categories and sub categories
- func Categories() map[string][]string {
- types := make(map[string][]string)
- for category, subCategoriesMap := range data.Data {
- subCategories := make([]string, 0)
- for subType := range subCategoriesMap {
- subCategories = append(subCategories, subType)
- }
- types[category] = subCategories
- }
- return types
- }
|