forked from ebhomengo/niki
783 lines
22 KiB
Go
783 lines
22 KiB
Go
package gofakeit
|
|
|
|
import (
|
|
"math"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// PersonInfo is a struct of person information
|
|
type PersonInfo struct {
|
|
FirstName string `json:"first_name" xml:"first_name"`
|
|
LastName string `json:"last_name" xml:"last_name"`
|
|
Gender string `json:"gender" xml:"gender"`
|
|
Age int `json:"age" xml:"age"`
|
|
SSN string `json:"ssn" xml:"ssn"`
|
|
Hobby string `json:"hobby" xml:"hobby"`
|
|
Job *JobInfo `json:"job" xml:"job"`
|
|
Address *AddressInfo `json:"address" xml:"address"`
|
|
Contact *ContactInfo `json:"contact" xml:"contact"`
|
|
CreditCard *CreditCardInfo `json:"credit_card" xml:"credit_card"`
|
|
}
|
|
|
|
// Person will generate a struct with person information
|
|
func Person() *PersonInfo { return person(GlobalFaker) }
|
|
|
|
// Person will generate a struct with person information
|
|
func (f *Faker) Person() *PersonInfo { return person(f) }
|
|
|
|
func person(f *Faker) *PersonInfo {
|
|
return &PersonInfo{
|
|
FirstName: firstName(f),
|
|
LastName: lastName(f),
|
|
Gender: gender(f),
|
|
Age: age(f),
|
|
SSN: ssn(f),
|
|
Hobby: hobby(f),
|
|
Job: job(f),
|
|
Address: address(f),
|
|
Contact: contact(f),
|
|
CreditCard: creditCard(f),
|
|
}
|
|
}
|
|
|
|
// Name will generate a random First and Last Name
|
|
func Name() string { return name(GlobalFaker) }
|
|
|
|
// Name will generate a random First and Last Name
|
|
func (f *Faker) Name() string { return name(f) }
|
|
|
|
func name(f *Faker) string {
|
|
return getRandValue(f, []string{"person", "first"}) + " " + getRandValue(f, []string{"person", "last"})
|
|
}
|
|
|
|
// FirstName will generate a random first name
|
|
func FirstName() string { return firstName(GlobalFaker) }
|
|
|
|
// FirstName will generate a random first name
|
|
func (f *Faker) FirstName() string { return firstName(f) }
|
|
|
|
func firstName(f *Faker) string { return getRandValue(f, []string{"person", "first"}) }
|
|
|
|
// MiddleName will generate a random middle name
|
|
func MiddleName() string { return middleName(GlobalFaker) }
|
|
|
|
// MiddleName will generate a random middle name
|
|
func (f *Faker) MiddleName() string { return middleName(f) }
|
|
|
|
func middleName(f *Faker) string { return getRandValue(f, []string{"person", "middle"}) }
|
|
|
|
// LastName will generate a random last name
|
|
func LastName() string { return lastName(GlobalFaker) }
|
|
|
|
// LastName will generate a random last name
|
|
func (f *Faker) LastName() string { return lastName(f) }
|
|
|
|
func lastName(f *Faker) string { return getRandValue(f, []string{"person", "last"}) }
|
|
|
|
// NamePrefix will generate a random name prefix
|
|
func NamePrefix() string { return namePrefix(GlobalFaker) }
|
|
|
|
// NamePrefix will generate a random name prefix
|
|
func (f *Faker) NamePrefix() string { return namePrefix(f) }
|
|
|
|
func namePrefix(f *Faker) string { return getRandValue(f, []string{"person", "prefix"}) }
|
|
|
|
// NameSuffix will generate a random name suffix
|
|
func NameSuffix() string { return nameSuffix(GlobalFaker) }
|
|
|
|
// NameSuffix will generate a random name suffix
|
|
func (f *Faker) NameSuffix() string { return nameSuffix(f) }
|
|
|
|
func nameSuffix(f *Faker) string { return getRandValue(f, []string{"person", "suffix"}) }
|
|
|
|
// Age will generate a random age between 0 and 100
|
|
func Age() int { return age(GlobalFaker) }
|
|
|
|
// Age will generate a random age between 0 and 100
|
|
func (f *Faker) Age() int { return age(f) }
|
|
|
|
func age(f *Faker) int { return randIntRange(f, 0, 100) }
|
|
|
|
// Ethnicity will generate a random ethnicity string
|
|
func Ethnicity() string { return ethnicity(GlobalFaker) }
|
|
|
|
// Ethnicity will generate a random ethnicity string
|
|
func (f *Faker) Ethnicity() string { return ethnicity(f) }
|
|
|
|
func ethnicity(f *Faker) string { return getRandValue(f, []string{"person", "ethnicity"}) }
|
|
|
|
// SSN will generate a random Social Security Number
|
|
func SSN() string { return ssn(GlobalFaker) }
|
|
|
|
// SSN will generate a random Social Security Number
|
|
func (f *Faker) SSN() string { return ssn(f) }
|
|
|
|
func ssn(f *Faker) string { return strconv.Itoa(randIntRange(f, 100000000, 999999999)) }
|
|
|
|
// EIN will generate a random Employer Identification Number
|
|
func EIN() string { return ein(GlobalFaker) }
|
|
|
|
// EIN will generate a random Employer Identification Number
|
|
func (f *Faker) EIN() string { return ein(f) }
|
|
|
|
func ein(f *Faker) string {
|
|
// EIN format: XX-XXXXXXX (2 digits, dash, 7 digits)
|
|
// First two digits have specific valid prefixes
|
|
prefixes := []string{"10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99"}
|
|
prefix := prefixes[f.IntN(len(prefixes))]
|
|
|
|
// Generate 7 random digits
|
|
sevenDigits := ""
|
|
for i := 0; i < 7; i++ {
|
|
sevenDigits += string(rune('0' + f.IntN(10)))
|
|
}
|
|
|
|
return prefix + "-" + sevenDigits
|
|
}
|
|
|
|
// Gender will generate a random gender string
|
|
func Gender() string { return gender(GlobalFaker) }
|
|
|
|
// Gender will generate a random gender string
|
|
func (f *Faker) Gender() string { return gender(f) }
|
|
|
|
func gender(f *Faker) string {
|
|
if boolFunc(f) {
|
|
return "male"
|
|
}
|
|
|
|
return "female"
|
|
}
|
|
|
|
// Hobby will generate a random hobby string
|
|
func Hobby() string { return hobby(GlobalFaker) }
|
|
|
|
// Hobby will generate a random hobby string
|
|
func (f *Faker) Hobby() string { return hobby(f) }
|
|
|
|
func hobby(f *Faker) string { return getRandValue(f, []string{"person", "hobby"}) }
|
|
|
|
// SocialMedia will generate a random social media string
|
|
func SocialMedia() string { return socialMedia(GlobalFaker) }
|
|
|
|
// SocialMedia will generate a random social media string
|
|
func (f *Faker) SocialMedia() string { return socialMedia(f) }
|
|
|
|
func socialMedia(f *Faker) string {
|
|
template := getRandValue(f, []string{"person", "social_media"})
|
|
social, err := generate(f, template)
|
|
if err != nil {
|
|
return template // fallback to raw template if generation fails
|
|
}
|
|
|
|
return social
|
|
}
|
|
|
|
// Bio will generate a random biography using mad libs style templates
|
|
func Bio() string {
|
|
return bio(GlobalFaker)
|
|
}
|
|
|
|
// Bio will generate a random biography using mad libs style templates
|
|
func (f *Faker) Bio() string {
|
|
return bio(f)
|
|
}
|
|
|
|
func bio(f *Faker) string {
|
|
template := getRandValue(f, []string{"person", "bio"})
|
|
|
|
// Use generate function to process the template with all available lookups
|
|
bio, err := generate(f, template)
|
|
if err != nil {
|
|
return template // fallback to raw template if generation fails
|
|
}
|
|
|
|
return bio
|
|
}
|
|
|
|
// ContactInfo struct full of contact info
|
|
type ContactInfo struct {
|
|
Phone string `json:"phone" xml:"phone"`
|
|
Email string `json:"email" xml:"email"`
|
|
}
|
|
|
|
// Contact will generate a struct with information randomly populated contact information
|
|
func Contact() *ContactInfo { return contact(GlobalFaker) }
|
|
|
|
// Contact will generate a struct with information randomly populated contact information
|
|
func (f *Faker) Contact() *ContactInfo { return contact(f) }
|
|
|
|
func contact(f *Faker) *ContactInfo {
|
|
return &ContactInfo{
|
|
Phone: phone(f),
|
|
Email: email(f),
|
|
}
|
|
}
|
|
|
|
// Phone will generate a random phone number string
|
|
func Phone() string { return phone(GlobalFaker) }
|
|
|
|
// Phone will generate a random phone number string
|
|
func (f *Faker) Phone() string { return phone(f) }
|
|
|
|
func phone(f *Faker) string { return replaceWithNumbers(f, "##########") }
|
|
|
|
// PhoneFormatted will generate a random phone number string
|
|
func PhoneFormatted() string { return phoneFormatted(GlobalFaker) }
|
|
|
|
// PhoneFormatted will generate a random phone number string
|
|
func (f *Faker) PhoneFormatted() string { return phoneFormatted(f) }
|
|
|
|
func phoneFormatted(f *Faker) string {
|
|
return replaceWithNumbers(f, getRandValue(f, []string{"person", "phone"}))
|
|
}
|
|
|
|
// Email will generate a random email string
|
|
func Email() string { return email(GlobalFaker) }
|
|
|
|
// Email will generate a random email string
|
|
func (f *Faker) Email() string { return email(f) }
|
|
|
|
func email(f *Faker) string {
|
|
email := getRandValue(f, []string{"person", "first"}) + getRandValue(f, []string{"person", "last"})
|
|
email += "@"
|
|
email += getRandValue(f, []string{"person", "last"}) + "." + getRandValue(f, []string{"internet", "domain_suffix"})
|
|
|
|
return strings.ToLower(email)
|
|
}
|
|
|
|
// Teams takes in an array of people and team names and randomly places the people into teams as evenly as possible
|
|
func Teams(peopleArray []string, teamsArray []string) map[string][]string {
|
|
return teams(GlobalFaker, peopleArray, teamsArray)
|
|
}
|
|
|
|
// Teams takes in an array of people and team names and randomly places the people into teams as evenly as possible
|
|
func (f *Faker) Teams(peopleArray []string, teamsArray []string) map[string][]string {
|
|
return teams(f, peopleArray, teamsArray)
|
|
}
|
|
|
|
func teams(f *Faker, people []string, teams []string) map[string][]string {
|
|
// Shuffle the people if more than 1
|
|
if len(people) > 1 {
|
|
shuffleStrings(f, people)
|
|
}
|
|
|
|
peopleIndex := 0
|
|
teamsOutput := make(map[string][]string)
|
|
numPer := math.Ceil(float64(len(people)) / float64(len(teams)))
|
|
for _, team := range teams {
|
|
teamsOutput[team] = []string{}
|
|
for i := 0.00; i < numPer; i++ {
|
|
if peopleIndex < len(people) {
|
|
teamsOutput[team] = append(teamsOutput[team], people[peopleIndex])
|
|
peopleIndex++
|
|
}
|
|
}
|
|
}
|
|
|
|
return teamsOutput
|
|
}
|
|
|
|
func addPersonLookup() {
|
|
AddFuncLookup("person", Info{
|
|
Display: "Person",
|
|
Category: "person",
|
|
Description: "Personal data, like name and contact details, used for identification and communication",
|
|
Example: `{
|
|
"first_name": "Markus",
|
|
"last_name": "Moen",
|
|
"gender": "male",
|
|
"age": 30,
|
|
"ssn": "275413589",
|
|
"image": "https://picsum.photos/208/500",
|
|
"hobby": "Lacrosse",
|
|
"job": {
|
|
"company": "Intermap Technologies",
|
|
"title": "Developer",
|
|
"descriptor": "Direct",
|
|
"level": "Paradigm"
|
|
},
|
|
"address": {
|
|
"address": "369 North Cornerbury, Miami, North Dakota 24259",
|
|
"street": "369 North Cornerbury",
|
|
"city": "Miami",
|
|
"state": "North Dakota",
|
|
"zip": "24259",
|
|
"country": "Ghana",
|
|
"latitude": -6.662595,
|
|
"longitude": 23.921575
|
|
},
|
|
"contact": {
|
|
"phone": "3023202027",
|
|
"email": "lamarkoelpin@heaney.biz"
|
|
},
|
|
"credit_card": {
|
|
"type": "Maestro",
|
|
"number": "39800889982276",
|
|
"exp": "01/29",
|
|
"cvv": "932"
|
|
}
|
|
}`,
|
|
Output: "map[string]any",
|
|
ContentType: "application/json",
|
|
Aliases: []string{
|
|
"person record",
|
|
"identity profile",
|
|
"user profile",
|
|
"personal info",
|
|
"individual data",
|
|
},
|
|
Keywords: []string{
|
|
"profile", "identity", "individual",
|
|
"user", "account", "record", "contact",
|
|
"name", "details", "attributes", "information",
|
|
"bio", "demographics", "personal", "data",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
|
return person(f), nil
|
|
},
|
|
})
|
|
|
|
// full name
|
|
AddFuncLookup("name", Info{
|
|
Display: "Name",
|
|
Category: "person",
|
|
Description: "The given and family name of an individual",
|
|
Example: "Markus Moen",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"full name",
|
|
"person name",
|
|
"complete name",
|
|
"name string",
|
|
"display name",
|
|
},
|
|
Keywords: []string{
|
|
"fullname", "given", "family",
|
|
"first", "last", "forename", "surname",
|
|
"display", "legal",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return name(f), nil },
|
|
})
|
|
|
|
// name prefix (honorific)
|
|
AddFuncLookup("nameprefix", Info{
|
|
Display: "Name Prefix",
|
|
Category: "person",
|
|
Description: "A title or honorific added before a person's name",
|
|
Example: "Mr.",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"name prefix",
|
|
"honorific",
|
|
"title prefix",
|
|
"courtesy title",
|
|
"pre-nominal",
|
|
},
|
|
Keywords: []string{
|
|
"prefix", "title", "mr", "ms", "mrs",
|
|
"dr", "prof", "sir", "madam", "rev", "fr",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return namePrefix(f), nil },
|
|
})
|
|
|
|
// name suffix (generational/professional)
|
|
AddFuncLookup("namesuffix", Info{
|
|
Display: "Name Suffix",
|
|
Category: "person",
|
|
Description: "A title or designation added after a person's name",
|
|
Example: "Jr.",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"name suffix",
|
|
"post nominal",
|
|
"suffix designation",
|
|
"generational suffix",
|
|
"professional suffix",
|
|
},
|
|
Keywords: []string{
|
|
"suffix", "jr", "sr", "iii", "iv",
|
|
"esq", "phd", "md", "mba", "cpa",
|
|
"designation",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return nameSuffix(f), nil },
|
|
})
|
|
|
|
// first name
|
|
AddFuncLookup("firstname", Info{
|
|
Display: "First Name",
|
|
Category: "person",
|
|
Description: "The name given to a person at birth",
|
|
Example: "Markus",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"first name",
|
|
"given name",
|
|
"forename",
|
|
"personal name",
|
|
"given label",
|
|
},
|
|
Keywords: []string{
|
|
"first", "given", "name",
|
|
"preferred", "callname", "initial",
|
|
"personal",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return firstName(f), nil },
|
|
})
|
|
|
|
// middle name
|
|
AddFuncLookup("middlename", Info{
|
|
Display: "Middle Name",
|
|
Category: "person",
|
|
Description: "Name between a person's first name and last name",
|
|
Example: "Belinda",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"middle name",
|
|
"second name",
|
|
"additional name",
|
|
"secondary name",
|
|
"middle initial label",
|
|
},
|
|
Keywords: []string{
|
|
"middle", "second", "additional", "secondary",
|
|
"name", "initial", "intermediate", "optional",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return middleName(f), nil },
|
|
})
|
|
|
|
// last name
|
|
AddFuncLookup("lastname", Info{
|
|
Display: "Last Name",
|
|
Category: "person",
|
|
Description: "The family name or surname of an individual",
|
|
Example: "Daniel",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"last name",
|
|
"family name",
|
|
"surname",
|
|
"patronymic",
|
|
"family designation",
|
|
},
|
|
Keywords: []string{
|
|
"last", "family", "name",
|
|
"lineage", "heritage", "ancestry", "clan",
|
|
"tribe",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return lastName(f), nil },
|
|
})
|
|
|
|
// gender
|
|
AddFuncLookup("gender", Info{
|
|
Display: "Gender",
|
|
Category: "person",
|
|
Description: "Classification that identifies gender",
|
|
Example: "male",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"gender identity",
|
|
"gender label",
|
|
"sex category",
|
|
"gender marker",
|
|
"presentation",
|
|
},
|
|
Keywords: []string{
|
|
"male", "female", "nonbinary",
|
|
"identity", "label", "category", "sex",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return gender(f), nil },
|
|
})
|
|
|
|
// age
|
|
AddFuncLookup("age", Info{
|
|
Display: "Age",
|
|
Category: "person",
|
|
Description: "The number of years a person has lived",
|
|
Example: "40",
|
|
Output: "int",
|
|
Aliases: []string{
|
|
"age of person", "person age", "age of individual", "years old", "years of age",
|
|
},
|
|
Keywords: []string{
|
|
"years", "old", "birthday", "birthdate", "birth-date",
|
|
"lifespan", "maturity", "elderly", "young", "adult", "teenager", "child",
|
|
"senior", "juvenile", "minor", "majority", "minority", "generation",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return age(f), nil },
|
|
})
|
|
|
|
// ethnicity
|
|
AddFuncLookup("ethnicity", Info{
|
|
Display: "Ethnicity",
|
|
Category: "person",
|
|
Description: "Classification that identifies a person's cultural or ethnic background",
|
|
Example: "German",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"ethnic background",
|
|
"ethnic identity",
|
|
"cultural background",
|
|
"cultural heritage",
|
|
"ethnic origin",
|
|
},
|
|
Keywords: []string{
|
|
"ethnic", "heritage", "ancestry",
|
|
"origin", "identity", "cultural", "nationality",
|
|
"background", "descent", "lineage",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return ethnicity(f), nil },
|
|
})
|
|
|
|
// ssn
|
|
AddFuncLookup("ssn", Info{
|
|
Display: "SSN",
|
|
Category: "person",
|
|
Description: "Unique nine-digit identifier used for government and financial purposes in the United States",
|
|
Example: "296446360",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"social security number",
|
|
"ssn number",
|
|
"us ssn",
|
|
"tax id us",
|
|
"federal id",
|
|
},
|
|
Keywords: []string{
|
|
"social", "security", "number",
|
|
"us", "tax", "irs", "employment",
|
|
"benefits", "identification",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return ssn(f), nil },
|
|
})
|
|
|
|
AddFuncLookup("ein", Info{
|
|
Display: "EIN",
|
|
Category: "person",
|
|
Description: "Nine-digit Employer Identification Number used by businesses for tax purposes",
|
|
Example: "12-3456789",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"employer id",
|
|
"tax id",
|
|
"business tax id",
|
|
"federal tax id",
|
|
"irs number",
|
|
},
|
|
Keywords: []string{
|
|
"employer", "identification", "tax", "business", "federal", "irs", "number", "id",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return ein(f), nil },
|
|
})
|
|
|
|
// hobby
|
|
AddFuncLookup("hobby", Info{
|
|
Display: "Hobby",
|
|
Category: "person",
|
|
Description: "An activity pursued for leisure and pleasure",
|
|
Example: "Swimming",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"pastime",
|
|
"leisure activity",
|
|
"recreational activity",
|
|
"interest",
|
|
"free-time pursuit",
|
|
},
|
|
Keywords: []string{
|
|
"leisure", "recreation",
|
|
"activity", "sport", "craft",
|
|
"game", "collection",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return hobby(f), nil },
|
|
})
|
|
|
|
AddFuncLookup("socialmedia", Info{
|
|
Display: "Social Media",
|
|
Category: "person",
|
|
Description: "Random social media string",
|
|
Example: "https://twitter.com/ImpossibleTrousers",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"social media",
|
|
"social link",
|
|
"social url",
|
|
"social handle",
|
|
"social username",
|
|
"social profile",
|
|
"profile link",
|
|
"profile url",
|
|
"profile handle",
|
|
"account link",
|
|
"account url",
|
|
"account handle",
|
|
"username handle",
|
|
"screen name",
|
|
// platform-intent phrases (useful for fuzzy scoring)
|
|
"twitter link",
|
|
"x link",
|
|
"instagram link",
|
|
"linkedin url",
|
|
"github url",
|
|
"tiktok handle",
|
|
"facebook profile",
|
|
},
|
|
Keywords: []string{
|
|
"social", "media", "profile", "account", "handle", "username",
|
|
"screenname", "link", "url",
|
|
"twitter", "x", "instagram", "linkedin", "github",
|
|
"tiktok", "facebook", "dribbble", "behance",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return socialMedia(f), nil },
|
|
})
|
|
|
|
AddFuncLookup("bio", Info{
|
|
Display: "Biography",
|
|
Category: "person",
|
|
Description: "Random biography",
|
|
Example: "Born in New York, John grew up to become a Software Engineer who codes applications.",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"bio",
|
|
"short bio",
|
|
"mini bio",
|
|
"one line bio",
|
|
"profile bio",
|
|
"user bio",
|
|
"author bio",
|
|
"about",
|
|
"about me",
|
|
"profile summary",
|
|
"personal summary",
|
|
"blurb",
|
|
"elevator pitch",
|
|
},
|
|
Keywords: []string{
|
|
"profile", "summary", "tagline", "intro",
|
|
"overview", "description", "story", "background",
|
|
"career", "job", "role", "hobby", "personal", "person",
|
|
"one-liner", "author", "user",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return f.Bio(), nil },
|
|
})
|
|
|
|
// email
|
|
AddFuncLookup("email", Info{
|
|
Display: "Email",
|
|
Category: "person",
|
|
Description: "Electronic mail address",
|
|
Example: "markusmoen@pagac.net",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"email address",
|
|
"mail address",
|
|
"contact email",
|
|
"user email",
|
|
"electronic mailbox",
|
|
},
|
|
Keywords: []string{
|
|
"address", "mail", "inbox",
|
|
"account", "contact", "sender", "recipient",
|
|
"domain", "username",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return email(f), nil },
|
|
})
|
|
|
|
// phone (raw digits)
|
|
AddFuncLookup("phone", Info{
|
|
Display: "Phone",
|
|
Category: "person",
|
|
Description: "Numerical sequence used to contact individuals via telephone or mobile devices",
|
|
Example: "6136459948",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"phone number",
|
|
"telephone number",
|
|
"mobile number",
|
|
"contact number",
|
|
"voice number",
|
|
},
|
|
Keywords: []string{
|
|
"number", "telephone", "mobile",
|
|
"contact", "dial", "cell", "landline",
|
|
"e164", "voice",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return phone(f), nil },
|
|
})
|
|
|
|
// phone formatted (readable)
|
|
AddFuncLookup("phoneformatted", Info{
|
|
Display: "Phone Formatted",
|
|
Category: "person",
|
|
Description: "Formatted phone number of a person",
|
|
Example: "136-459-9489",
|
|
Output: "string",
|
|
Aliases: []string{
|
|
"formatted phone",
|
|
"pretty phone",
|
|
"display phone",
|
|
"readable phone",
|
|
"formatted telephone",
|
|
},
|
|
Keywords: []string{
|
|
"phone", "formatted", "format", "pattern",
|
|
"dashes", "parentheses", "spaces", "separators",
|
|
"telephone", "contact",
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return phoneFormatted(f), nil },
|
|
})
|
|
|
|
AddFuncLookup("teams", Info{
|
|
Display: "Teams",
|
|
Category: "person",
|
|
Description: "Randomly split people into teams",
|
|
Example: `{
|
|
"Team 1": [
|
|
"Justin",
|
|
"Connor",
|
|
"Jeff"
|
|
],
|
|
"Team 2": [
|
|
"Sharon",
|
|
"Fabian",
|
|
"Billy"
|
|
],
|
|
"Team 3": [
|
|
"Steve",
|
|
"Robert"
|
|
]
|
|
}`,
|
|
Output: "map[string][]string",
|
|
ContentType: "application/json",
|
|
Aliases: []string{
|
|
"people grouping",
|
|
"team assignment",
|
|
"random partition",
|
|
"group allocator",
|
|
"roster builder",
|
|
},
|
|
Keywords: []string{
|
|
"randomly", "person", "into",
|
|
"distribution", "allocation", "roster", "squad",
|
|
},
|
|
Params: []Param{
|
|
{Field: "people", Display: "Strings", Type: "[]string", Description: "Array of people"},
|
|
{Field: "teams", Display: "Strings", Type: "[]string", Description: "Array of teams"},
|
|
},
|
|
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
|
people, err := info.GetStringArray(m, "people")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
teamsArray, err := info.GetStringArray(m, "teams")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return teams(f, people, teamsArray), nil
|
|
},
|
|
})
|
|
}
|