niki/vendor/github.com/brianvoe/gofakeit/v7/word_phrase.go

163 lines
4.2 KiB
Go

package gofakeit
import (
"strings"
)
// Phrase will return a random phrase
func Phrase() string { return phrase(GlobalFaker) }
// Phrase will return a random phrase
func (f *Faker) Phrase() string { return phrase(f) }
func phrase(f *Faker) string { return getRandValue(f, []string{"sentence", "phrase"}) }
// PhraseNoun will return a random noun phrase
func PhraseNoun() string { return phraseNoun(GlobalFaker) }
// PhraseNoun will return a random noun phrase
func (f *Faker) PhraseNoun() string { return phraseNoun(f) }
func phraseNoun(f *Faker) string {
str := ""
// You may also want to add an adjective to describe the noun
if boolFunc(f) {
str = adjectiveDescriptive(f) + " " + noun(f)
} else {
str = noun(f)
}
// Add determiner from weighted list
prob, _ := weighted(f, []any{1, 2, 3}, []float32{2, 1.5, 1})
if prob == 1 {
str = getArticle(str) + " " + str
} else if prob == 2 {
str = "the " + str
}
return str
}
// PhraseVerb will return a random preposition phrase
func PhraseVerb() string { return phraseVerb(GlobalFaker) }
// PhraseVerb will return a random preposition phrase
func (f *Faker) PhraseVerb() string { return phraseVerb(f) }
func phraseVerb(f *Faker) string {
// Put together a string builder
sb := []string{}
// You may have an adverb phrase
if boolFunc(f) {
sb = append(sb, phraseAdverb(f))
}
// Lets add the primary verb
sb = append(sb, verbAction(f))
// You may have a noun phrase
if boolFunc(f) {
sb = append(sb, phraseNoun(f))
}
// You may have an adverb phrase
if boolFunc(f) {
sb = append(sb, phraseAdverb(f))
// You may also have a preposition phrase
if boolFunc(f) {
sb = append(sb, phrasePreposition(f))
}
// You may also hae an adverb phrase
if boolFunc(f) {
sb = append(sb, phraseAdverb(f))
}
}
return strings.Join(sb, " ")
}
// PhraseAdverb will return a random adverb phrase
func PhraseAdverb() string { return phraseAdverb(GlobalFaker) }
// PhraseAdverb will return a random adverb phrase
func (f *Faker) PhraseAdverb() string { return phraseAdverb(f) }
func phraseAdverb(f *Faker) string {
if boolFunc(f) {
return adverbDegree(f) + " " + adverbManner(f)
}
return adverbManner(f)
}
// PhrasePreposition will return a random preposition phrase
func PhrasePreposition() string { return phrasePreposition(GlobalFaker) }
// PhrasePreposition will return a random preposition phrase
func (f *Faker) PhrasePreposition() string { return phrasePreposition(f) }
func phrasePreposition(f *Faker) string {
return prepositionSimple(f) + " " + phraseNoun(f)
}
func addWordPhraseLookup() {
AddFuncLookup("phrase", Info{
Display: "Phrase",
Category: "word",
Description: "A small group of words standing together",
Example: "time will tell",
Output: "string",
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
return phrase(f), nil
},
})
AddFuncLookup("phrasenoun", Info{
Display: "Noun Phrase",
Category: "word",
Description: "Phrase with a noun as its head, functions within sentence like a noun",
Example: "a tribe",
Output: "string",
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
return phraseNoun(f), nil
},
})
AddFuncLookup("phraseverb", Info{
Display: "Verb Phrase",
Category: "word",
Description: "Phrase that Consists of a verb and its modifiers, expressing an action or state",
Example: "a tribe",
Output: "string",
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
return phraseVerb(f), nil
},
})
AddFuncLookup("phraseadverb", Info{
Display: "Adverb Phrase",
Category: "word",
Description: "Phrase that modifies a verb, adjective, or another adverb, providing additional information.",
Example: "fully gladly",
Output: "string",
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
return phraseAdverb(f), nil
},
})
AddFuncLookup("phrasepreposition", Info{
Display: "Preposition Phrase",
Category: "word",
Description: "Phrase starting with a preposition, showing relation between elements in a sentence.",
Example: "out the black thing",
Output: "string",
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
return phrasePreposition(f), nil
},
})
}