mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-02-11 14:39:09 -06:00
groupware: improve jmap integration tests
* use gofakeit instead of loremipsum, as it can also fake images for attachments * random emails for testing: generate threads, add attachments
This commit is contained in:
0
vendor/github.com/brianvoe/gofakeit/v7/.gitignore
generated
vendored
Normal file
0
vendor/github.com/brianvoe/gofakeit/v7/.gitignore
generated
vendored
Normal file
323
vendor/github.com/brianvoe/gofakeit/v7/BENCHMARKS.md
generated
vendored
Normal file
323
vendor/github.com/brianvoe/gofakeit/v7/BENCHMARKS.md
generated
vendored
Normal file
@@ -0,0 +1,323 @@
|
||||
go test -bench=. -benchmem \
|
||||
goos: darwin \
|
||||
goarch: amd64 \
|
||||
pkg: github.com/brianvoe/gofakeit/v7 \
|
||||
cpu: Apple M1 Max \
|
||||
Table generated with tablesgenerator.com/markdown_tables File->Paste table data
|
||||
|
||||
| Benchmark | Ops | CPU | MEM | MEM alloc |
|
||||
|---------------------------------------|----------|----------------|--------------|------------------|
|
||||
| BenchmarkAddress-10 | 1369538 | 874.7 ns/op | 195 B/op | 5 allocs/op |
|
||||
| BenchmarkStreet-10 | 3438403 | 347.9 ns/op | 25 B/op | 2 allocs/op |
|
||||
| BenchmarkStreetNumber-10 | 8601847 | 138.2 ns/op | 4 B/op | 1 allocs/op |
|
||||
| BenchmarkStreetPrefix-10 | 19814623 | 60.26 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkStreetName-10 | 19633909 | 60.78 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkStreetSuffix-10 | 19717612 | 60.19 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCity-10 | 20219280 | 58.88 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkState-10 | 19526760 | 60.85 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkStateAbr-10 | 19634631 | 60.79 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkZip-10 | 7521580 | 157.7 ns/op | 5 B/op | 1 allocs/op |
|
||||
| BenchmarkCountry-10 | 19451166 | 61.29 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCountryAbr-10 | 19585867 | 60.82 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLatitude-10 | 72309668 | 16.22 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLongitude-10 | 72334910 | 16.23 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLatitudeInRange-10 | 65830375 | 17.77 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLongitudeInRange-10 | 66400602 | 17.77 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPetName-10 | 30391768 | 39.19 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAnimal-10 | 28761544 | 41.22 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAnimalType-10 | 26955640 | 44.13 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFarmAnimal-10 | 22307872 | 53.39 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCat-10 | 24226416 | 49.13 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkDog-10 | 19702195 | 60.53 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBird-10 | 17095884 | 70.22 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAppName-10 | 3805696 | 314.4 ns/op | 25 B/op | 1 allocs/op |
|
||||
| BenchmarkAppVersion-10 | 10250247 | 116.4 ns/op | 7 B/op | 1 allocs/op |
|
||||
| BenchmarkAppAuthor-10 | 11592895 | 101.2 ns/op | 8 B/op | 0 allocs/op |
|
||||
| BenchmarkUsername-10 | 8975020 | 132.9 ns/op | 16 B/op | 2 allocs/op |
|
||||
| BenchmarkPassword-10 | 322147 | 3647 ns/op | 1656 B/op | 60 allocs/op |
|
||||
| BenchmarkBeerName-10 | 27986706 | 42.27 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBeerStyle-10 | 19460616 | 60.99 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBeerHop-10 | 26915132 | 44.35 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBeerYeast-10 | 24840991 | 47.98 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBeerMalt-10 | 20806075 | 57.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBeerIbu-10 | 41349307 | 28.99 ns/op | 8 B/op | 1 allocs/op |
|
||||
| BenchmarkBeerAlcohol-10 | 6054163 | 197.8 ns/op | 28 B/op | 2 allocs/op |
|
||||
| BenchmarkBeerBlg-10 | 5825622 | 205.6 ns/op | 37 B/op | 2 allocs/op |
|
||||
| BenchmarkBook-10 | 6927696 | 171.9 ns/op | 48 B/op | 1 allocs/op |
|
||||
| BenchmarkBookTitle-10 | 31594431 | 37.36 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBookAuthor-10 | 29969000 | 39.91 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBookGenre-10 | 24269676 | 48.77 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCar-10 | 3795943 | 316.3 ns/op | 96 B/op | 1 allocs/op |
|
||||
| BenchmarkCarType-10 | 26309082 | 43.81 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCarFuelType-10 | 26414821 | 45.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCarTransmissionType-10 | 24309171 | 48.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCarMaker-10 | 23505099 | 51.01 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCarModel-10 | 19055469 | 62.82 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCelebrityActor-10 | 19915483 | 57.84 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCelebrityBusiness-10 | 20186090 | 67.55 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCelebritySport-10 | 14223360 | 84.47 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkColor-10 | 21535978 | 54.16 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNiceColors-10 | 71414755 | 16.16 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSafeColor-10 | 24683570 | 46.53 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHexColor-10 | 4815675 | 250.3 ns/op | 24 B/op | 3 allocs/op |
|
||||
| BenchmarkRGBColor-10 | 19453399 | 61.67 ns/op | 24 B/op | 1 allocs/op |
|
||||
| BenchmarkCompany-10 | 25604892 | 46.66 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCompanySuffix-10 | 24647574 | 48.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBlurb-10 | 20634126 | 58.88 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBuzzWord-10 | 23034157 | 51.84 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBS-10 | 21803314 | 55.08 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkJob-10 | 4121804 | 292.0 ns/op | 64 B/op | 1 allocs/op |
|
||||
| BenchmarkJobTitle-10 | 24344308 | 47.51 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkJobDescriptor-10 | 24049240 | 50.12 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkJobLevel-10 | 19349389 | 62.45 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSlogan-10 | 4499653 | 263.1 ns/op | 41 B/op | 1 allocs/op |
|
||||
| BenchmarkCSVLookup100-10 | 1184 | 1014597 ns/op | 713620 B/op | 9923 allocs/op |
|
||||
| BenchmarkEmoji-10 | 24200866 | 49.72 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkEmojiDescription-10 | 22978600 | 52.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkEmojiCategory-10 | 21228057 | 56.57 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkEmojiAlias-10 | 17616240 | 68.45 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkEmojiTag-10 | 19253190 | 62.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkError-10 | 1637725 | 736.5 ns/op | 288 B/op | 8 allocs/op |
|
||||
| BenchmarkErrorObject-10 | 6755540 | 177.7 ns/op | 32 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorDatabase-10 | 5794706 | 200.2 ns/op | 63 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorGRPC-10 | 6063802 | 196.8 ns/op | 64 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorHTTP-10 | 3956130 | 302.2 ns/op | 158 B/op | 4 allocs/op |
|
||||
| BenchmarkErrorHTTPClient-10 | 6025258 | 196.4 ns/op | 52 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorHTTPServer-10 | 5969395 | 202.1 ns/op | 59 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorRuntime-10 | 4786108 | 248.3 ns/op | 150 B/op | 3 allocs/op |
|
||||
| BenchmarkErrorValidation-10 | 1811821 | 667.8 ns/op | 277 B/op | 7 allocs/op |
|
||||
| BenchmarkFileMimeType-10 | 26273320 | 45.47 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFileExtension-10 | 22216770 | 53.94 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCusip-10 | 6778542 | 176.4 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkIsin-10 | 1844566 | 652.1 ns/op | 525 B/op | 7 allocs/op |
|
||||
| BenchmarkFruit-10 | 20381516 | 58.81 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVegetable-10 | 19638996 | 61.11 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBreakfast-10 | 9425649 | 127.2 ns/op | 32 B/op | 1 allocs/op |
|
||||
| BenchmarkLunch-10 | 8996594 | 133.6 ns/op | 34 B/op | 1 allocs/op |
|
||||
| BenchmarkDinner-10 | 9427389 | 126.6 ns/op | 36 B/op | 1 allocs/op |
|
||||
| BenchmarkDrink-10 | 8552294 | 140.4 ns/op | 7 B/op | 2 allocs/op |
|
||||
| BenchmarkSnack-10 | 7678719 | 156.7 ns/op | 32 B/op | 1 allocs/op |
|
||||
| BenchmarkDessert-10 | 8907098 | 134.0 ns/op | 31 B/op | 2 allocs/op |
|
||||
| BenchmarkGamertag-10 | 2474312 | 483.9 ns/op | 83 B/op | 5 allocs/op |
|
||||
| BenchmarkDice-10 | 47727080 | 25.22 ns/op | 8 B/op | 1 allocs/op |
|
||||
| BenchmarkGenerate/package-10 | 423741 | 2822 ns/op | 1187 B/op | 29 allocs/op |
|
||||
| BenchmarkGenerate/Complex-10 | 138112 | 8653 ns/op | 4553 B/op | 80 allocs/op |
|
||||
| BenchmarkFixedWidthLookup100-10 | 2072 | 583512 ns/op | 489975 B/op | 8701 allocs/op |
|
||||
| BenchmarkRegex-10 | 633699 | 1914 ns/op | 1632 B/op | 27 allocs/op |
|
||||
| BenchmarkRegexEmail-10 | 205447 | 5893 ns/op | 4084 B/op | 90 allocs/op |
|
||||
| BenchmarkMap-10 | 337576 | 3596 ns/op | 1111 B/op | 16 allocs/op |
|
||||
| BenchmarkHackerPhrase-10 | 166683 | 7209 ns/op | 3107 B/op | 50 allocs/op |
|
||||
| BenchmarkHackerAbbreviation-10 | 25295019 | 47.33 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHackerAdjective-10 | 24022460 | 49.76 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHackerNoun-10 | 22496308 | 53.31 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHackerVerb-10 | 18546052 | 64.53 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHackeringVerb-10 | 20298242 | 59.05 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkReplaceWithNumbers-10 | 1402717 | 852.8 ns/op | 296 B/op | 10 allocs/op |
|
||||
| BenchmarkHipsterWord-10 | 25151432 | 47.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHipsterSentence-10 | 1314279 | 907.8 ns/op | 288 B/op | 3 allocs/op |
|
||||
| BenchmarkHipsterParagraph-10 | 67437 | 17682 ns/op | 10521 B/op | 48 allocs/op |
|
||||
| BenchmarkInputName-10 | 20759898 | 57.98 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSvg-10 | 225738 | 5181 ns/op | 8876 B/op | 52 allocs/op |
|
||||
| BenchmarkImageURL-10 | 15524359 | 77.15 ns/op | 38 B/op | 3 allocs/op |
|
||||
| BenchmarkImage-10 | 63 | 18773091 ns/op | 2457691 B/op | 307202 allocs/op |
|
||||
| BenchmarkImageJpeg-10 | 39 | 29498291 ns/op | 2982478 B/op | 307217 allocs/op |
|
||||
| BenchmarkImagePng-10 | 16 | 68552771 ns/op | 5899010 B/op | 307270 allocs/op |
|
||||
| BenchmarkDomainName-10 | 3001479 | 402.2 ns/op | 95 B/op | 5 allocs/op |
|
||||
| BenchmarkDomainSuffix-10 | 21476332 | 56.03 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkURL-10 | 1289262 | 934.6 ns/op | 277 B/op | 10 allocs/op |
|
||||
| BenchmarkHTTPMethod-10 | 19895946 | 60.56 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkIPv4Address-10 | 6088518 | 196.5 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkIPv6Address-10 | 2580320 | 462.0 ns/op | 111 B/op | 8 allocs/op |
|
||||
| BenchmarkMacAddress-10 | 3281300 | 364.7 ns/op | 24 B/op | 1 allocs/op |
|
||||
| BenchmarkHTTPStatusCode-10 | 16597051 | 72.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHTTPStatusCodeSimple-10 | 17250238 | 69.52 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLogLevel-10 | 20608036 | 58.20 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUserAgent-10 | 1946059 | 615.5 ns/op | 298 B/op | 5 allocs/op |
|
||||
| BenchmarkChromeUserAgent-10 | 2619324 | 458.2 ns/op | 184 B/op | 5 allocs/op |
|
||||
| BenchmarkFirefoxUserAgent-10 | 1601706 | 753.8 ns/op | 362 B/op | 6 allocs/op |
|
||||
| BenchmarkSafariUserAgent-10 | 1569805 | 764.4 ns/op | 551 B/op | 7 allocs/op |
|
||||
| BenchmarkOperaUserAgent-10 | 2378972 | 504.7 ns/op | 212 B/op | 5 allocs/op |
|
||||
| BenchmarkJSONLookup100-10 | 928 | 1276230 ns/op | 813725 B/op | 12134 allocs/op |
|
||||
| BenchmarkLanguage-10 | 23873984 | 50.34 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLanguageAbbreviation-10 | 25025524 | 47.93 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLanguageBCP-10 | 21895112 | 54.74 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkProgrammingLanguage-10 | 21169636 | 56.70 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLoremIpsumWord-10 | 23980356 | 49.92 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLoremIpsumSentence-10 | 1344384 | 894.8 ns/op | 219 B/op | 2 allocs/op |
|
||||
| BenchmarkLoremIpsumParagraph-10 | 66643 | 17916 ns/op | 8483 B/op | 40 allocs/op |
|
||||
| BenchmarkMinecraftOre-10 | 15077451 | 79.85 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftWood-10 | 14422303 | 83.44 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftArmorTier-10 | 15262417 | 78.70 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftArmorPart-10 | 15340200 | 78.11 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftWeapon-10 | 15107792 | 79.78 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftTool-10 | 14428170 | 83.15 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftDye-10 | 14657188 | 81.95 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftFood-10 | 14860236 | 81.01 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftAnimal-10 | 15281302 | 78.35 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftVillagerJob-10 | 14586627 | 82.14 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftVillagerStation-10 | 14678592 | 81.82 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftVillagerLevel-10 | 14314164 | 83.76 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftMobPassive-10 | 15132750 | 79.32 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftMobNeutral-10 | 13802880 | 87.23 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftMobHostile-10 | 13141233 | 91.06 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftMobBoss-10 | 15245322 | 78.79 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftBiome-10 | 14943789 | 79.86 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinecraftWeather-10 | 12681386 | 94.55 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkBool-10 | 73596490 | 16.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUUID-10 | 4128735 | 288.7 ns/op | 48 B/op | 1 allocs/op |
|
||||
| BenchmarkShuffleAnySlice-10 | 3149857 | 380.0 ns/op | 24 B/op | 1 allocs/op |
|
||||
| BenchmarkFlipACoin-10 | 74457853 | 16.17 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMovie-10 | 9234234 | 129.3 ns/op | 32 B/op | 1 allocs/op |
|
||||
| BenchmarkMovieName-10 | 25314163 | 47.82 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMovieGenre-10 | 24570799 | 48.81 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNumber-10 | 74087221 | 16.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUint8-10 | 73790145 | 16.35 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUint16-10 | 74334474 | 16.27 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUint32-10 | 71804154 | 16.72 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUint64-10 | 71385904 | 16.64 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkUintRange-10 | 73982353 | 16.13 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkInt8-10 | 73927286 | 16.14 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkInt16-10 | 74022668 | 16.19 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkInt32-10 | 72009002 | 16.64 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkInt64-10 | 72375081 | 16.59 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkIntRange-10 | 74396306 | 16.20 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFloat32-10 | 73950822 | 16.20 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFloat32Range-10 | 73622833 | 16.18 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFloat64-10 | 73076970 | 16.31 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFloat64Range-10 | 73385329 | 16.33 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkShuffleInts-10 | 9151563 | 131.8 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkRandomInt-10 | 72188592 | 16.63 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkRandomUint-10 | 72293332 | 16.64 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHexUint-10 | 14888452 | 80.93 ns/op | 16 B/op | 2 allocs/op |
|
||||
| BenchmarkCurrency-10 | 14366668 | 83.15 ns/op | 32 B/op | 1 allocs/op |
|
||||
| BenchmarkCurrencyShort-10 | 24445954 | 48.68 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCurrencyLong-10 | 23560556 | 50.65 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPrice-10 | 73693664 | 16.33 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCreditCard-10 | 1000000 | 1153 ns/op | 264 B/op | 15 allocs/op |
|
||||
| BenchmarkCreditCardType-10 | 32410167 | 36.93 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCreditCardNumber-10 | 1511084 | 799.1 ns/op | 183 B/op | 10 allocs/op |
|
||||
| BenchmarkCreditCardExp-10 | 11014600 | 108.5 ns/op | 5 B/op | 1 allocs/op |
|
||||
| BenchmarkCreditCardCvv-10 | 20325733 | 59.31 ns/op | 3 B/op | 1 allocs/op |
|
||||
| BenchmarkAchRouting-10 | 7338657 | 164.0 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkAchAccount-10 | 5646235 | 212.0 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkBitcoinAddress-10 | 517399 | 2306 ns/op | 715 B/op | 37 allocs/op |
|
||||
| BenchmarkBitcoinPrivateKey-10 | 1276884 | 943.2 ns/op | 184 B/op | 5 allocs/op |
|
||||
| BenchmarkName-10 | 7771977 | 152.6 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkFirstName-10 | 23523357 | 50.98 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMiddleName-10 | 17589612 | 68.17 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLastName-10 | 20825980 | 57.63 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNamePrefix-10 | 25542308 | 46.65 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNameSuffix-10 | 21972974 | 54.56 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSSN-10 | 31829850 | 37.71 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkGender-10 | 73621140 | 16.25 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHobby-10 | 17347129 | 69.06 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPerson-10 | 317911 | 3693 ns/op | 837 B/op | 33 allocs/op |
|
||||
| BenchmarkContact-10 | 1843221 | 650.8 ns/op | 136 B/op | 6 allocs/op |
|
||||
| BenchmarkPhone-10 | 6786794 | 176.2 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkPhoneFormatted-10 | 4674930 | 256.2 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkEmail-10 | 2794358 | 431.1 ns/op | 88 B/op | 4 allocs/op |
|
||||
| BenchmarkTeams-10 | 1576238 | 763.8 ns/op | 672 B/op | 10 allocs/op |
|
||||
| BenchmarkProduct-10 | 206918 | 5813 ns/op | 1069 B/op | 31 allocs/op |
|
||||
| BenchmarkProductName-10 | 2313364 | 517.4 ns/op | 103 B/op | 5 allocs/op |
|
||||
| BenchmarkProductDescription-10 | 348346 | 3434 ns/op | 549 B/op | 8 allocs/op |
|
||||
| BenchmarkProductCategory-10 | 25139860 | 47.73 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkProductFeature-10 | 21264922 | 56.46 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkProductMaterial-10 | 18142828 | 66.24 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkProductUPC-10 | 1399148 | 859.1 ns/op | 96 B/op | 11 allocs/op |
|
||||
| BenchmarkSchool-10 | 4161710 | 287.6 ns/op | 34 B/op | 1 allocs/op |
|
||||
| BenchmarkLetter-10 | 73457020 | 16.29 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkLetterN-10 | 5060271 | 238.8 ns/op | 64 B/op | 2 allocs/op |
|
||||
| BenchmarkVowel-10 | 58685206 | 20.87 ns/op | 4 B/op | 1 allocs/op |
|
||||
| BenchmarkDigit-10 | 73944177 | 16.20 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkDigitN-10 | 5051070 | 236.6 ns/op | 64 B/op | 2 allocs/op |
|
||||
| BenchmarkNumerify-10 | 6794545 | 176.4 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkLexify-10 | 11113212 | 108.3 ns/op | 8 B/op | 1 allocs/op |
|
||||
| BenchmarkShuffleStrings-10 | 9924429 | 121.0 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkRandomString-10 | 73420688 | 16.34 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTemplate-10 | 2488 | 477349 ns/op | 280877 B/op | 4611 allocs/op |
|
||||
| BenchmarkDate-10 | 10292476 | 116.2 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPastDate-10 | 18285830 | 65.48 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkFutureDate-10 | 18399240 | 65.13 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkDateRange-10 | 8406979 | 142.7 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMonth-10 | 74105902 | 16.26 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMonthString-10 | 73647870 | 16.26 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkWeekDay-10 | 73990911 | 16.24 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkDay-10 | 73435291 | 16.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkYear-10 | 73950066 | 16.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkHour-10 | 74219916 | 16.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkMinute-10 | 74349634 | 16.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSecond-10 | 73787313 | 16.29 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNanoSecond-10 | 74299380 | 16.15 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTimeZone-10 | 19105237 | 62.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTimeZoneFull-10 | 16170054 | 74.27 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTimeZoneAbv-10 | 20725029 | 58.23 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTimeZoneOffset-10 | 14597666 | 81.13 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkTimeZoneRegion-10 | 15733551 | 76.25 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkWeighted-10 | 28507484 | 40.42 ns/op | 16 B/op | 1 allocs/op |
|
||||
| BenchmarkAdjective-10 | 6726474 | 178.3 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveDescriptive-10 | 16486224 | 73.39 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveQuantitative-10 | 15290762 | 78.51 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveProper-10 | 16535046 | 72.42 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveDemonstrative-10 | 16448917 | 73.41 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectivePossessive-10 | 15715839 | 73.22 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveInterrogative-10 | 15543478 | 77.43 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdjectiveIndefinite-10 | 16306894 | 73.50 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverb-10 | 7139924 | 168.7 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbManner-10 | 17139112 | 70.37 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbDegree-10 | 16213138 | 73.70 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbPlace-10 | 17268267 | 69.67 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbTimeDefinite-10 | 16273309 | 73.70 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbTimeIndefinite-10 | 15822297 | 74.26 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbFrequencyDefinite-10 | 16344181 | 73.30 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkAdverbFrequencyIndefinite-10 | 16118569 | 74.27 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkComment-10 | 1000000 | 1146 ns/op | 258 B/op | 6 allocs/op |
|
||||
| BenchmarkConnective-10 | 7132710 | 168.3 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveTime-10 | 15339457 | 78.08 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveComparative-10 | 16188842 | 74.04 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveComplaint-10 | 14127903 | 85.00 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveListing-10 | 16073437 | 74.65 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveCasual-10 | 13771904 | 87.06 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkConnectiveExamplify-10 | 15763296 | 76.03 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkWord-10 | 8047610 | 148.5 ns/op | 3 B/op | 0 allocs/op |
|
||||
| BenchmarkSentenceSimple-10 | 682924 | 1707 ns/op | 590 B/op | 11 allocs/op |
|
||||
| BenchmarkInterjection-10 | 16295702 | 73.50 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNoun-10 | 6711976 | 179.3 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounCommon-10 | 17117466 | 69.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounConcrete-10 | 17144979 | 69.81 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounAbstract-10 | 16839790 | 71.16 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounCollectivePeople-10 | 16360652 | 73.24 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounCollectiveAnimal-10 | 16453287 | 72.79 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounCollectiveThing-10 | 16397232 | 72.97 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounCountable-10 | 17171895 | 69.78 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounUncountable-10 | 17193412 | 69.75 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkNounProper-10 | 10644372 | 112.0 ns/op | 7 B/op | 0 allocs/op |
|
||||
| BenchmarkNounDeterminer-10 | 17003730 | 70.44 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPhrase-10 | 23481584 | 51.12 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPhraseNoun-10 | 2961691 | 405.1 ns/op | 104 B/op | 2 allocs/op |
|
||||
| BenchmarkPhraseVerb-10 | 1422132 | 845.1 ns/op | 232 B/op | 6 allocs/op |
|
||||
| BenchmarkPhraseAdverb-10 | 7617193 | 153.3 ns/op | 9 B/op | 0 allocs/op |
|
||||
| BenchmarkPhrasePreposition-10 | 2336155 | 513.3 ns/op | 123 B/op | 3 allocs/op |
|
||||
| BenchmarkPreposition-10 | 9244665 | 129.9 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPrepositionSimple-10 | 16397623 | 73.11 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPrepositionDouble-10 | 16107751 | 74.19 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPrepositionCompound-10 | 16364900 | 73.10 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronoun-10 | 6436707 | 186.4 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounPersonal-10 | 16997427 | 70.53 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounObject-10 | 15303380 | 78.27 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounPossessive-10 | 15323908 | 78.10 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounReflective-10 | 15258552 | 78.45 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounIndefinite-10 | 16053780 | 74.69 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounDemonstrative-10 | 16476726 | 72.73 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounInterrogative-10 | 15526576 | 77.15 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkPronounRelative-10 | 14159284 | 84.64 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSentence-10 | 721934 | 1642 ns/op | 219 B/op | 3 allocs/op |
|
||||
| BenchmarkParagraph-10 | 39356 | 30481 ns/op | 6687 B/op | 53 allocs/op |
|
||||
| BenchmarkQuestion-10 | 1757269 | 683.1 ns/op | 243 B/op | 3 allocs/op |
|
||||
| BenchmarkQuote-10 | 1522988 | 787.2 ns/op | 261 B/op | 3 allocs/op |
|
||||
| BenchmarkVerb-10 | 8924802 | 127.6 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVerbAction-10 | 17150564 | 69.83 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVerbTransitive-10 | 17328488 | 69.21 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVerbIntransitive-10 | 16427985 | 72.98 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVerbLinking-10 | 17754280 | 67.52 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkVerbHelping-10 | 17118238 | 70.31 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkXMLLookup100-10 | 937 | 1279022 ns/op | 862536 B/op | 11370 allocs/op |
|
||||
46
vendor/github.com/brianvoe/gofakeit/v7/CODE_OF_CONDUCT.md
generated
vendored
Normal file
46
vendor/github.com/brianvoe/gofakeit/v7/CODE_OF_CONDUCT.md
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at brian@webiswhatido.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
1
vendor/github.com/brianvoe/gofakeit/v7/CONTRIBUTING.md
generated
vendored
Normal file
1
vendor/github.com/brianvoe/gofakeit/v7/CONTRIBUTING.md
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
# Make a pull request and submit it and ill take a look at it. Thanks!
|
||||
20
vendor/github.com/brianvoe/gofakeit/v7/LICENSE.txt
generated
vendored
Normal file
20
vendor/github.com/brianvoe/gofakeit/v7/LICENSE.txt
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) [year] [fullname]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
886
vendor/github.com/brianvoe/gofakeit/v7/README.md
generated
vendored
Normal file
886
vendor/github.com/brianvoe/gofakeit/v7/README.md
generated
vendored
Normal file
@@ -0,0 +1,886 @@
|
||||

|
||||
|
||||
# Gofakeit [](https://goreportcard.com/report/github.com/brianvoe/gofakeit)  [](https://godoc.org/github.com/brianvoe/gofakeit/v7) [](https://raw.githubusercontent.com/brianvoe/gofakeit/master/LICENSE.txt)
|
||||
|
||||
Random data generator written in go
|
||||
|
||||
## Support
|
||||
|
||||
[](https://ko-fi.com/G2G0R5EJT) <a href="https://www.buymeacoffee.com/brianvoe" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>
|
||||
|
||||
## Merch
|
||||
|
||||
[](https://gofakeit-buy-shop.fourthwall.com)
|
||||
|
||||
## Features
|
||||
|
||||
- [310+ Functions!!!](#functions)
|
||||
- [Random Sources](#random-sources)
|
||||
- [Global Rand](#global-rand-set)
|
||||
- [Struct Generator](#struct)
|
||||
- [Custom Functions](#custom-functions)
|
||||
- [Templates](#templates)
|
||||
- [Http Server](https://github.com/brianvoe/gofakeit/tree/master/cmd/gofakeitserver)
|
||||
- [Command Line Tool](https://github.com/brianvoe/gofakeit/tree/master/cmd/gofakeit)
|
||||
- Zero dependencies
|
||||
- [Benchmarks](https://github.com/brianvoe/gofakeit/blob/master/BENCHMARKS.md)
|
||||
- [Issue](https://github.com/brianvoe/gofakeit/issues)
|
||||
|
||||
## Contributors
|
||||
|
||||
Thank you to all our Gofakeit contributors!
|
||||
|
||||
<a href="https://github.com/brianvoe/gofakeit/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=brianvoe/gofakeit" />
|
||||
</a>
|
||||
|
||||
## Installation
|
||||
|
||||
```go
|
||||
go get github.com/brianvoe/gofakeit/v7
|
||||
```
|
||||
|
||||
## Simple Usage
|
||||
|
||||
```go
|
||||
import "github.com/brianvoe/gofakeit/v7"
|
||||
|
||||
gofakeit.Name() // Markus Moen
|
||||
gofakeit.Email() // alaynawuckert@kozey.biz
|
||||
gofakeit.Phone() // (570)245-7485
|
||||
gofakeit.BS() // front-end
|
||||
gofakeit.BeerName() // Duvel
|
||||
gofakeit.Color() // MediumOrchid
|
||||
gofakeit.Company() // Moen, Pagac and Wuckert
|
||||
gofakeit.CreditCardNumber(nil) // 4287271570245748
|
||||
gofakeit.HackerPhrase() // Connecting the array won't do anything, we need to generate the haptic COM driver!
|
||||
gofakeit.JobTitle() // Director
|
||||
gofakeit.CurrencyShort() // USD
|
||||
```
|
||||
|
||||
[See full list of functions](#functions)
|
||||
|
||||
## Seed
|
||||
|
||||
If you are using the default global usage and dont care about seeding no need to set anything.
|
||||
Gofakeit will seed it with a cryptographically secure number.
|
||||
|
||||
If you need a reproducible outcome you can set it via the Seed function call. Every example in
|
||||
this repo sets it for testing purposes.
|
||||
|
||||
```go
|
||||
import "github.com/brianvoe/gofakeit/v7"
|
||||
|
||||
gofakeit.Seed(0) // If 0 will use crypto/rand to generate a number
|
||||
|
||||
// or
|
||||
|
||||
gofakeit.Seed(8675309) // Set it to whatever number you want
|
||||
```
|
||||
|
||||
## Random Sources
|
||||
|
||||
Gofakeit has a few rand sources, by default it uses math/rand/v2 PCG which is a pseudo random number generator and is thread locked.
|
||||
|
||||
If you want to see other potential sources you can see the sub package [Source](https://github.com/brianvoe/gofakeit/tree/master/source) for more information.
|
||||
|
||||
```go
|
||||
import (
|
||||
"github.com/brianvoe/gofakeit/v7"
|
||||
"github.com/brianvoe/gofakeit/v7/source"
|
||||
"math/rand/v2"
|
||||
)
|
||||
|
||||
// Uses math/rand/v2(PCG Pseudo) with mutex locking
|
||||
faker := gofakeit.New(0)
|
||||
|
||||
// NewFaker takes in a source and whether or not it should be thread safe
|
||||
faker := gofakeit.NewFaker(src rand.Source, lock bool)
|
||||
|
||||
// PCG Pseudo
|
||||
faker := gofakeit.NewFaker(rand.NewPCG(11, 11), true)
|
||||
|
||||
// ChaCha8
|
||||
faker := gofakeit.NewFaker(rand.NewChaCha8([32]byte{0, 1, 2, 3, 4, 5}), true)
|
||||
|
||||
|
||||
// Additional from Gofakeit sub package source
|
||||
|
||||
// JSF(Jenkins Small Fast)
|
||||
faker := gofakeit.NewFaker(source.NewJSF(11), true)
|
||||
|
||||
// SFC(Simple Fast Counter)
|
||||
faker := gofakeit.NewFaker(source.NewSFC(11), true)
|
||||
|
||||
// Crypto - Uses crypto/rand
|
||||
faker := gofakeit.NewFaker(source.NewCrypto(), true)
|
||||
|
||||
// Dumb - simple incrementing number
|
||||
faker := gofakeit.NewFaker(source.NewDumb(11), true)
|
||||
```
|
||||
|
||||
## Global Rand Set
|
||||
|
||||
If you would like to use the simple function calls but need to use something like
|
||||
crypto/rand you can override the default global with the random source that you want.
|
||||
|
||||
```go
|
||||
import "github.com/brianvoe/gofakeit/v7"
|
||||
|
||||
gofakeit.GlobalFaker = gofakeit.New(0)
|
||||
```
|
||||
|
||||
## Struct
|
||||
|
||||
Gofakeit can generate random data for struct fields. For the most part it covers all the basic type
|
||||
as well as some non-basic like time.Time.
|
||||
|
||||
Struct fields can also use tags to more specifically generate data for that field type.
|
||||
|
||||
```go
|
||||
import "github.com/brianvoe/gofakeit/v7"
|
||||
|
||||
// Create structs with random injected data
|
||||
type Foo struct {
|
||||
Str string
|
||||
Int int
|
||||
Pointer *int
|
||||
Name string `fake:"{firstname}"` // Any available function all lowercase
|
||||
Sentence string `fake:"{sentence:3}"` // Can call with parameters
|
||||
RandStr string `fake:"{randomstring:[hello,world]}"`
|
||||
Number string `fake:"{number:1,10}"` // Comma separated for multiple values
|
||||
Regex string `fake:"{regex:[abcdef]{5}}"` // Generate string from regex
|
||||
Map map[string]int `fakesize:"2"`
|
||||
Array []string `fakesize:"2"`
|
||||
ArrayRange []string `fakesize:"2,6"`
|
||||
Bar Bar
|
||||
Skip *string `fake:"skip"` // Set to "skip" to not generate data for
|
||||
SkipAlt *string `fake:"-"` // Set to "-" to not generate data for
|
||||
Created time.Time // Can take in a fake tag as well as a format tag
|
||||
CreatedFormat time.Time `fake:"{year}-{month}-{day}" format:"2006-01-02"`
|
||||
}
|
||||
|
||||
type Bar struct {
|
||||
Name string
|
||||
Number int
|
||||
Float float32
|
||||
}
|
||||
|
||||
// Pass your struct as a pointer
|
||||
var f Foo
|
||||
err := gofakeit.Struct(&f)
|
||||
|
||||
fmt.Println(f.Str) // hrukpttuezptneuvunh
|
||||
fmt.Println(f.Int) // -7825289004089916589
|
||||
fmt.Println(*f.Pointer) // -343806609094473732
|
||||
fmt.Println(f.Name) // fred
|
||||
fmt.Println(f.Sentence) // Record river mind.
|
||||
fmt.Println(f.RandStr) // world
|
||||
fmt.Println(f.Number) // 4
|
||||
fmt.Println(f.Regex) // cbdfc
|
||||
fmt.Println(f.Map) // map[PxLIo:52 lxwnqhqc:846]
|
||||
fmt.Println(f.Array) // cbdfc
|
||||
fmt.Printf("%+v", f.Bar) // {Name:QFpZ Number:-2882647639396178786 Float:1.7636692e+37}
|
||||
fmt.Println(f.Skip) // <nil>
|
||||
fmt.Println(f.Created.String()) // 1908-12-07 04:14:25.685339029 +0000 UTC
|
||||
|
||||
// Supported formats
|
||||
// int, int8, int16, int32, int64,
|
||||
// uint, uint8, uint16, uint32, uint64,
|
||||
// float32, float64,
|
||||
// bool, string,
|
||||
// array, pointers, map
|
||||
// time.Time // If setting time you can also set a format tag
|
||||
// Nested Struct Fields and Embedded Fields
|
||||
```
|
||||
|
||||
## Fakeable types
|
||||
|
||||
It is possible to extend a struct by implementing the `Fakeable` interface
|
||||
in order to control the generation.
|
||||
|
||||
For example, this is useful when it is not possible to modify the struct that you want to fake by adding struct tags to a field but you still need to be able to control the generation process.
|
||||
|
||||
```go
|
||||
// Custom string that you want to generate your own data for
|
||||
type Friend string
|
||||
|
||||
func (c *Friend) Fake(f *gofakeit.Faker) (any, error) {
|
||||
// Can call any other faker methods
|
||||
return f.RandomString([]string{"billy", "fred", "susan"}), nil
|
||||
}
|
||||
|
||||
// Custom time that you want to generate your own data for
|
||||
type Age time.Time
|
||||
|
||||
func (c *Age) Fake(f *gofakeit.Faker) (any, error) {
|
||||
return Age(f.DateRange(time.Now().AddDate(-100, 0, 0), time.Now().AddDate(-18, 0, 0))), nil
|
||||
}
|
||||
|
||||
// This is the struct that we cannot modify to add struct tags
|
||||
type User struct {
|
||||
Name Friend
|
||||
Age *Age
|
||||
}
|
||||
|
||||
var u User
|
||||
gofakeit.Struct(&u)
|
||||
fmt.Println(u.Name) // billy
|
||||
fmt.Println(time.Time(*u.Age)) // 1990-12-07 04:14:25.685339029 +0000 UTC
|
||||
```
|
||||
|
||||
## Custom Functions
|
||||
|
||||
In a lot of situations you may need to use your own random function usage for your specific needs.
|
||||
|
||||
If you would like to extend the usage of struct tags, generate function, available usages in the gofakeit server
|
||||
or gofakeit command sub packages. You can do so via the AddFuncLookup. Each function has their own lookup, if
|
||||
you need more reference examples you can look at each files lookups.
|
||||
|
||||
```go
|
||||
// Simple
|
||||
gofakeit.AddFuncLookup("friendname", gofakeit.Info{
|
||||
Category: "custom",
|
||||
Description: "Random friend name",
|
||||
Example: "bill",
|
||||
Output: "string",
|
||||
Generate: func(f *gofakeit.Faker, m *gofakeit.MapParams, info *gofakeit.Info) (any, error) {
|
||||
return f.RandomString([]string{"bill", "bob", "sally"}), nil
|
||||
},
|
||||
})
|
||||
|
||||
// With Params
|
||||
gofakeit.AddFuncLookup("jumbleword", gofakeit.Info{
|
||||
Category: "jumbleword",
|
||||
Description: "Take a word and jumble it up",
|
||||
Example: "loredlowlh",
|
||||
Output: "string",
|
||||
Params: []gofakeit.Param{
|
||||
{Field: "word", Type: "string", Description: "Word you want to jumble"},
|
||||
},
|
||||
Generate: func(f *gofakeit.Faker, m *gofakeit.MapParams, info *gofakeit.Info) (any, error) {
|
||||
word, err := info.GetString(m, "word")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
split := strings.Split(word, "")
|
||||
f.ShuffleStrings(split)
|
||||
return strings.Join(split, ""), nil
|
||||
},
|
||||
})
|
||||
|
||||
type Foo struct {
|
||||
FriendName string `fake:"{friendname}"`
|
||||
JumbleWord string `fake:"{jumbleword:helloworld}"`
|
||||
}
|
||||
|
||||
var f Foo
|
||||
gofakeit.Struct(&f)
|
||||
fmt.Println(f.FriendName) // bill
|
||||
fmt.Println(f.JumbleWord) // loredlowlh
|
||||
```
|
||||
|
||||
## Templates
|
||||
|
||||
Generate custom outputs using golang's template engine [https://pkg.go.dev/text/template](https://pkg.go.dev/text/template).
|
||||
|
||||
We have added all the available functions to the template engine as well as some additional ones that are useful for template building.
|
||||
|
||||
Additional Available Functions
|
||||
```go
|
||||
- ToUpper(s string) string // Make string upper case
|
||||
- ToLower(s string) string // Make string lower case
|
||||
- ToString(s any) // Convert to string
|
||||
- ToDate(s string) time.Time // Convert string to date
|
||||
- SpliceAny(args ...any) []any // Build a slice of anys, used with Weighted
|
||||
- SpliceString(args ...string) []string // Build a slice of strings, used with Teams and RandomString
|
||||
- SpliceUInt(args ...uint) []uint // Build a slice of uint, used with Dice and RandomUint
|
||||
- SpliceInt(args ...int) []int // Build a slice of int, used with RandomInt
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Unavailable Gofakeit functions</summary>
|
||||
|
||||
```go
|
||||
// Any functions that dont have a return value
|
||||
- AnythingThatReturnsVoid(): void
|
||||
|
||||
// Not available to use in templates
|
||||
- Template(co *TemplateOptions) ([]byte, error)
|
||||
- RandomMapKey(mapI any) any
|
||||
```
|
||||
</details>
|
||||
|
||||
|
||||
### Example Usages
|
||||
|
||||
```go
|
||||
import "github.com/brianvoe/gofakeit/v7"
|
||||
|
||||
func main() {
|
||||
// Accessing the Lines variable from within the template.
|
||||
template := `
|
||||
Subject: {{RandomString (SliceString "Greetings" "Hello" "Hi")}}
|
||||
|
||||
Dear {{LastName}},
|
||||
|
||||
{{RandomString (SliceString "Greetings!" "Hello there!" "Hi, how are you?")}}
|
||||
|
||||
{{Paragraph 1 5 10 "\n\n"}}
|
||||
|
||||
{{RandomString (SliceString "Warm regards" "Best wishes" "Sincerely")}}
|
||||
{{$person:=Person}}
|
||||
{{$person.FirstName}} {{$person.LastName}}
|
||||
{{$person.Contact.Email}}
|
||||
{{$person.Contact.Phone}}
|
||||
`
|
||||
|
||||
value, err := gofakeit.Template(template, &gofakeit.TemplateOptions{Data: 5})
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
fmt.Println(value)
|
||||
}
|
||||
```
|
||||
|
||||
Output:
|
||||
```text
|
||||
Subject: Hello
|
||||
|
||||
Dear Krajcik,
|
||||
|
||||
Greetings!
|
||||
|
||||
Quia voluptatem voluptatem voluptatem. Quia voluptatem voluptatem voluptatem. Quia voluptatem voluptatem voluptatem.
|
||||
|
||||
Warm regards
|
||||
|
||||
Kaitlyn Krajcik
|
||||
kaitlynkrajcik@krajcik
|
||||
570-245-7485
|
||||
```
|
||||
|
||||
## Functions
|
||||
|
||||
All functions also exist as methods on the Faker struct
|
||||
|
||||
### File
|
||||
|
||||
Passing `nil` to `CSV`, `JSON` or `XML` will auto generate data using default values.
|
||||
|
||||
```go
|
||||
CSV(co *CSVOptions) ([]byte, error)
|
||||
JSON(jo *JSONOptions) ([]byte, error)
|
||||
XML(xo *XMLOptions) ([]byte, error)
|
||||
FileExtension() string
|
||||
FileMimeType() string
|
||||
```
|
||||
|
||||
### Template
|
||||
|
||||
Passing `nil` will auto generate data using default values.
|
||||
|
||||
```go
|
||||
Template(co *TemplateOptions) (string, error)
|
||||
Markdown(co *MarkdownOptions) (string, error)
|
||||
EmailText(co *EmailOptions) (string, error)
|
||||
FixedWidth(co *FixedWidthOptions) (string, error)
|
||||
```
|
||||
|
||||
### Product
|
||||
|
||||
```go
|
||||
Product() *ProductInfo
|
||||
ProductName() string
|
||||
ProductDescription() string
|
||||
ProductCategory() string
|
||||
ProductFeature() string
|
||||
ProductMaterial() string
|
||||
ProductUPC() string
|
||||
ProductAudience() string
|
||||
ProductDimension() string
|
||||
ProductUseCase() string
|
||||
ProductBenefit() string
|
||||
ProductSuffix() string
|
||||
ProductISBN(opts *ISBNOptions) string
|
||||
|
||||
```
|
||||
|
||||
### Person
|
||||
|
||||
```go
|
||||
Person() *PersonInfo
|
||||
Name() string
|
||||
NamePrefix() string
|
||||
NameSuffix() string
|
||||
FirstName() string
|
||||
MiddleName() string
|
||||
LastName() string
|
||||
Gender() string
|
||||
SSN() string
|
||||
EIN() string
|
||||
Hobby() string
|
||||
Contact() *ContactInfo
|
||||
Email() string
|
||||
Phone() string
|
||||
PhoneFormatted() string
|
||||
Teams(peopleArray []string, teamsArray []string) map[string][]string
|
||||
```
|
||||
|
||||
### Generate
|
||||
|
||||
```go
|
||||
Struct(v any)
|
||||
Slice(v any)
|
||||
Map() map[string]any
|
||||
Generate(value string) string
|
||||
Regex(value string) string
|
||||
```
|
||||
|
||||
### Auth
|
||||
|
||||
```go
|
||||
Username() string
|
||||
Password(lower bool, upper bool, numeric bool, special bool, space bool, num int) string
|
||||
```
|
||||
|
||||
### Address
|
||||
|
||||
```go
|
||||
Address() *AddressInfo
|
||||
City() string
|
||||
Country() string
|
||||
CountryAbr() string
|
||||
State() string
|
||||
StateAbr() string
|
||||
Street() string
|
||||
StreetName() string
|
||||
StreetNumber() string
|
||||
StreetPrefix() string
|
||||
StreetSuffix() string
|
||||
Unit() string
|
||||
Zip() string
|
||||
Latitude() float64
|
||||
LatitudeInRange(min, max float64) (float64, error)
|
||||
Longitude() float64
|
||||
LongitudeInRange(min, max float64) (float64, error)
|
||||
```
|
||||
|
||||
### Game
|
||||
|
||||
```go
|
||||
Gamertag() string
|
||||
Dice(numDice uint, sides []uint) []uint
|
||||
```
|
||||
|
||||
### Beer
|
||||
|
||||
```go
|
||||
BeerAlcohol() string
|
||||
BeerBlg() string
|
||||
BeerHop() string
|
||||
BeerIbu() string
|
||||
BeerMalt() string
|
||||
BeerName() string
|
||||
BeerStyle() string
|
||||
BeerYeast() string
|
||||
```
|
||||
|
||||
### Car
|
||||
|
||||
```go
|
||||
Car() *CarInfo
|
||||
CarMaker() string
|
||||
CarModel() string
|
||||
CarType() string
|
||||
CarFuelType() string
|
||||
CarTransmissionType() string
|
||||
```
|
||||
|
||||
### Words
|
||||
|
||||
```go
|
||||
// Nouns
|
||||
Noun() string
|
||||
NounCommon() string
|
||||
NounConcrete() string
|
||||
NounAbstract() string
|
||||
NounCollectivePeople() string
|
||||
NounCollectiveAnimal() string
|
||||
NounCollectiveThing() string
|
||||
NounCountable() string
|
||||
NounUncountable() string
|
||||
|
||||
// Verbs
|
||||
Verb() string
|
||||
VerbAction() string
|
||||
VerbLinking() string
|
||||
VerbHelping() string
|
||||
|
||||
// Adverbs
|
||||
Adverb() string
|
||||
AdverbManner() string
|
||||
AdverbDegree() string
|
||||
AdverbPlace() string
|
||||
AdverbTimeDefinite() string
|
||||
AdverbTimeIndefinite() string
|
||||
AdverbFrequencyDefinite() string
|
||||
AdverbFrequencyIndefinite() string
|
||||
|
||||
// Propositions
|
||||
Preposition() string
|
||||
PrepositionSimple() string
|
||||
PrepositionDouble() string
|
||||
PrepositionCompound() string
|
||||
|
||||
// Adjectives
|
||||
Adjective() string
|
||||
AdjectiveDescriptive() string
|
||||
AdjectiveQuantitative() string
|
||||
AdjectiveProper() string
|
||||
AdjectiveDemonstrative() string
|
||||
AdjectivePossessive() string
|
||||
AdjectiveInterrogative() string
|
||||
AdjectiveIndefinite() string
|
||||
|
||||
// Pronouns
|
||||
Pronoun() string
|
||||
PronounPersonal() string
|
||||
PronounObject() string
|
||||
PronounPossessive() string
|
||||
PronounReflective() string
|
||||
PronounDemonstrative() string
|
||||
PronounInterrogative() string
|
||||
PronounRelative() string
|
||||
|
||||
// Connectives
|
||||
Connective() string
|
||||
ConnectiveTime() string
|
||||
ConnectiveComparative() string
|
||||
ConnectiveComplaint() string
|
||||
ConnectiveListing() string
|
||||
ConnectiveCasual() string
|
||||
ConnectiveExamplify() string
|
||||
|
||||
// Words
|
||||
Word() string
|
||||
|
||||
// Sentences
|
||||
Sentence(wordCount int) string
|
||||
Paragraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string
|
||||
LoremIpsumWord() string
|
||||
LoremIpsumSentence(wordCount int) string
|
||||
LoremIpsumParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string
|
||||
Question() string
|
||||
Quote() string
|
||||
Phrase() string
|
||||
```
|
||||
|
||||
### Foods
|
||||
|
||||
```go
|
||||
Fruit() string
|
||||
Vegetable() string
|
||||
Breakfast() string
|
||||
Lunch() string
|
||||
Dinner() string
|
||||
Snack() string
|
||||
Dessert() string
|
||||
```
|
||||
|
||||
### Misc
|
||||
|
||||
```go
|
||||
Bool() bool
|
||||
UUID() string
|
||||
Weighted(options []any, weights []float32) (any, error)
|
||||
FlipACoin() string
|
||||
RandomMapKey(mapI any) any
|
||||
ShuffleAnySlice(v any)
|
||||
```
|
||||
|
||||
### Colors
|
||||
|
||||
```go
|
||||
Color() string
|
||||
HexColor() string
|
||||
RGBColor() []int
|
||||
SafeColor() string
|
||||
NiceColors() string
|
||||
```
|
||||
|
||||
### Images
|
||||
|
||||
```go
|
||||
Image(width int, height int) *img.RGBA
|
||||
ImageJpeg(width int, height int) []byte
|
||||
ImagePng(width int, height int) []byte
|
||||
```
|
||||
|
||||
### Internet
|
||||
|
||||
```go
|
||||
URL() string
|
||||
DomainName() string
|
||||
DomainSuffix() string
|
||||
IPv4Address() string
|
||||
IPv6Address() string
|
||||
MacAddress() string
|
||||
HTTPStatusCode() string
|
||||
HTTPStatusCodeSimple() int
|
||||
LogLevel(logType string) string
|
||||
HTTPMethod() string
|
||||
HTTPVersion() string
|
||||
UserAgent() string
|
||||
ChromeUserAgent() string
|
||||
FirefoxUserAgent() string
|
||||
OperaUserAgent() string
|
||||
SafariUserAgent() string
|
||||
```
|
||||
|
||||
### HTML
|
||||
|
||||
```go
|
||||
InputName() string
|
||||
Svg(options *SVGOptions) string
|
||||
```
|
||||
|
||||
### Date/Time
|
||||
|
||||
```go
|
||||
Date() time.Time
|
||||
PastDate() time.Time
|
||||
FutureDate() time.Time
|
||||
DateRange(start, end time.Time) time.Time
|
||||
NanoSecond() int
|
||||
Second() int
|
||||
Minute() int
|
||||
Hour() int
|
||||
Month() int
|
||||
MonthString() string
|
||||
Day() int
|
||||
WeekDay() string
|
||||
Year() int
|
||||
TimeZone() string
|
||||
TimeZoneAbv() string
|
||||
TimeZoneFull() string
|
||||
TimeZoneOffset() float32
|
||||
TimeZoneRegion() string
|
||||
```
|
||||
|
||||
### Payment
|
||||
|
||||
```go
|
||||
Price(min, max float64) float64
|
||||
CreditCard() *CreditCardInfo
|
||||
CreditCardCvv() string
|
||||
CreditCardExp() string
|
||||
CreditCardNumber(*CreditCardOptions) string
|
||||
CreditCardType() string
|
||||
Currency() *CurrencyInfo
|
||||
CurrencyLong() string
|
||||
CurrencyShort() string
|
||||
AchRouting() string
|
||||
AchAccount() string
|
||||
BitcoinAddress() string
|
||||
BitcoinPrivateKey() string
|
||||
BankName() string
|
||||
BankType() string
|
||||
```
|
||||
|
||||
### Finance
|
||||
|
||||
```go
|
||||
Cusip() string
|
||||
Isin() string
|
||||
```
|
||||
|
||||
### Company
|
||||
|
||||
```go
|
||||
BS() string
|
||||
Blurb() string
|
||||
BuzzWord() string
|
||||
Company() string
|
||||
CompanySuffix() string
|
||||
Job() *JobInfo
|
||||
JobDescriptor() string
|
||||
JobLevel() string
|
||||
JobTitle() string
|
||||
Slogan() string
|
||||
```
|
||||
|
||||
### Hacker
|
||||
|
||||
```go
|
||||
HackerAbbreviation() string
|
||||
HackerAdjective() string
|
||||
Hackeringverb() string
|
||||
HackerNoun() string
|
||||
HackerPhrase() string
|
||||
HackerVerb() string
|
||||
```
|
||||
|
||||
### Hipster
|
||||
|
||||
```go
|
||||
HipsterWord() string
|
||||
HipsterSentence(wordCount int) string
|
||||
HipsterParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string
|
||||
```
|
||||
|
||||
### App
|
||||
|
||||
```go
|
||||
AppName() string
|
||||
AppVersion() string
|
||||
AppAuthor() string
|
||||
```
|
||||
|
||||
### Animal
|
||||
|
||||
```go
|
||||
PetName() string
|
||||
Animal() string
|
||||
AnimalType() string
|
||||
FarmAnimal() string
|
||||
Cat() string
|
||||
Dog() string
|
||||
Bird() string
|
||||
```
|
||||
|
||||
### Emoji
|
||||
|
||||
```go
|
||||
Emoji() string
|
||||
EmojiDescription() string
|
||||
EmojiCategory() string
|
||||
EmojiAlias() string
|
||||
EmojiTag() string
|
||||
```
|
||||
|
||||
### Language
|
||||
|
||||
```go
|
||||
Language() string
|
||||
LanguageAbbreviation() string
|
||||
ProgrammingLanguage() string
|
||||
ProgrammingLanguageBest() string
|
||||
```
|
||||
|
||||
### Number
|
||||
|
||||
```go
|
||||
Number(min int, max int) int
|
||||
Int() int
|
||||
IntN(n int) int
|
||||
Int8() int8
|
||||
Int16() int16
|
||||
Int32() int32
|
||||
Int64() int64
|
||||
Uint() uint
|
||||
UintN(n uint) uint
|
||||
Uint8() uint8
|
||||
Uint16() uint16
|
||||
Uint32() uint32
|
||||
Uint64() uint64
|
||||
Float32() float32
|
||||
Float32Range(min, max float32) float32
|
||||
Float64() float64
|
||||
Float64Range(min, max float64) float64
|
||||
ShuffleInts(a []int)
|
||||
RandomInt(i []int) int
|
||||
HexUint(bitsize int) string
|
||||
```
|
||||
|
||||
### String
|
||||
|
||||
```go
|
||||
Digit() string
|
||||
DigitN(n uint) string
|
||||
Letter() string
|
||||
LetterN(n uint) string
|
||||
Lexify(str string) string
|
||||
Numerify(str string) string
|
||||
ShuffleStrings(a []string)
|
||||
RandomString(a []string) string
|
||||
```
|
||||
|
||||
### Celebrity
|
||||
|
||||
```go
|
||||
CelebrityActor() string
|
||||
CelebrityBusiness() string
|
||||
CelebritySport() string
|
||||
```
|
||||
|
||||
### Minecraft
|
||||
|
||||
```go
|
||||
MinecraftOre() string
|
||||
MinecraftWood() string
|
||||
MinecraftArmorTier() string
|
||||
MinecraftArmorPart() string
|
||||
MinecraftWeapon() string
|
||||
MinecraftTool() string
|
||||
MinecraftDye() string
|
||||
MinecraftFood() string
|
||||
MinecraftAnimal() string
|
||||
MinecraftVillagerJob() string
|
||||
MinecraftVillagerStation() string
|
||||
MinecraftVillagerLevel() string
|
||||
MinecraftMobPassive() string
|
||||
MinecraftMobNeutral() string
|
||||
MinecraftMobHostile() string
|
||||
MinecraftMobBoss() string
|
||||
MinecraftBiome() string
|
||||
MinecraftWeather() string
|
||||
```
|
||||
|
||||
### Book
|
||||
|
||||
```go
|
||||
Book() *BookInfo
|
||||
BookTitle() string
|
||||
BookAuthor() string
|
||||
BookGenre() string
|
||||
```
|
||||
|
||||
### Movie
|
||||
|
||||
```go
|
||||
Movie() *MovieInfo
|
||||
MovieName() string
|
||||
MovieGenre() string
|
||||
```
|
||||
|
||||
### Error
|
||||
|
||||
```go
|
||||
Error() error
|
||||
ErrorDatabase() error
|
||||
ErrorGRPC() error
|
||||
ErrorHTTP() error
|
||||
ErrorHTTPClient() error
|
||||
ErrorHTTPServer() error
|
||||
ErrorInput() error
|
||||
ErrorRuntime() error
|
||||
```
|
||||
|
||||
### School
|
||||
|
||||
```go
|
||||
School() string
|
||||
```
|
||||
|
||||
### Song
|
||||
|
||||
```go
|
||||
Song() *SongInfo
|
||||
SongName() string
|
||||
SongArtist() string
|
||||
SongGenre() string
|
||||
```
|
||||
477
vendor/github.com/brianvoe/gofakeit/v7/address.go
generated
vendored
Normal file
477
vendor/github.com/brianvoe/gofakeit/v7/address.go
generated
vendored
Normal file
@@ -0,0 +1,477 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// AddressInfo is a struct full of address information
|
||||
type AddressInfo struct {
|
||||
Address string `json:"address" xml:"address"`
|
||||
Street string `json:"street" xml:"street"`
|
||||
Unit string `json:"unit" xml:"unit"`
|
||||
City string `json:"city" xml:"city"`
|
||||
State string `json:"state" xml:"state"`
|
||||
Zip string `json:"zip" xml:"zip"`
|
||||
Country string `json:"country" xml:"country"`
|
||||
Latitude float64 `json:"latitude" xml:"latitude"`
|
||||
Longitude float64 `json:"longitude" xml:"longitude"`
|
||||
}
|
||||
|
||||
// Address will generate a struct of address information
|
||||
func Address() *AddressInfo { return address(GlobalFaker) }
|
||||
|
||||
// Address will generate a struct of address information
|
||||
func (f *Faker) Address() *AddressInfo { return address(f) }
|
||||
|
||||
func address(f *Faker) *AddressInfo {
|
||||
street := street(f)
|
||||
city := city(f)
|
||||
state := state(f)
|
||||
zip := zip(f)
|
||||
|
||||
// 30% chance to include a unit in the address
|
||||
var unitStr string
|
||||
var unitField string
|
||||
if randIntRange(f, 1, 10) <= 3 {
|
||||
unitStr = ", " + unit(f)
|
||||
unitField = unit(f)
|
||||
}
|
||||
|
||||
addressStr := street + unitStr + ", " + city + ", " + state + " " + zip
|
||||
|
||||
return &AddressInfo{
|
||||
Address: addressStr,
|
||||
Street: street,
|
||||
Unit: unitField,
|
||||
City: city,
|
||||
State: state,
|
||||
Zip: zip,
|
||||
Country: country(f),
|
||||
Latitude: latitude(f),
|
||||
Longitude: longitude(f),
|
||||
}
|
||||
}
|
||||
|
||||
// Street will generate a random address street string
|
||||
func Street() string { return street(GlobalFaker) }
|
||||
|
||||
// Street will generate a random address street string
|
||||
func (f *Faker) Street() string { return street(f) }
|
||||
|
||||
func street(f *Faker) string {
|
||||
var street = ""
|
||||
switch randInt := randIntRange(f, 1, 2); randInt {
|
||||
case 1:
|
||||
street = streetNumber(f) + " " + streetPrefix(f) + " " + streetName(f) + streetSuffix(f)
|
||||
case 2:
|
||||
street = streetNumber(f) + " " + streetName(f) + streetSuffix(f)
|
||||
}
|
||||
|
||||
return street
|
||||
}
|
||||
|
||||
// StreetNumber will generate a random address street number string
|
||||
func StreetNumber() string { return streetNumber(GlobalFaker) }
|
||||
|
||||
// StreetNumber will generate a random address street number string
|
||||
func (f *Faker) StreetNumber() string { return streetNumber(f) }
|
||||
|
||||
func streetNumber(f *Faker) string {
|
||||
return strings.TrimLeft(replaceWithNumbers(f, getRandValue(f, []string{"address", "number"})), "0")
|
||||
}
|
||||
|
||||
// StreetPrefix will generate a random address street prefix string
|
||||
func StreetPrefix() string { return streetPrefix(GlobalFaker) }
|
||||
|
||||
// StreetPrefix will generate a random address street prefix string
|
||||
func (f *Faker) StreetPrefix() string { return streetPrefix(f) }
|
||||
|
||||
func streetPrefix(f *Faker) string { return getRandValue(f, []string{"address", "street_prefix"}) }
|
||||
|
||||
// StreetName will generate a random address street name string
|
||||
func StreetName() string { return streetName(GlobalFaker) }
|
||||
|
||||
// StreetName will generate a random address street name string
|
||||
func (f *Faker) StreetName() string { return streetName(f) }
|
||||
|
||||
func streetName(f *Faker) string { return getRandValue(f, []string{"address", "street_name"}) }
|
||||
|
||||
// StreetSuffix will generate a random address street suffix string
|
||||
func StreetSuffix() string { return streetSuffix(GlobalFaker) }
|
||||
|
||||
// StreetSuffix will generate a random address street suffix string
|
||||
func (f *Faker) StreetSuffix() string { return streetSuffix(f) }
|
||||
|
||||
func streetSuffix(f *Faker) string { return getRandValue(f, []string{"address", "street_suffix"}) }
|
||||
|
||||
// Unit will generate a random unit string
|
||||
func Unit() string { return unit(GlobalFaker) }
|
||||
|
||||
// Unit will generate a random unit string
|
||||
func (f *Faker) Unit() string { return unit(f) }
|
||||
|
||||
func unit(f *Faker) string {
|
||||
unitType := getRandValue(f, []string{"address", "unit"})
|
||||
unitNumber := replaceWithNumbers(f, "###")
|
||||
return unitType + " " + unitNumber
|
||||
}
|
||||
|
||||
// City will generate a random city string
|
||||
func City() string { return city(GlobalFaker) }
|
||||
|
||||
// City will generate a random city string
|
||||
func (f *Faker) City() string { return city(f) }
|
||||
|
||||
func city(f *Faker) string { return getRandValue(f, []string{"address", "city"}) }
|
||||
|
||||
// State will generate a random state string
|
||||
func State() string { return state(GlobalFaker) }
|
||||
|
||||
// State will generate a random state string
|
||||
func (f *Faker) State() string { return state(f) }
|
||||
|
||||
func state(f *Faker) string { return getRandValue(f, []string{"address", "state"}) }
|
||||
|
||||
// StateAbr will generate a random abbreviated state string
|
||||
func StateAbr() string { return stateAbr(GlobalFaker) }
|
||||
|
||||
// StateAbr will generate a random abbreviated state string
|
||||
func (f *Faker) StateAbr() string { return stateAbr(f) }
|
||||
|
||||
func stateAbr(f *Faker) string { return getRandValue(f, []string{"address", "state_abr"}) }
|
||||
|
||||
// Zip will generate a random Zip code string
|
||||
func Zip() string { return zip(GlobalFaker) }
|
||||
|
||||
// Zip will generate a random Zip code string
|
||||
func (f *Faker) Zip() string { return zip(f) }
|
||||
|
||||
func zip(f *Faker) string {
|
||||
return replaceWithNumbers(f, getRandValue(f, []string{"address", "zip"}))
|
||||
}
|
||||
|
||||
// Country will generate a random country string
|
||||
func Country() string { return country(GlobalFaker) }
|
||||
|
||||
// Country will generate a random country string
|
||||
func (f *Faker) Country() string { return country(f) }
|
||||
|
||||
func country(f *Faker) string { return getRandValue(f, []string{"address", "country"}) }
|
||||
|
||||
// CountryAbr will generate a random abbreviated country string
|
||||
func CountryAbr() string { return countryAbr(GlobalFaker) }
|
||||
|
||||
// CountryAbr will generate a random abbreviated country string
|
||||
func (f *Faker) CountryAbr() string { return countryAbr(f) }
|
||||
|
||||
func countryAbr(f *Faker) string { return getRandValue(f, []string{"address", "country_abr"}) }
|
||||
|
||||
// Latitude will generate a random latitude float64
|
||||
func Latitude() float64 { return latitude(GlobalFaker) }
|
||||
|
||||
// Latitude will generate a random latitude float64
|
||||
func (f *Faker) Latitude() float64 { return latitude(f) }
|
||||
|
||||
func latitude(f *Faker) float64 { return toFixed((f.Float64()*180)-90, 6) }
|
||||
|
||||
// LatitudeInRange will generate a random latitude within the input range
|
||||
func LatitudeInRange(min, max float64) (float64, error) {
|
||||
return latitudeInRange(GlobalFaker, min, max)
|
||||
}
|
||||
|
||||
// LatitudeInRange will generate a random latitude within the input range
|
||||
func (f *Faker) LatitudeInRange(min, max float64) (float64, error) {
|
||||
return latitudeInRange(f, min, max)
|
||||
}
|
||||
|
||||
func latitudeInRange(f *Faker, min, max float64) (float64, error) {
|
||||
if min > max || min < -90 || min > 90 || max < -90 || max > 90 {
|
||||
return 0, errors.New("invalid min or max range, must be valid floats and between -90 and 90")
|
||||
}
|
||||
return toFixed(float64Range(f, min, max), 6), nil
|
||||
}
|
||||
|
||||
// Longitude will generate a random longitude float64
|
||||
func Longitude() float64 { return longitude(GlobalFaker) }
|
||||
|
||||
// Longitude will generate a random longitude float64
|
||||
func (f *Faker) Longitude() float64 { return longitude(f) }
|
||||
|
||||
func longitude(f *Faker) float64 { return toFixed((f.Float64()*360)-180, 6) }
|
||||
|
||||
// LongitudeInRange will generate a random longitude within the input range
|
||||
func LongitudeInRange(min, max float64) (float64, error) {
|
||||
return longitudeInRange(GlobalFaker, min, max)
|
||||
}
|
||||
|
||||
// LongitudeInRange will generate a random longitude within the input range
|
||||
func (f *Faker) LongitudeInRange(min, max float64) (float64, error) {
|
||||
return longitudeInRange(f, min, max)
|
||||
}
|
||||
|
||||
func longitudeInRange(f *Faker, min, max float64) (float64, error) {
|
||||
if min > max || min < -180 || min > 180 || max < -180 || max > 180 {
|
||||
return 0, errors.New("invalid min or max range, must be valid floats and between -180 and 180")
|
||||
}
|
||||
return toFixed(float64Range(f, min, max), 6), nil
|
||||
}
|
||||
|
||||
func addAddressLookup() {
|
||||
AddFuncLookup("address", Info{
|
||||
Display: "Address",
|
||||
Category: "address",
|
||||
Description: "Residential location including street, city, state, country and postal code",
|
||||
Example: `{
|
||||
"address": "364 Unionsville, Apt 123, Norfolk, Ohio 99536",
|
||||
"street": "364 Unionsville",
|
||||
"apartment": "Apt 123",
|
||||
"city": "Norfolk",
|
||||
"state": "Ohio",
|
||||
"zip": "99536",
|
||||
"country": "Lesotho",
|
||||
"latitude": 88.792592,
|
||||
"longitude": 174.504681
|
||||
}`,
|
||||
Output: "map[string]any",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"full address", "residential address", "mailing address", "street address", "home address"},
|
||||
Keywords: []string{"address", "residential", "location", "street", "city", "state", "country", "postal", "code", "mailing", "home", "house", "apartment", "zipcode", "coordinates"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return address(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("city", Info{
|
||||
Display: "City",
|
||||
Category: "address",
|
||||
Description: "Part of a country with significant population, often a central hub for culture and commerce",
|
||||
Example: "Marcelside",
|
||||
Output: "string",
|
||||
Aliases: []string{"city name", "urban area", "municipality name", "town name", "metropolitan area"},
|
||||
Keywords: []string{"city", "town", "municipality", "urban", "area", "population", "hub", "culture", "commerce", "metropolitan", "settlement", "community", "district"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return city(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("country", Info{
|
||||
Display: "Country",
|
||||
Category: "address",
|
||||
Description: "Nation with its own government and defined territory",
|
||||
Example: "United States of America",
|
||||
Output: "string",
|
||||
Aliases: []string{"country name", "nation name", "sovereign state", "national territory", "independent country"},
|
||||
Keywords: []string{"country", "nation", "government", "territory", "sovereign", "independent", "state", "republic", "kingdom", "empire", "federation", "commonwealth"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return country(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("countryabr", Info{
|
||||
Display: "Country Abbreviation",
|
||||
Category: "address",
|
||||
Description: "Shortened 2-letter form of a country's name",
|
||||
Example: "US",
|
||||
Output: "string",
|
||||
Aliases: []string{"country code", "iso alpha-2", "iso3166-1 alpha-2", "two-letter country", "country short code"},
|
||||
Keywords: []string{"country", "abbreviation", "shortened", "2-letter", "nation", "iso", "code", "alpha-2", "iso3166-1", "standard", "international", "identifier"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return countryAbr(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("state", Info{
|
||||
Display: "State",
|
||||
Category: "address",
|
||||
Description: "Governmental division within a country, often having its own laws and government",
|
||||
Example: "Illinois",
|
||||
Output: "string",
|
||||
Aliases: []string{"state name", "province name", "region name", "administrative division", "territory name"},
|
||||
Keywords: []string{"state", "province", "region", "division", "governmental", "territory", "area", "laws", "government", "administrative", "subdivision", "district", "county"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return state(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("stateabr", Info{
|
||||
Display: "State Abbreviation",
|
||||
Category: "address",
|
||||
Description: "Shortened 2-letter form of a state or province",
|
||||
Example: "IL",
|
||||
Output: "string",
|
||||
Aliases: []string{"state code", "province code", "region code", "usps code", "iso3166-2 code"},
|
||||
Keywords: []string{"state", "abbreviation", "shortened", "2-letter", "region", "province", "country", "code", "usps", "iso3166-2", "identifier"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return stateAbr(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("street", Info{
|
||||
Display: "Street",
|
||||
Category: "address",
|
||||
Description: "Public road in a city or town, typically with houses and buildings on each side",
|
||||
Example: "364 East Rapidsborough",
|
||||
Output: "string",
|
||||
Aliases: []string{"street address", "shipping address", "billing address", "mailing address", "address line 1", "line 1", "road address", "avenue address", "drive address", "thoroughfare address"},
|
||||
Keywords: []string{"address", "street", "road", "avenue", "drive", "lane", "way", "public", "thoroughfare", "boulevard", "court", "place", "circle", "terrace", "highway"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return street(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("streetname", Info{
|
||||
Display: "Street Name",
|
||||
Category: "address",
|
||||
Description: "Name given to a specific road or street",
|
||||
Example: "View",
|
||||
Output: "string",
|
||||
Aliases: []string{"street title", "road name", "avenue name", "drive name", "thoroughfare name"},
|
||||
Keywords: []string{"street", "name", "road", "avenue", "drive", "lane", "way", "thoroughfare", "specific", "title", "designation", "label", "identifier"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return streetName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("streetnumber", Info{
|
||||
Display: "Street Number",
|
||||
Category: "address",
|
||||
Description: "Numerical identifier assigned to a street",
|
||||
Example: "13645",
|
||||
Output: "string",
|
||||
Aliases: []string{"house number", "building number", "address number", "street identifier", "numerical address"},
|
||||
Keywords: []string{"street", "number", "identifier", "numerical", "address", "location", "building", "assigned", "house", "digit", "numeric", "sequence", "position"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return streetNumber(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("streetprefix", Info{
|
||||
Display: "Street Prefix",
|
||||
Category: "address",
|
||||
Description: "Directional or descriptive term preceding a street name (e.g., 'East', 'N')",
|
||||
Example: "East",
|
||||
Output: "string",
|
||||
Aliases: []string{"directional prefix", "street prefix", "name prefix", "road prefix", "thoroughfare prefix"},
|
||||
Keywords: []string{"street", "prefix", "directional", "north", "south", "east", "west", "n", "s", "e", "w"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return streetPrefix(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("streetsuffix", Info{
|
||||
Display: "Street Suffix",
|
||||
Category: "address",
|
||||
Description: "Designation at the end of a street name indicating type (e.g., 'Ave', 'St')",
|
||||
Example: "Ave",
|
||||
Output: "string",
|
||||
Aliases: []string{"street type", "road type", "avenue suffix", "thoroughfare suffix", "street ending"},
|
||||
Keywords: []string{"street", "suffix", "designation", "type", "ave", "st", "rd", "dr", "ln", "blvd", "ct", "pl", "cir", "ter", "hwy"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return streetSuffix(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("unit", Info{
|
||||
Display: "Unit",
|
||||
Category: "address",
|
||||
Description: "Unit identifier within a building, such as apartment number, suite, or office",
|
||||
Example: "Apt 123",
|
||||
Output: "string",
|
||||
Aliases: []string{"apartment unit", "suite number", "office number", "building unit", "room number", "address line 2", "line 2"},
|
||||
Keywords: []string{"unit", "apartment", "suite", "office", "identifier", "building", "number", "within", "room", "floor", "level", "section", "compartment"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return unit(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("zip", Info{
|
||||
Display: "Zip",
|
||||
Category: "address",
|
||||
Description: "Numerical code for postal address sorting, specific to a geographic area",
|
||||
Example: "13645",
|
||||
Output: "string",
|
||||
Aliases: []string{"zip code", "postal code", "mail code", "delivery code"},
|
||||
Keywords: []string{"zip", "postal", "postcode", "code", "address", "sorting", "geographic", "area", "numerical", "mailing", "delivery", "zone", "district", "region", "identifier"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return zip(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("latitude", Info{
|
||||
Display: "Latitude",
|
||||
Category: "address",
|
||||
Description: "Geographic coordinate specifying north-south position on Earth's surface",
|
||||
Example: "-73.534056",
|
||||
Output: "float",
|
||||
Aliases: []string{"lat coordinate", "north-south coordinate", "geographic latitude", "earth latitude", "position latitude"},
|
||||
Keywords: []string{"latitude", "lat", "coordinate", "north-south", "degrees", "gps", "wgs84", "geodesy", "parallel", "equator", "pole"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return latitude(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("latituderange", Info{
|
||||
Display: "Latitude Range",
|
||||
Category: "address",
|
||||
Description: "Latitude number between the given range (default min=0, max=90)",
|
||||
Example: "22.921026",
|
||||
Output: "float",
|
||||
Aliases: []string{"latitude bounds", "lat range", "north-south range", "geographic bounds", "coordinate range"},
|
||||
Keywords: []string{"latitude", "lat", "range", "min", "max", "degrees", "gps", "wgs84", "bounds", "interval"},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "float", Default: "0", Description: "Minimum range"},
|
||||
{Field: "max", Display: "Max", Type: "float", Default: "90", Description: "Maximum range"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetFloat64(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetFloat64(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return latitudeInRange(f, min, max)
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("longitude", Info{
|
||||
Display: "Longitude",
|
||||
Category: "address",
|
||||
Description: "Geographic coordinate indicating east-west position on Earth's surface",
|
||||
Example: "-147.068112",
|
||||
Output: "float",
|
||||
Aliases: []string{"long coordinate", "east-west coordinate", "geographic longitude", "earth longitude", "position longitude"},
|
||||
Keywords: []string{"longitude", "lon", "coordinate", "east-west", "degrees", "gps", "wgs84", "geodesy", "meridian", "idl"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return longitude(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("longituderange", Info{
|
||||
Display: "Longitude Range",
|
||||
Category: "address",
|
||||
Description: "Longitude number between the given range (default min=0, max=180)",
|
||||
Example: "-8.170450",
|
||||
Output: "float",
|
||||
Aliases: []string{"longitude bounds", "long range", "east-west range", "geographic bounds", "coordinate range"},
|
||||
Keywords: []string{"longitude", "lon", "range", "min", "max", "degrees", "gps", "wgs84", "bounds", "interval"},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "float", Default: "0", Description: "Minimum range"},
|
||||
{Field: "max", Display: "Max", Type: "float", Default: "180", Description: "Maximum range"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetFloat64(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetFloat64(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return longitudeInRange(f, min, max)
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
192
vendor/github.com/brianvoe/gofakeit/v7/animal.go
generated
vendored
Normal file
192
vendor/github.com/brianvoe/gofakeit/v7/animal.go
generated
vendored
Normal file
@@ -0,0 +1,192 @@
|
||||
package gofakeit
|
||||
|
||||
// PetName will return a random fun pet name
|
||||
func PetName() string {
|
||||
return petName(GlobalFaker)
|
||||
}
|
||||
|
||||
// PetName will return a random fun pet name
|
||||
func (f *Faker) PetName() string {
|
||||
return petName(f)
|
||||
}
|
||||
|
||||
func petName(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "petname"})
|
||||
}
|
||||
|
||||
// Animal will return a random animal
|
||||
func Animal() string {
|
||||
return animal(GlobalFaker)
|
||||
}
|
||||
|
||||
// Animal will return a random animal
|
||||
func (f *Faker) Animal() string {
|
||||
return animal(f)
|
||||
}
|
||||
|
||||
func animal(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "animal"})
|
||||
}
|
||||
|
||||
// AnimalType will return a random animal type
|
||||
func AnimalType() string {
|
||||
return animalType(GlobalFaker)
|
||||
}
|
||||
|
||||
// AnimalType will return a random animal type
|
||||
func (f *Faker) AnimalType() string {
|
||||
return animalType(f)
|
||||
}
|
||||
|
||||
func animalType(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "type"})
|
||||
}
|
||||
|
||||
// FarmAnimal will return a random animal that usually lives on a farm
|
||||
func FarmAnimal() string {
|
||||
return farmAnimal(GlobalFaker)
|
||||
}
|
||||
|
||||
// FarmAnimal will return a random animal that usually lives on a farm
|
||||
func (f *Faker) FarmAnimal() string {
|
||||
return farmAnimal(f)
|
||||
}
|
||||
|
||||
func farmAnimal(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "farm"})
|
||||
}
|
||||
|
||||
// Cat will return a random cat breed
|
||||
func Cat() string {
|
||||
return cat(GlobalFaker)
|
||||
}
|
||||
|
||||
// Cat will return a random cat breed
|
||||
func (f *Faker) Cat() string {
|
||||
return cat(f)
|
||||
}
|
||||
|
||||
func cat(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "cat"})
|
||||
}
|
||||
|
||||
// Dog will return a random dog breed
|
||||
func Dog() string {
|
||||
return dog(GlobalFaker)
|
||||
}
|
||||
|
||||
// Dog will return a random dog breed
|
||||
func (f *Faker) Dog() string {
|
||||
return dog(f)
|
||||
}
|
||||
|
||||
func dog(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "dog"})
|
||||
}
|
||||
|
||||
// Bird will return a random bird species
|
||||
func Bird() string {
|
||||
return bird(GlobalFaker)
|
||||
}
|
||||
|
||||
// Bird will return a random bird species
|
||||
func (f *Faker) Bird() string {
|
||||
return bird(f)
|
||||
}
|
||||
|
||||
func bird(f *Faker) string {
|
||||
return getRandValue(f, []string{"animal", "bird"})
|
||||
}
|
||||
|
||||
func addAnimalLookup() {
|
||||
AddFuncLookup("petname", Info{
|
||||
Display: "Pet Name",
|
||||
Category: "animal",
|
||||
Description: "Affectionate nickname given to a pet",
|
||||
Example: "Ozzy Pawsborne",
|
||||
Output: "string",
|
||||
Aliases: []string{"pet nickname", "animal name", "companion name", "friendly name", "affectionate name"},
|
||||
Keywords: []string{"pet", "name", "nickname", "affectionate", "animal", "companion", "friendly", "cute", "funny", "playful", "loving", "adorable"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return petName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("animal", Info{
|
||||
Display: "Animal",
|
||||
Category: "animal",
|
||||
Description: "Living creature with the ability to move, eat, and interact with its environment",
|
||||
Example: "elk",
|
||||
Output: "string",
|
||||
Aliases: []string{"wild animal", "living creature", "wildlife species", "animal species", "creature name"},
|
||||
Keywords: []string{"animal", "creature", "living", "move", "eat", "environment", "wildlife", "species", "fauna", "beast", "organism", "vertebrate", "invertebrate"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return animal(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("animaltype", Info{
|
||||
Display: "Animal Type",
|
||||
Category: "animal",
|
||||
Description: "Type of animal, such as mammals, birds, reptiles, etc.",
|
||||
Example: "amphibians",
|
||||
Output: "string",
|
||||
Aliases: []string{"animal classification", "species type", "taxonomic group", "animal category", "biological class"},
|
||||
Keywords: []string{"animal", "type", "mammals", "birds", "reptiles", "amphibians", "classification", "taxonomy", "phylum", "class", "order", "family", "genus", "species"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return animalType(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("farmanimal", Info{
|
||||
Display: "Farm Animal",
|
||||
Category: "animal",
|
||||
Description: "Animal name commonly found on a farm",
|
||||
Example: "Chicken",
|
||||
Output: "string",
|
||||
Aliases: []string{"livestock animal", "barnyard animal", "agricultural animal", "domestic animal", "farm livestock"},
|
||||
Keywords: []string{"farm", "animal", "livestock", "domestic", "agriculture", "commonly", "cattle", "barnyard", "herd", "poultry", "swine", "sheep", "goat", "horse", "pig"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return farmAnimal(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("cat", Info{
|
||||
Display: "Cat",
|
||||
Category: "animal",
|
||||
Description: "Various breeds that define different cats",
|
||||
Example: "Chausie",
|
||||
Output: "string",
|
||||
Aliases: []string{"cat breed", "feline breed", "domestic cat", "pet cat", "kitty breed"},
|
||||
Keywords: []string{"cat", "breed", "feline", "pet", "domestic", "various", "persian", "siamese", "maine", "coon", "tabby", "calico", "tuxedo", "kitten"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return cat(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("dog", Info{
|
||||
Display: "Dog",
|
||||
Category: "animal",
|
||||
Description: "Various breeds that define different dogs",
|
||||
Example: "Norwich Terrier",
|
||||
Output: "string",
|
||||
Aliases: []string{"dog breed", "canine breed", "domestic dog", "pet dog", "fido breed"},
|
||||
Keywords: []string{"dog", "breed", "canine", "pet", "domestic", "various", "labrador", "retriever", "terrier", "shepherd", "bulldog", "poodle", "puppy", "hound"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return dog(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("bird", Info{
|
||||
Display: "Bird",
|
||||
Category: "animal",
|
||||
Description: "Distinct species of birds",
|
||||
Example: "goose",
|
||||
Output: "string",
|
||||
Aliases: []string{"bird species", "avian species", "feathered animal", "winged creature", "bird type"},
|
||||
Keywords: []string{"bird", "species", "avian", "feather", "wing", "distinct", "sparrow", "eagle", "hawk", "owl", "duck", "goose", "parrot", "finch", "robin"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return bird(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
102
vendor/github.com/brianvoe/gofakeit/v7/app.go
generated
vendored
Normal file
102
vendor/github.com/brianvoe/gofakeit/v7/app.go
generated
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
// AppName will generate a random app name
|
||||
func AppName() string {
|
||||
return appName(GlobalFaker)
|
||||
}
|
||||
|
||||
// AppName will generate a random app name
|
||||
func (f *Faker) AppName() string {
|
||||
return appName(f)
|
||||
}
|
||||
|
||||
func appName(f *Faker) string {
|
||||
name := ""
|
||||
switch number(f, 1, 3) {
|
||||
case 1:
|
||||
name = noun(f) + verb(f)
|
||||
case 2:
|
||||
name = color(f) + noun(f)
|
||||
case 3:
|
||||
name = animal(f) + verb(f)
|
||||
}
|
||||
|
||||
return title(name)
|
||||
}
|
||||
|
||||
// AppVersion will generate a random app version
|
||||
func AppVersion() string {
|
||||
return appVersion(GlobalFaker)
|
||||
}
|
||||
|
||||
// AppVersion will generate a random app version
|
||||
func (f *Faker) AppVersion() string {
|
||||
return appVersion(f)
|
||||
}
|
||||
|
||||
func appVersion(f *Faker) string {
|
||||
return fmt.Sprintf("%d.%d.%d", number(f, 1, 5), number(f, 1, 20), number(f, 1, 20))
|
||||
}
|
||||
|
||||
// AppAuthor will generate a random company or person name
|
||||
func AppAuthor() string {
|
||||
return appAuthor(GlobalFaker)
|
||||
}
|
||||
|
||||
// AppAuthor will generate a random company or person name
|
||||
func (f *Faker) AppAuthor() string {
|
||||
return appAuthor(f)
|
||||
}
|
||||
|
||||
func appAuthor(f *Faker) string {
|
||||
if boolFunc(f) {
|
||||
return name(f)
|
||||
}
|
||||
|
||||
return company(f)
|
||||
}
|
||||
|
||||
func addAppLookup() {
|
||||
AddFuncLookup("appname", Info{
|
||||
Display: "App Name",
|
||||
Category: "app",
|
||||
Description: "Software program designed for a specific purpose or task on a computer or mobile device",
|
||||
Example: "Parkrespond",
|
||||
Output: "string",
|
||||
Aliases: []string{"software name", "application name", "mobile app name", "program title", "app title"},
|
||||
Keywords: []string{"app", "name", "software", "program", "application", "mobile", "device", "computer", "ios", "android", "desktop", "web", "platform", "title"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return appName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("appversion", Info{
|
||||
Display: "App Version",
|
||||
Category: "app",
|
||||
Description: "Particular release of an application in Semantic Versioning format",
|
||||
Example: "1.12.14",
|
||||
Output: "string",
|
||||
Aliases: []string{"semantic version", "app release", "software version", "version number", "release version"},
|
||||
Keywords: []string{"app", "version", "release", "semantic", "versioning", "application", "major", "minor", "patch", "build", "number", "format", "tag"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return appVersion(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("appauthor", Info{
|
||||
Display: "App Author",
|
||||
Category: "app",
|
||||
Description: "Person or group creating and developing an application",
|
||||
Example: "Qado Energy, Inc.",
|
||||
Output: "string",
|
||||
Aliases: []string{"app developer", "software author", "application creator", "program developer", "app creator"},
|
||||
Keywords: []string{"app", "author", "developer", "creator", "person", "company", "group", "creating", "programmer", "coder", "engineer", "team", "organization", "studio", "publisher"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return appAuthor(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
188
vendor/github.com/brianvoe/gofakeit/v7/auth.go
generated
vendored
Normal file
188
vendor/github.com/brianvoe/gofakeit/v7/auth.go
generated
vendored
Normal file
@@ -0,0 +1,188 @@
|
||||
package gofakeit
|
||||
|
||||
// Username will generate a random username based upon picking a random lastname and random numbers at the end
|
||||
func Username() string {
|
||||
return username(GlobalFaker)
|
||||
}
|
||||
|
||||
// Username will generate a random username based upon picking a random lastname and random numbers at the end
|
||||
func (f *Faker) Username() string {
|
||||
return username(f)
|
||||
}
|
||||
|
||||
func username(f *Faker) string {
|
||||
return getRandValue(f, []string{"person", "last"}) + replaceWithNumbers(f, "####")
|
||||
}
|
||||
|
||||
// Password will generate a random password.
|
||||
// Minimum number length of 5 if less than.
|
||||
func Password(lower bool, upper bool, numeric bool, special bool, space bool, num int) string {
|
||||
return password(GlobalFaker, lower, upper, numeric, special, space, num)
|
||||
}
|
||||
|
||||
// Password will generate a random password.
|
||||
// Minimum number length of 5 if less than.
|
||||
func (f *Faker) Password(lower bool, upper bool, numeric bool, special bool, space bool, num int) string {
|
||||
return password(f, lower, upper, numeric, special, space, num)
|
||||
}
|
||||
|
||||
func password(f *Faker, lower bool, upper bool, numeric bool, special bool, space bool, num int) string {
|
||||
// Make sure the num minimum is at least 5
|
||||
if num < 5 {
|
||||
num = 5
|
||||
}
|
||||
|
||||
// Setup weights
|
||||
items := make([]any, 0)
|
||||
weights := make([]float32, 0)
|
||||
if lower {
|
||||
items = append(items, "l")
|
||||
weights = append(weights, 4)
|
||||
}
|
||||
if upper {
|
||||
items = append(items, "u")
|
||||
weights = append(weights, 4)
|
||||
}
|
||||
if numeric {
|
||||
items = append(items, "n")
|
||||
weights = append(weights, 3)
|
||||
}
|
||||
if special {
|
||||
items = append(items, "e")
|
||||
weights = append(weights, 2)
|
||||
}
|
||||
if space {
|
||||
items = append(items, "a")
|
||||
weights = append(weights, 1)
|
||||
}
|
||||
|
||||
// If no items are selected then default to lower, upper, numeric
|
||||
if len(items) == 0 {
|
||||
items = append(items, "l", "u", "n")
|
||||
weights = append(weights, 4, 4, 3)
|
||||
}
|
||||
|
||||
// Create byte slice
|
||||
b := make([]byte, num)
|
||||
|
||||
for i := 0; i <= num-1; i++ {
|
||||
// Run weighted
|
||||
weight, _ := weighted(f, items, weights)
|
||||
|
||||
switch weight.(string) {
|
||||
case "l":
|
||||
b[i] = lowerStr[f.Int64()%int64(len(lowerStr))]
|
||||
case "u":
|
||||
b[i] = upperStr[f.Int64()%int64(len(upperStr))]
|
||||
case "n":
|
||||
b[i] = numericStr[f.Int64()%int64(len(numericStr))]
|
||||
case "e":
|
||||
b[i] = specialSafeStr[f.Int64()%int64(len(specialSafeStr))]
|
||||
case "a":
|
||||
b[i] = spaceStr[f.Int64()%int64(len(spaceStr))]
|
||||
}
|
||||
}
|
||||
|
||||
// Shuffle bytes
|
||||
for i := range b {
|
||||
j := f.IntN(i + 1)
|
||||
b[i], b[j] = b[j], b[i]
|
||||
}
|
||||
|
||||
// Replace first or last character if it's a space, and other options are available
|
||||
if b[0] == ' ' {
|
||||
b[0] = password(f, lower, upper, numeric, special, false, 1)[0]
|
||||
}
|
||||
if b[len(b)-1] == ' ' {
|
||||
b[len(b)-1] = password(f, lower, upper, numeric, special, false, 1)[0]
|
||||
}
|
||||
|
||||
return string(b)
|
||||
}
|
||||
|
||||
func addAuthLookup() {
|
||||
AddFuncLookup("username", Info{
|
||||
Display: "Username",
|
||||
Category: "auth",
|
||||
Description: "Unique identifier assigned to a user for accessing an account or system",
|
||||
Example: "Daniel1364",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"user name",
|
||||
"login name",
|
||||
"account username",
|
||||
"account login",
|
||||
"screen name",
|
||||
"user handle",
|
||||
},
|
||||
Keywords: []string{
|
||||
"username", "login", "handle", "userid", "screenname",
|
||||
"user", "account", "credential", "signin", "alias", "profile", "uid",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return username(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("password", Info{
|
||||
Display: "Password",
|
||||
Category: "auth",
|
||||
Description: "Secret word or phrase used to authenticate access to a system or account",
|
||||
Example: "EEP+wwpk 4lU-eHNXlJZ4n K9%v&TZ9e",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"user password",
|
||||
"account password",
|
||||
"login password",
|
||||
"secret phrase",
|
||||
"auth secret",
|
||||
},
|
||||
Keywords: []string{
|
||||
"password", "passphrase", "pwd", "secret",
|
||||
"credential", "authentication", "auth",
|
||||
"security", "signin", "login",
|
||||
"access", "key", "token", "hash", "encryption",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "lower", Display: "Lower", Type: "bool", Default: "true", Description: "Whether or not to add lower case characters"},
|
||||
{Field: "upper", Display: "Upper", Type: "bool", Default: "true", Description: "Whether or not to add upper case characters"},
|
||||
{Field: "numeric", Display: "Numeric", Type: "bool", Default: "true", Description: "Whether or not to add numeric characters"},
|
||||
{Field: "special", Display: "Special", Type: "bool", Default: "true", Description: "Whether or not to add special characters"},
|
||||
{Field: "space", Display: "Space", Type: "bool", Default: "false", Description: "Whether or not to add spaces"},
|
||||
{Field: "length", Display: "Length", Type: "int", Default: "12", Description: "Number of characters in password"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
lower, err := info.GetBool(m, "lower")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
upper, err := info.GetBool(m, "upper")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
numeric, err := info.GetBool(m, "numeric")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
special, err := info.GetBool(m, "special")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
space, err := info.GetBool(m, "space")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
length, err := info.GetInt(m, "length")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return password(f, lower, upper, numeric, special, space, length), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
223
vendor/github.com/brianvoe/gofakeit/v7/beer.go
generated
vendored
Normal file
223
vendor/github.com/brianvoe/gofakeit/v7/beer.go
generated
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// BeerName will return a random beer name
|
||||
func BeerName() string {
|
||||
return beerName(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerName will return a random beer name
|
||||
func (f *Faker) BeerName() string {
|
||||
return beerName(f)
|
||||
}
|
||||
|
||||
func beerName(f *Faker) string {
|
||||
return getRandValue(f, []string{"beer", "name"})
|
||||
}
|
||||
|
||||
// BeerStyle will return a random beer style
|
||||
func BeerStyle() string {
|
||||
return beerStyle(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerStyle will return a random beer style
|
||||
func (f *Faker) BeerStyle() string {
|
||||
return beerStyle(f)
|
||||
}
|
||||
|
||||
func beerStyle(f *Faker) string {
|
||||
return getRandValue(f, []string{"beer", "style"})
|
||||
}
|
||||
|
||||
// BeerHop will return a random beer hop
|
||||
func BeerHop() string {
|
||||
return beerHop(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerHop will return a random beer hop
|
||||
func (f *Faker) BeerHop() string {
|
||||
return beerHop(f)
|
||||
}
|
||||
|
||||
func beerHop(f *Faker) string {
|
||||
return getRandValue(f, []string{"beer", "hop"})
|
||||
}
|
||||
|
||||
// BeerYeast will return a random beer yeast
|
||||
func BeerYeast() string {
|
||||
return beerYeast(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerYeast will return a random beer yeast
|
||||
func (f *Faker) BeerYeast() string {
|
||||
return beerYeast(f)
|
||||
}
|
||||
|
||||
func beerYeast(f *Faker) string {
|
||||
return getRandValue(f, []string{"beer", "yeast"})
|
||||
}
|
||||
|
||||
// BeerMalt will return a random beer malt
|
||||
func BeerMalt() string {
|
||||
return beerMalt(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerMalt will return a random beer malt
|
||||
func (f *Faker) BeerMalt() string {
|
||||
return beerMalt(f)
|
||||
}
|
||||
|
||||
func beerMalt(f *Faker) string {
|
||||
return getRandValue(f, []string{"beer", "malt"})
|
||||
}
|
||||
|
||||
// BeerAlcohol will return a random beer alcohol level between 2.0 and 10.0
|
||||
func BeerAlcohol() string {
|
||||
return beerAlcohol(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerAlcohol will return a random beer alcohol level between 2.0 and 10.0
|
||||
func (f *Faker) BeerAlcohol() string {
|
||||
return beerAlcohol(f)
|
||||
}
|
||||
|
||||
func beerAlcohol(f *Faker) string {
|
||||
return strconv.FormatFloat(float64Range(f, 2.0, 10.0), 'f', 1, 64) + "%"
|
||||
}
|
||||
|
||||
// BeerIbu will return a random beer ibu value between 10 and 100
|
||||
func BeerIbu() string {
|
||||
return beerIbu(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerIbu will return a random beer ibu value between 10 and 100
|
||||
func (f *Faker) BeerIbu() string {
|
||||
return beerIbu(f)
|
||||
}
|
||||
|
||||
func beerIbu(f *Faker) string {
|
||||
return strconv.Itoa(randIntRange(f, 10, 100)) + " IBU"
|
||||
}
|
||||
|
||||
// BeerBlg will return a random beer blg between 5.0 and 20.0
|
||||
func BeerBlg() string {
|
||||
return beerBlg(GlobalFaker)
|
||||
}
|
||||
|
||||
// BeerBlg will return a random beer blg between 5.0 and 20.0
|
||||
func (f *Faker) BeerBlg() string {
|
||||
return beerBlg(f)
|
||||
}
|
||||
|
||||
func beerBlg(f *Faker) string {
|
||||
return strconv.FormatFloat(float64Range(f, 5.0, 20.0), 'f', 1, 64) + "°Blg"
|
||||
}
|
||||
|
||||
func addBeerLookup() {
|
||||
AddFuncLookup("beername", Info{
|
||||
Display: "Beer Name",
|
||||
Category: "beer",
|
||||
Description: "Specific brand or variety of beer",
|
||||
Example: "Duvel",
|
||||
Output: "string",
|
||||
Aliases: []string{"brand", "brewery", "label", "craft", "microbrew"},
|
||||
Keywords: []string{"beer", "name", "variety", "specific", "alcoholic", "beverage", "lager", "ale", "stout", "pilsner", "ipa"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beerstyle", Info{
|
||||
Display: "Beer Style",
|
||||
Category: "beer",
|
||||
Description: "Distinct characteristics and flavors of beer",
|
||||
Example: "European Amber Lager",
|
||||
Output: "string",
|
||||
Aliases: []string{"style", "type", "category", "classification", "variety"},
|
||||
Keywords: []string{"beer", "characteristics", "flavors", "distinct", "lager", "ale", "stout", "pilsner", "porter", "wheat", "amber"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerStyle(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beerhop", Info{
|
||||
Display: "Beer Hop",
|
||||
Category: "beer",
|
||||
Description: "The flower used in brewing to add flavor, aroma, and bitterness to beer",
|
||||
Example: "Glacier",
|
||||
Output: "string",
|
||||
Aliases: []string{"hop", "flower", "plant", "cone", "vine"},
|
||||
Keywords: []string{"beer", "brewing", "flavor", "aroma", "bitterness", "ingredient", "humulus", "lupulus", "cascade", "citra", "mosaic"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerHop(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beeryeast", Info{
|
||||
Display: "Beer Yeast",
|
||||
Category: "beer",
|
||||
Description: "Microorganism used in brewing to ferment sugars, producing alcohol and carbonation in beer",
|
||||
Example: "1388 - Belgian Strong Ale",
|
||||
Output: "string",
|
||||
Aliases: []string{"yeast", "fungus", "microorganism", "culture", "strain"},
|
||||
Keywords: []string{"beer", "brewing", "ferment", "sugars", "alcohol", "carbonation", "ingredient", "saccharomyces", "cerevisiae", "belgian", "ale"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerYeast(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beermalt", Info{
|
||||
Display: "Beer Malt",
|
||||
Category: "beer",
|
||||
Description: "Processed barley or other grains, provides sugars for fermentation and flavor to beer",
|
||||
Example: "Munich",
|
||||
Output: "string",
|
||||
Aliases: []string{"malt", "barley", "grain", "cereal", "kernel"},
|
||||
Keywords: []string{"beer", "sugars", "fermentation", "flavor", "processed", "ingredient", "munich", "pale", "crystal", "roasted", "wheat", "rye"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerMalt(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beeralcohol", Info{
|
||||
Display: "Beer Alcohol",
|
||||
Category: "beer",
|
||||
Description: "Measures the alcohol content in beer",
|
||||
Example: "2.7%",
|
||||
Output: "string",
|
||||
Aliases: []string{"alcohol", "abv", "strength", "proof", "percentage"},
|
||||
Keywords: []string{"beer", "content", "measure", "volume", "concentration", "level", "degree", "potency"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerAlcohol(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beeribu", Info{
|
||||
Display: "Beer IBU",
|
||||
Category: "beer",
|
||||
Description: "Scale measuring bitterness of beer from hops",
|
||||
Example: "29 IBU",
|
||||
Output: "string",
|
||||
Aliases: []string{"ibu", "bitterness", "scale", "units", "measurement"},
|
||||
Keywords: []string{"beer", "hops", "measuring", "international", "bittering", "alpha", "acid", "level", "intensity"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerIbu(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("beerblg", Info{
|
||||
Display: "Beer BLG",
|
||||
Category: "beer",
|
||||
Description: "Scale indicating the concentration of extract in worts",
|
||||
Example: "6.4°Blg",
|
||||
Output: "string",
|
||||
Aliases: []string{"blg", "density", "gravity", "extract", "concentration"},
|
||||
Keywords: []string{"beer", "worts", "scale", "indicating", "balling", "plato", "sugar", "soluble", "solids", "degree"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return beerBlg(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
96
vendor/github.com/brianvoe/gofakeit/v7/book.go
generated
vendored
Normal file
96
vendor/github.com/brianvoe/gofakeit/v7/book.go
generated
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
package gofakeit
|
||||
|
||||
func BookTitle() string { return bookTitle(GlobalFaker) }
|
||||
|
||||
func (f *Faker) BookTitle() string { return bookTitle(f) }
|
||||
|
||||
func bookTitle(f *Faker) string { return getRandValue(f, []string{"book", "title"}) }
|
||||
|
||||
func BookAuthor() string { return bookAuthor(GlobalFaker) }
|
||||
|
||||
func (f *Faker) BookAuthor() string { return bookAuthor(f) }
|
||||
|
||||
func bookAuthor(f *Faker) string { return getRandValue(f, []string{"book", "author"}) }
|
||||
|
||||
func BookGenre() string { return bookGenre(GlobalFaker) }
|
||||
|
||||
func (f *Faker) BookGenre() string { return bookGenre(f) }
|
||||
|
||||
func bookGenre(f *Faker) string { return getRandValue(f, []string{"book", "genre"}) }
|
||||
|
||||
type BookInfo struct {
|
||||
Title string `json:"title" xml:"name"`
|
||||
Author string `json:"author" xml:"author"`
|
||||
Genre string `json:"genre" xml:"genre"`
|
||||
}
|
||||
|
||||
func Book() *BookInfo { return book(GlobalFaker) }
|
||||
|
||||
func (f *Faker) Book() *BookInfo { return book(f) }
|
||||
|
||||
func book(f *Faker) *BookInfo {
|
||||
return &BookInfo{
|
||||
Title: bookTitle(f),
|
||||
Author: bookAuthor(f),
|
||||
Genre: bookGenre(f),
|
||||
}
|
||||
}
|
||||
|
||||
func addBookLookup() {
|
||||
AddFuncLookup("book", Info{
|
||||
Display: "Book",
|
||||
Category: "book",
|
||||
Description: "Written or printed work consisting of pages bound together, covering various subjects or stories",
|
||||
Example: `{
|
||||
"title": "Anna Karenina",
|
||||
"author": "Toni Morrison",
|
||||
"genre": "Thriller"
|
||||
}`,
|
||||
Output: "map[string]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"printed", "pages", "bound", "subjects", "stories", "literature", "text"},
|
||||
Keywords: []string{"book", "written", "work", "consisting", "anna", "karenina", "toni", "morrison", "thriller"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return book(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("booktitle", Info{
|
||||
Display: "Title",
|
||||
Category: "book",
|
||||
Description: "The specific name given to a book",
|
||||
Example: "Hamlet",
|
||||
Output: "string",
|
||||
Aliases: []string{"title", "name", "specific", "given", "heading"},
|
||||
Keywords: []string{"book", "identification", "hamlet", "naming", "designation", "label", "caption"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return bookTitle(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("bookauthor", Info{
|
||||
Display: "Author",
|
||||
Category: "book",
|
||||
Description: "The individual who wrote or created the content of a book",
|
||||
Example: "Mark Twain",
|
||||
Output: "string",
|
||||
Aliases: []string{"author", "writer", "creator", "individual", "content", "literary"},
|
||||
Keywords: []string{"book", "wrote", "created", "mark", "twain", "composer", "originator", "penned"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return bookAuthor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("bookgenre", Info{
|
||||
Display: "Genre",
|
||||
Category: "book",
|
||||
Description: "Category or type of book defined by its content, style, or form",
|
||||
Example: "Adventure",
|
||||
Output: "string",
|
||||
Aliases: []string{"type", "content", "style", "form", "literature", "classification"},
|
||||
Keywords: []string{"book", "category", "defined", "adventure", "fiction", "non-fiction", "mystery", "romance", "sci-fi"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return bookGenre(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
169
vendor/github.com/brianvoe/gofakeit/v7/car.go
generated
vendored
Normal file
169
vendor/github.com/brianvoe/gofakeit/v7/car.go
generated
vendored
Normal file
@@ -0,0 +1,169 @@
|
||||
package gofakeit
|
||||
|
||||
// CarInfo is a struct dataset of all car information
|
||||
type CarInfo struct {
|
||||
Type string `json:"type" xml:"type"`
|
||||
Fuel string `json:"fuel" xml:"fuel"`
|
||||
Transmission string `json:"transmission" xml:"transmission"`
|
||||
Brand string `json:"brand" xml:"brand"`
|
||||
Model string `json:"model" xml:"model"`
|
||||
Year int `json:"year" xml:"year"`
|
||||
}
|
||||
|
||||
// Car will generate a struct with car information
|
||||
func Car() *CarInfo { return car(GlobalFaker) }
|
||||
|
||||
// Car will generate a struct with car information
|
||||
func (f *Faker) Car() *CarInfo { return car(f) }
|
||||
|
||||
func car(f *Faker) *CarInfo {
|
||||
return &CarInfo{
|
||||
Type: carType(f),
|
||||
Fuel: carFuelType(f),
|
||||
Transmission: carTransmissionType(f),
|
||||
Brand: carMaker(f),
|
||||
Model: carModel(f),
|
||||
Year: year(f),
|
||||
}
|
||||
}
|
||||
|
||||
// CarType will generate a random car type string
|
||||
func CarType() string { return carType(GlobalFaker) }
|
||||
|
||||
// CarType will generate a random car type string
|
||||
func (f *Faker) CarType() string { return carType(f) }
|
||||
|
||||
func carType(f *Faker) string { return getRandValue(f, []string{"car", "type"}) }
|
||||
|
||||
// CarFuelType will return a random fuel type
|
||||
func CarFuelType() string { return carFuelType(GlobalFaker) }
|
||||
|
||||
// CarFuelType will return a random fuel type
|
||||
func (f *Faker) CarFuelType() string { return carFuelType(f) }
|
||||
|
||||
func carFuelType(f *Faker) string { return getRandValue(f, []string{"car", "fuel_type"}) }
|
||||
|
||||
// CarTransmissionType will return a random transmission type
|
||||
func CarTransmissionType() string { return carTransmissionType(GlobalFaker) }
|
||||
|
||||
// CarTransmissionType will return a random transmission type
|
||||
func (f *Faker) CarTransmissionType() string { return carTransmissionType(f) }
|
||||
|
||||
func carTransmissionType(f *Faker) string {
|
||||
return getRandValue(f, []string{"car", "transmission_type"})
|
||||
}
|
||||
|
||||
// CarMaker will return a random car maker
|
||||
func CarMaker() string { return carMaker(GlobalFaker) }
|
||||
|
||||
// CarMaker will return a random car maker
|
||||
func (f *Faker) CarMaker() string { return carMaker(f) }
|
||||
|
||||
func carMaker(f *Faker) string { return getRandValue(f, []string{"car", "maker"}) }
|
||||
|
||||
// CarModel will return a random car model
|
||||
func CarModel() string { return carModel(GlobalFaker) }
|
||||
|
||||
// CarModel will return a random car model
|
||||
func (f *Faker) CarModel() string { return carModel(f) }
|
||||
|
||||
func carModel(f *Faker) string { return getRandValue(f, []string{"car", "model"}) }
|
||||
|
||||
func addCarLookup() {
|
||||
AddFuncLookup("car", Info{
|
||||
Display: "Car",
|
||||
Category: "car",
|
||||
Description: "Wheeled motor vehicle used for transportation",
|
||||
Example: `{
|
||||
"type": "Passenger car mini",
|
||||
"fuel": "Gasoline",
|
||||
"transmission": "Automatic",
|
||||
"brand": "Fiat",
|
||||
"model": "Freestyle Fwd",
|
||||
"year": 1991
|
||||
}`,
|
||||
Output: "map[string]any",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"vehicle", "automobile", "transportation", "motor", "wheeled"},
|
||||
Keywords: []string{"car", "used", "passenger", "mini", "gasoline", "automatic", "fiat", "freestyle", "fwd"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return car(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("cartype", Info{
|
||||
Display: "Car Type",
|
||||
Category: "car",
|
||||
Description: "Classification of cars based on size, use, or body style",
|
||||
Example: "Passenger car mini",
|
||||
Output: "string",
|
||||
Aliases: []string{"classification", "size", "body", "style", "vehicle", "category"},
|
||||
Keywords: []string{"car", "based", "passenger", "mini", "suv", "sedan", "hatchback", "convertible", "coupe"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return carType(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("carfueltype", Info{
|
||||
Display: "Car Fuel Type",
|
||||
Category: "car",
|
||||
Description: "Type of energy source a car uses",
|
||||
Example: "CNG",
|
||||
Output: "string",
|
||||
Aliases: []string{"energy", "source", "power", "vehicle"},
|
||||
Keywords: []string{"car", "fuel", "uses", "cng", "gasoline", "diesel", "electric", "hybrid", "hydrogen", "ethanol"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return carFuelType(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("cartransmissiontype", Info{
|
||||
Display: "Car Transmission Type",
|
||||
Category: "car",
|
||||
Description: "Mechanism a car uses to transmit power from the engine to the wheels",
|
||||
Example: "Manual",
|
||||
Output: "string",
|
||||
Aliases: []string{"mechanism", "power", "engine", "wheels", "vehicle"},
|
||||
Keywords: []string{"car", "transmission", "transmit", "manual", "automatic", "cvt", "semi-automatic", "gearbox", "clutch"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return carTransmissionType(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("carmaker", Info{
|
||||
Display: "Car Maker",
|
||||
Category: "car",
|
||||
Description: "Company or brand that manufactures and designs cars",
|
||||
Example: "Nissan",
|
||||
Output: "string",
|
||||
Aliases: []string{"company", "brand", "manufacturer", "designer", "vehicle", "producer"},
|
||||
Keywords: []string{"car", "maker", "manufactures", "nissan", "toyota", "honda", "ford", "bmw", "mercedes", "audi"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return carMaker(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("carmodel", Info{
|
||||
Display: "Car Model",
|
||||
Category: "car",
|
||||
Description: "Specific design or version of a car produced by a manufacturer",
|
||||
Example: "Aveo",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"vehicle model",
|
||||
"auto model",
|
||||
"car type",
|
||||
"car version",
|
||||
"automobile model",
|
||||
},
|
||||
Keywords: []string{
|
||||
"car", "model", "vehicle", "auto", "automobile",
|
||||
"type", "edition", "variant", "series",
|
||||
"sedan", "suv", "hatchback", "coupe", "convertible",
|
||||
"civic", "camry", "accord", "corolla", "mustang", "prius",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return carModel(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
68
vendor/github.com/brianvoe/gofakeit/v7/celebrity.go
generated
vendored
Normal file
68
vendor/github.com/brianvoe/gofakeit/v7/celebrity.go
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
package gofakeit
|
||||
|
||||
// CelebrityActor will generate a random celebrity actor
|
||||
func CelebrityActor() string { return celebrityActor(GlobalFaker) }
|
||||
|
||||
// CelebrityActor will generate a random celebrity actor
|
||||
func (f *Faker) CelebrityActor() string { return celebrityActor(f) }
|
||||
|
||||
func celebrityActor(f *Faker) string { return getRandValue(f, []string{"celebrity", "actor"}) }
|
||||
|
||||
// CelebrityBusiness will generate a random celebrity business person
|
||||
func CelebrityBusiness() string { return celebrityBusiness(GlobalFaker) }
|
||||
|
||||
// CelebrityBusiness will generate a random celebrity business person
|
||||
func (f *Faker) CelebrityBusiness() string { return celebrityBusiness(f) }
|
||||
|
||||
func celebrityBusiness(f *Faker) string {
|
||||
return getRandValue(f, []string{"celebrity", "business"})
|
||||
}
|
||||
|
||||
// CelebritySport will generate a random celebrity sport person
|
||||
func CelebritySport() string { return celebritySport(GlobalFaker) }
|
||||
|
||||
// CelebritySport will generate a random celebrity sport person
|
||||
func (f *Faker) CelebritySport() string { return celebritySport(f) }
|
||||
|
||||
func celebritySport(f *Faker) string { return getRandValue(f, []string{"celebrity", "sport"}) }
|
||||
|
||||
func addCelebrityLookup() {
|
||||
AddFuncLookup("celebrityactor", Info{
|
||||
Display: "Celebrity Actor",
|
||||
Category: "celebrity",
|
||||
Description: "Famous person known for acting in films, television, or theater",
|
||||
Example: "Brad Pitt",
|
||||
Output: "string",
|
||||
Aliases: []string{"actor", "famous", "films", "television", "theater", "entertainment"},
|
||||
Keywords: []string{"celebrity", "known", "brad", "pitt", "hollywood", "movie", "star", "performer", "artist"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return celebrityActor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("celebritybusiness", Info{
|
||||
Display: "Celebrity Business",
|
||||
Category: "celebrity",
|
||||
Description: "High-profile individual known for significant achievements in business or entrepreneurship",
|
||||
Example: "Elon Musk",
|
||||
Output: "string",
|
||||
Aliases: []string{"business", "entrepreneur", "high-profile", "achievements", "executive"},
|
||||
Keywords: []string{"celebrity", "significant", "elon", "musk", "ceo", "founder", "investor", "tycoon", "magnate"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return celebrityBusiness(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("celebritysport", Info{
|
||||
Display: "Celebrity Sport",
|
||||
Category: "celebrity",
|
||||
Description: "Famous athlete known for achievements in a particular sport",
|
||||
Example: "Michael Phelps",
|
||||
Output: "string",
|
||||
Aliases: []string{"athlete", "famous", "achievements", "competition", "athletic", "player"},
|
||||
Keywords: []string{"celebrity", "particular", "michael", "phelps", "olympics", "champion", "medalist", "record", "holder"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return celebritySport(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
127
vendor/github.com/brianvoe/gofakeit/v7/color.go
generated
vendored
Normal file
127
vendor/github.com/brianvoe/gofakeit/v7/color.go
generated
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
// Color will generate a random color string
|
||||
func Color() string { return color(GlobalFaker) }
|
||||
|
||||
// Color will generate a random color string
|
||||
func (f *Faker) Color() string { return color(f) }
|
||||
|
||||
func color(f *Faker) string { return getRandValue(f, []string{"color", "full"}) }
|
||||
|
||||
// NiceColor will generate a random safe color string
|
||||
func NiceColors() []string { return niceColors(GlobalFaker) }
|
||||
|
||||
// NiceColor will generate a random safe color string
|
||||
func (f *Faker) NiceColors() []string { return niceColors(f) }
|
||||
|
||||
func niceColors(f *Faker) []string {
|
||||
return data.ColorsNice[randIntRange(f, 0, len(data.ColorsNice)-1)]
|
||||
}
|
||||
|
||||
// SafeColor will generate a random safe color string
|
||||
func SafeColor() string { return safeColor(GlobalFaker) }
|
||||
|
||||
// SafeColor will generate a random safe color string
|
||||
func (f *Faker) SafeColor() string { return safeColor(f) }
|
||||
|
||||
func safeColor(f *Faker) string { return getRandValue(f, []string{"color", "safe"}) }
|
||||
|
||||
// HexColor will generate a random hexadecimal color string
|
||||
func HexColor() string { return hexColor(GlobalFaker) }
|
||||
|
||||
// HexColor will generate a random hexadecimal color string
|
||||
func (f *Faker) HexColor() string { return hexColor(f) }
|
||||
|
||||
func hexColor(f *Faker) string {
|
||||
color := make([]byte, 6)
|
||||
hashQuestion := []byte("?#")
|
||||
for i := 0; i < 6; i++ {
|
||||
color[i] = hashQuestion[f.IntN(2)]
|
||||
}
|
||||
|
||||
return "#" + replaceWithHexLetters(f, replaceWithNumbers(f, string(color)))
|
||||
}
|
||||
|
||||
// RGBColor will generate a random int slice color
|
||||
func RGBColor() []int { return rgbColor(GlobalFaker) }
|
||||
|
||||
// RGBColor will generate a random int slice color
|
||||
func (f *Faker) RGBColor() []int { return rgbColor(f) }
|
||||
|
||||
func rgbColor(f *Faker) []int {
|
||||
return []int{randIntRange(f, 0, 255), randIntRange(f, 0, 255), randIntRange(f, 0, 255)}
|
||||
}
|
||||
|
||||
func addColorLookup() {
|
||||
AddFuncLookup("color", Info{
|
||||
Display: "Color",
|
||||
Category: "color",
|
||||
Description: "Hue seen by the eye, returns the name of the color like red or blue",
|
||||
Example: "MediumOrchid",
|
||||
Output: "string",
|
||||
Aliases: []string{"color name", "hue name", "visual color", "shade name", "color label"},
|
||||
Keywords: []string{"color", "red", "blue", "green", "yellow", "purple", "orange", "pink", "hue", "chroma", "shade", "tone", "css", "name"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return color(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("nicecolors", Info{
|
||||
Display: "Nice Colors",
|
||||
Category: "color",
|
||||
Description: "Attractive and appealing combinations of colors, returns a list of color hex codes",
|
||||
Example: `["#cfffdd","#b4dec1","#5c5863","#a85163","#ff1f4c"]`,
|
||||
Output: "[]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"color palette", "nice palette", "harmonious colors", "aesthetic palette", "design colors"},
|
||||
Keywords: []string{"nice", "colors", "palette", "array", "hex", "design", "aesthetic", "beautiful", "harmonious", "scheme", "ui", "ux"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return niceColors(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("safecolor", Info{
|
||||
Display: "Safe Color",
|
||||
Category: "color",
|
||||
Description: "Colors displayed consistently on different web browsers and devices",
|
||||
Example: "black",
|
||||
Output: "string",
|
||||
Aliases: []string{"web safe color", "browser safe", "cross platform color", "universal color", "standard color"},
|
||||
Keywords: []string{"safe", "color", "cross-platform", "css", "html", "compatible", "browser", "device", "universal", "stable", "standard"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return safeColor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hexcolor", Info{
|
||||
Display: "Hex Color",
|
||||
Category: "color",
|
||||
Description: "Six-digit hexadecimal code representing a color in the RGB color model",
|
||||
Example: "#a99fb4",
|
||||
Output: "string",
|
||||
Aliases: []string{"hex color code", "css hex", "html hex", "web hex", "hexadecimal color"},
|
||||
Keywords: []string{"hex", "hexcolor", "color", "rgb", "six-digit", "web", "css", "html", "design", "hexadecimal", "hash", "code"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hexColor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("rgbcolor", Info{
|
||||
Display: "RGB Color",
|
||||
Category: "color",
|
||||
Description: "Color defined by red, green, and blue light values",
|
||||
Example: "[85, 224, 195]",
|
||||
Output: "[]int",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"rgb triplet", "rgb array", "rgb value", "red green blue", "rgb color code"},
|
||||
Keywords: []string{"rgb", "color", "red", "green", "blue", "triplet", "digital", "screen", "display", "primary", "additive", "value", "css"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return rgbColor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
357
vendor/github.com/brianvoe/gofakeit/v7/company.go
generated
vendored
Normal file
357
vendor/github.com/brianvoe/gofakeit/v7/company.go
generated
vendored
Normal file
@@ -0,0 +1,357 @@
|
||||
package gofakeit
|
||||
|
||||
// Company will generate a random company name string
|
||||
func Company() string { return company(GlobalFaker) }
|
||||
|
||||
// Company will generate a random company name string
|
||||
func (f *Faker) Company() string { return company(f) }
|
||||
|
||||
func company(f *Faker) string { return getRandValue(f, []string{"company", "name"}) }
|
||||
|
||||
// CompanySuffix will generate a random company suffix string
|
||||
func CompanySuffix() string { return companySuffix(GlobalFaker) }
|
||||
|
||||
// CompanySuffix will generate a random company suffix string
|
||||
func (f *Faker) CompanySuffix() string { return companySuffix(f) }
|
||||
|
||||
func companySuffix(f *Faker) string { return getRandValue(f, []string{"company", "suffix"}) }
|
||||
|
||||
// Blurb will generate a random company blurb string
|
||||
func Blurb() string { return blurb(GlobalFaker) }
|
||||
|
||||
func (f *Faker) Blurb() string { return blurb(f) }
|
||||
|
||||
func blurb(f *Faker) string { return getRandValue(f, []string{"company", "blurb"}) }
|
||||
|
||||
// BuzzWord will generate a random company buzz word string
|
||||
func BuzzWord() string { return buzzWord(GlobalFaker) }
|
||||
|
||||
// BuzzWord will generate a random company buzz word string
|
||||
func (f *Faker) BuzzWord() string { return buzzWord(f) }
|
||||
|
||||
func buzzWord(f *Faker) string { return getRandValue(f, []string{"company", "buzzwords"}) }
|
||||
|
||||
// BS will generate a random company bs string
|
||||
func BS() string { return bs(GlobalFaker) }
|
||||
|
||||
// BS will generate a random company bs string
|
||||
func (f *Faker) BS() string { return bs(f) }
|
||||
|
||||
func bs(f *Faker) string { return getRandValue(f, []string{"company", "bs"}) }
|
||||
|
||||
// JobInfo is a struct of job information
|
||||
type JobInfo struct {
|
||||
Company string `json:"company" xml:"company"`
|
||||
Title string `json:"title" xml:"title"`
|
||||
Descriptor string `json:"descriptor" xml:"descriptor"`
|
||||
Level string `json:"level" xml:"level"`
|
||||
}
|
||||
|
||||
// Job will generate a struct with random job information
|
||||
func Job() *JobInfo { return job(GlobalFaker) }
|
||||
|
||||
// Job will generate a struct with random job information
|
||||
func (f *Faker) Job() *JobInfo { return job(f) }
|
||||
|
||||
func job(f *Faker) *JobInfo {
|
||||
return &JobInfo{
|
||||
Company: company(f),
|
||||
Title: jobTitle(f),
|
||||
Descriptor: jobDescriptor(f),
|
||||
Level: jobLevel(f),
|
||||
}
|
||||
}
|
||||
|
||||
// JobTitle will generate a random job title string
|
||||
func JobTitle() string { return jobTitle(GlobalFaker) }
|
||||
|
||||
// JobTitle will generate a random job title string
|
||||
func (f *Faker) JobTitle() string { return jobTitle(f) }
|
||||
|
||||
func jobTitle(f *Faker) string { return getRandValue(f, []string{"job", "title"}) }
|
||||
|
||||
// JobDescriptor will generate a random job descriptor string
|
||||
func JobDescriptor() string { return jobDescriptor(GlobalFaker) }
|
||||
|
||||
// JobDescriptor will generate a random job descriptor string
|
||||
func (f *Faker) JobDescriptor() string { return jobDescriptor(f) }
|
||||
|
||||
func jobDescriptor(f *Faker) string { return getRandValue(f, []string{"job", "descriptor"}) }
|
||||
|
||||
// JobLevel will generate a random job level string
|
||||
func JobLevel() string { return jobLevel(GlobalFaker) }
|
||||
|
||||
// JobLevel will generate a random job level string
|
||||
func (f *Faker) JobLevel() string { return jobLevel(f) }
|
||||
|
||||
func jobLevel(f *Faker) string { return getRandValue(f, []string{"job", "level"}) }
|
||||
|
||||
// Slogan will generate a random company slogan
|
||||
func Slogan() string { return slogan(GlobalFaker) }
|
||||
|
||||
// Slogan will generate a random company slogan
|
||||
func (f *Faker) Slogan() string { return slogan(f) }
|
||||
|
||||
// Slogan will generate a random company slogan
|
||||
func slogan(f *Faker) string {
|
||||
slogan := ""
|
||||
var sloganStyle = number(f, 0, 2)
|
||||
switch sloganStyle {
|
||||
// Noun. Buzzword!
|
||||
case 0:
|
||||
slogan = getRandValue(f, []string{"company", "blurb"}) + ". " + getRandValue(f, []string{"company", "buzzwords"}) + "!"
|
||||
// Buzzword Noun, Buzzword Noun.
|
||||
case 1:
|
||||
slogan = getRandValue(f, []string{"company", "buzzwords"}) + " " + getRandValue(f, []string{"company", "blurb"}) + ", " + getRandValue(f, []string{"company", "buzzwords"}) + " " + getRandValue(f, []string{"company", "blurb"}) + "."
|
||||
// Buzzword bs Noun, Buzzword.
|
||||
case 2:
|
||||
slogan = getRandValue(f, []string{"company", "buzzwords"}) + " " + getRandValue(f, []string{"company", "bs"}) + " " + getRandValue(f, []string{"company", "blurb"}) + ", " + getRandValue(f, []string{"company", "buzzwords"}) + "."
|
||||
}
|
||||
return slogan
|
||||
}
|
||||
|
||||
func addCompanyLookup() {
|
||||
AddFuncLookup("company", Info{
|
||||
Display: "Company",
|
||||
Category: "company",
|
||||
Description: "Designated official name of a business or organization",
|
||||
Example: "Moen, Pagac and Wuckert",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"business name",
|
||||
"company name",
|
||||
"organization name",
|
||||
"corporate name",
|
||||
"legal entity",
|
||||
},
|
||||
Keywords: []string{
|
||||
"company", "business", "organization", "corporation",
|
||||
"enterprise", "firm", "entity", "brand",
|
||||
"employer", "vendor", "partner",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return company(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("companysuffix", Info{
|
||||
Display: "Company Suffix",
|
||||
Category: "company",
|
||||
Description: "Suffix at the end of a company name, indicating business structure, like 'Inc.' or 'LLC'",
|
||||
Example: "Inc",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"business suffix",
|
||||
"legal suffix",
|
||||
"company ending",
|
||||
"corporate suffix",
|
||||
"entity suffix",
|
||||
},
|
||||
Keywords: []string{
|
||||
"suffix", "ending", "company", "business", "entity",
|
||||
"inc", "incorporated", "llc", "ltd", "limited",
|
||||
"corp", "corporation", "plc", "gmbh", "sarl",
|
||||
"legal", "structure", "designation",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return companySuffix(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("bs", Info{
|
||||
Display: "BS",
|
||||
Category: "company",
|
||||
Description: "Random bs company word",
|
||||
Example: "front-end",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"business jargon",
|
||||
"corporate jargon",
|
||||
"marketing buzzword",
|
||||
"tech buzzword",
|
||||
"consulting speak",
|
||||
},
|
||||
Keywords: []string{
|
||||
"bs", "jargon", "buzzwords", "synergy", "leverage",
|
||||
"disrupt", "innovate", "scalable", "agile", "optimize",
|
||||
"pipeline", "roadmap", "vision", "strategy", "corporate",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return bs(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("blurb", Info{
|
||||
Display: "Blurb",
|
||||
Category: "company",
|
||||
Description: "Brief description or summary of a company's purpose, products, or services",
|
||||
Example: "word",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"company blurb",
|
||||
"company summary",
|
||||
"company description",
|
||||
"short overview",
|
||||
"about text",
|
||||
},
|
||||
Keywords: []string{
|
||||
"blurb", "summary", "overview", "description",
|
||||
"company", "profile", "about", "intro",
|
||||
"purpose", "mission", "vision", "statement",
|
||||
"services", "products", "offerings",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return blurb(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("buzzword", Info{
|
||||
Display: "Buzzword",
|
||||
Category: "company",
|
||||
Description: "Trendy or overused term often used in business to sound impressive",
|
||||
Example: "disintermediate",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"business buzzword",
|
||||
"corporate buzzword",
|
||||
"trendy term",
|
||||
"catchphrase",
|
||||
"marketing phrase",
|
||||
},
|
||||
Keywords: []string{
|
||||
"buzzword", "jargon", "hype", "trend", "phrase",
|
||||
"term", "corporate", "management", "marketing",
|
||||
"innovation", "paradigm", "disruptive", "visionary",
|
||||
"fashionable", "impressive",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return buzzWord(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("job", Info{
|
||||
Display: "Job",
|
||||
Category: "company",
|
||||
Description: "Position or role in employment, involving specific tasks and responsibilities",
|
||||
Example: `{
|
||||
"company": "ClearHealthCosts",
|
||||
"title": "Agent",
|
||||
"descriptor": "Future",
|
||||
"level": "Tactics"
|
||||
}`,
|
||||
Output: "map[string]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"job role",
|
||||
"job position",
|
||||
"employment role",
|
||||
"work role",
|
||||
"career role",
|
||||
"occupation role",
|
||||
},
|
||||
Keywords: []string{
|
||||
"job", "role", "position", "employment", "work",
|
||||
"career", "occupation", "profession", "title",
|
||||
"responsibilities", "tasks", "duties",
|
||||
"staff", "employee", "hiring", "positioning",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return job(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("jobtitle", Info{
|
||||
Display: "Job Title",
|
||||
Category: "company",
|
||||
Description: "Specific title for a position or role within a company or organization",
|
||||
Example: "Director",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"job designation",
|
||||
"position title",
|
||||
"role title",
|
||||
"employment title",
|
||||
"official title",
|
||||
},
|
||||
Keywords: []string{
|
||||
"job", "title", "designation", "position", "role",
|
||||
"occupation", "profession", "career",
|
||||
"company", "organization", "staff", "employee",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return jobTitle(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("jobdescriptor", Info{
|
||||
Display: "Job Descriptor",
|
||||
Category: "company",
|
||||
Description: "Word used to describe the duties, requirements, and nature of a job",
|
||||
Example: "Central",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"job modifier",
|
||||
"job adjective",
|
||||
"role descriptor",
|
||||
"title descriptor",
|
||||
"position descriptor",
|
||||
},
|
||||
Keywords: []string{
|
||||
"descriptor", "modifier", "adjective", "qualifier",
|
||||
"job", "role", "title", "position",
|
||||
"label", "term", "descriptive", "characterization",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return jobDescriptor(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("joblevel", Info{
|
||||
Display: "Job Level",
|
||||
Category: "company",
|
||||
Description: "Random job level",
|
||||
Example: "Assurance",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"seniority level",
|
||||
"career level",
|
||||
"position level",
|
||||
"role level",
|
||||
"job grade",
|
||||
"job band",
|
||||
},
|
||||
Keywords: []string{
|
||||
"level", "seniority", "rank", "tier", "grade", "band",
|
||||
"entry", "junior", "associate", "mid", "senior",
|
||||
"lead", "staff", "principal", "manager", "director",
|
||||
"executive",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return jobLevel(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("slogan", Info{
|
||||
Display: "Slogan",
|
||||
Category: "company",
|
||||
Description: "Catchphrase or motto used by a company to represent its brand or values",
|
||||
Example: "Universal seamless Focus, interactive.",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"company slogan",
|
||||
"brand slogan",
|
||||
"brand tagline",
|
||||
"company motto",
|
||||
"advertising slogan",
|
||||
},
|
||||
Keywords: []string{
|
||||
"slogan", "tagline", "motto", "catchphrase",
|
||||
"brand", "company", "marketing", "advertising",
|
||||
"identity", "values", "mission", "vision",
|
||||
"strapline", "promo", "campaign",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return slogan(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
189
vendor/github.com/brianvoe/gofakeit/v7/csv.go
generated
vendored
Normal file
189
vendor/github.com/brianvoe/gofakeit/v7/csv.go
generated
vendored
Normal file
@@ -0,0 +1,189 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/csv"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// CSVOptions defines values needed for csv generation
|
||||
type CSVOptions struct {
|
||||
Delimiter string `json:"delimiter" xml:"delimiter" fake:"{randomstring:[,,tab]}"`
|
||||
RowCount int `json:"row_count" xml:"row_count" fake:"{number:1,10}"`
|
||||
Fields []Field `json:"fields" xml:"fields" fake:"{fields}"`
|
||||
}
|
||||
|
||||
// CSV generates an object or an array of objects in json format
|
||||
// A nil CSVOptions returns a randomly structured CSV.
|
||||
func CSV(co *CSVOptions) ([]byte, error) { return csvFunc(GlobalFaker, co) }
|
||||
|
||||
// CSV generates an object or an array of objects in json format
|
||||
// A nil CSVOptions returns a randomly structured CSV.
|
||||
func (f *Faker) CSV(co *CSVOptions) ([]byte, error) { return csvFunc(f, co) }
|
||||
|
||||
func csvFunc(f *Faker, co *CSVOptions) ([]byte, error) {
|
||||
if co == nil {
|
||||
// We didn't get a CSVOptions, so create a new random one
|
||||
err := f.Struct(&co)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// Check delimiter
|
||||
if co.Delimiter == "" {
|
||||
co.Delimiter = ","
|
||||
}
|
||||
if strings.ToLower(co.Delimiter) == "tab" {
|
||||
co.Delimiter = "\t"
|
||||
}
|
||||
if co.Delimiter != "," && co.Delimiter != "\t" && co.Delimiter != ";" {
|
||||
return nil, errors.New("invalid delimiter type")
|
||||
}
|
||||
|
||||
// Check fields
|
||||
if len(co.Fields) <= 0 {
|
||||
return nil, errors.New("must pass fields in order to build json object(s)")
|
||||
}
|
||||
|
||||
// Make sure you set a row count
|
||||
if co.RowCount <= 0 {
|
||||
return nil, errors.New("must have row count")
|
||||
}
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
w := csv.NewWriter(b)
|
||||
w.Comma = []rune(co.Delimiter)[0]
|
||||
|
||||
// Add header row
|
||||
header := make([]string, len(co.Fields))
|
||||
for i, field := range co.Fields {
|
||||
header[i] = field.Name
|
||||
}
|
||||
w.Write(header)
|
||||
|
||||
// Loop through row count +1(for header) and add fields
|
||||
for i := 1; i < co.RowCount+1; i++ {
|
||||
vr := make([]string, len(co.Fields))
|
||||
|
||||
// Loop through fields and add to them to map[string]any
|
||||
for ii, field := range co.Fields {
|
||||
if field.Function == "autoincrement" {
|
||||
vr[ii] = fmt.Sprintf("%d", i)
|
||||
continue
|
||||
}
|
||||
|
||||
// Get function info
|
||||
funcInfo := GetFuncLookup(field.Function)
|
||||
if funcInfo == nil {
|
||||
return nil, errors.New("invalid function, " + field.Function + " does not exist")
|
||||
}
|
||||
|
||||
value, err := funcInfo.Generate(f, &field.Params, funcInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if _, ok := value.([]byte); ok {
|
||||
// If it's a slice of bytes or struct, unmarshal it into an interface
|
||||
var v any
|
||||
if err := json.Unmarshal(value.([]byte), &v); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
value = v
|
||||
}
|
||||
|
||||
// If the value is a list of possible values, marsha it into a string
|
||||
if reflect.TypeOf(value).Kind() == reflect.Struct ||
|
||||
reflect.TypeOf(value).Kind() == reflect.Ptr ||
|
||||
reflect.TypeOf(value).Kind() == reflect.Map ||
|
||||
reflect.TypeOf(value).Kind() == reflect.Slice {
|
||||
b, err := json.Marshal(value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
value = string(b)
|
||||
}
|
||||
|
||||
vr[ii] = fmt.Sprintf("%v", value)
|
||||
}
|
||||
|
||||
w.Write(vr)
|
||||
}
|
||||
|
||||
w.Flush()
|
||||
|
||||
if err := w.Error(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return b.Bytes(), nil
|
||||
}
|
||||
|
||||
func addFileCSVLookup() {
|
||||
AddFuncLookup("csv", Info{
|
||||
Display: "CSV",
|
||||
Category: "file",
|
||||
Description: "Individual lines or data entries within a CSV (Comma-Separated Values) format",
|
||||
Example: `id,first_name,last_name,password
|
||||
1,Markus,Moen,Dc0VYXjkWABx
|
||||
2,Osborne,Hilll,XPJ9OVNbs5lm`,
|
||||
Output: "[]byte",
|
||||
ContentType: "text/csv",
|
||||
Aliases: []string{
|
||||
"comma separated", "csv file", "data table", "flat file", "spreadsheet format", "tabular data",
|
||||
},
|
||||
Keywords: []string{
|
||||
"csv", "comma", "separated", "values", "format", "data", "spreadsheet", "entries", "rows", "columns", "dataset", "records",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "delimiter", Display: "Delimiter", Type: "string", Default: ",", Description: "Separator in between row values"},
|
||||
{Field: "rowcount", Display: "Row Count", Type: "int", Default: "100", Description: "Number of rows"},
|
||||
{Field: "fields", Display: "Fields", Type: "[]Field", Description: "Fields containing key name and function"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
co := CSVOptions{}
|
||||
|
||||
delimiter, err := info.GetString(m, "delimiter")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
co.Delimiter = delimiter
|
||||
|
||||
rowcount, err := info.GetInt(m, "rowcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
co.RowCount = rowcount
|
||||
|
||||
fieldsStr, err := info.GetStringArray(m, "fields")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Check to make sure fields has length
|
||||
if len(fieldsStr) > 0 {
|
||||
co.Fields = make([]Field, len(fieldsStr))
|
||||
|
||||
for i, f := range fieldsStr {
|
||||
// Unmarshal fields string into fields array
|
||||
err = json.Unmarshal([]byte(f), &co.Fields[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
csvOut, err := csvFunc(f, &co)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return csvOut, nil
|
||||
},
|
||||
})
|
||||
}
|
||||
33
vendor/github.com/brianvoe/gofakeit/v7/data/README.md
generated
vendored
Normal file
33
vendor/github.com/brianvoe/gofakeit/v7/data/README.md
generated
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
# Gofakeit Data
|
||||
|
||||
Gofakeit data set
|
||||
|
||||
## List
|
||||
|
||||
```go
|
||||
List()
|
||||
```
|
||||
|
||||
## Get/Set/Remove Data
|
||||
|
||||
```go
|
||||
data.Get("desserts")
|
||||
|
||||
data.Set("desserts", map[string][]string{
|
||||
"cake": {"chocolate", "vanilla"},
|
||||
"pie": {"apple", "pecan"},
|
||||
"ice cream": {"strawberry", "vanilla"},
|
||||
})
|
||||
|
||||
data.Remove("desserts")
|
||||
```
|
||||
|
||||
## Get/Set/Remove Sub Data
|
||||
|
||||
```go
|
||||
data.GetSubData("desserts", "cake")
|
||||
|
||||
data.SetSub("desserts", "cake", []string{"chocolate", "vanilla"})
|
||||
|
||||
data.RemoveSub("desserts", "cake")
|
||||
```
|
||||
16
vendor/github.com/brianvoe/gofakeit/v7/data/address.go
generated
vendored
Normal file
16
vendor/github.com/brianvoe/gofakeit/v7/data/address.go
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
package data
|
||||
|
||||
// Address consists of address information
|
||||
var Address = map[string][]string{
|
||||
"number": {"#####", "####", "###"},
|
||||
"street_prefix": {"North", "East", "West", "South", "New", "Lake", "Port"},
|
||||
"street_name": {"Alley", "Avenue", "Branch", "Bridge", "Brook", "Brooks", "Burg", "Burgs", "Bypass", "Camp", "Canyon", "Cape", "Causeway", "Center", "Centers", "Circle", "Circles", "Cliff", "Cliffs", "Club", "Common", "Corner", "Corners", "Course", "Court", "Courts", "Cove", "Coves", "Creek", "Crescent", "Crest", "Crossing", "Crossroad", "Curve", "Dale", "Dam", "Divide", "Drive", "Drive", "Drives", "Estate", "Estates", "Expressway", "Extension", "Extensions", "Fall", "Falls", "Ferry", "Field", "Fields", "Flat", "Flats", "Ford", "Fords", "Forest", "Forge", "Forges", "Fork", "Forks", "Fort", "Freeway", "Garden", "Gardens", "Gateway", "Glen", "Glens", "Green", "Greens", "Grove", "Groves", "Harbor", "Harbors", "Haven", "Heights", "Highway", "Hill", "Hills", "Hollow", "Inlet", "Inlet", "Island", "Island", "Islands", "Islands", "Isle", "Isle", "Junction", "Junctions", "Key", "Keys", "Knoll", "Knolls", "Lake", "Lakes", "Land", "Landing", "Lane", "Light", "Lights", "Loaf", "Lock", "Locks", "Locks", "Lodge", "Lodge", "Loop", "Mall", "Manor", "Manors", "Meadow", "Meadows", "Mews", "Mill", "Mills", "Mission", "Mission", "Motorway", "Mount", "Mountain", "Mountain", "Mountains", "Mountains", "Neck", "Orchard", "Oval", "Overpass", "Park", "Parks", "Parkway", "Parkways", "Pass", "Passage", "Path", "Pike", "Pine", "Pines", "Place", "Plain", "Plains", "Plains", "Plaza", "Plaza", "Point", "Points", "Port", "Port", "Ports", "Ports", "Prairie", "Prairie", "Radial", "Ramp", "Ranch", "Rapid", "Rapids", "Rest", "Ridge", "Ridges", "River", "Road", "Road", "Roads", "Roads", "Route", "Row", "Rue", "Run", "Shoal", "Shoals", "Shore", "Shores", "Skyway", "Spring", "Springs", "Springs", "Spur", "Spurs", "Square", "Square", "Squares", "Squares", "Station", "Station", "Stravenue", "Stravenue", "Stream", "Stream", "Street", "Street", "Streets", "Summit", "Summit", "Terrace", "Throughway", "Trace", "Track", "Trafficway", "Trail", "Trail", "Tunnel", "Tunnel", "Turnpike", "Turnpike", "Underpass", "Union", "Unions", "Valley", "Valleys", "Via", "Viaduct", "View", "Views", "Village", "Village", "Villages", "Ville", "Vista", "Vista", "Walk", "Walks", "Wall", "Way", "Ways", "Well", "Wells"},
|
||||
"street_suffix": {"town", "ton", "land", "ville", "berg", "burgh", "borough", "bury", "view", "port", "mouth", "stad", "furt", "chester", "mouth", "fort", "haven", "side", "shire"},
|
||||
"unit": {"Apt", "Apartment", "Suite", "Ste", "Unit", "Floor", "Fl", "Room", "Rm", "Office", "Ofc", "Studio", "Loft", "Penthouse", "Ph"},
|
||||
"city": {"New York City", "Los Angeles", "Chicago", "Houston", "Philadelphia", "Phoenix", "San Antonio", "San Diego", "Dallas", "San Jose", "Austin", "Jacksonville", "Indianapolis", "San Francisco", "Columbus", "Fort Worth", "Charlotte", "Detroit", "El Paso", "Memphis", "Boston", "Seattle", "Denver", "Washington", "Nashville-Davidson", "Baltimore", "Louisville/Jefferson", "Portland", "Oklahoma", "Milwaukee", "Las Vegas", "Albuquerque", "Tucson", "Fresno", "Sacramento", "Long Beach", "Kansas", "Mesa", "Virginia Beach", "Atlanta", "Colorado Springs", "Raleigh", "Omaha", "Miami", "Oakland", "Tulsa", "Minneapolis", "Cleveland", "Wichita", "Arlington", "New Orleans", "Bakersfield", "Tampa", "Honolulu", "Anaheim", "Aurora", "Santa Ana", "St. Louis", "Riverside", "Corpus Christi", "Pittsburgh", "Lexington-Fayette", "Stockton", "Cincinnati", "St. Paul", "Toledo", "Newark", "Greensboro", "Plano", "Henderson", "Lincoln", "Buffalo", "Fort Wayne", "Jersey", "Chula Vista", "Orlando", "St. Petersburg", "Norfolk", "Chandler", "Laredo", "Madison", "Durham", "Lubbock", "Winston-Salem", "Garland", "Glendale", "Hialeah", "Reno", "Baton Rouge", "Irvine", "Chesapeake", "Irving", "Scottsdale", "North Las Vegas", "Fremont", "San Bernardino", "Boise", "Birmingham"},
|
||||
"state": {"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"},
|
||||
"state_abr": {"AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY", "AE", "AA", "AP"},
|
||||
"zip": {"#####"},
|
||||
"country": {"Andorra", "United Arab Emirates", "Afghanistan", "Antigua and Barbuda", "Anguilla", "Albania", "Armenia", "Angola", "Antarctica", "Argentina", "American Samoa", "Austria", "Australia", "Aruba", "Åland Islands", "Azerbaijan", "Bosnia and Herzegovina", "Barbados", "Bangladesh", "Belgium", "Burkina Faso", "Bulgaria", "Bahrain", "Burundi", "Benin", "Saint Barthélemy", "Bermuda", "Brunei Darussalam", "Bolivia (Plurinational State of)", "Bonaire, Sint Eustatius and Saba", "Brazil", "Bahamas", "Bhutan", "Bouvet Island", "Botswana", "Belarus", "Belize", "Canada", "Cocos (Keeling) Islands", "Congo, Democratic Republic of the", "Central African Republic", "Congo", "Switzerland", "Côte d'Ivoire", "Cook Islands", "Chile", "Cameroon", "China", "Colombia", "Costa Rica", "Cuba", "Cabo Verde", "Curaçao", "Christmas Island", "Cyprus", "Czechia", "Germany", "Djibouti", "Denmark", "Dominica", "Dominican Republic", "Algeria", "Ecuador", "Estonia", "Egypt", "Western Sahara", "Eritrea", "Spain", "Ethiopia", "Finland", "Fiji", "Falkland Islands (Malvinas)", "Micronesia (Federated States of)", "Faroe Islands", "France", "Gabon", "United Kingdom of Great Britain and Northern Ireland", "Grenada", "Georgia", "French Guiana", "Guernsey", "Ghana", "Gibraltar", "Greenland", "Gambia", "Guinea", "Guadeloupe", "Equatorial Guinea", "Greece", "South Georgia and the South Sandwich Islands", "Guatemala", "Guam", "Guinea-Bissau", "Guyana", "Hong Kong", "Heard Island and McDonald Islands", "Honduras", "Croatia", "Haiti", "Hungary", "Indonesia", "Ireland", "Israel", "Isle of Man", "India", "British Indian Ocean Territory", "Iraq", "Iran (Islamic Republic of)", "Iceland", "Italy", "Jersey", "Jamaica", "Jordan", "Japan", "Kenya", "Kyrgyzstan", "Cambodia", "Kiribati", "Comoros", "Saint Kitts and Nevis", "Korea (Democratic People's Republic of)", "Korea, Republic of", "Kuwait", "Cayman Islands", "Kazakhstan", "Lao People's Democratic Republic", "Lebanon", "Saint Lucia", "Liechtenstein", "Sri Lanka", "Liberia", "Lesotho", "Lithuania", "Luxembourg", "Latvia", "Libya", "Morocco", "Monaco", "Moldova, Republic of", "Montenegro", "Saint Martin (French part)", "Madagascar", "Marshall Islands", "North Macedonia", "Mali", "Myanmar", "Mongolia", "Macao", "Northern Mariana Islands", "Martinique", "Mauritania", "Montserrat", "Malta", "Mauritius", "Maldives", "Malawi", "Mexico", "Malaysia", "Mozambique", "Namibia", "New Caledonia", "Niger", "Norfolk Island", "Nigeria", "Nicaragua", "Netherlands", "Norway", "Nepal", "Nauru", "Niue", "New Zealand", "Oman", "Panama", "Peru", "French Polynesia", "Papua New Guinea", "Philippines", "Pakistan", "Poland", "Saint Pierre and Miquelon", "Pitcairn", "Puerto Rico", "Palestine, State of", "Portugal", "Palau", "Paraguay", "Qatar", "Réunion", "Romania", "Serbia", "Russian Federation", "Rwanda", "Saudi Arabia", "Solomon Islands", "Seychelles", "Sudan", "Sweden", "Singapore", "Saint Helena, Ascension and Tristan da Cunha", "Slovenia", "Svalbard and Jan Mayen", "Slovakia", "Sierra Leone", "San Marino", "Senegal", "Somalia", "Suriname", "South Sudan", "Sao Tome and Principe", "El Salvador", "Sint Maarten (Dutch part)", "Syrian Arab Republic", "Eswatini", "Turks and Caicos Islands", "Chad", "French Southern Territories", "Togo", "Thailand", "Tajikistan", "Tokelau", "Timor-Leste", "Turkmenistan", "Tunisia", "Tonga", "Turkey", "Trinidad and Tobago", "Tuvalu", "Taiwan, Province of China", "Tanzania, United Republic of", "Ukraine", "Uganda", "United States Minor Outlying Islands", "United States of America", "Uruguay", "Uzbekistan", "Holy See", "Saint Vincent and the Grenadines", "Venezuela (Bolivarian Republic of)", "Virgin Islands (British)", "Virgin Islands (U.S.)", "Viet Nam", "Vanuatu", "Wallis and Futuna", "Samoa", "Yemen", "Mayotte", "South Africa", "Zambia", "Zimbabwe"},
|
||||
"country_abr": {"AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"},
|
||||
}
|
||||
12
vendor/github.com/brianvoe/gofakeit/v7/data/animals.go
generated
vendored
Normal file
12
vendor/github.com/brianvoe/gofakeit/v7/data/animals.go
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
package data
|
||||
|
||||
// Animal consists of animal information
|
||||
var Animal = map[string][]string{
|
||||
"petname": {"Alfalfa", "Archie", "Attila", "Baloo", "Bark Twain", "Barney", "Beans", "Bernadette", "Betty", "Binx", "Biscuit", "Bitsy", "Bob", "Bruiser", "Butterball", "Butters", "Chalupa", "Cheeseburger", "Chewbarka", "Chompers", "Cujo", "Demi", "Dobby", "Doc McDoggins", "Droolius Caesar", "Elmo", "Fergus", "Fluffernutter", "Franz Fur-dinand", "Frodo", "Fyodor Dogstoevsky", "Gary", "Gollum", "Hairy Paw-ter", "Hercules", "Hobbit", "Jabba", "Jellybean", "Jimmy Chew", "Kareem Abdul Ja-Bark", "Kevin", "Khaleesi", "Larry", "Lloyd", "Mary Puppins", "Matilda", "Meatball", "Mister Miyagi", "Moose", "Munchkin", "Nacho", "Noodles", "Nugget", "Olga", "Orville Redenbarker", "Ozzy Pawsborne", "Pam", "Peanut", "Pee Wee", "Pikachu", "Prince of Barkness", "Pumba", "Rambo", "Rex", "Rocky", "Rufus", "Salsa", "Salvador Dogi", "Santa Paws", "Sarah Jessica Barker", "Scrappy", "Sherlock Bones", "Squeakers", "Squirt", "Tank", "Tater", "The Notorious D.O.G.", "Toto", "Twinkie", "Waffles", "Waldo", "Winnie the Poodle", "Woofgang Puck", "Yoda", "Zeus"},
|
||||
"animal": {"alligator", "alpaca", "ant", "antelope", "ape", "armadillo", "baboon", "badger", "bat", "bear", "beaver", "bee", "beetle", "buffalo", "butterfly", "camel", "caribou", "cat", "cattle", "cheetah", "chimpanzee", "chinchilla", "cicada", "clam", "cockroach", "cod", "coyote", "crab", "cricket", "crocodile", "crow", "deer", "dinosaur", "dog", "dolphin", "donkey", "duck", "eagle", "eel", "elephant", "elk", "ferret", "fish", "fly", "fox", "frog", "gerbil", "giraffe", "gnat", "gnu", "goat", "goldfish", "goose", "gorilla", "grasshopper", "guinea pig", "hamster", "hare", "hedgehog", "herring", "hippopotamus", "hornet", "horse", "hound", "hyena", "impala", "jackal", "jellyfish", "kangaroo", "koala", "leopard", "lion", "lizard", "llama", "locust", "louse", "macaw", "mallard", "mammoth", "manatee", "marten", "mink", "minnow", "mole", "monkey", "moose", "mosquito", "mouse", "mule", "muskrat", "otter", "ox", "oyster", "panda", "pig", "platypus", "porcupine", "porpoise", "prairie dog", "pug", "rabbit", "raccoon", "rat", "raven", "reindeer", "rhinoceros", "salmon", "sardine", "scorpion", "sea lion", "seal", "serval", "shark", "sheep", "skunk", "snail", "snake", "spider", "squirrel", "swan", "termite", "tiger", "toad", "tortoise", "trout", "turtle", "wallaby", "walrus", "wasp", "water buffalo", "weasel", "whale", "wildebeest", "wolf", "wombat", "woodchuck", "worm", "yak", "yellowjacket", "zebra"},
|
||||
"type": {"amphibians", "birds", "fish", "invertebrates", "mammals", "reptiles"},
|
||||
"farm": {"Chicken", "Cow", "Donkey", "Duck", "Goat", "Goose", "Horse", "Llama", "Pig", "Sheep", "Turkey"},
|
||||
"cat": {"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 Semipi-longhair", "British Shorthair", "Burmese", "Burmilla", "California Spangled", "Chantilly-Tiffany", "Chartreux", "Chausie", "Cheetoh", "Colorpoint Shorthair", "Cornish Rex", "Cymric, or Manx Longhair", "Cyprus", "Devon Rex", "Donskoy, or Don Sphynx", "Dragon Li", "Dwarf cat, or Dwelf", "Egyptian Mau", "European Shorthair", "Exotic Shorthair", "Foldex Cat", "German Rex", "Havana Brown", "Highlander", "Himalayan, or Colorpoint Persian", "Japanese Bobtail", "Javanese", "Khao Manee", "Korat", "Korean Bobtail", "Korn Ja", "Kurilian Bobtail", "Kurilian Bobtail, or Kuril Islands 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", "Persian", "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", "Tonkinese", "Toyger", "Turkish Angora", "Turkish Van", "Ukrainian Levkoy"},
|
||||
"dog": {"Affenpinscher", "African", "Airedale", "Akita", "Appenzeller", "Basenji", "Beagle", "Bluetick", "Borzoi", "Bouvier", "Boxer", "Brabancon", "Briard", "Boston Bulldog", "French Bulldog", "Staffordshire Bullterrier", "Cairn", "Chihuahua", "Chow", "Clumber", "Border Collie", "Coonhound", "Cardigan Corgi", "Dachshund", "Great Dane", "Scottish Deerhound", "Dhole", "Dingo", "Doberman", "Norwegian Elkhound", "Entlebucher", "Eskimo", "Germanshepherd", "Italian Greyhound", "Groenendael", "Ibizan Hound", "Afghan Hound", "Basset Hound", "Blood Hound", "English Hound", "Walker Hound", "Husky", "Keeshond", "Kelpie", "Komondor", "Kuvasz", "Labrador", "Leonberg", "Lhasa", "Malamute", "Malinois", "Maltese", "Bull Mastiff", "Tibetan Mastiff", "Mexicanhairless", "Bernese Mountain", "Swiss Mountain", "Newfoundland", "Otterhound", "Papillon", "Pekinese", "Pembroke", "Miniature Pinscher", "German Pointer", "Pomeranian", "Miniature Poodle", "Standard Poodle", "Toy Poodle", "Pug", "Pyrenees", "Redbone", "Chesapeake Retriever", "Curly Retriever", "Flatcoated Retriever", "Golden Retriever", "Rhodesian Ridgeback", "Rottweiler", "Saluki", "Samoyed", "Schipperke", "Giant Schnauzer", "Miniature Schnauzer", "English Setter", "Gordon Setter", "Irish Setter", "English Sheepdog", "Shetland Sheepdog", "Shiba", "Shihtzu", "Blenheim Spaniel", "Brittany Spaniel", "Cocker Spaniel", "Irish Spaniel", "Japanese Spaniel", "Sussex Spaniel", "Welsh Spaniel", "English Springer", "Stbernard", "American Terrier", "Australian Terrier", "Bedlington Terrier", "Border Terrier", "Dandie Terrier", "Fox Terrier", "Irish Terrier", "Kerryblue Terrier", "Lakeland Terrier", "Norfolk Terrier", "Norwich Terrier", "Patterdale Terrier", "Rat Terrier", "Scottish Terrier", "Sealyham Terrier", "Silky Terrier", "Tibetan Terrier", "Toy Terrier", "Westhighland Terrier", "Wheaten Terrier", "Yorkshire Terrier", "Vizsla", "Weimaraner", "Whippet", "Irish Wolfhound"},
|
||||
"bird": {"albatross", "bluejay", "canary", "cardinal", "chicken", "crow", "dove", "duck", "eagle", "emu", "falcon", "flamingo", "goose", "hornbill", "hummingbird", "ibis", "jay", "kingfisher", "lovebird", "mynah", "nightingale", "oriole", "ostrich", "owl", "parrot", "peacock", "penguin", "quail", "rooster", "sparrow", "swan", "thrush", "toucan", "vulture", "woodpecker", "yellow warbler"},
|
||||
}
|
||||
67
vendor/github.com/brianvoe/gofakeit/v7/data/bank.go
generated
vendored
Normal file
67
vendor/github.com/brianvoe/gofakeit/v7/data/bank.go
generated
vendored
Normal file
@@ -0,0 +1,67 @@
|
||||
package data
|
||||
|
||||
var Bank = map[string][]string{
|
||||
"name": {
|
||||
"Agricultural Bank of China",
|
||||
"BNP Paribas",
|
||||
"Banco Bilbao Vizcaya Argentaria",
|
||||
"Banco Santander",
|
||||
"Bank of America",
|
||||
"Bank of China",
|
||||
"Bank of Communications",
|
||||
"Barclays",
|
||||
"Capital One Financial Corporation",
|
||||
"China Citic Bank",
|
||||
"China Construction Bank Corporation",
|
||||
"China Everbright Bank",
|
||||
"China Merchants Bank",
|
||||
"China Minsheng Bank",
|
||||
"Citigroup",
|
||||
"Commonwealth Bank Group",
|
||||
"Credit Agricole Group",
|
||||
"Credit Mutuel",
|
||||
"Deutsche Bank",
|
||||
"Goldman Sachs",
|
||||
"Groupe BPCE",
|
||||
"HDFC Bank",
|
||||
"HSBC Holdings",
|
||||
"Hua Xia Bank",
|
||||
"ING Group",
|
||||
"Industrial Bank",
|
||||
"Industrial and Commercial Bank of China",
|
||||
"Intesa Sanpaolo",
|
||||
"JP Morgan Chase & Co",
|
||||
"Lloyds Banking Group",
|
||||
"Mitsubishi UFJ Financial Group",
|
||||
"Mizuho Financial Group",
|
||||
"Morgan Stanley",
|
||||
"PNC Financial Services Group",
|
||||
"Ping An Bank",
|
||||
"Postal Savings Bank of China",
|
||||
"Rabobank Group",
|
||||
"Royal Bank of Canada",
|
||||
"Sberbank",
|
||||
"Scotiabank",
|
||||
"Shanghai Pudong Development Bank",
|
||||
"Societe Generale",
|
||||
"State Bank of India",
|
||||
"Sumitomo Mitsui Financial Group",
|
||||
"Toronto Dominion Bank",
|
||||
"Truist Bank",
|
||||
"UBS",
|
||||
"US Bancorp",
|
||||
"UniCredit",
|
||||
"Wells Fargo & Co",
|
||||
},
|
||||
"type": {
|
||||
"Central Bank",
|
||||
"Commercial Bank",
|
||||
"Cooperative Bank",
|
||||
"Investment Bank",
|
||||
"Online Bank",
|
||||
"Policy Bank",
|
||||
"Private Bank",
|
||||
"Retail Bank",
|
||||
"Savings Bank",
|
||||
},
|
||||
}
|
||||
10
vendor/github.com/brianvoe/gofakeit/v7/data/beer.go
generated
vendored
Normal file
10
vendor/github.com/brianvoe/gofakeit/v7/data/beer.go
generated
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
package data
|
||||
|
||||
// Beer consists of various beer information
|
||||
var Beer = map[string][]string{
|
||||
"name": {"Pliny The Elder", "Founders Kentucky Breakfast", "Trappistes Rochefort 10", "HopSlam Ale", "Stone Imperial Russian Stout", "St. Bernardus Abt 12", "Founders Breakfast Stout", "Weihenstephaner Hefeweissbier", "Péché Mortel", "Celebrator Doppelbock", "Duvel", "Dreadnaught IPA", "Nugget Nectar", "La Fin Du Monde", "Bourbon County Stout", "Old Rasputin Russian Imperial Stout", "Two Hearted Ale", "Ruination IPA", "Schneider Aventinus", "Double Bastard Ale", "90 Minute IPA", "Hop Rod Rye", "Trappistes Rochefort 8", "Chimay Grande Réserve", "Stone IPA", "Arrogant Bastard Ale", "Edmund Fitzgerald Porter", "Chocolate St", "Oak Aged Yeti Imperial Stout", "Ten FIDY", "Storm King Stout", "Shakespeare Oatmeal", "Alpha King Pale Ale", "Westmalle Trappist Tripel", "Samuel Smith’s Imperial IPA", "Yeti Imperial Stout", "Hennepin", "Samuel Smith’s Oatmeal Stout", "Brooklyn Black", "Oaked Arrogant Bastard Ale", "Sublimely Self-Righteous Ale", "Trois Pistoles", "Bell’s Expedition", "Sierra Nevada Celebration Ale", "Sierra Nevada Bigfoot Barleywine Style Ale", "Racer 5 India Pale Ale, Bear Republic Bre", "Orval Trappist Ale", "Hercules Double IPA", "Maharaj", "Maudite"},
|
||||
"hop": {"Ahtanum", "Amarillo", "Bitter Gold", "Bravo", "Brewer’s Gold", "Bullion", "Cascade", "Cashmere", "Centennial", "Chelan", "Chinook", "Citra", "Cluster", "Columbia", "Columbus", "Comet", "Crystal", "Equinox", "Eroica", "Fuggle", "Galena", "Glacier", "Golding", "Hallertau", "Horizon", "Liberty", "Magnum", "Millennium", "Mosaic", "Mt. Hood", "Mt. Rainier", "Newport", "Northern Brewer", "Nugget", "Olympic", "Palisade", "Perle", "Saaz", "Santiam", "Simcoe", "Sorachi Ace", "Sterling", "Summit", "Tahoma", "Tettnang", "TriplePearl", "Ultra", "Vanguard", "Warrior", "Willamette", "Yakima Gol"},
|
||||
"yeast": {"1007 - German Ale", "1010 - American Wheat", "1028 - London Ale", "1056 - American Ale", "1084 - Irish Ale", "1098 - British Ale", "1099 - Whitbread Ale", "1187 - Ringwood Ale", "1272 - American Ale II", "1275 - Thames Valley Ale", "1318 - London Ale III", "1332 - Northwest Ale", "1335 - British Ale II", "1450 - Dennys Favorite 50", "1469 - West Yorkshire Ale", "1728 - Scottish Ale", "1968 - London ESB Ale", "2565 - Kölsch", "1214 - Belgian Abbey", "1388 - Belgian Strong Ale", "1762 - Belgian Abbey II", "3056 - Bavarian Wheat Blend", "3068 - Weihenstephan Weizen", "3278 - Belgian Lambic Blend", "3333 - German Wheat", "3463 - Forbidden Fruit", "3522 - Belgian Ardennes", "3638 - Bavarian Wheat", "3711 - French Saison", "3724 - Belgian Saison", "3763 - Roeselare Ale Blend", "3787 - Trappist High Gravity", "3942 - Belgian Wheat", "3944 - Belgian Witbier", "2000 - Budvar Lager", "2001 - Urquell Lager", "2007 - Pilsen Lager", "2035 - American Lager", "2042 - Danish Lager", "2112 - California Lager", "2124 - Bohemian Lager", "2206 - Bavarian Lager", "2278 - Czech Pils", "2308 - Munich Lager", "2633 - Octoberfest Lager Blend", "5112 - Brettanomyces bruxellensis", "5335 - Lactobacillus", "5526 - Brettanomyces lambicus", "5733 - Pediococcus"},
|
||||
"malt": {"Black malt", "Caramel", "Carapils", "Chocolate", "Munich", "Caramel", "Carapils", "Chocolate malt", "Munich", "Pale", "Roasted barley", "Rye malt", "Special roast", "Victory", "Vienna", "Wheat mal"},
|
||||
"style": {"Light Lager", "Pilsner", "European Amber Lager", "Dark Lager", "Bock", "Light Hybrid Beer", "Amber Hybrid Beer", "English Pale Ale", "Scottish And Irish Ale", "Merican Ale", "English Brown Ale", "Porter", "Stout", "India Pale Ale", "German Wheat And Rye Beer", "Belgian And French Ale", "Sour Ale", "Belgian Strong Ale", "Strong Ale", "Fruit Beer", "Vegetable Beer", "Smoke-flavored", "Wood-aged Beer"},
|
||||
}
|
||||
101
vendor/github.com/brianvoe/gofakeit/v7/data/book.go
generated
vendored
Normal file
101
vendor/github.com/brianvoe/gofakeit/v7/data/book.go
generated
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
package data
|
||||
|
||||
var Books = map[string][]string{
|
||||
"title": {
|
||||
"Anna Karenina",
|
||||
"Beloved",
|
||||
"Blindness",
|
||||
"Bostan",
|
||||
"Buddenbrooks",
|
||||
"Crime and Punishment",
|
||||
"Don Quijote De La Mancha",
|
||||
"Fairy tales",
|
||||
"Faust",
|
||||
"Gulliver's Travels",
|
||||
"Gypsy Ballads",
|
||||
"Hamlet",
|
||||
"Harry potter and the sorcerer's stone",
|
||||
"King Lear",
|
||||
"Leaves of Grass",
|
||||
"Lolita",
|
||||
"Madame Bovary",
|
||||
"Memoirs of Hadrian",
|
||||
"Metamorphoses",
|
||||
"Moby Dick",
|
||||
"Nineteen Eighty-Four",
|
||||
"Odyssey",
|
||||
"Oedipus the King",
|
||||
"One Hundred Years of Solitude",
|
||||
"One Thousand and One Nights",
|
||||
"Othello",
|
||||
"Pippi Longstocking",
|
||||
"Pride and Prejudice",
|
||||
"Romeo & Juliet",
|
||||
"Sherlock Holmes",
|
||||
"Sons and Lovers",
|
||||
"The Adventures of Huckleberry Finn",
|
||||
"The Book Of Job",
|
||||
"The Brothers Karamazov",
|
||||
"The Golden Notebook",
|
||||
"The Idiot",
|
||||
"The Old Man and the Sea",
|
||||
"The Stranger",
|
||||
"Things Fall Apart",
|
||||
"Ulysses",
|
||||
"War and Peace",
|
||||
"Wuthering Heights",
|
||||
"Zorba the Greek",
|
||||
},
|
||||
"author": {
|
||||
"Albert Camus",
|
||||
"Astrid Lindgren",
|
||||
"Charles Dickens",
|
||||
"D. H. Lawrence",
|
||||
"Edgar Allan Poe",
|
||||
"Emily Brontë",
|
||||
"Ernest Hemingway",
|
||||
"Franz Kafka",
|
||||
"Fyodor Dostoevsky",
|
||||
"George Orwell",
|
||||
"Hans Christian Andersen",
|
||||
"Homer",
|
||||
"James Joyce",
|
||||
"Jane Austen",
|
||||
"Johann Wolfgang von Goethe",
|
||||
"Jorge Luis Borges",
|
||||
"Joanne K. Rowling",
|
||||
"Leo Tolstoy",
|
||||
"Marcel Proust",
|
||||
"Mark Twain",
|
||||
"Paul Celan",
|
||||
"Salman Rushdie",
|
||||
"Sophocles",
|
||||
"Thomas Mann",
|
||||
"Toni Morrison",
|
||||
"Vladimir Nabokov",
|
||||
"William Faulkner",
|
||||
"William Shakespeare",
|
||||
"Yasunari Kawabata",
|
||||
},
|
||||
"genre": {
|
||||
"Adventure",
|
||||
"Comic",
|
||||
"Crime",
|
||||
"Erotic",
|
||||
"Fiction",
|
||||
"Fantasy",
|
||||
"Historical",
|
||||
"Horror",
|
||||
"Magic",
|
||||
"Mystery",
|
||||
"Philosophical",
|
||||
"Political",
|
||||
"Romance",
|
||||
"Saga",
|
||||
"Satire",
|
||||
"Science",
|
||||
"Speculative",
|
||||
"Thriller",
|
||||
"Urban",
|
||||
},
|
||||
}
|
||||
10
vendor/github.com/brianvoe/gofakeit/v7/data/car.go
generated
vendored
Normal file
10
vendor/github.com/brianvoe/gofakeit/v7/data/car.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
7
vendor/github.com/brianvoe/gofakeit/v7/data/celebrity.go
generated
vendored
Normal file
7
vendor/github.com/brianvoe/gofakeit/v7/data/celebrity.go
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
package data
|
||||
|
||||
var Celebrity = map[string][]string{
|
||||
"actor": {"Arnold Schwarzenegger", "Jim Carrey", "Emma Watson", "Robert Downey Jr.", "Daniel Radcliffe", "Chris Evans", "Leonardo DiCaprio", "Tom Cruise", "Brad Pitt", "Charles Chaplin", "Morgan Freeman", "Tom Hanks", "Hugh Jackman", "Matt Damon", "Sylvester Stallone", "Will Smith", "Clint Eastwood", "Cameron Diaz", "George Clooney", "Steven Spielberg", "Harrison Ford", "Robert De Niro", "Al Pacino", "Robert Downey Jr.", "Russell Crowe", "Liam Neeson", "Kate Winslet", "Mark Wahlberg", "Natalie Portman", "Pierce Brosnan", "Sean Connery", "Orlando Bloom", "Dwayne Johnson", "Jackie Chan", "Angelina Jolie", "Adam Sandler", "Scarlett Johansson", "Heath Ledger", "Anne Hathaway", "Jessica Alba", "Edward Norton", "Keira Knightley", "Bradley Cooper", "Will Ferrell", "Julia Roberts", "Nicolas Cage", "Daniel Craig", "Keanu Reeves", "Ian McKellen", "Halle Berry", "Bruce Willis", "Ben Stiller", "Tommy Lee Jones", "Antonio Banderas", "Denzel Washington", "Steve Carell", "Shia LaBeouf", "Megan Fox", "James Franco", "Mel Gibson", "Vin Diesel", "Tim Allen", "Robin Williams", "Kevin Spacey", "Jason Biggs", "Seann William Scott", "Jean-Claude Van Damme", "Zach Galifianakis", "Owen Wilson", "Christian Bale", "Peter Jackson", "Sandra Bullock", "Bruce Lee", "Drew Barrymore", "Macaulay Culkin", "Jack Nicholson", "Bill Murray", "Sigourney Weaver", "Jake Gyllenhaal", "Jason Statham", "Jet Li", "Kate Beckinsale", "Rowan Atkinson", "Marlon Brando", "John Travolta", "Channing Tatum", "Ben Affleck", "Shah Rukh Khan", "Jennifer Aniston", "Emma Stone", "Chris Hemsworth", "James McAvoy", "James Cameron", "Amitabh Bachchan", "Brendan Fraser", "Rachel McAdams", "Tom Hiddleston", "Aamir Khan"},
|
||||
"business": {"Elon Musk", "Steve Jobs", "Jeff Bezos", "Bill Gates", "Mark Zuckerberg", "Sundar Pichai", "Walt Disney", "Warren Buffett", "Mukesh Ambani", "P. T. Barnum", "Colonel Sanders", "Ray Kroc", "Richard Branson", "Henry Ford", "Larry Page", "Steve Wozniak", "Ratan Tata", "John D. Rockefeller", "Madam C. J. Walker", "Tim Cook", "Andrew Carnegie", "Paul Allen", "Bobby Flay", "J. P. Morgan", "Satya Nadella", "Dhirubhai Ambani", "Carlos Slim", "Ross Perot", "Jamie Oliver", "Jack Ma", "Larry Ellison", "Sam Walton", "Sheryl Sandberg", "Marco Pierre White", "Indra Nooyi", "David Rockefeller", "Steve Ballmer", "Beyonce Knowles", "N. R. Narayana Murthy", "Mark Wahlberg", "Cameron Diaz", "Sergey Brin", "Howard Hughes", "Jessica Alba", "Dustin Moskovitz", "Eva Mendes", "Amancio Ortega Gaona", "Fred Trump", "Jamsetji Tata", "Kate Hudson", "Martha Stewart", "Peter Jones", "Marco Polo", "Susan Wojcicki", "Oskar Schindler", "Elizabeth Hurley", "Sean Combs", "Kate Spade", "Vincent McMahon", "David Chang", "Coco Chanel", "Vera Wang", "Arianna Huffington", "John McAfee", "Dany Garcia", "Richard Attenborough", "Donatella Versace", "Chris Hughes", "Alexis Ohanian", "J. Paul Getty", "Sharon Osbourne", "Bob Iger", "Kate Walsh", "Chris Gardner", "Jessica Simpson", "Guy Fieri", "Joy Mangano", "Wolfgang Puck", "Christie Brinkley", "Tom Steyer", "Evan Spiegel", "Hugh Hefner", "Preity Zinta", "Shane McMahon", "Salt Bae", "Mario Batali", "Bernard Arnault", "Michael Bloomberg", "Portia de Rossi", "Kevin O'Leary", "Roman Abramovich", "Jamie Dimon", "Rob Dyrdek", "Emeril Lagasse", "Kat Von D", "Karlie Kloss", "Antoni Porowski", "Edmond James de Rothschild", "Mitt Romney", "Aristotle Onassis", "Richard Benjamin Harrison", "Ben Bernanke", "Mark Cuban", "William Randolph Hearst", "Nate Robinson", "Alan Shepard", "Christina Anstead", "Laurene Powell Jobs", "Adam Weitsman", "Gladys Knight", "Gary Vaynerchuk", "Robert Kraft", "John Paul DeJoria", "Lori Greiner", "Carly Fiorina", "Lakshmi Mittal", "Jerry Jones", "Meg Whitman", "Azim Premji", "Lisa Vanderpump", "Dana White", "Russell Simmons", "Jennifer Flavin", "Harry Hamlin", "Conrad Hilton", "Prescott Bush", "Alvaro Morte", "Shigeru Miyamoto", "Phil Knight", "Jack Dorsey", "Barbara Bush", "Lee Iacocca", "Ma Huateng", "Rick Harrison", "Drew Scott", "Jawed Karim", "Daymond John", "Jaclyn Smith", "Maryse Ouellet", "Allegra Versace"},
|
||||
"sport": {"Pele", "Usain Bolt", "Muhammad Ali", "Carl Lewis", "Jesse Owens", "Sir Donald Bradman", "Billie Jean King", "Eddy Merckx", "Jackie Joyner-Kersee", "Lionel Messi", "Babe Didrikson Zaharias", "Michael Jordan", "Larisa Latynina", "Diego Maradona", "Serena Williams", "Babe Ruth", "Roger Federer", "Martina Navratilova", "Michael Phelps", "Lottie Dod", "Sachin Tendulkar", "Johan Cruyff", "Tiger Woods", "Sonja Henie", "Aryton Senna", "Nadia Comaneci", "Sergei Bubka", "Emil Zatopek", "Manny Pacquiao", "Imran Khan", "Jackie Robinson", "Shane Warne", "Dhyan Chand", "Fred Perry", "Lin Dan", "Abebe Bikila", "Clara Hughes", "Jan-Ove Waldner", "Bobby Moore", "Bjorn Borg", "Karch Kiraly", "Bradley Wiggins", "Seve Ballesteros", "David Beckham", "Michael Schumacher", "Greg Lemond", "Mia Hamm", "Jacques Anquetil", "Jack Nicklaus", "Steve Davis", "John McEnroe", "Monica Seles", "Magic Johnson", "Joe DiMaggio", "Roger Bannister", "Mo Farah", "Mark Spitz", "Chris Evert", "Al Oerter", "Jimmy Connors", "Michael Johnson", "Ian Botham", "Jim Thorpe", "Sir Steve Redgrave", "Steffi Graf", "Sebastian Coe", "Hicham El Guerrouj", "Eric Liddell", "W.G Grace", "Kenenisa Bekele", "Bernard Hinault", "Bob Beamon", "Paavo Nurmi", "David Campese", "Kelly Slater", "Haile Gebreselassie", "Rafael Nadal", "Brian Lara", "Chris Hoy", "Serge Blanco", "Cristiano Ronaldo", "Sir Gary Sobers", "Andy Murray", "George Best", "Sir Viv Richards", "Fausto Coppi", "Eusebio", "Rod Laver", "Grete Waitz", "Margaret Smith Court", "Tegla Laroupe", "Fanny Blankers-Koen", "Asbel Kiprop", "Lewis Hamilton", "C.B.Fry", "Annika Sörenstam", "Wilma Rudolph", "Alberta Tomba", "Bo Jackson"},
|
||||
}
|
||||
110
vendor/github.com/brianvoe/gofakeit/v7/data/colors.go
generated
vendored
Normal file
110
vendor/github.com/brianvoe/gofakeit/v7/data/colors.go
generated
vendored
Normal file
@@ -0,0 +1,110 @@
|
||||
package data
|
||||
|
||||
// Colors consists of color information
|
||||
var Colors = map[string][]string{
|
||||
"safe": {"black", "maroon", "green", "navy", "olive", "purple", "teal", "lime", "blue", "silver", "gray", "yellow", "fuchsia", "aqua", "white"},
|
||||
"full": {"AliceBlue", "AntiqueWhite", "Aqua", "Aquamarine", "Azure", "Beige", "Bisque", "Black", "BlanchedAlmond", "Blue", "BlueViolet", "Brown", "BurlyWood", "CadetBlue", "Chartreuse", "Chocolate", "Coral", "CornflowerBlue", "Cornsilk", "Crimson", "Cyan", "DarkBlue", "DarkCyan", "DarkGoldenRod", "DarkGray", "DarkGreen", "DarkKhaki", "DarkMagenta", "DarkOliveGreen", "Darkorange", "DarkOrchid", "DarkRed", "DarkSalmon", "DarkSeaGreen", "DarkSlateBlue", "DarkSlateGray", "DarkTurquoise", "DarkViolet", "DeepPink", "DeepSkyBlue", "DimGray", "DimGrey", "DodgerBlue", "FireBrick", "FloralWhite", "ForestGreen", "Fuchsia", "Gainsboro", "GhostWhite", "Gold", "GoldenRod", "Gray", "Green", "GreenYellow", "HoneyDew", "HotPink", "IndianRed", "Indigo", "Ivory", "Khaki", "Lavender", "LavenderBlush", "LawnGreen", "LemonChiffon", "LightBlue", "LightCoral", "LightCyan", "LightGoldenRodYellow", "LightGray", "LightGreen", "LightPink", "LightSalmon", "LightSeaGreen", "LightSkyBlue", "LightSlateGray", "LightSteelBlue", "LightYellow", "Lime", "LimeGreen", "Linen", "Magenta", "Maroon", "MediumAquaMarine", "MediumBlue", "MediumOrchid", "MediumPurple", "MediumSeaGreen", "MediumSlateBlue", "MediumSpringGreen", "MediumTurquoise", "MediumVioletRed", "MidnightBlue", "MintCream", "MistyRose", "Moccasin", "NavajoWhite", "Navy", "OldLace", "Olive", "OliveDrab", "Orange", "OrangeRed", "Orchid", "PaleGoldenRod", "PaleGreen", "PaleTurquoise", "PaleVioletRed", "PapayaWhip", "PeachPuff", "Peru", "Pink", "Plum", "PowderBlue", "Purple", "Red", "RosyBrown", "RoyalBlue", "SaddleBrown", "Salmon", "SandyBrown", "SeaGreen", "SeaShell", "Sienna", "Silver", "SkyBlue", "SlateBlue", "SlateGray", "Snow", "SpringGreen", "SteelBlue", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Violet", "Wheat", "White", "WhiteSmoke", "Yellow", "YellowGreen"},
|
||||
}
|
||||
|
||||
var ColorsNice = [][]string{
|
||||
{"#69d2e7", "#a7dbd8", "#e0e4cc", "#f38630", "#fa6900"},
|
||||
{"#fe4365", "#fc9d9a", "#f9cdad", "#c8c8a9", "#83af9b"},
|
||||
{"#ecd078", "#d95b43", "#c02942", "#542437", "#53777a"},
|
||||
{"#556270", "#4ecdc4", "#c7f464", "#ff6b6b", "#c44d58"},
|
||||
{"#774f38", "#e08e79", "#f1d4af", "#ece5ce", "#c5e0dc"},
|
||||
{"#e8ddcb", "#cdb380", "#036564", "#033649", "#031634"},
|
||||
{"#490a3d", "#bd1550", "#e97f02", "#f8ca00", "#8a9b0f"},
|
||||
{"#594f4f", "#547980", "#45ada8", "#9de0ad", "#e5fcc2"},
|
||||
{"#00a0b0", "#6a4a3c", "#cc333f", "#eb6841", "#edc951"},
|
||||
{"#e94e77", "#d68189", "#c6a49a", "#c6e5d9", "#f4ead5"},
|
||||
{"#3fb8af", "#7fc7af", "#dad8a7", "#ff9e9d", "#ff3d7f"},
|
||||
{"#d9ceb2", "#948c75", "#d5ded9", "#7a6a53", "#99b2b7"},
|
||||
{"#ffffff", "#cbe86b", "#f2e9e1", "#1c140d", "#cbe86b"},
|
||||
{"#efffcd", "#dce9be", "#555152", "#2e2633", "#99173c"},
|
||||
{"#343838", "#005f6b", "#008c9e", "#00b4cc", "#00dffc"},
|
||||
{"#413e4a", "#73626e", "#b38184", "#f0b49e", "#f7e4be"},
|
||||
{"#ff4e50", "#fc913a", "#f9d423", "#ede574", "#e1f5c4"},
|
||||
{"#99b898", "#fecea8", "#ff847c", "#e84a5f", "#2a363b"},
|
||||
{"#655643", "#80bca3", "#f6f7bd", "#e6ac27", "#bf4d28"},
|
||||
{"#00a8c6", "#40c0cb", "#f9f2e7", "#aee239", "#8fbe00"},
|
||||
{"#351330", "#424254", "#64908a", "#e8caa4", "#cc2a41"},
|
||||
{"#554236", "#f77825", "#d3ce3d", "#f1efa5", "#60b99a"},
|
||||
{"#5d4157", "#838689", "#a8caba", "#cad7b2", "#ebe3aa"},
|
||||
{"#8c2318", "#5e8c6a", "#88a65e", "#bfb35a", "#f2c45a"},
|
||||
{"#fad089", "#ff9c5b", "#f5634a", "#ed303c", "#3b8183"},
|
||||
{"#ff4242", "#f4fad2", "#d4ee5e", "#e1edb9", "#f0f2eb"},
|
||||
{"#f8b195", "#f67280", "#c06c84", "#6c5b7b", "#355c7d"},
|
||||
{"#d1e751", "#ffffff", "#000000", "#4dbce9", "#26ade4"},
|
||||
{"#1b676b", "#519548", "#88c425", "#bef202", "#eafde6"},
|
||||
{"#5e412f", "#fcebb6", "#78c0a8", "#f07818", "#f0a830"},
|
||||
{"#bcbdac", "#cfbe27", "#f27435", "#f02475", "#3b2d38"},
|
||||
{"#452632", "#91204d", "#e4844a", "#e8bf56", "#e2f7ce"},
|
||||
{"#eee6ab", "#c5bc8e", "#696758", "#45484b", "#36393b"},
|
||||
{"#f0d8a8", "#3d1c00", "#86b8b1", "#f2d694", "#fa2a00"},
|
||||
{"#2a044a", "#0b2e59", "#0d6759", "#7ab317", "#a0c55f"},
|
||||
{"#f04155", "#ff823a", "#f2f26f", "#fff7bd", "#95cfb7"},
|
||||
{"#b9d7d9", "#668284", "#2a2829", "#493736", "#7b3b3b"},
|
||||
{"#bbbb88", "#ccc68d", "#eedd99", "#eec290", "#eeaa88"},
|
||||
{"#b3cc57", "#ecf081", "#ffbe40", "#ef746f", "#ab3e5b"},
|
||||
{"#a3a948", "#edb92e", "#f85931", "#ce1836", "#009989"},
|
||||
{"#300030", "#480048", "#601848", "#c04848", "#f07241"},
|
||||
{"#67917a", "#170409", "#b8af03", "#ccbf82", "#e33258"},
|
||||
{"#aab3ab", "#c4cbb7", "#ebefc9", "#eee0b7", "#e8caaf"},
|
||||
{"#e8d5b7", "#0e2430", "#fc3a51", "#f5b349", "#e8d5b9"},
|
||||
{"#ab526b", "#bca297", "#c5ceae", "#f0e2a4", "#f4ebc3"},
|
||||
{"#607848", "#789048", "#c0d860", "#f0f0d8", "#604848"},
|
||||
{"#b6d8c0", "#c8d9bf", "#dadabd", "#ecdbbc", "#fedcba"},
|
||||
{"#a8e6ce", "#dcedc2", "#ffd3b5", "#ffaaa6", "#ff8c94"},
|
||||
{"#3e4147", "#fffedf", "#dfba69", "#5a2e2e", "#2a2c31"},
|
||||
{"#fc354c", "#29221f", "#13747d", "#0abfbc", "#fcf7c5"},
|
||||
{"#cc0c39", "#e6781e", "#c8cf02", "#f8fcc1", "#1693a7"},
|
||||
{"#1c2130", "#028f76", "#b3e099", "#ffeaad", "#d14334"},
|
||||
{"#a7c5bd", "#e5ddcb", "#eb7b59", "#cf4647", "#524656"},
|
||||
{"#dad6ca", "#1bb0ce", "#4f8699", "#6a5e72", "#563444"},
|
||||
{"#5c323e", "#a82743", "#e15e32", "#c0d23e", "#e5f04c"},
|
||||
{"#edebe6", "#d6e1c7", "#94c7b6", "#403b33", "#d3643b"},
|
||||
{"#fdf1cc", "#c6d6b8", "#987f69", "#e3ad40", "#fcd036"},
|
||||
{"#230f2b", "#f21d41", "#ebebbc", "#bce3c5", "#82b3ae"},
|
||||
{"#b9d3b0", "#81bda4", "#b28774", "#f88f79", "#f6aa93"},
|
||||
{"#3a111c", "#574951", "#83988e", "#bcdea5", "#e6f9bc"},
|
||||
{"#5e3929", "#cd8c52", "#b7d1a3", "#dee8be", "#fcf7d3"},
|
||||
{"#1c0113", "#6b0103", "#a30006", "#c21a01", "#f03c02"},
|
||||
{"#000000", "#9f111b", "#b11623", "#292c37", "#cccccc"},
|
||||
{"#382f32", "#ffeaf2", "#fcd9e5", "#fbc5d8", "#f1396d"},
|
||||
{"#e3dfba", "#c8d6bf", "#93ccc6", "#6cbdb5", "#1a1f1e"},
|
||||
{"#f6f6f6", "#e8e8e8", "#333333", "#990100", "#b90504"},
|
||||
{"#1b325f", "#9cc4e4", "#e9f2f9", "#3a89c9", "#f26c4f"},
|
||||
{"#a1dbb2", "#fee5ad", "#faca66", "#f7a541", "#f45d4c"},
|
||||
{"#c1b398", "#605951", "#fbeec2", "#61a6ab", "#accec0"},
|
||||
{"#5e9fa3", "#dcd1b4", "#fab87f", "#f87e7b", "#b05574"},
|
||||
{"#951f2b", "#f5f4d7", "#e0dfb1", "#a5a36c", "#535233"},
|
||||
{"#8dccad", "#988864", "#fea6a2", "#f9d6ac", "#ffe9af"},
|
||||
{"#2d2d29", "#215a6d", "#3ca2a2", "#92c7a3", "#dfece6"},
|
||||
{"#413d3d", "#040004", "#c8ff00", "#fa023c", "#4b000f"},
|
||||
{"#eff3cd", "#b2d5ba", "#61ada0", "#248f8d", "#605063"},
|
||||
{"#ffefd3", "#fffee4", "#d0ecea", "#9fd6d2", "#8b7a5e"},
|
||||
{"#cfffdd", "#b4dec1", "#5c5863", "#a85163", "#ff1f4c"},
|
||||
{"#9dc9ac", "#fffec7", "#f56218", "#ff9d2e", "#919167"},
|
||||
{"#4e395d", "#827085", "#8ebe94", "#ccfc8e", "#dc5b3e"},
|
||||
{"#a8a7a7", "#cc527a", "#e8175d", "#474747", "#363636"},
|
||||
{"#f8edd1", "#d88a8a", "#474843", "#9d9d93", "#c5cfc6"},
|
||||
{"#046d8b", "#309292", "#2fb8ac", "#93a42a", "#ecbe13"},
|
||||
{"#f38a8a", "#55443d", "#a0cab5", "#cde9ca", "#f1edd0"},
|
||||
{"#a70267", "#f10c49", "#fb6b41", "#f6d86b", "#339194"},
|
||||
{"#ff003c", "#ff8a00", "#fabe28", "#88c100", "#00c176"},
|
||||
{"#ffedbf", "#f7803c", "#f54828", "#2e0d23", "#f8e4c1"},
|
||||
{"#4e4d4a", "#353432", "#94ba65", "#2790b0", "#2b4e72"},
|
||||
{"#0ca5b0", "#4e3f30", "#fefeeb", "#f8f4e4", "#a5b3aa"},
|
||||
{"#4d3b3b", "#de6262", "#ffb88c", "#ffd0b3", "#f5e0d3"},
|
||||
{"#fffbb7", "#a6f6af", "#66b6ab", "#5b7c8d", "#4f2958"},
|
||||
{"#edf6ee", "#d1c089", "#b3204d", "#412e28", "#151101"},
|
||||
{"#9d7e79", "#ccac95", "#9a947c", "#748b83", "#5b756c"},
|
||||
{"#fcfef5", "#e9ffe1", "#cdcfb7", "#d6e6c3", "#fafbe3"},
|
||||
{"#9cddc8", "#bfd8ad", "#ddd9ab", "#f7af63", "#633d2e"},
|
||||
{"#30261c", "#403831", "#36544f", "#1f5f61", "#0b8185"},
|
||||
{"#aaff00", "#ffaa00", "#ff00aa", "#aa00ff", "#00aaff"},
|
||||
{"#d1313d", "#e5625c", "#f9bf76", "#8eb2c5", "#615375"},
|
||||
{"#ffe181", "#eee9e5", "#fad3b2", "#ffba7f", "#ff9c97"},
|
||||
{"#73c8a9", "#dee1b6", "#e1b866", "#bd5532", "#373b44"},
|
||||
{"#805841", "#dcf7f3", "#fffcdd", "#ffd8d8", "#f5a2a2"},
|
||||
}
|
||||
10
vendor/github.com/brianvoe/gofakeit/v7/data/company.go
generated
vendored
Normal file
10
vendor/github.com/brianvoe/gofakeit/v7/data/company.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
8
vendor/github.com/brianvoe/gofakeit/v7/data/computer.go
generated
vendored
Normal file
8
vendor/github.com/brianvoe/gofakeit/v7/data/computer.go
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
package data
|
||||
|
||||
// Computer consists of computer information
|
||||
var Computer = map[string][]string{
|
||||
"linux_processor": {"i686", "x86_64"},
|
||||
"mac_processor": {"Intel", "PPC", "U; Intel", "U; PPC"},
|
||||
"windows_platform": {"Windows NT 6.2", "Windows NT 6.1", "Windows NT 6.0", "Windows NT 5.2", "Windows NT 5.1", "Windows NT 5.01", "Windows NT 5.0", "Windows NT 4.0", "Windows 98; Win 9x 4.90", "Windows 98", "Windows 95", "Windows CE"},
|
||||
}
|
||||
7
vendor/github.com/brianvoe/gofakeit/v7/data/currency.go
generated
vendored
Normal file
7
vendor/github.com/brianvoe/gofakeit/v7/data/currency.go
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
package data
|
||||
|
||||
// Currency consists of currency information
|
||||
var Currency = map[string][]string{
|
||||
"short": {"AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", "CAD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC", "CUC", "CUP", "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB", "EUR", "FJD", "FKP", "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", "HKD", "HNL", "HTG", "HUF", "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY", "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRU", "MUR", "MVR", "MWK", "MXN", "MYR", "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB", "RWF", "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "STN", "SVC", "SYP", "SZL", "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "USD", "UYU", "UZS", "VES", "VND", "VUV", "WST", "XAF", "XCD", "XDR", "XOF", "XPF", "YER", "ZAR", "ZMW", "ZWL"},
|
||||
"long": {"United Arab Emirates Dirham", "Afghanistan Afghani", "Albania Lek", "Armenia Dram", "Netherlands Antilles Guilder", "Angola Kwanza", "Argentina Peso", "Australia Dollar", "Aruba Guilder", "Azerbaijan New Manat", "Bosnia and Herzegovina Convertible Marka", "Barbados Dollar", "Bangladesh Taka", "Bulgaria Lev", "Bahrain Dinar", "Burundi Franc", "Bermuda Dollar", "Brunei Darussalam Dollar", "Bolivia Boliviano", "Brazil Real", "Bahamas Dollar", "Bhutan Ngultrum", "Botswana Pula", "Belarus Ruble", "Belize Dollar", "Canada Dollar", "Congo/Kinshasa Franc", "Switzerland Franc", "Chile Peso", "China Yuan Renminbi", "Colombia Peso", "Costa Rica Colon", "Cuba Convertible Peso", "Cuba Peso", "Cape Verde Escudo", "Czech Republic Koruna", "Djibouti Franc", "Denmark Krone", "Dominican Republic Peso", "Algeria Dinar", "Egypt Pound", "Eritrea Nakfa", "Ethiopia Birr", "Euro Member Countries", "Fiji Dollar", "Falkland Islands (Malvinas) Pound", "United Kingdom Pound", "Georgia Lari", "Ghana Cedi", "Gibraltar Pound", "Gambia Dalasi", "Guinea Franc", "Guatemala Quetzal", "Guyana Dollar", "Hong Kong Dollar", "Honduras Lempira", "Haiti Gourde", "Hungary Forint", "Indonesia Rupiah", "Israel Shekel", "India Rupee", "Iraq Dinar", "Iran Rial", "Iceland Krona", "Jamaica Dollar", "Jordan Dinar", "Japan Yen", "Kenya Shilling", "Kyrgyzstan Som", "Cambodia Riel", "Comoros Franc", "Korea (North) Won", "Korea (South) Won", "Kuwait Dinar", "Cayman Islands Dollar", "Kazakhstan Tenge", "Laos Kip", "Lebanon Pound", "Sri Lanka Rupee", "Liberia Dollar", "Lesotho Loti", "Libya Dinar", "Morocco Dirham", "Moldova Leu", "Madagascar Ariary", "Macedonia Denar", "Myanmar (Burma) Kyat", "Mongolia Tughrik", "Macau Pataca", "Mauritania Ouguiya", "Mauritius Rupee", "Maldives (Maldive Islands) Rufiyaa", "Malawi Kwacha", "Mexico Peso", "Malaysia Ringgit", "Mozambique Metical", "Namibia Dollar", "Nigeria Naira", "Nicaragua Cordoba", "Norway Krone", "Nepal Rupee", "New Zealand Dollar", "Oman Rial", "Panama Balboa", "Peru Nuevo Sol", "Papua New Guinea Kina", "Philippines Peso", "Pakistan Rupee", "Poland Zloty", "Paraguay Guarani", "Qatar Riyal", "Romania New Leu", "Serbia Dinar", "Russia Ruble", "Rwanda Franc", "Saudi Arabia Riyal", "Solomon Islands Dollar", "Seychelles Rupee", "Sudan Pound", "Sweden Krona", "Singapore Dollar", "Saint Helena Pound", "Sierra Leone Leone", "Somalia Shilling", "Suriname Dollar", "São Tomé and Príncipe Dobra", "El Salvador Colon", "Syria Pound", "Swaziland Lilangeni", "Thailand Baht", "Tajikistan Somoni", "Turkmenistan Manat", "Tunisia Dinar", "Tonga Pa'anga", "Turkey Lira", "Trinidad and Tobago Dollar", "Taiwan New Dollar", "Tanzania Shilling", "Ukraine Hryvnia", "Uganda Shilling", "United States Dollar", "Uruguay Peso", "Uzbekistan Som", "Venezuela Bolivar", "Viet Nam Dong", "Vanuatu Vatu", "Samoa Tala", "Communauté Financière Africaine (BEAC) CFA Franc BEAC", "East Caribbean Dollar", "International Monetary Fund (IMF) Special Drawing Rights", "Communauté Financière Africaine (BCEAO) Franc", "Comptoirs Français du Pacifique (CFP) Franc", "Yemen Rial", "South Africa Rand", "Zambia Kwacha", "Zimbabwe Dollar"},
|
||||
}
|
||||
92
vendor/github.com/brianvoe/gofakeit/v7/data/data.go
generated
vendored
Normal file
92
vendor/github.com/brianvoe/gofakeit/v7/data/data.go
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
package data
|
||||
|
||||
// Data consists of the main set of fake information
|
||||
var Data = map[string]map[string][]string{
|
||||
"person": Person,
|
||||
"address": Address,
|
||||
"company": Company,
|
||||
"job": Job,
|
||||
"lorem": Lorem,
|
||||
"language": Languages,
|
||||
"internet": Internet,
|
||||
"file": Files,
|
||||
"color": Colors,
|
||||
"computer": Computer,
|
||||
"hipster": Hipster,
|
||||
"beer": Beer,
|
||||
"hacker": Hacker,
|
||||
"animal": Animal,
|
||||
"currency": Currency,
|
||||
"log_level": LogLevels,
|
||||
"timezone": TimeZone,
|
||||
"car": Car,
|
||||
"emoji": Emoji,
|
||||
"word": Word,
|
||||
"sentence": Sentence,
|
||||
"food": Food,
|
||||
"minecraft": Minecraft,
|
||||
"celebrity": Celebrity,
|
||||
"error": Error,
|
||||
"html": Html,
|
||||
"book": Books,
|
||||
"movie": Movies,
|
||||
"school": School,
|
||||
"song": Songs,
|
||||
"product": Product,
|
||||
"bank": Bank,
|
||||
}
|
||||
|
||||
func List() map[string][]string {
|
||||
var list = make(map[string][]string)
|
||||
|
||||
// Loop through the data and add the keys to the list
|
||||
for key := range Data {
|
||||
list[key] = []string{}
|
||||
|
||||
// Loop through the sub data and add the keys to the list
|
||||
for subkey := range Data[key] {
|
||||
list[key] = append(list[key], subkey)
|
||||
}
|
||||
}
|
||||
|
||||
return list
|
||||
}
|
||||
|
||||
func Get(key string) map[string][]string {
|
||||
// Make sure the key exists, if not return an empty map
|
||||
if _, ok := Data[key]; !ok {
|
||||
return make(map[string][]string)
|
||||
}
|
||||
|
||||
return Data[key]
|
||||
}
|
||||
|
||||
func Set(key string, data map[string][]string) {
|
||||
Data[key] = data
|
||||
}
|
||||
|
||||
func Remove(key string) {
|
||||
delete(Data, key)
|
||||
}
|
||||
|
||||
func GetSubData(key, subkey string) []string {
|
||||
// Make sure the key exists, if not return an empty map
|
||||
if _, ok := Data[key]; !ok {
|
||||
return []string{}
|
||||
}
|
||||
|
||||
return Data[key][subkey]
|
||||
}
|
||||
|
||||
func SetSub(key, subkey string, data []string) {
|
||||
// Make sure the key exists, if not add it
|
||||
if _, ok := Data[key]; !ok {
|
||||
Data[key] = make(map[string][]string)
|
||||
}
|
||||
|
||||
Data[key][subkey] = data
|
||||
}
|
||||
|
||||
func RemoveSub(key, subkey string) {
|
||||
delete(Data[key], subkey)
|
||||
}
|
||||
10
vendor/github.com/brianvoe/gofakeit/v7/data/datetime.go
generated
vendored
Normal file
10
vendor/github.com/brianvoe/gofakeit/v7/data/datetime.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
5849
vendor/github.com/brianvoe/gofakeit/v7/data/emoji.go
generated
vendored
Normal file
5849
vendor/github.com/brianvoe/gofakeit/v7/data/emoji.go
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
122
vendor/github.com/brianvoe/gofakeit/v7/data/errors.go
generated
vendored
Normal file
122
vendor/github.com/brianvoe/gofakeit/v7/data/errors.go
generated
vendored
Normal file
@@ -0,0 +1,122 @@
|
||||
package data
|
||||
|
||||
var Error = map[string][]string{
|
||||
"object": {
|
||||
"argument",
|
||||
"buffer",
|
||||
"connection",
|
||||
"database",
|
||||
"header",
|
||||
"hostname",
|
||||
"method",
|
||||
"object",
|
||||
"parameter",
|
||||
"pointer",
|
||||
"port",
|
||||
"protocol",
|
||||
"request",
|
||||
"response",
|
||||
"server",
|
||||
"service",
|
||||
"signature",
|
||||
"tag",
|
||||
"undefined",
|
||||
"url",
|
||||
"uri",
|
||||
"variable",
|
||||
},
|
||||
"generic": {
|
||||
"error",
|
||||
"syntax error",
|
||||
"requested {errorobject} is unavailable",
|
||||
"failed to {hackerverb} {errorobject}",
|
||||
"expected {errorobject} is undefined",
|
||||
"[object Object]",
|
||||
"no such variable",
|
||||
"{errorobject} not initialized",
|
||||
"variable assigned before declaration",
|
||||
},
|
||||
"database": {
|
||||
"sql error",
|
||||
"database connection error",
|
||||
"table does not exist",
|
||||
"unique key constraint",
|
||||
"table migration failed",
|
||||
"bad connection",
|
||||
"destination pointer is nil",
|
||||
},
|
||||
"grpc": {
|
||||
"connection refused",
|
||||
"connection closed",
|
||||
"connection is shut down",
|
||||
"client protocol error",
|
||||
},
|
||||
"http": {
|
||||
"cross-origin-resource-policy error",
|
||||
"feature not supported",
|
||||
"trailer header without chunked transfer encoding",
|
||||
"no multipart boundary param in Content-Type",
|
||||
"request Content-Type isn't multipart/form-data",
|
||||
"header too long",
|
||||
"entity body too short",
|
||||
"missing ContentLength in HEAD response",
|
||||
"named cookie not present",
|
||||
"invalid method",
|
||||
"connection has been hijacked",
|
||||
"request method or response status code does not allow body",
|
||||
"wrote more than the declared Content-Length",
|
||||
"{httpmethod} not allowed",
|
||||
},
|
||||
"http_client": { // 400s
|
||||
"bad request", // 400
|
||||
"unauthorized", // 401
|
||||
"payment required", // 402
|
||||
"forbidden", // 403
|
||||
"not found", // 404
|
||||
"method not allowed", // 405
|
||||
"not acceptable", // 406
|
||||
"proxy authentication required", // 407
|
||||
"request timeout", // 408
|
||||
"conflict", // 409
|
||||
"gone", // 410
|
||||
"length required", // 411
|
||||
"precondition failed", // 412
|
||||
"payload too large", // 413
|
||||
"URI too long", // 414
|
||||
"unsupported media type", // 415
|
||||
"range not satisfiable", // 416
|
||||
"expectation failed", // 417
|
||||
"im a teapot", // 418
|
||||
},
|
||||
"http_server": { // 500s
|
||||
"internal server error", // 500
|
||||
"not implemented", // 501
|
||||
"bad gateway", // 502
|
||||
"service unavailable", // 503
|
||||
"gateway timeout", // 504
|
||||
"http version not supported", // 505
|
||||
"variant also negotiates", // 506
|
||||
"insufficient storage", // 507
|
||||
"loop detected", // 508
|
||||
"not extended", // 510
|
||||
"network authentication required", // 511
|
||||
},
|
||||
"runtime": {
|
||||
"panic: runtime error: invalid memory address or nil pointer dereference",
|
||||
"address out of bounds",
|
||||
"undefined has no such property 'length'",
|
||||
"not enough arguments",
|
||||
"expected 2 arguments, got 3",
|
||||
},
|
||||
"validation": {
|
||||
"invalid format",
|
||||
"missing required field",
|
||||
"{inputname} is required",
|
||||
"{inputname} max length exceeded",
|
||||
"{inputname} must be at exactly 16 characters",
|
||||
"{inputname} must be at exactly 32 bytes",
|
||||
"failed to parse {inputname}",
|
||||
"date is in the past",
|
||||
"payment details cannot be verified",
|
||||
},
|
||||
}
|
||||
7
vendor/github.com/brianvoe/gofakeit/v7/data/files.go
generated
vendored
Normal file
7
vendor/github.com/brianvoe/gofakeit/v7/data/files.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
13
vendor/github.com/brianvoe/gofakeit/v7/data/food.go
generated
vendored
Normal file
13
vendor/github.com/brianvoe/gofakeit/v7/data/food.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
20
vendor/github.com/brianvoe/gofakeit/v7/data/hacker.go
generated
vendored
Normal file
20
vendor/github.com/brianvoe/gofakeit/v7/data/hacker.go
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
package data
|
||||
|
||||
// Hacker consists of random hacker phrases
|
||||
var Hacker = map[string][]string{
|
||||
"abbreviation": {"TCP", "HTTP", "SDD", "RAM", "GB", "CSS", "SSL", "AGP", "SQL", "FTP", "PCI", "AI", "ADP", "RSS", "XML", "EXE", "COM", "HDD", "THX", "SMTP", "SMS", "USB", "PNG", "SAS", "IB", "SCSI", "JSON", "XSS", "JBOD"},
|
||||
"adjective": {"auxiliary", "primary", "back-end", "digital", "open-source", "virtual", "cross-platform", "redundant", "online", "haptic", "multi-byte", "bluetooth", "wireless", "1080p", "neural", "optical", "solid state", "mobile"},
|
||||
"noun": {"driver", "protocol", "bandwidth", "panel", "microchip", "program", "port", "card", "array", "interface", "system", "sensor", "firewall", "hard drive", "pixel", "alarm", "feed", "monitor", "application", "transmitter", "bus", "circuit", "capacitor", "matrix"},
|
||||
"verb": {"back up", "bypass", "hack", "override", "compress", "copy", "navigate", "index", "connect", "generate", "quantify", "calculate", "synthesize", "input", "transmit", "program", "reboot", "parse", "read", "write", "load", "render", "validate", "verify", "sign", "decrypt", "encrypt", "construct", "deconstruct", "compile", "transpile", "bundle", "lock", "unlock", "buffer", "format"},
|
||||
"ingverb": {"backing up", "bypassing", "hacking", "overriding", "compressing", "copying", "navigating", "indexing", "connecting", "generating", "quantifying", "calculating", "synthesizing", "transmitting", "programming", "parsing"},
|
||||
"phrase": {
|
||||
"If we {hackerverb} the {hackernoun}, we can get to the {hackerabbreviation} {hackernoun} through the {hackeradjective} {hackerabbreviation} {hackernoun}!",
|
||||
"We need to {hackerverb} the {hackeradjective} {hackerabbreviation} {hackernoun}!",
|
||||
"Try to {hackerverb} the {hackerabbreviation} {hackernoun}, maybe it will {hackerverb} the {hackeradjective} {hackernoun}!",
|
||||
"You can't {hackerverb} the {hackernoun} without {hackeringverb} the {hackeradjective} {hackerabbreviation} {hackernoun}!",
|
||||
"Use the {hackeradjective} {hackerabbreviation} {hackernoun}, then you can {hackerverb} the {hackeradjective} {hackernoun}!",
|
||||
"The {hackerabbreviation} {hackernoun} is down, {hackerverb} the {hackeradjective} {hackernoun} so we can {hackerverb} the {hackerabbreviation} {hackernoun}!",
|
||||
"{hackeringverb} the {hackernoun} won't do anything, we need to {hackerverb} the {hackeradjective} {hackerabbreviation} {hackernoun}!",
|
||||
"I'll {hackerverb} the {hackeradjective} {hackerabbreviation} {hackernoun}, that should {hackerverb} the {hackerabbreviation} {hackernoun}!",
|
||||
},
|
||||
}
|
||||
6
vendor/github.com/brianvoe/gofakeit/v7/data/hipster.go
generated
vendored
Normal file
6
vendor/github.com/brianvoe/gofakeit/v7/data/hipster.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
package data
|
||||
|
||||
// Hipster consists of random hipster words
|
||||
var Hipster = map[string][]string{
|
||||
"word": {"Wes Anderson", "chicharrones", "narwhal", "food truck", "marfa", "aesthetic", "keytar", "art party", "sustainable", "forage", "mlkshk", "gentrify", "locavore", "swag", "hoodie", "microdosing", "VHS", "before they sold out", "pabst", "plaid", "Thundercats", "freegan", "scenester", "hella", "occupy", "truffaut", "raw denim", "beard", "post-ironic", "photo booth", "twee", "90's", "pitchfork", "cray", "cornhole", "kale chips", "pour-over", "yr", "five dollar toast", "kombucha", "you probably haven't heard of them", "mustache", "fixie", "try-hard", "franzen", "kitsch", "austin", "stumptown", "keffiyeh", "whatever", "tumblr", "DIY", "shoreditch", "biodiesel", "vegan", "pop-up", "banjo", "kogi", "cold-pressed", "letterpress", "chambray", "butcher", "synth", "trust fund", "hammock", "farm-to-table", "intelligentsia", "loko", "ugh", "offal", "poutine", "gastropub", "Godard", "jean shorts", "sriracha", "dreamcatcher", "leggings", "fashion axe", "church-key", "meggings", "tote bag", "disrupt", "readymade", "helvetica", "flannel", "meh", "roof", "hashtag", "knausgaard", "cronut", "schlitz", "green juice", "waistcoat", "normcore", "viral", "ethical", "actually", "fingerstache", "humblebrag", "deep v", "wayfarers", "tacos", "taxidermy", "selvage", "put a bird on it", "ramps", "portland", "retro", "kickstarter", "bushwick", "brunch", "distillery", "migas", "flexitarian", "XOXO", "small batch", "messenger bag", "heirloom", "tofu", "bicycle rights", "bespoke", "salvia", "wolf", "selfies", "echo", "park", "listicle", "craft beer", "chartreuse", "sartorial", "pinterest", "mumblecore", "kinfolk", "vinyl", "etsy", "umami", "8-bit", "polaroid", "banh mi", "crucifix", "bitters", "brooklyn", "PBR&B", "drinking", "vinegar", "squid", "tattooed", "skateboard", "vice", "authentic", "literally", "lomo", "celiac", "health", "goth", "artisan", "chillwave", "blue bottle", "pickled", "next level", "neutra", "organic", "Yuccie", "paleo", "blog", "single-origin coffee", "seitan", "street", "gluten-free", "mixtape", "venmo", "irony", "everyday", "carry", "slow-carb", "3 wolf moon", "direct trade", "lo-fi", "tousled", "tilde", "semiotics", "cred", "chia", "master", "cleanse", "ennui", "quinoa", "pug", "iPhone", "fanny pack", "cliche", "cardigan", "asymmetrical", "meditation", "YOLO", "typewriter", "pork belly", "shabby chic", "+1", "lumbersexual", "williamsburg"},
|
||||
}
|
||||
7
vendor/github.com/brianvoe/gofakeit/v7/data/html.go
generated
vendored
Normal file
7
vendor/github.com/brianvoe/gofakeit/v7/data/html.go
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
package data
|
||||
|
||||
// Html consists of various html information
|
||||
var Html = map[string][]string{
|
||||
"svg": {"rect", "circle", "ellipse", "line", "polyline", "polygon"},
|
||||
"input_name": {"title", "first_name", "last_name", "suffix", "address", "postal_code", "city", "state", "country", "date_of_birth", "card_number", "description", "message", "status"},
|
||||
}
|
||||
11
vendor/github.com/brianvoe/gofakeit/v7/data/internet.go
generated
vendored
Normal file
11
vendor/github.com/brianvoe/gofakeit/v7/data/internet.go
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
package data
|
||||
|
||||
// Internet consists of various internet information
|
||||
var Internet = map[string][]string{
|
||||
"browser": {"firefox", "chrome", "internetExplorer", "opera", "safari"},
|
||||
"domain_suffix": {"com", "biz", "info", "name", "net", "org", "io"},
|
||||
"http_method": {"HEAD", "GET", "POST", "PUT", "PATCH", "DELETE"},
|
||||
"http_version": {"HTTP/1.0", "HTTP/1.1", "HTTP/2.0"},
|
||||
"http_status_simple": {"200", "301", "302", "400", "404", "500"},
|
||||
"http_status_general": {"100", "200", "201", "203", "204", "205", "301", "302", "304", "400", "401", "403", "404", "405", "406", "416", "500", "501", "502", "503", "504"},
|
||||
}
|
||||
58
vendor/github.com/brianvoe/gofakeit/v7/data/isbn.go
generated
vendored
Normal file
58
vendor/github.com/brianvoe/gofakeit/v7/data/isbn.go
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
package data
|
||||
|
||||
// Prefixes for ISBN standards
|
||||
const (
|
||||
ISBN13Prefix = "978"
|
||||
ISBN10Prefix = "979"
|
||||
)
|
||||
|
||||
// ISBNRule defines a registrant rule range and its length
|
||||
type ISBNRule struct {
|
||||
Min string
|
||||
Max string
|
||||
Length int
|
||||
}
|
||||
|
||||
// ISBNRules maps prefix -> registration group -> registrant rules
|
||||
var ISBNRules = map[string]map[string][]ISBNRule{
|
||||
ISBN13Prefix: {
|
||||
"0": {
|
||||
{Min: "0000000", Max: "1999999", Length: 2},
|
||||
{Min: "2000000", Max: "2279999", Length: 3},
|
||||
{Min: "2280000", Max: "2289999", Length: 4},
|
||||
{Min: "2290000", Max: "6479999", Length: 3},
|
||||
{Min: "6480000", Max: "6489999", Length: 7},
|
||||
{Min: "6490000", Max: "6999999", Length: 3},
|
||||
{Min: "7000000", Max: "8499999", Length: 4},
|
||||
{Min: "8500000", Max: "8999999", Length: 5},
|
||||
{Min: "9000000", Max: "9499999", Length: 6},
|
||||
{Min: "9500000", Max: "9999999", Length: 7},
|
||||
},
|
||||
"1": {
|
||||
{Min: "0000000", Max: "0999999", Length: 2},
|
||||
{Min: "1000000", Max: "3999999", Length: 3},
|
||||
{Min: "4000000", Max: "5499999", Length: 4},
|
||||
{Min: "5500000", Max: "7319999", Length: 5},
|
||||
{Min: "7320000", Max: "7399999", Length: 7},
|
||||
{Min: "7400000", Max: "8697999", Length: 5},
|
||||
{Min: "8698000", Max: "9729999", Length: 6},
|
||||
{Min: "9730000", Max: "9877999", Length: 4},
|
||||
{Min: "9878000", Max: "9989999", Length: 6},
|
||||
{Min: "9990000", Max: "9999999", Length: 7},
|
||||
},
|
||||
},
|
||||
ISBN10Prefix: {
|
||||
"8": {
|
||||
{Min: "0000000", Max: "1999999", Length: 2},
|
||||
{Min: "2000000", Max: "2279999", Length: 3},
|
||||
{Min: "2280000", Max: "2289999", Length: 4},
|
||||
{Min: "2290000", Max: "6479999", Length: 3},
|
||||
{Min: "6480000", Max: "6489999", Length: 7},
|
||||
{Min: "6490000", Max: "6999999", Length: 3},
|
||||
{Min: "7000000", Max: "8499999", Length: 4},
|
||||
{Min: "8500000", Max: "8999999", Length: 5},
|
||||
{Min: "9000000", Max: "9499999", Length: 6},
|
||||
{Min: "9500000", Max: "9999999", Length: 7},
|
||||
},
|
||||
},
|
||||
}
|
||||
8
vendor/github.com/brianvoe/gofakeit/v7/data/job.go
generated
vendored
Normal file
8
vendor/github.com/brianvoe/gofakeit/v7/data/job.go
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
package data
|
||||
|
||||
// Job consists of job data
|
||||
var Job = map[string][]string{
|
||||
"title": {"Administrator", "Agent", "Analyst", "Architect", "Assistant", "Associate", "Consultant", "Coordinator", "Designer", "Developer", "Director", "Engineer", "Executive", "Facilitator", "Liaison", "Manager", "Officer", "Orchestrator", "Planner", "Producer", "Representative", "Specialist", "Strategist", "Supervisor", "Technician"},
|
||||
"descriptor": {"Central", "Chief", "Corporate", "Customer", "Direct", "District", "Dynamic", "Dynamic", "Forward", "Future", "Global", "Human", "Internal", "International", "Investor", "Lead", "Legacy", "National", "Principal", "Product", "Regional", "Senior"},
|
||||
"level": {"Accountability", "Accounts", "Applications", "Assurance", "Brand", "Branding", "Communications", "Configuration", "Creative", "Data", "Directives", "Division", "Factors", "Functionality", "Group", "Identity", "Implementation", "Infrastructure", "Integration", "Interactions", "Intranet", "Marketing", "Markets", "Metrics", "Mobility", "Operations", "Optimization", "Paradigm", "Program", "Quality", "Research", "Response", "Security", "Solutions", "Tactics", "Usability", "Web"},
|
||||
}
|
||||
9
vendor/github.com/brianvoe/gofakeit/v7/data/languages.go
generated
vendored
Normal file
9
vendor/github.com/brianvoe/gofakeit/v7/data/languages.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
8
vendor/github.com/brianvoe/gofakeit/v7/data/log_level.go
generated
vendored
Normal file
8
vendor/github.com/brianvoe/gofakeit/v7/data/log_level.go
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
package data
|
||||
|
||||
// LogLevels consists of log levels for several types
|
||||
var LogLevels = map[string][]string{
|
||||
"general": {"error", "warning", "info", "fatal", "trace", "debug"},
|
||||
"syslog": {"emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"},
|
||||
"apache": {"emerg", "alert", "crit", "error", "warn", "notice", "info", "debug", "trace1-8"},
|
||||
}
|
||||
6
vendor/github.com/brianvoe/gofakeit/v7/data/lorem.go
generated
vendored
Normal file
6
vendor/github.com/brianvoe/gofakeit/v7/data/lorem.go
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
package data
|
||||
|
||||
// Lorem consists of lorem ipsum information
|
||||
var Lorem = map[string][]string{
|
||||
"word": {"alias", "consequatur", "aut", "perferendis", "sit", "voluptatem", "accusantium", "doloremque", "aperiam", "eaque", "ipsa", "quae", "ab", "illo", "inventore", "veritatis", "et", "quasi", "architecto", "beatae", "vitae", "dicta", "sunt", "explicabo", "aspernatur", "aut", "odit", "aut", "fugit", "sed", "quia", "consequuntur", "magni", "dolores", "eos", "qui", "ratione", "voluptatem", "sequi", "nesciunt", "neque", "dolorem", "ipsum", "quia", "dolor", "sit", "amet", "consectetur", "adipisci", "velit", "sed", "quia", "non", "numquam", "eius", "modi", "tempora", "incidunt", "ut", "labore", "et", "dolore", "magnam", "aliquam", "quaerat", "voluptatem", "ut", "enim", "ad", "minima", "veniam", "quis", "nostrum", "exercitationem", "ullam", "corporis", "nemo", "enim", "ipsam", "voluptatem", "quia", "voluptas", "sit", "suscipit", "laboriosam", "nisi", "ut", "aliquid", "ex", "ea", "commodi", "consequatur", "quis", "autem", "vel", "eum", "iure", "reprehenderit", "qui", "in", "ea", "voluptate", "velit", "esse", "quam", "nihil", "molestiae", "et", "iusto", "odio", "dignissimos", "ducimus", "qui", "blanditiis", "praesentium", "laudantium", "totam", "rem", "voluptatum", "deleniti", "atque", "corrupti", "quos", "dolores", "et", "quas", "molestias", "excepturi", "sint", "occaecati", "cupiditate", "non", "provident", "sed", "ut", "perspiciatis", "unde", "omnis", "iste", "natus", "error", "similique", "sunt", "in", "culpa", "qui", "officia", "deserunt", "mollitia", "animi", "id", "est", "laborum", "et", "dolorum", "fuga", "et", "harum", "quidem", "rerum", "facilis", "est", "et", "expedita", "distinctio", "nam", "libero", "tempore", "cum", "soluta", "nobis", "est", "eligendi", "optio", "cumque", "nihil", "impedit", "quo", "porro", "quisquam", "est", "qui", "minus", "id", "quod", "maxime", "placeat", "facere", "possimus", "omnis", "voluptas", "assumenda", "est", "omnis", "dolor", "repellendus", "temporibus", "autem", "quibusdam", "et", "aut", "consequatur", "vel", "illum", "qui", "dolorem", "eum", "fugiat", "quo", "voluptas", "nulla", "pariatur", "at", "vero", "eos", "et", "accusamus", "officiis", "debitis", "aut", "rerum", "necessitatibus", "saepe", "eveniet", "ut", "et", "voluptates", "repudiandae", "sint", "et", "molestiae", "non", "recusandae", "itaque", "earum", "rerum", "hic", "tenetur", "a", "sapiente", "delectus", "ut", "aut", "reiciendis", "voluptatibus", "maiores", "doloribus", "asperiores", "repellat"},
|
||||
}
|
||||
23
vendor/github.com/brianvoe/gofakeit/v7/data/minecraft.go
generated
vendored
Normal file
23
vendor/github.com/brianvoe/gofakeit/v7/data/minecraft.go
generated
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
package data
|
||||
|
||||
// Minecraft consists of various minecraft items
|
||||
var Minecraft = map[string][]string{
|
||||
"ore": {"coal", "copper", "iron", "gold", "redstone", "lapis", "diamond", "emerald"},
|
||||
"wood": {"oak", "spruce", "birch", "jungle", "acacia", "dark oak"},
|
||||
"armortier": {"leather", "chainmail", "iron", "gold", "diamond", "netherite"},
|
||||
"armorpart": {"helmet", "chestplate", "leggings", "boots"},
|
||||
"weapon": {"sword", "bow", "arrow", "trident", "shield"},
|
||||
"tool": {"pickaxe", "axe", "shovel", "hoe", "fishing rod"},
|
||||
"dye": {"white", "orange", "magenta", "light blue", "yellow", "lime", "pink", "gray", "light gray", "cyan", "purple", "blue", "brown", "green", "red", "black"},
|
||||
"food": {"apple", "baked potato", "beetroot", "beetroot soup", "bread", "cake", "carrot", "chorus fruit", "cooked chicken", "cooked cod", "cooked mutton", "cooked salmon", "cookie", "enchanted golden apple", "golden apple", "glow berry", "golden carrot", "honey bottle", "melon slice", "mushroom stew", "poisonous potato", "potato", "pufferfish", "pumpkin pie", "rabbit stew", "raw beef", "raw chicken", "raw cod", "raw mutton", "raw porkchop", "raw rabbit", "raw salmon", "rotten flesh", "spider eye", "steak", "suspicous stew", "sweet berry", "tropical fish"},
|
||||
"animal": {"chicken", "cow", "pig", "rabbit", "sheep", "wolf"},
|
||||
"villagerjob": {"armourer", "butcher", "carpenter", "cleric", "farmer", "fisherman", "fletcher", "leatherworker", "librarian", "mason", "nitwit", "shepherd", "toolsmith", "weaponsmith"},
|
||||
"villagerstation": {"composter", "smoker", "barrel", "loom", "blast furnace", "brewing stand", "cauldron", "fletching table", "cartography table", "lectern", "smithing table", "stonecutter", "grindstone"},
|
||||
"villagerlevel": {"novice", "apprentice", "journeyman", "expert", "master"},
|
||||
"mobpassive": {"axolotl", "bat", "cat", "chicken", "cod", "cow", "donkey", "fox", "glow squid", "horse", "mooshroom", "mule", "ocelot", "parrot", "pig", "pufferfish", "rabbit", "salmon", "sheep", "skeleton horse", "snow golem", "squid", "strider", "tropical fish", "turtle", "villager", "wandering trader"},
|
||||
"mobneutral": {"bee", "cave spider", "dolphin", "enderman", "goat", "iron golem", "llama", "panda", "piglin", "polar bear", "spider", "trader llama", "wolf", "zombified piglin"},
|
||||
"mobhostile": {"blaze", "chicken jockey", "creeper", "drowned", "elder guardian", "endermite", "evoker", "ghast", "guardian", "hoglin phantom", "husk", "magma cube", "phantom", "piglin brute", "pillager", "ravager", "shulker", "silverfish", "skeleton", "skeleton horseman", "slime", "spider jockey", "stray", "vex", "vindicator", "witch", "wither skeleton", "zoglin", "zombie", "zombie villager"},
|
||||
"mobboss": {"ender dragon", "wither"},
|
||||
"biome": {"plain", "forest", "jungle", "mountain", "desert", "taiga", "snowy tundra", "ice spike", "swamp", "savannah", "badlands", "beach", "stone shore", "river", "ocean", "mushroom island", "the nether", "the end"},
|
||||
"weather": {"clear", "rain", "thunder"},
|
||||
}
|
||||
130
vendor/github.com/brianvoe/gofakeit/v7/data/movie.go
generated
vendored
Normal file
130
vendor/github.com/brianvoe/gofakeit/v7/data/movie.go
generated
vendored
Normal file
@@ -0,0 +1,130 @@
|
||||
package data
|
||||
|
||||
// From IMDB - Top 250 Movies subset to 100
|
||||
var Movies = map[string][]string{
|
||||
"name": {
|
||||
"12 Years a Slave",
|
||||
"1917",
|
||||
"2001: A Space Odyssey",
|
||||
"3 Idiots",
|
||||
"A Beautiful Mind",
|
||||
"A Clockwork Orange",
|
||||
"Alien",
|
||||
"American Beauty",
|
||||
"American History X",
|
||||
"Apocalypse Now",
|
||||
"Avengers: Infinity War",
|
||||
"Back to the Future",
|
||||
"Batman Begins",
|
||||
"Ben-Hur",
|
||||
"Blade Runner",
|
||||
"Casablanca",
|
||||
"Casino",
|
||||
"Catch Me If You Can",
|
||||
"Das Leben der Anderen",
|
||||
"Dead Poets Society",
|
||||
"Die Hard",
|
||||
"Django Unchained",
|
||||
"Fight Club",
|
||||
"Finding Nemo",
|
||||
"Forrest Gump",
|
||||
"Full Metal Jacket",
|
||||
"Gandhi",
|
||||
"Gladiator",
|
||||
"Gone with the Wind",
|
||||
"Good Will Hunting",
|
||||
"Goodfellas",
|
||||
"Green Book",
|
||||
"Groundhog Day",
|
||||
"Harry Potter and the Deathly Hallows - Part 2",
|
||||
"Heat",
|
||||
"Inception",
|
||||
"Indiana Jones and the Last Crusade",
|
||||
"Inglourious Basterds",
|
||||
"Interstellar",
|
||||
"Into the Wild",
|
||||
"Intouchables",
|
||||
"Joker",
|
||||
"Judgment at Nuremberg",
|
||||
"Jurassic Park",
|
||||
"Kill Bill: Vol. 1",
|
||||
"L.A. Confidential",
|
||||
"La vita è bella",
|
||||
"Lock, Stock and Two Smoking Barrels",
|
||||
"Léon",
|
||||
"Mad Max: Fury Road",
|
||||
"Memento",
|
||||
"Million Dollar Baby",
|
||||
"Monsters, Inc.",
|
||||
"Monty Python and the Holy Grail",
|
||||
"No Country for Old Men",
|
||||
"Once Upon a Time in America",
|
||||
"One Flew Over the Cuckoo's Nest",
|
||||
"Pirates of the Caribbean: The Curse of the Black Pearl",
|
||||
"Platoon",
|
||||
"Prisoners",
|
||||
"Psycho",
|
||||
"Pulp Fiction",
|
||||
"Raiders of the Lost Ark",
|
||||
"Ratatouille",
|
||||
"Reservoir Dogs",
|
||||
"Rocky",
|
||||
"Saving Private Ryan",
|
||||
"Scarface",
|
||||
"Schindler's List",
|
||||
"Se7en",
|
||||
"Sherlock Jr.",
|
||||
"Shutter Island",
|
||||
"Snatch",
|
||||
"Spider-Man: No Way Home",
|
||||
"Star Wars: Episode VI - Return of the Jedi",
|
||||
"Taxi Driver",
|
||||
"Terminator 2: Judgment Day",
|
||||
"The Big Lebowski",
|
||||
"The Dark Knight",
|
||||
"The Departed",
|
||||
"The Empire Strikes Back",
|
||||
"The Godfather",
|
||||
"The Green Mile",
|
||||
"The Lion King",
|
||||
"The Lord of the Rings: The Fellowship of the Ring",
|
||||
"The Matrix",
|
||||
"The Pianist",
|
||||
"The Prestige",
|
||||
"The Shawshank Redemption",
|
||||
"The Terminator",
|
||||
"The Usual Suspects",
|
||||
"The Wolf of Wall Street",
|
||||
"Top Gun: Maverick",
|
||||
"Toy Story",
|
||||
"Unforgiven",
|
||||
"Up",
|
||||
"V for Vendetta",
|
||||
"WALL·E",
|
||||
"Warrior",
|
||||
"Whiplash",
|
||||
},
|
||||
"genre": {
|
||||
"Action",
|
||||
"Adventure",
|
||||
"Animation",
|
||||
"Biography",
|
||||
"Comedy",
|
||||
"Crime",
|
||||
"Drama",
|
||||
"Family",
|
||||
"Fantasy",
|
||||
"Film-Noir",
|
||||
"History",
|
||||
"Horror",
|
||||
"Music",
|
||||
"Musical",
|
||||
"Mystery",
|
||||
"Romance",
|
||||
"Sci-Fi",
|
||||
"Sport",
|
||||
"Thriller",
|
||||
"War",
|
||||
"Western",
|
||||
},
|
||||
}
|
||||
211
vendor/github.com/brianvoe/gofakeit/v7/data/payment.go
generated
vendored
Normal file
211
vendor/github.com/brianvoe/gofakeit/v7/data/payment.go
generated
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
package data
|
||||
|
||||
// CreditCardInfo contains credit card info
|
||||
type CreditCardInfo struct {
|
||||
Display string
|
||||
Patterns []uint
|
||||
Gaps []uint
|
||||
Lengths []uint
|
||||
Code CreditCardCode
|
||||
}
|
||||
|
||||
// CreditCardCode contains code type and size
|
||||
type CreditCardCode struct {
|
||||
Name string
|
||||
Size uint
|
||||
}
|
||||
|
||||
// CreditCardTypes is an array of credit card types
|
||||
var CreditCardTypes = []string{"visa", "mastercard", "american-express", "diners-club", "discover", "jcb", "unionpay", "maestro", "elo", "hiper", "hipercard"}
|
||||
|
||||
// CreditCards contains payment information
|
||||
var CreditCards = map[string]CreditCardInfo{
|
||||
"visa": {
|
||||
Display: "Visa",
|
||||
Patterns: []uint{4},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVV",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"mastercard": {
|
||||
Display: "Mastercard",
|
||||
Patterns: []uint{
|
||||
51, 55,
|
||||
2221, 2229,
|
||||
223, 229,
|
||||
23, 26,
|
||||
270, 271,
|
||||
2720,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVC",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"american-express": {
|
||||
Display: "American Express",
|
||||
Patterns: []uint{34, 37},
|
||||
Gaps: []uint{4, 10},
|
||||
Lengths: []uint{15},
|
||||
Code: CreditCardCode{
|
||||
Name: "CID",
|
||||
Size: 4,
|
||||
},
|
||||
},
|
||||
"diners-club": {
|
||||
Display: "Diners Club",
|
||||
Patterns: []uint{
|
||||
300, 305,
|
||||
36, 38, 39,
|
||||
},
|
||||
Gaps: []uint{4, 10},
|
||||
Lengths: []uint{14, 16, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVV",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"discover": {
|
||||
Display: "Discover",
|
||||
Patterns: []uint{
|
||||
6011, 644, 649, 65,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CID",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"jcb": {
|
||||
Display: "JCB",
|
||||
Patterns: []uint{
|
||||
2131, 1800, 3528, 3589,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16, 17, 18, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVV",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"unionpay": {
|
||||
Display: "UnionPay",
|
||||
Patterns: []uint{
|
||||
620, 624, 626,
|
||||
62100, 62182,
|
||||
62184, 62187,
|
||||
62185, 62197,
|
||||
62200, 62205,
|
||||
622010, 622999,
|
||||
622018,
|
||||
622019, 622999,
|
||||
62207, 62209,
|
||||
622126, 622925,
|
||||
623, 626,
|
||||
6270, 6272, 6276,
|
||||
627700, 627779,
|
||||
627781, 627799,
|
||||
6282, 6289,
|
||||
6291, 6292,
|
||||
810,
|
||||
8110, 8131,
|
||||
8132, 8151,
|
||||
8152, 8163,
|
||||
8164, 817,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{14, 15, 16, 17, 18, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVN",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"maestro": {
|
||||
Display: "Maestro",
|
||||
Patterns: []uint{
|
||||
493698,
|
||||
500000, 506698,
|
||||
506779, 508999,
|
||||
56, 59,
|
||||
6, 63, 67,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{12, 13, 14, 15, 16, 17, 18, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVC",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"elo": {
|
||||
Display: "Elo",
|
||||
Patterns: []uint{
|
||||
401178, 401179,
|
||||
438935, 457631,
|
||||
457632, 431274,
|
||||
451416, 457393,
|
||||
504175, 506699,
|
||||
506778, 509000,
|
||||
509999, 627780,
|
||||
636297, 636368,
|
||||
650031, 650033,
|
||||
650035, 650051,
|
||||
650405, 650439,
|
||||
650485, 650538,
|
||||
650541, 650598,
|
||||
650700, 650718,
|
||||
650720, 650727,
|
||||
650901, 650978,
|
||||
651652, 651679,
|
||||
655000, 655019,
|
||||
655021, 65505,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVE",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"mir": {
|
||||
Display: "Mir",
|
||||
Patterns: []uint{2200, 2204},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16, 17, 18, 19},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVP2",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"hiper": {
|
||||
Display: "Hiper",
|
||||
Patterns: []uint{
|
||||
637095,
|
||||
637568,
|
||||
637599,
|
||||
637609,
|
||||
637612,
|
||||
},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVC",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
"hipercard": {
|
||||
Display: "Hipercard",
|
||||
Patterns: []uint{606282},
|
||||
Gaps: []uint{4, 8, 12},
|
||||
Lengths: []uint{16},
|
||||
Code: CreditCardCode{
|
||||
Name: "CVC",
|
||||
Size: 3,
|
||||
},
|
||||
},
|
||||
}
|
||||
12
vendor/github.com/brianvoe/gofakeit/v7/data/person.go
generated
vendored
Normal file
12
vendor/github.com/brianvoe/gofakeit/v7/data/person.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
171
vendor/github.com/brianvoe/gofakeit/v7/data/product.go
generated
vendored
Normal file
171
vendor/github.com/brianvoe/gofakeit/v7/data/product.go
generated
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
package data
|
||||
|
||||
var Product = map[string][]string{
|
||||
"category": {
|
||||
"electronics", "clothing", "home appliances", "furniture",
|
||||
"automotive parts", "beauty and personal care", "books", "sports equipment",
|
||||
"toys and games", "outdoor gear", "pet supplies", "kitchenware",
|
||||
"health and wellness", "tools and hardware", "office supplies",
|
||||
"baby products", "jewelry", "home decor", "musical instruments",
|
||||
"fitness equipment", "mobile phones", "computer accessories", "cameras and photography",
|
||||
"gardening supplies", "bedding and linens", "food and groceries", "party supplies",
|
||||
"craft and diy supplies", "camping gear", "watches", "luggage and travel accessories",
|
||||
"board games", "art supplies", "stationery", "bath and shower products",
|
||||
"sunglasses", "educational toys", "headphones and earbuds", "sneakers and athletic shoes",
|
||||
"coffee and tea products", "bicycles and accessories", "cookware", "cosmetics",
|
||||
"home improvement", "pet food", "laptop bags and cases", "home security systems",
|
||||
"musical accessories", "skincare products", "smart home devices",
|
||||
},
|
||||
|
||||
"adjective": {
|
||||
"bold", "swift", "pure", "smart", "fresh",
|
||||
"cool", "sharp", "zen", "bright", "quick",
|
||||
"robust", "sleek", "versatile", "innovative", "compact",
|
||||
"luxe", "modular", "precision", "stream",
|
||||
},
|
||||
|
||||
"name": {
|
||||
"phone", "laptop", "tablet", "watch", "camera",
|
||||
"headphones", "speaker", "drone", "car", "bike",
|
||||
"appliance", "gadget", "tool", "toy", "game",
|
||||
"computer", "console", "smartwatch", "fitness tracker", "smart home device",
|
||||
"robot", "router", "television", "smart speaker", "vr headset",
|
||||
"earbuds", "printer", "mouse", "keyboard", "monitor",
|
||||
"microwave", "blender", "vacuum", "fan", "toaster",
|
||||
"clock", "lamp", "shaver", "scale", "thermometer",
|
||||
"fridge", "oven", "mixer", "iron", "hair dryer",
|
||||
"fan", "scale", "thermostat", "router", "lightbulb",
|
||||
},
|
||||
|
||||
"feature": {
|
||||
"wireless", "smart", "eco-friendly", "advanced", "compact",
|
||||
"high-performance", "energy-efficient", "portable", "durable", "stylish",
|
||||
"touchscreen", "water-resistant", "noise-canceling", "voice-controlled", "ultra-lightweight",
|
||||
"multi-functional", "user-friendly", "fast-charging", "biometric", "gps-enabled",
|
||||
},
|
||||
|
||||
"material": {
|
||||
"titanium", "carbon", "alloy", "bamboo", "leather",
|
||||
"glass", "ceramic", "aluminum", "stainless", "wood",
|
||||
"plastic", "rubber", "silicon", "fabric", "paper",
|
||||
"gold", "silver", "brass", "copper", "bronze",
|
||||
"chrome", "marble", "granite", "porcelain", "plexiglass",
|
||||
"quartz", "felt", "suede",
|
||||
},
|
||||
|
||||
"suffix": {
|
||||
"tech", "pro", "x", "plus", "elite",
|
||||
"spark", "nexus", "nova", "fusion", "sync",
|
||||
"edge", "boost", "max", "link", "prime",
|
||||
"zoom", "pulse", "dash", "connect", "blaze",
|
||||
"quantum", "spark", "vertex", "core", "flux",
|
||||
"turbo", "shift", "wave", "matrix",
|
||||
},
|
||||
|
||||
"benefit": {
|
||||
"comfort", "efficiency", "safety", "reliability",
|
||||
"versatility", "ease of use", "long battery life",
|
||||
"precision", "enhanced connectivity", "portability",
|
||||
"durability", "energy savings", "aesthetic appeal",
|
||||
"health benefits", "convenience", "time-saving",
|
||||
"high performance", "noise reduction", "user satisfaction",
|
||||
"customizability", "sustainability", "cost-effectiveness",
|
||||
"innovative features", "improved productivity", "enhanced experience",
|
||||
"robust construction", "weather resistance", "minimal maintenance",
|
||||
"increased functionality", "advanced technology", "ergonomic design",
|
||||
},
|
||||
|
||||
"use_case": {
|
||||
"home", "office", "outdoors", "fitness", "travel", "gaming",
|
||||
"cooking", "music", "learning", "entertainment", "professional work",
|
||||
"healthcare", "educational purposes", "commuting", "camping", "hiking",
|
||||
"sports", "art and craft", "gardening", "cleaning", "personal grooming",
|
||||
"relaxation", "home security", "pet care", "smart automation", "food preparation",
|
||||
"baking", "social gatherings", "productivity", "collaboration", "DIY projects",
|
||||
"childcare", "remote work", "photography", "videography", "wellness routines",
|
||||
},
|
||||
|
||||
"target_audience": {
|
||||
"children", "adults", "seniors", "students", "professionals", "athletes",
|
||||
"travelers", "families", "pet owners", "homeowners", "gamers", "cooks", "DIY enthusiasts",
|
||||
"musicians", "artists",
|
||||
},
|
||||
|
||||
"dimension": {
|
||||
"small", "medium", "large", "extra-large", "compact", "lightweight",
|
||||
"heavy", "mini", "standard", "oversized",
|
||||
},
|
||||
|
||||
"description": {
|
||||
"This {adjectivedescriptive} {productname} is perfect for {productusecase}, offering {productfeature} and {productbenefit}. Made from {productmaterial}, it's designed for {productaudience} who value {productbenefit}.",
|
||||
"Introducing the {adjectivedescriptive} {productname} {productsuffix}, featuring {productfeature} technology and made from {productmaterial}. It ensures {productbenefit} for {productaudience}, making it ideal for {productusecase}.",
|
||||
"Perfect for {productusecase}, the {productname} is crafted with {adjectivedescriptive} {productmaterial} and features {productfeature} for {productaudience}. Enjoy {productbenefit} every day.",
|
||||
"Designed with {productaudience} in mind, this {adjectivedescriptive} {productname} offers {productbenefit}. It's equipped with {productfeature} and made from {productmaterial} for maximum {productbenefit}.",
|
||||
"The {productname} {productsuffix} combines {adjectivedescriptive} design and {productmaterial} build to deliver {productfeature}. Its {productdimension} size makes it perfect for {productusecase} and ideal for {productaudience}.",
|
||||
"With a focus on {productaudience}, the {productname} is built with {adjectivedescriptive} {productmaterial} for {productbenefit} and features {productfeature} to meet the needs of {productusecase}.",
|
||||
"Experience the {productbenefit} of the {productname} {productsuffix}, made from {productmaterial} with a {adjectivedescriptive} design. It's ideal for {productusecase} and loved by {productaudience}.",
|
||||
"Whether you're using it at {productusecase} or on the go, this {adjectivedescriptive} {productname} offers {productfeature} and ensures {productbenefit}. Crafted from {productmaterial}, it's perfect for {productaudience}.",
|
||||
"The {productname} is a {adjectivedescriptive} solution for {productusecase}, featuring {productfeature} technology and built with {productmaterial} for {productbenefit}. Suitable for {productaudience}.",
|
||||
"For {productaudience} who need {productbenefit}, the {productname} {productsuffix} delivers with {productfeature}, {adjectivedescriptive} design, and durable {productmaterial} construction. Ideal for {productusecase}.",
|
||||
"Built with {adjectivedescriptive} {productmaterial}, this item is ideal for {productusecase} and provides {productaudience} with {productbenefit} through its {productfeature}.",
|
||||
"Experience {productbenefit} with this {adjectivedescriptive} product, featuring {productfeature} and made from {productmaterial}, perfect for {productusecase}.",
|
||||
"Designed for {productaudience}, this {adjectivedescriptive} product ensures {productbenefit} and is equipped with {productfeature} for the best {productusecase} experience.",
|
||||
"For those who need {productbenefit}, this {adjectivedescriptive} product, made of {productmaterial}, offers {productfeature} and is perfect for {productusecase}.",
|
||||
"Take your {productusecase} to the next level with this {adjectivedescriptive} product. Built from {productmaterial}, it features {productfeature} for {productaudience}.",
|
||||
"Crafted from {productmaterial}, this product is ideal for {productaudience} seeking {productbenefit}. Its {adjectivedescriptive} design and {productfeature} make it perfect for {productusecase}.",
|
||||
"This product, made with {productmaterial}, is designed for {productaudience} who value {productbenefit}. Its {adjectivedescriptive} design includes {productfeature}, making it ideal for {productusecase}.",
|
||||
"Enjoy {productbenefit} with this {adjectivedescriptive} item, featuring {productfeature} technology. Made from {productmaterial}, it's perfect for {productusecase}.",
|
||||
"With {productfeature} and {adjectivedescriptive} {productmaterial}, this product offers {productbenefit} for {productaudience}, ideal for {productusecase}.",
|
||||
"The perfect solution for {productusecase}, this {adjectivedescriptive} product provides {productbenefit} with its {productfeature}, crafted from {productmaterial} for {productaudience}.",
|
||||
"Built for {productaudience}, this product features {productfeature} and ensures {productbenefit}. Made from {productmaterial}, it's an {adjectivedescriptive} choice for {productusecase}.",
|
||||
"Achieve {productbenefit} with this {adjectivedescriptive} product. Crafted from {productmaterial}, it features {productfeature}, perfect for {productaudience} during {productusecase}.",
|
||||
"For {productaudience}, this {adjectivedescriptive} item offers {productfeature} and is made of {productmaterial}, providing {productbenefit} for {productusecase}.",
|
||||
"This {adjectivedescriptive} product is crafted from {productmaterial} and includes {productfeature}, making it perfect for {productusecase} and delivering {productbenefit} for {productaudience}.",
|
||||
"Featuring {productfeature} and made from {productmaterial}, this {adjectivedescriptive} product is ideal for {productaudience} looking for {productbenefit} in {productusecase}.",
|
||||
"For {productusecase}, this {adjectivedescriptive} product provides {productbenefit} with its {productfeature}, crafted for {productaudience} from high-quality {productmaterial}.",
|
||||
"This {adjectivedescriptive} product is perfect for {productaudience} who need {productbenefit}. Built from {productmaterial} and featuring {productfeature}, it's ideal for {productusecase}.",
|
||||
"Delivering {productbenefit}, this product is made from {productmaterial} and designed for {productaudience}. Its {adjectivedescriptive} design includes {productfeature}, perfect for {productusecase}.",
|
||||
"For those interested in {productusecase}, this {adjectivedescriptive} product offers {productfeature} and is made of {productmaterial} to provide {productbenefit} for {productaudience}.",
|
||||
"This product is crafted for {productaudience}, featuring {adjectivedescriptive} {productmaterial} and equipped with {productfeature} to ensure {productbenefit} during {productusecase}.",
|
||||
"Transform your {productusecase} with this {adjectivedescriptive} product, featuring {productfeature} and made from high-quality {productmaterial} to provide {productbenefit}.",
|
||||
"This {adjectivedescriptive} item, built for {productaudience}, uses {productfeature} technology to deliver {productbenefit} during {productusecase}.",
|
||||
"Enjoy the luxury of {productbenefit} with this product, crafted from {productmaterial}. Its {adjectivedescriptive} design and {productfeature} make it ideal for {productusecase}.",
|
||||
"Made from {productmaterial} and designed with {productaudience} in mind, this product offers {productbenefit} and features {productfeature} for excellent {productusecase}.",
|
||||
"Achieve seamless {productusecase} with this {adjectivedescriptive} product. Built using {productmaterial}, it delivers {productbenefit} with the help of {productfeature}.",
|
||||
"This product, made for {productaudience}, offers {productbenefit} with its {adjectivedescriptive} {productmaterial} build and advanced {productfeature}, perfect for {productusecase}.",
|
||||
"Built with {productmaterial}, this {adjectivedescriptive} product is designed to provide {productbenefit} for {productaudience} through its {productfeature}, ideal for {productusecase}.",
|
||||
"Elevate your {productusecase} experience with this {adjectivedescriptive} product, made from {productmaterial} and offering {productfeature} to ensure {productbenefit}.",
|
||||
"Perfect for {productaudience} who value {productbenefit}, this product features {productfeature} and is crafted from {adjectivedescriptive} {productmaterial}, ideal for {productusecase}.",
|
||||
"With a focus on {productusecase}, this {adjectivedescriptive} product, made from {productmaterial}, ensures {productbenefit} with its {productfeature} for {productaudience}.",
|
||||
"Whether for {productusecase} or everyday use, this product delivers {productbenefit} with its {adjectivedescriptive} {productmaterial} construction and {productfeature}, crafted for {productaudience}.",
|
||||
"This {adjectivedescriptive} product is perfect for {productusecase}, made with {productmaterial} and offering {productfeature} to ensure {productbenefit} for {productaudience}.",
|
||||
"Featuring state-of-the-art {productfeature}, this product is designed from {productmaterial} to deliver {productbenefit} for {productaudience}, ideal for {productusecase}.",
|
||||
"For {productusecase}, this {adjectivedescriptive} product is crafted from {productmaterial} to provide {productfeature}, ensuring {productbenefit} for {productaudience}.",
|
||||
"Built for {productaudience}, this item features {adjectivedescriptive} {productmaterial} and advanced {productfeature} to deliver {productbenefit} during {productusecase}.",
|
||||
"With {productfeature} and a {adjectivedescriptive} design, this product is made from {productmaterial} to provide {productbenefit} for {productaudience}, ideal for {productusecase}.",
|
||||
"This {adjectivedescriptive} item, crafted from {productmaterial}, offers {productfeature} for {productusecase}, ensuring {productbenefit} for {productaudience}.",
|
||||
"For those who value {productbenefit}, this product, made from {productmaterial}, includes {productfeature} and is perfect for {productusecase}, designed for {productaudience}.",
|
||||
"Achieve superior {productusecase} with this product, featuring {productfeature} and made from {adjectivedescriptive} {productmaterial}, offering {productbenefit} to {productaudience}.",
|
||||
"Delivering {productbenefit}, this product is crafted from {productmaterial} and equipped with {productfeature}, making it ideal for {productaudience} during {productusecase}.",
|
||||
"Revolutionize your {productusecase} with this {adjectivedescriptive} item, featuring {productfeature} and crafted from {productmaterial} for {productaudience} seeking {productbenefit}.",
|
||||
"This {adjectivedescriptive} item, designed for {productaudience}, is built from {productmaterial} and includes {productfeature} to ensure {productbenefit} for {productusecase}.",
|
||||
"Enjoy enhanced {productusecase} with this product, featuring {productfeature} and made with {adjectivedescriptive} {productmaterial}, delivering {productbenefit}.",
|
||||
"Perfect for {productaudience}, this {adjectivedescriptive} product includes {productfeature} and is crafted from {productmaterial} to provide {productbenefit} during {productusecase}.",
|
||||
"Take your {productusecase} to new heights with this product, made from {productmaterial} and featuring {productfeature} for {productaudience} who value {productbenefit}.",
|
||||
"Crafted from premium {productmaterial}, this item is designed for {productaudience} to provide {productbenefit} with its {adjectivedescriptive} build and {productfeature}.",
|
||||
"This {adjectivedescriptive} product, made from {productmaterial}, offers {productbenefit} through its {productfeature}, ideal for {productaudience} engaging in {productusecase}.",
|
||||
"Elevate your {productusecase} with this {adjectivedescriptive} product. It features {productfeature} and is crafted from {productmaterial} for {productaudience}.",
|
||||
"Designed for {productaudience}, this product includes {productfeature} and a {adjectivedescriptive} {productmaterial} construction, ensuring {productbenefit} during {productusecase}.",
|
||||
"This {adjectivedescriptive} item, featuring {productfeature}, is crafted from {productmaterial} to provide {productbenefit} for {productusecase}, perfect for {productaudience}.",
|
||||
"Achieve exceptional {productusecase} with this product, featuring advanced {productfeature} and made from durable {productmaterial}, delivering {productbenefit} for {productaudience}.",
|
||||
"Whether it's for {productusecase} or daily use, this {adjectivedescriptive} item is crafted from {productmaterial} and offers {productfeature} to deliver {productbenefit} for {productaudience}.",
|
||||
"This product, ideal for {productaudience}, features {adjectivedescriptive} {productmaterial} and incorporates {productfeature} to ensure {productbenefit} during {productusecase}.",
|
||||
"Built with {productmaterial}, this {adjectivedescriptive} item is perfect for {productusecase} and features {productfeature} to provide {productbenefit} to {productaudience}.",
|
||||
"With {productfeature} and made from {adjectivedescriptive} {productmaterial}, this product ensures {productbenefit} for {productaudience}, ideal for {productusecase}.",
|
||||
"This {adjectivedescriptive} item is built for {productaudience}, providing {productbenefit} with its {productmaterial} construction and advanced {productfeature}, perfect for {productusecase}.",
|
||||
"For {productusecase}, this product delivers {productbenefit} to {productaudience} with its {adjectivedescriptive} design and {productfeature}, made from quality {productmaterial}.",
|
||||
"Experience the benefits of {productfeature} with this {adjectivedescriptive} item, crafted from {productmaterial} and ideal for {productaudience} seeking {productbenefit} during {productusecase}.",
|
||||
"This {adjectivedescriptive} product is crafted from {productmaterial} and includes {productfeature}, making it perfect for {productusecase} and providing {productbenefit} for {productaudience}.",
|
||||
"For those who value {productbenefit}, this product is made from {productmaterial} and features {adjectivedescriptive} {productfeature}, ideal for {productaudience} during {productusecase}.",
|
||||
},
|
||||
}
|
||||
56
vendor/github.com/brianvoe/gofakeit/v7/data/school.go
generated
vendored
Normal file
56
vendor/github.com/brianvoe/gofakeit/v7/data/school.go
generated
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
package data
|
||||
|
||||
// School type and names
|
||||
var School = map[string][]string{
|
||||
"type": {"Elementary School", "Middle School", "University", "High School", "Kindergarten", "Academy", "College", "Institute"},
|
||||
"isPrivate": {"Private", "State"},
|
||||
"name": {"Maplewood",
|
||||
"Pineville",
|
||||
"Riverside",
|
||||
"Willowbrook",
|
||||
"Crestwood",
|
||||
"Sunset",
|
||||
"Greenfield",
|
||||
"Oakwood",
|
||||
"Willowbrook",
|
||||
"Hawthorn",
|
||||
"Brookside",
|
||||
"Pleasant View",
|
||||
"Crescent Valley",
|
||||
"Sycamore",
|
||||
"Springfield",
|
||||
"Meadowbrook",
|
||||
"Greenwood",
|
||||
"Riverbend",
|
||||
"Valley Forge",
|
||||
"Ridgeview",
|
||||
"Cottonwood",
|
||||
"Cedarwood",
|
||||
"Golden Oak",
|
||||
"Stonebridge",
|
||||
"Harborview",
|
||||
"Windsor",
|
||||
"Northbrook",
|
||||
"Sunset",
|
||||
"Redwood Valley",
|
||||
"Liberty",
|
||||
"Washington Central",
|
||||
"Franklin",
|
||||
"Jefferson",
|
||||
"Lincoln Park",
|
||||
"Madison",
|
||||
"Roosevelt",
|
||||
"Westwood",
|
||||
"Central Lakeside",
|
||||
"Fairview",
|
||||
"Heritage Hills",
|
||||
"Kingsbridge",
|
||||
"Harrisonville",
|
||||
"Valley View",
|
||||
"Hillside",
|
||||
"Northridge",
|
||||
"Brooklyn Heights",
|
||||
"Oakridge",
|
||||
"Countryside",
|
||||
},
|
||||
}
|
||||
5
vendor/github.com/brianvoe/gofakeit/v7/data/sentence.go
generated
vendored
Normal file
5
vendor/github.com/brianvoe/gofakeit/v7/data/sentence.go
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
246
vendor/github.com/brianvoe/gofakeit/v7/data/song.go
generated
vendored
Normal file
246
vendor/github.com/brianvoe/gofakeit/v7/data/song.go
generated
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
package data
|
||||
|
||||
// Songs: Year-end Charts Hot 100 Songs from Billboard
|
||||
// Source: https://www.billboard.com/charts/year-end/hot-100-songs/
|
||||
|
||||
// Artists: Greatest of All Time Artists based on Billboard rate
|
||||
// Source: https://www.billboard.com/charts/greatest-of-all-time-artists/
|
||||
|
||||
var Songs = map[string][]string{
|
||||
"name": {
|
||||
"A Bar Song (Tipsy)",
|
||||
"A Holly Jolly Christmas",
|
||||
"Act II: Date @ 8",
|
||||
"Agora Hills",
|
||||
"Ain't No Love In Oklahoma",
|
||||
"All I Want For Christmas Is You",
|
||||
"Austin",
|
||||
"Beautiful Things",
|
||||
"Birds Of A Feather",
|
||||
"Bulletproof",
|
||||
"Burn It Down",
|
||||
"Carnival",
|
||||
"Cowgirls",
|
||||
"Cruel Summer",
|
||||
"Dance The Night",
|
||||
"Die With A Smile",
|
||||
"Down Bad",
|
||||
"End Of Beginning",
|
||||
"Espresso",
|
||||
"Euphoria",
|
||||
"Everybody",
|
||||
"Exes",
|
||||
"FE!N",
|
||||
"FTCU",
|
||||
"Fast Car",
|
||||
"Feather",
|
||||
"First Person Shooter",
|
||||
"Flowers",
|
||||
"Fortnight",
|
||||
"Fukumean",
|
||||
"Gata Only",
|
||||
"Get It Sexyy",
|
||||
"Good Good",
|
||||
"Good Luck, Babe!",
|
||||
"Greedy",
|
||||
"High Road",
|
||||
"Hot To Go!",
|
||||
"Houdini",
|
||||
"Houdini",
|
||||
"I Am Not Okay",
|
||||
"I Can Do It With A Broken Heart",
|
||||
"I Had Some Help",
|
||||
"I Like The Way You Kiss Me",
|
||||
"I Remember Everything",
|
||||
"IDGAF",
|
||||
"Is It Over Now?",
|
||||
"Jingle Bell Rock",
|
||||
"La Diabla",
|
||||
"Last Christmas",
|
||||
"Last Night",
|
||||
"Lies Lies Lies",
|
||||
"Like That",
|
||||
"Lil Boo Thang",
|
||||
"Lose Control",
|
||||
"Lovin On Me",
|
||||
"Lunch",
|
||||
"Made For Me",
|
||||
"Miles On It",
|
||||
"Million Dollar Baby",
|
||||
"Monaco",
|
||||
"Need A Favor",
|
||||
"Never Lose Me",
|
||||
"Not Like Us",
|
||||
"On My Mama",
|
||||
"Paint The Town Red",
|
||||
"Pink Skies",
|
||||
"Please Please Please",
|
||||
"Pour Me A Drink",
|
||||
"Pretty Little Poison",
|
||||
"Redrum",
|
||||
"Rich Baby Daddy",
|
||||
"Rockin' Around The Christmas Tree",
|
||||
"Saturn",
|
||||
"Save Me",
|
||||
"Slow It Down",
|
||||
"Snooze",
|
||||
"Stargazing",
|
||||
"Stick Season",
|
||||
"Taste",
|
||||
"Texas Hold 'Em",
|
||||
"The Painter",
|
||||
"Thinkin' Bout Me",
|
||||
"Too Sweet",
|
||||
"Truck Bed",
|
||||
"Type Shit",
|
||||
"Vampire",
|
||||
"Wanna Be",
|
||||
"Water",
|
||||
"We Can't Be Friends (Wait For Your Love)",
|
||||
"What Was I Made For?",
|
||||
"Whatever She Wants",
|
||||
"Where It Ends",
|
||||
"Where The Wild Things Are",
|
||||
"White Horse",
|
||||
"Wild Ones",
|
||||
"Wildflower",
|
||||
"Wind Up Missin' You",
|
||||
"World On Fire",
|
||||
"Yeah Glo!",
|
||||
"Yes, And?",
|
||||
},
|
||||
"artist": {
|
||||
"Adele",
|
||||
"Aerosmith",
|
||||
"Alicia Keys",
|
||||
"Aretha Franklin",
|
||||
"Barbra Streisand",
|
||||
"Barry Manilow",
|
||||
"Bee Gees",
|
||||
"Beyonce",
|
||||
"Billy Joel",
|
||||
"Bob Dylan",
|
||||
"Bob Seger",
|
||||
"Bon Jovi",
|
||||
"Boyz II Men",
|
||||
"Britney Spears",
|
||||
"Bruce Springsteen & The E Street Band",
|
||||
"Bruno Mars",
|
||||
"Bryan Adams",
|
||||
"Carole King",
|
||||
"Carpenters",
|
||||
"Celine Dion",
|
||||
"Chicago",
|
||||
"Chris Brown",
|
||||
"Commodores",
|
||||
"Creedence Clearwater Revival",
|
||||
"Daryl Hall John Oates",
|
||||
"Def Leppard",
|
||||
"Diana Ross",
|
||||
"Donna Summer",
|
||||
"Drake",
|
||||
"Eagles",
|
||||
"Earth, Wind & Fire",
|
||||
"Ed Sheeran",
|
||||
"Elton John",
|
||||
"Elvis Presley",
|
||||
"Eminem",
|
||||
"Eric Clapton",
|
||||
"Fleetwood Mac",
|
||||
"Foreigner",
|
||||
"Garth Brooks",
|
||||
"Guns N' Roses",
|
||||
"Heart",
|
||||
"Herb Alpert",
|
||||
"Huey Lewis & The News",
|
||||
"JAY-Z",
|
||||
"James Taylor",
|
||||
"Janet Jackson",
|
||||
"John Denver",
|
||||
"John Mellencamp",
|
||||
"Journey",
|
||||
"Justin Bieber",
|
||||
"Justin Timberlake",
|
||||
"Kanye West",
|
||||
"Katy Perry",
|
||||
"Kelly Clarkson",
|
||||
"Kenny Rogers",
|
||||
"Lady Gaga",
|
||||
"Led Zeppelin",
|
||||
"Linda Ronstadt",
|
||||
"Linkin Park",
|
||||
"Lionel Richie",
|
||||
"Madonna",
|
||||
"Mariah Carey",
|
||||
"Maroon 5",
|
||||
"Marvin Gaye",
|
||||
"Mary J. Blige",
|
||||
"Michael Bolton",
|
||||
"Michael Jackson",
|
||||
"Miley Cyrus",
|
||||
"Neil Diamond",
|
||||
"Nelly",
|
||||
"Nickelback",
|
||||
"Olivia Newton-John",
|
||||
"P!nk",
|
||||
"Paul McCartney",
|
||||
"Paula Abdul",
|
||||
"Phil Collins",
|
||||
"Pink Floyd",
|
||||
"Prince",
|
||||
"Queen",
|
||||
"R. Kelly",
|
||||
"Rihanna",
|
||||
"Rod Stewart",
|
||||
"Santana",
|
||||
"Simon & Garfunkel",
|
||||
"Stevie Wonder",
|
||||
"Taylor Swift",
|
||||
"The Beach Boys",
|
||||
"The Beatles",
|
||||
"The Black Eyed Peas",
|
||||
"The Jacksons",
|
||||
"The Monkees",
|
||||
"The Rolling Stones",
|
||||
"The Supremes",
|
||||
"The Temptations",
|
||||
"Three Dog Night",
|
||||
"Tim McGraw",
|
||||
"U2",
|
||||
"Usher",
|
||||
"Van Halen",
|
||||
"Whitney Houston",
|
||||
},
|
||||
"genre": {
|
||||
"Acoustic Pop",
|
||||
"Alternative Hip-Hop",
|
||||
"Alternative Pop",
|
||||
"Chillwave",
|
||||
"Contemporary R&B",
|
||||
"Country",
|
||||
"Dancehall",
|
||||
"Electro-pop",
|
||||
"Electronic Dance Music (EDM)",
|
||||
"Emo Rap",
|
||||
"Funk",
|
||||
"Gospel-inspired Pop",
|
||||
"Hip-Hop",
|
||||
"Indie Pop",
|
||||
"Latin Pop",
|
||||
"Lo-fi Hip-Hop",
|
||||
"Melodic Rap",
|
||||
"Pop",
|
||||
"Pop Punk",
|
||||
"Pop Rock",
|
||||
"R&B",
|
||||
"Rap",
|
||||
"Reggaeton",
|
||||
"Rock",
|
||||
"Singer-Songwriter",
|
||||
"Soul",
|
||||
"Synthwave",
|
||||
"Trap",
|
||||
"Trap Soul",
|
||||
"Urban Contemporary",
|
||||
},
|
||||
}
|
||||
83
vendor/github.com/brianvoe/gofakeit/v7/data/word.go
generated
vendored
Normal file
83
vendor/github.com/brianvoe/gofakeit/v7/data/word.go
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
package data
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
var WordKeys []string
|
||||
|
||||
func init() {
|
||||
// Loop through Word and put togther a list of keys
|
||||
for key := range Word {
|
||||
WordKeys = append(WordKeys, key)
|
||||
}
|
||||
|
||||
// Sort the keys
|
||||
sort.Strings(WordKeys)
|
||||
}
|
||||
|
||||
// Word consists of common english words
|
||||
var Word = map[string][]string{
|
||||
// Nouns
|
||||
"noun_common": {"time", "person", "year", "way", "day", "thing", "man", "world", "life", "hand", "part", "child", "eye", "woman", "place", "work", "week", "case", "point", "government", "company", "number", "group", "problem", "fact"},
|
||||
"noun_concrete": {"apple", "air", "conditioner", "airport", "ambulance", "aircraft", "apartment", "arrow", "antlers", "apro", "alligator", "architect", "ankle", "armchair", "aunt", "ball", "bermudas", "beans", "balloon", "bear", "blouse", "bed", "bow", "bread", "black", "board", "bones", "bill", "bitterness", "boxers", "belt", "brain", "buffalo", "bird", "baby", "book", "back", "butter", "bulb", "buckles", "bat", "bank", "bag", "bra", "boots", "blazer", "bikini", "bookcase", "bookstore", "bus stop", "brass", "brother", "boy", "blender", "bucket", "bakery", "bow", "bridge", "boat", "car", "cow", "cap", "cooker", "cheeks", "cheese", "credenza", "carpet", "crow", "crest", "chest", "chair", "candy", "cabinet", "cat", "coffee", "children", "cookware", "chaise longue", "chicken", "casino", "cabin", "castle", "church", "cafe", "cinema", "choker", "cravat", "cane", "costume", "cardigan", "chocolate", "crib", "couch", "cello", "cashier", "composer", "cave", "country", "computer", "canoe", "clock", "dog", "deer", "donkey", "desk", "desktop", "dress", "dolphin", "doctor", "dentist", "drum", "dresser", "designer", "detective", "daughter", "egg", "elephant", "earrings", "ears", "eyes", "estate", "finger", "fox", "frock", "frog", "fan", "freezer", "fish", "film", "foot", "flag", "factory", "father", "farm", "forest", "flower", "fruit", "fork", "grapes", "goat", "gown", "garlic", "ginger", "giraffe", "gauva", "grains", "gas station", "garage", "gloves", "glasses", "gift", "galaxy", "guitar", "grandmother", "grandfather", "governor", "girl", "guest", "hamburger", "hand", "head", "hair", "heart", "house", "horse", "hen", "horn", "hat", "hammer", "hostel", "hospital", "hotel", "heels", "herbs", "host", "jacket", "jersey", "jewelry", "jaw", "jumper", "judge", "juicer", "keyboard", "kid", "kangaroo", "koala", "knife", "lemon", "lion", "leggings", "leg", "laptop", "library", "lamb", "london", "lips", "lung", "lighter", "luggage", "lamp", "lawyer", "mouse", "monkey", "mouth", "mango", "mobile", "milk", "music", "mirror", "musician", "mother", "man", "model", "mall", "museum", "market", "moonlight", "medicine", "microscope", "newspaper", "nose", "notebook", "neck", "noodles", "nurse", "necklace", "noise", "ocean", "ostrich", "oil", "orange", "onion", "oven", "owl", "paper", "panda", "pants", "palm", "pasta", "pumpkin", "pharmacist", "potato", "parfume", "panther", "pad", "pencil", "pipe", "police", "pen", "pharmacy", "police station", "parrot", "plane", "pigeon", "phone", "peacock", "pencil", "pig", "pouch", "pagoda", "pyramid", "purse", "pancake", "popcorn", "piano", "physician", "photographer", "professor", "painter", "park", "plant", "parfume", "radio", "razor", "ribs", "rainbow", "ring", "rabbit", "rice", "refrigerator", "remote", "restaurant", "road", "surgeon", "scale", "shampoo", "sink", "salt", "shark", "sandals", "shoulder", "spoon", "soap", "sand", "sheep", "sari", "stomach", "stairs", "soup", "shoes", "scissors", "sparrow", "shirt", "suitcase", "stove", "stairs", "snowman", "shower", "swan", "suit", "sweater", "smoke", "skirt", "sofa", "socks", "stadium", "skyscraper", "school", "sunglasses", "sandals", "slippers", "shorts", "sandwich", "strawberry", "spaghetti", "shrimp", "saxophone", "sister", "son", "singer", "senator", "street", "supermarket", "swimming pool", "star", "sky", "sun", "spoon", "ship", "smile", "table", "turkey", "tie", "toes", "truck", "train", "taxi", "tiger", "trousers", "tongue", "television", "teacher", "turtle", "tablet", "train station", "toothpaste", "tail", "theater", "trench coat", "tea", "tomato", "teen", "tunnel", "temple", "town", "toothbrush", "tree", "toy", "tissue", "telephone", "underwear", "uncle", "umbrella", "vest", "voice", "veterinarian", "villa", "violin", "village", "vehicle", "vase", "wallet", "wolf", "waist", "wrist", "water melon", "whale", "water", "wings", "whisker", "watch", "woman", "washing machine", "wheelchair", "waiter", "wound", "xylophone", "zebra", "zoo"},
|
||||
"noun_abstract": {"fiction", "horror", "dream", "luck", "movement", "right", "clarity", "joy", "care", "trend", "belief", "sorrow", "joy", "failure", "slavery", "riches", "fashion", "envy", "success", "fear", "union", "luxury", "freedom", "generosity", "wit", "peace", "hatred", "thrill", "brilliance", "care", "wealth", "religion", "divorce", "goal", "stupidity", "friendship", "goodness", "rhythm", "timing", "infancy", "disregard", "riches", "appetite", "loneliness", "pleasure", "love", "beauty", "annoyance", "kindness", "nap", "gain", "talent", "religion", "lie", "truth", "solitude", "justice", "bravery", "calm", "childhood", "confusion", "ability", "loss", "thought", "growth", "cleverness", "anger", "horror", "marriage", "delay", "philosophy", "generation", "wisdom", "dishonesty", "happiness", "coldness", "poverty", "brilliance", "luxuty", "sleep", "awareness", "idea", "disregard", "slavery", "growth", "company", "irritation", "advantage", "mercy", "speed", "pain", "gossip", "crime", "comfort", "frailty", "life", "patience", "omen", "deceit", "elegance"},
|
||||
"noun_collective_people": {"band", "troupe", "dynasty", "group", "bevy", "staff", "crowd", "party", "board", "regiment", "crew", "tribe", "body", "patrol", "congregation", "pack", "bunch", "company", "team", "mob", "caravan", "line", "troop", "choir", "host", "posse", "class", "gang", "horde"},
|
||||
"noun_collective_animal": {"cackle", "mustering", "mob", "wisp", "pod", "bale", "murder", "muster", "brace", "exaltation", "party", "flock", "cast", "sedge", "stand", "scold", "team", "covey", "trip", "army", "school", "nest", "leap", "host", "troop"},
|
||||
"noun_collective_thing": {"wad", "pair", "album", "string", "anthology", "reel", "outfit", "fleet", "comb", "archipelago", "quiver", "bale", "packet", "hedge", "basket", "orchard", "batch", "library", "battery", "set", "harvest", "block", "forest", "book", "group", "bouquet", "collection", "bowl", "stack", "bunch", "hand", "bundle", "catalog", "shower", "ream", "chest", "heap", "range", "cluster", "pack", "hail", "cloud", "galaxy", "sheaf", "clump"},
|
||||
"noun_countable": {"camp", "hospital", "shirt", "sock", "plant", "cup", "fork", "spoon", "plate", "straw", "town", "box", "bird", "father", "answer", "egg", "purse", "mirror", "mistake", "toilet", "toothbrush", "shower", "towel", "pool", "corner", "card", "lawn", "city", "egg", "yard", "burger", "kilometer", "mile", "father", "film", "actor", "issue", "machine", "liter", "room", "station", "journey", "castle", "hour", "finger", "boy", "book", "year", "second", "son", "month", "group", "hall", "cat", "week", "picture", "day", "village", "effect", "baby", "weekend", "class", "meal", "river", "grade", "bush", "desk", "stream", "method", "brother", "sister", "factory", "aunt", "bush", "program", "uncle", "ball", "cousin", "wall", "grandmother", "cup", "grandfather", "week", "school", "shirt", "child", "king", "road", "judge", "bridge", "car", "line", "book", "eye", "teacher", "foot", "party", "face", "day", "chest", "handle", "week", "hotel", "eye", "animal", "doctor", "adult", "village", "key", "bird", "bank", "program", "idea", "gun", "card", "brother", "dress", "room", "door", "mouth", "club", "game", "ring", "project", "sister", "road", "coat", "account", "group", "cigarette", "farm", "river", "college", "computer", "walk", "corner", "cat", "head", "street", "election", "country", "chair", "crowd", "cup", "plant", "farm", "handle", "model", "book", "message", "battle", "pen", "pencil", "elephant", "carrot", "onion", "garden", "country", "engine", "bill", "apple", "noun", "club", "crowd", "window", "field", "friend", "verb", "class", "flower", "seed", "lake", "plant", "animal", "ocean", "whale", "fish", "stream", "cloud", "couch", "steak", "problem", "light", "door", "room", "painting", "shop", "apartment", "candle", "adult", "building", "plan", "page", "ball", "game", "animal", "apartment", "box", "thought", "walk", "lady", "bottle", "article", "game", "kettle", "car", "house", "hoses", "orange", "phone", "app", "window", "door", "dollar", "foot", "cent", "library", "cat", "bed", "pound", "gate", "tomatoes", "gun", "holiday", "woman", "job", "shock", "salary", "tax", "coat", "scooter", "dog", "problem", "field", "answer", "ear", "camp", "case", "road", "woman", "product", "bridge", "man", "dream", "idea", "scheme", "invention", "cigarette", "mother", "friend", "chapter", "computer", "dream", "father", "child", "motor", "deskpath", "factory", "park", "newspaper", "hat", "dream", "table", "kitchen", "student", "captain", "doctor", "bus", "neck", "class", "list", "member", "chest", "valley", "product", "horse", "captain", "star", "hour", "page", "bus", "girl", "month", "child", "house", "boy", "bill", "kitchen", "chapter", "boat", "hand", "dress", "table", "wall", "chair", "train", "minute", "magazine", "bus", "party", "bird", "lake", "job", "nation", "bike", "election", "hand", "box", "beach", "address", "project", "task", "park", "face", "college", "bell", "plane", "store", "hall", "accident", "daughter", "ship", "candy", "smile", "city", "island", "case", "spot", "film", "husband", "artist", "tour", "bag", "boat", "driver", "office", "chair", "path", "dog", "bag", "finger", "apartment", "garden", "heart", "year", "engine", "girl", "day", "castle", "plane", "ring", "brother", "edge", "picture", "meeting", "tent", "dog", "hat", "head", "bottle", "hill"},
|
||||
"noun_uncountable": {"accommodation", "advertising", "air", "aid", "advice", "anger", "art", "assistance", "bread", "business", "butter", "calm", "cash", "chaos", "cheese", "childhood", "clothing", "coffee", "content", "corruption", "courage", "currency", "damage", "danger", "darkness", "data", "determination", "economics", "education", "electricity", "employment", "energy", "entertainment", "enthusiasm", "equipment", "evidence", "failure", "fame", "fire", "flour", "food", "freedom", "friendship", "fuel", "furniture", "fun", "genetics", "gold", "grammar", "guilt", "hair", "happiness", "harm", "health", "heat", "help", "homework", "honesty", "hospitality", "housework", "humour", "imagination", "importance", "information", "innocence", "intelligence", "jealousy", "juice", "justice", "kindness", "knowledge", "labour", "lack", "laughter", "leisure", "literature", "litter", "logic", "love", "luck", "magic", "management", "metal", "milk", "money", "motherhood", "motivation", "music", "nature", "news", "nutrition", "obesity", "oil", "old age", "oxygen", "paper", "patience", "permission", "pollution", "poverty", "power", "pride", "production", "progress", "pronunciation", "publicity", "punctuation", "quality", "quantity", "racism", "rain", "relaxation", "research", "respect", "rice", "room (space)", "rubbish", "safety", "salt", "sand", "seafood", "shopping", "silence", "smoke", "snow", "software", "soup", "speed", "spelling", "stress", "sugar", "sunshine", "tea", "tennis", "time", "tolerance", "trade", "traffic", "transportation", "travel", "trust", "understanding", "unemployment", "usage", "violence", "vision", "warmth", "water", "wealth", "weather", "weight", "welfare", "wheat", "width", "wildlife", "wisdom", "wood", "work", "yoga", "youth"},
|
||||
"noun_determiner": {"the", "a", "an", "this", "that", "these", "those", "my", "your", "his", "her", "its", "our", "their", "some", "any", "each", "every", "certain"},
|
||||
//"noun_proper": {}, // This refers to an actual person(John Doe), place(Chipotle, Tennessee)
|
||||
|
||||
// Verbs
|
||||
"verb_action": {"ride", "sit", "stand", "fight", "laugh", "read", "play", "listen", "cry", "think", "sing", "watch", "dance", "turn", "win", "fly", "cut", "throw", "sleep", "close", "open", "write", "give", "jump", "eat", "drink", "cook", "wash", "wait", "climb", "talk", "crawl", "dream", "dig", "clap", "knit", "sew", "smell", "kiss", "hug", "snore", "bathe", "bow", "paint", "dive", "ski", "stack", "buy", "shake"},
|
||||
"verb_transitive": {"accept", "acknowledge", "admit", "aggravate", "answer", "ask", "avoid", "beat", "bend", "bless", "bother", "break", "brush", "build", "cancel", "capture", "carry", "catch", "change", "chase", "chastise", "clean", "collect", "comfort", "contradict", "convert", "crack", "dazzle", "deceive", "define", "describe", "destroy", "discover", "distinguish", "drag", "dress", "dunk", "edify", "embarrass", "embrace", "enable", "encourage", "enlist", "entertain", "execute", "fascinate", "finish", "flick", "follow", "forget", "forgive", "freeze", "frighten", "furnish", "gather", "grab", "grasp", "grease", "grip", "handle", "hang", "head", "help", "highlight", "honour", "hurry", "hurt", "imitate", "impress", "indulge", "insert", "inspect", "interest", "interrupt", "intimidate", "involve", "irritate", "join", "judge", "keep", "key", "kill", "kiss", "knock", "lag", "lay", "lead", "lean", "leave", "lighten", "limit", "link", "load", "love", "lower", "maintain", "marry", "massage", "melt", "mock", "munch", "murder", "notice", "number", "offend", "order", "page", "paralyze", "persuade", "petrify", "pierce", "place", "please", "poison", "possess", "prepare", "promise", "protect", "punch", "purchase", "puzzle", "question", "quit", "raise", "reassure", "recognise", "refill", "remind", "remove", "repel", "research", "retard", "ring", "run", "satisfy", "scold", "select", "slap", "smell", "soften", "specify", "spell", "spit", "spread", "strike", "surprise", "swallow", "switch", "taste", "teach", "tickle", "tighten", "toast", "toss", "transform", "try", "turn", "tweak", "twist", "understand", "understimate", "unload", "unlock", "untie", "upgrade", "use", "vacate", "videotape", "vilify", "viplate", "wake", "want", "warm", "warn", "wash", "watch", "wear", "weep", "widen", "win", "wipe", "wrack", "wrap", "wreck"},
|
||||
"verb_intransitive": {"agree", "appear", "arrive", "become", "belong", "collapse", "consist", "cost", "cough", "cry", "depend", "die", "disappear", "emerge", "exist", "explode", "fade", "fall", "fast", "float", "fly", "gallop", "go", "grow", "happen", "have", "hiccup", "inquire", "jump", "kneel", "knock", "last", "laugh", "lead", "lean", "leap", "learn", "left", "lie", "limp", "listen", "live", "look", "march", "mourn", "move", "occur", "panic", "party", "pause", "peep", "pose", "pounce", "pout", "pray", "preen", "read", "recline", "relax", "relent", "remain", "respond", "result", "revolt", "rise", "roll", "run", "rush", "sail", "scream", "shake", "shout", "sigh", "sit", "skip", "sleep", "slide", "smell", "smile", "snarl", "sneeze", "soak", "spin", "spit", "sprint", "squeak", "stagger", "stand", "stay", "swim", "swing", "twist", "vanish", "vomit", "wade", "wait", "wake", "walk", "wander", "wave", "whirl", "wiggle", "work", "yell"},
|
||||
"verb_linking": {"am", "is", "was", "are", "were", "being", "been", "be", "have", "has", "had", "do", "does", "did", "shall", "will", "should", "would", "may", "might", "must", "can", "could"},
|
||||
"verb_helping": {"is", "can", "be", "do", "may", "had", "should", "was", "has", "could", "are", "will", "been", "did", "might", "were", "does", "must", "have", "would", "am", "shall", "being"},
|
||||
|
||||
// Adverbs
|
||||
"adverb_manner": {"accidentally", "angrily", "anxiously", "awkwardly", "badly", "beautifully", "blindly", "boldly", "bravely", "brightly", "busily", "calmly", "carefully", "carelessly", "cautiously", "cheerfully", "clearly", "closely", "correctly", "courageously", "cruelly", "daringly", "deliberately", "doubtfully", "eagerly", "easily", "elegantly", "enormously", "enthusiastically", "equally", "eventually", "exactly", "faithfully", "fast", "fatally", "fiercely", "fondly", "foolishly", "fortunately", "frankly", "frantically", "generously", "gently", "gladly", "gracefully", "greedily", "happily", "hard", "hastily", "healthily", "honestly", "hungrily", "hurriedly", "inadequately", "ingeniously", "innocently", "inquisitively", "irritably", "joyously", "justly", "kindly", "lazily", "loosely", "loudly", "madly", "mortally", "mysteriously", "neatly", "nervously", "noisily", "obediently", "openly", "painfully", "patiently", "perfectly", "politely", "poorly", "powerfully", "promptly", "punctually", "quickly", "quietly", "rapidly", "rarely", "really", "recklessly", "regularly", "reluctantly", "repeatedly", "rightfully", "roughly", "rudely", "sadly", "safely", "selfishly", "sensibly", "seriously", "sharply", "shyly", "silently", "sleepily", "slowly", "smoothly", "so", "softly", "solemnly", "speedily", "stealthily", "sternly", "straight", "stupidly", "successfully", "suddenly", "suspiciously", "swiftly", "tenderly", "tensely", "thoughtfully", "tightly", "truthfully", "unexpectedly", "victoriously", "violently", "vivaciously", "warmly", "weakly", "wearily", "well", "wildly", "wisely"},
|
||||
"adverb_degree": {"almost", "absolutely", "awfully", "badly", "barely", "completely", "decidedly", "deeply", "enough", "enormously", "entirely", "extremely", "fairly", "far", "fully", "greatly", "hardly", "highly", "how", "incredibly", "indeed", "intensely", "just", "least", "less", "little", "lots", "most", "much", "nearly", "perfectly", "positively", "practically", "pretty", "purely", "quite", "rather", "really", "scarcely", "simply", "so", "somewhat", "strongly", "terribly", "thoroughly", "too", "totally", "utterly", "very", "virtually", "well"},
|
||||
"adverb_place": {"about", "above", "abroad", "anywhere", "away", "back", "backwards", "behind", "below", "down", "downstairs", "east", "elsewhere", "far", "here", "in", "indoors", "inside", "near", "nearby", "off", "on", "out", "outside", "over", "there", "towards", "under", "up", "upstairs", "where"},
|
||||
"adverb_time_definite": {"now", "then", "today", "tomorrow", "tonight", "yesterday"},
|
||||
"adverb_time_indefinite": {"already", "before", "early", "earlier", "eventually", "finally", "first", "formerly", "just", "last", "late", "later", "lately", "next", "previously", "recently", "since", "soon", "still", "yet"},
|
||||
"adverb_frequency_definite": {"annually", "daily", "fortnightly", "hourly", "monthly", "nightly", "quarterly", "weekly", "yearly"},
|
||||
"adverb_frequency_indefinite": {"always", "constantly", "ever", "frequently", "generally", "infrequently", "never", "normally", "occasionally", "often", "rarely", "regularly", "seldom", "sometimes", "regularly", "usually"},
|
||||
|
||||
// Prepositions
|
||||
"preposition_simple": {"at", "by", "as", "but", "from", "for", "into", "in", "than", "of", "off", "on", "out", "over", "till", "to", "up", "upon", "with", "under", "down"},
|
||||
"preposition_double": {"outside of", "out of", "upon", "within", "inside", "without", "onto", "from behind", "because of", "out of", "throughout", "up to", "before", "due to", "according to", "from beneath", "next to", "from above"},
|
||||
"preposition_compound": {"according to", "as to", "onto", "across", "after", "beyond", "without", "opposite to", "away from", "aside from", "in favor of", "in front of", "because of", "as for", "near to", "behind", "along", "outside", "on account of", "on behalf of", "but for", "ahead of", "close to", "despite", "depending on", "due to", "in addition to", "next to", "in between", "in case of", "owing to", "along with", "around", "between", "apart from", "in return for", "out of", "instead of", "outside of", "other than", "together with", "up to", "above", "about"},
|
||||
|
||||
// Adjectives
|
||||
"adjective_descriptive": {"adorable", "adventurous", "agreeable", "alive", "aloof", "amused", "angry", "annoying", "anxious", "arrogant", "ashamed", "attractive", "auspicious", "awful", "bad", "beautiful", "black", "blue", "blushing", "bored", "brave", "bright", "brown", "busy", "calm", "careful", "cautious", "charming", "cheerful", "clean", "clear", "clever", "clumsy", "colorful", "comfortable", "concerning", "condemned", "confusing", "cooperative", "courageous", "creepy", "crowded", "cruel", "curios", "cute", "dangerous", "dark", "defiant", "delightful", "difficult", "disgusting", "distinct", "disturbed", "dizzying", "drab", "dull", "eager", "easy", "elated", "elegant", "embarrassed", "enchanted", "encouraging", "energetic", "enthusiastic", "envious", "evil", "exciting", "expensive", "exuberant", "faithful", "famous", "fancy", "fantastic", "fierce", "filthy", "fine", "foolish", "fragile", "frail", "frantic", "friendly", "frightening", "funny", "gentle", "gifted", "glamorous", "gleaming", "glorious", "good", "gorgeous", "graceful", "green", "grieving", "grumpy", "handsome", "happy", "healthy", "helpful", "helpless", "hilarious", "homeless", "horrible", "hungry", "hurt", "ill", "important", "impossible", "impromptu", "improvised", "inexpensive", "innocent", "inquiring", "itchy", "jealous", "jittery", "joyous", "kind", "knightly", "lazy", "lemony", "light", "lingering", "lively", "lonely", "long", "lovely", "lucky", "magnificent", "modern", "motionless", "muddy", "mushy", "mysterious", "naughty", "niche", "nervous", "nice", "nutty", "obedient", "obnoxious", "odd", "open", "orange", "outrageous", "outstanding", "panicked", "perfect", "pink", "plain", "pleasant", "poised", "poor", "powerless", "precious", "prickling", "proud", "purple", "puzzled", "quaint", "queer", "quizzical", "realistic", "red", "relieved", "repelling", "repulsive", "rich", "scary", "scenic", "selfish", "shiny", "shy", "silly", "sleepy", "smiling", "smoggy", "sore", "sparkly", "splendid", "spotted", "stormy", "strange", "stupid", "successful", "super", "talented", "tame", "tasty", "tender", "tense", "terse", "terrible", "thankful", "thoughtful", "tired", "tough", "troubling", "ugly", "uninterested", "unusual", "upset", "uptight", "varied", "vast", "victorious", "wandering", "weary", "white", "wicked", "wide", "wild", "witty", "worrisome", "wrong", "yellow", "young", "zealous"},
|
||||
"adjective_quantitative": {"a little", "a little bit", "a lot", "abundant", "all", "any", "couple", "double", "each", "either", "empty", "enough", "enough of", "every", "few", "full", "great", "half", "heavily", "heavy", "huge", "hundred", "hundreds", "insufficient", "light", "little", "lots of", "many", "most", "much", "neither", "no", "numerous", "plenty of", "several", "significant", "single", "so few", "some", "sparse", "substantial", "sufficient", "too", "whole"},
|
||||
"adjective_proper": {"Afghan", "African", "Alaskan", "Alpine", "Amazonian", "American", "Antarctic", "Aristotelian", "Asian", "Atlantean", "Atlantic", "Bahamian", "Bahrainean", "Balinese", "Bangladeshi", "Barbadian", "Barcelonian", "Beethovenian", "Belgian", "Beninese", "Bismarckian", "Brazilian", "British", "Buddhist", "Burkinese", "Burmese", "Caesarian", "Californian", "Cambodian", "Canadian", "Chinese", "Christian", "Colombian", "Confucian", "Congolese", "Cormoran", "Costa Rican", "Cypriot", "Danish", "Darwinian", "Diabolical", "Dutch", "Ecuadorian", "Egyptian", "Einsteinian", "Elizabethan", "English", "Finnish", "French", "Freudian", "Gabonese", "Gaussian", "German", "Greek", "Guyanese", "Himalayan", "Hindu", "Hitlerian", "Honduran", "Icelandic", "Indian", "Indonesian", "Intelligent", "Iranian", "Iraqi", "Italian", "Japanese", "Jungian", "Kazakh", "Korean", "kuban", "Kyrgyz", "Laotian", "Lebanese", "Lilliputian", "Lincolnian", "Machiavellian", "Madagascan", "Malagasy", "Marxist", "Mayan", "Mexican", "Middle Eastern", "Monacan", "Mozartian", "Muscovite", "Nepalese", "Newtonian", "Norwegian", "Orwellian", "Pacific", "Parisian", "Peruvian", "Philippine", "Plutonian", "Polish", "Polynesian", "Portuguese", "Putinist", "Roman", "Romanian", "Rooseveltian", "Russian", "Salvadorean", "Sammarinese", "Senegalese", "Shakespearean", "Slovak", "Somali", "South American", "Spanish", "Spanish", "Sri-Lankan", "Sudanese", "Swazi", "Swiss", "Taiwanese", "Thai", "Thatcherite", "Tibetan", "Torontonian", "Turkish", "Turkishish", "Turkmen", "Uzbek", "Victorian", "Viennese", "Vietnamese", "Welsh"},
|
||||
"adjective_demonstrative": {"this", "that", "these", "those", "it", "here", "there", "over there"},
|
||||
"adjective_possessive": {"my", "your", "his", "her", "its", "our", "their"},
|
||||
"adjective_interrogative": {"what", "whose", "where", "why", "how", "which"},
|
||||
"adjective_indefinite": {"all", "any", "anything", "everyone", "few", "nobody", "one", "some", "someone", "everybody", "anyone", "each", "everything", "many", "none", "several", "somebody"},
|
||||
|
||||
// Pronouns
|
||||
"pronoun_personal": {"I", "we", "you", "he", "she", "it", "they"},
|
||||
"pronoun_object": {"me", "us", "you", "her", "him", "it", "them"},
|
||||
"pronoun_possessive": {"mine", "ours", "yours", "hers", "his", "theirs"},
|
||||
"pronoun_reflective": {"myself", "yourself", "herself", "himself", "itself", "ourselves", "yourselves", "themselves"},
|
||||
"pronoun_indefinite": {"all", "another", "any", "anybody", "anyone", "anything", "both", "each", "either", "everybody", "everyone", "everything", "few", "many", "most", "neither", "nobody", "none", "no one", "nothing", "one", "other", "others", "several", "some", "somebody", "someone", "something", "such"},
|
||||
"pronoun_demonstrative": {"this", "that", "these", "those"},
|
||||
"pronoun_interrogative": {"who", "whom", "which", "what", "whose", "where", "when", "why", "how"},
|
||||
"pronoun_relative": {"as", "that", "what", "whatever", "which", "whichever", "who", "whoever", "whom", "whomever", "whose"},
|
||||
|
||||
// Connectives
|
||||
"connective_time": {"after a while", "afterwards", "at once", "at this moment", "at this point", "before that", "finally", "first", "here", "in the end", "lastly", "later on", "meanwhile", "next", "next time", "now", "on another occasion", "previously", "since", "soon", "straightaway", "then", "until then", "when", "whenever", "while"},
|
||||
"connective_comparative": {"additionally", "also", "as well", "even", "furthermore", "in addition", "indeed", "let alone", "moreover", "not only", "alternatively", "anyway", "but", "by contrast", "differs from", "elsewhere", "even so", "however", "in contrast", "in fact", "in other respects", "in spite of this", "in that respect", "instead", "nevertheless", "on the contrary", "on the other hand", "rather", "though", "whereas", "yet", "after all", "anyway", "besides", "moreover"},
|
||||
"connective_complaint": {"besides", "e.g.", "for example", "for instance", "i.e.", "in other words", "in that", "that is to say"},
|
||||
"connective_listing": {"firstly", "secondly", "first of all", "finally", "lastly", "for one thing", "for another", "in the first place", "to begin with", "next", "in summation", "to conclude"},
|
||||
"connective_casual": {"accordingly", "all the same", "an effect of", "an outcome of", "an upshot of", "as a consequence of", "as a result of", "because", "caused by", "consequently", "despite this", "even though", "hence", "however", "in that case", "moreover", "nevertheless", "otherwise", "so", "so as", "stemmed from", "still", "then", "therefore", "though", "under the circumstances", "yet"},
|
||||
"connective_examplify": {"accordingly", "as a result", "as exemplified by", "consequently", "for example", "for instance", "for one thing", "including", "provided that", "since", "so", "such as", "then", "therefore", "these include", "through", "unless", "without"},
|
||||
|
||||
// Misc
|
||||
"interjection": {"wow", "hey", "oops", "ouch", "yay", "aha", "eek", "huh", "hmm", "whoa", "yikes", "phew", "gee", "alas", "bravo"},
|
||||
}
|
||||
699
vendor/github.com/brianvoe/gofakeit/v7/datetime.go
generated
vendored
Normal file
699
vendor/github.com/brianvoe/gofakeit/v7/datetime.go
generated
vendored
Normal file
@@ -0,0 +1,699 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var currentYear = time.Now().Year()
|
||||
|
||||
// Date will generate a random time.Time struct
|
||||
func Date() time.Time { return date(GlobalFaker) }
|
||||
|
||||
// Date will generate a random time.Time struct
|
||||
func (f *Faker) Date() time.Time { return date(f) }
|
||||
|
||||
func date(f *Faker) time.Time {
|
||||
return time.Date(year(f), time.Month(month(f)), day(f), hour(f), minute(f), second(f), nanoSecond(f), time.UTC)
|
||||
}
|
||||
|
||||
// PastDate will generate a random past time.Time struct
|
||||
func PastDate() time.Time { return pastDate(GlobalFaker) }
|
||||
|
||||
// PastDate will generate a random past time.Time struct
|
||||
func (f *Faker) PastDate() time.Time { return pastDate(f) }
|
||||
|
||||
func pastDate(f *Faker) time.Time {
|
||||
return time.Now().Add(time.Hour * -time.Duration(number(f, 1, 12)))
|
||||
}
|
||||
|
||||
// FutureDate will generate a random future time.Time struct
|
||||
func FutureDate() time.Time { return futureDate(GlobalFaker) }
|
||||
|
||||
// FutureDate will generate a random future time.Time struct
|
||||
func (f *Faker) FutureDate() time.Time { return futureDate(f) }
|
||||
|
||||
func futureDate(f *Faker) time.Time {
|
||||
return time.Now().Add(time.Hour * time.Duration(number(f, 1, 12)))
|
||||
}
|
||||
|
||||
// DateRange will generate a random time.Time struct between a start and end date
|
||||
func DateRange(start, end time.Time) time.Time { return dateRange(GlobalFaker, start, end) }
|
||||
|
||||
// DateRange will generate a random time.Time struct between a start and end date
|
||||
func (f *Faker) DateRange(start, end time.Time) time.Time { return dateRange(f, start, end) }
|
||||
|
||||
func dateRange(f *Faker, start time.Time, end time.Time) time.Time {
|
||||
return time.Unix(0, int64(number(f, int(start.UnixNano()), int(end.UnixNano())))).UTC()
|
||||
}
|
||||
|
||||
// NanoSecond will generate a random nano second
|
||||
func NanoSecond() int { return nanoSecond(GlobalFaker) }
|
||||
|
||||
// NanoSecond will generate a random nano second
|
||||
func (f *Faker) NanoSecond() int { return nanoSecond(f) }
|
||||
|
||||
func nanoSecond(f *Faker) int { return number(f, 0, 999999999) }
|
||||
|
||||
// Second will generate a random second
|
||||
func Second() int { return second(GlobalFaker) }
|
||||
|
||||
// Second will generate a random second
|
||||
func (f *Faker) Second() int { return second(f) }
|
||||
|
||||
func second(f *Faker) int { return number(f, 0, 59) }
|
||||
|
||||
// Minute will generate a random minute
|
||||
func Minute() int { return minute(GlobalFaker) }
|
||||
|
||||
// Minute will generate a random minute
|
||||
func (f *Faker) Minute() int { return minute(f) }
|
||||
|
||||
func minute(f *Faker) int { return number(f, 0, 59) }
|
||||
|
||||
// Hour will generate a random hour - in military time
|
||||
func Hour() int { return hour(GlobalFaker) }
|
||||
|
||||
// Hour will generate a random hour - in military time
|
||||
func (f *Faker) Hour() int { return hour(f) }
|
||||
|
||||
func hour(f *Faker) int { return number(f, 0, 23) }
|
||||
|
||||
// Day will generate a random day between 1 - 31
|
||||
func Day() int { return day(GlobalFaker) }
|
||||
|
||||
// Day will generate a random day between 1 - 31
|
||||
func (f *Faker) Day() int { return day(f) }
|
||||
|
||||
func day(f *Faker) int { return number(f, 1, 31) }
|
||||
|
||||
// WeekDay will generate a random weekday string (Monday-Sunday)
|
||||
func WeekDay() string { return weekDay(GlobalFaker) }
|
||||
|
||||
// WeekDay will generate a random weekday string (Monday-Sunday)
|
||||
func (f *Faker) WeekDay() string { return weekDay(f) }
|
||||
|
||||
func weekDay(f *Faker) string { return time.Weekday(number(f, 0, 6)).String() }
|
||||
|
||||
// Month will generate a random month int
|
||||
func Month() int { return month(GlobalFaker) }
|
||||
|
||||
// Month will generate a random month int
|
||||
func (f *Faker) Month() int { return month(f) }
|
||||
|
||||
func month(f *Faker) int { return number(f, 1, 12) }
|
||||
|
||||
// MonthString will generate a random month string
|
||||
func MonthString() string { return monthString(GlobalFaker) }
|
||||
|
||||
// MonthString will generate a random month string
|
||||
func (f *Faker) MonthString() string { return monthString(f) }
|
||||
|
||||
func monthString(f *Faker) string { return time.Month(number(f, 1, 12)).String() }
|
||||
|
||||
// Year will generate a random year between 1900 - current year
|
||||
func Year() int { return year(GlobalFaker) }
|
||||
|
||||
// Year will generate a random year between 1900 - current year
|
||||
func (f *Faker) Year() int { return year(f) }
|
||||
|
||||
func year(f *Faker) int { return number(f, 1900, currentYear) }
|
||||
|
||||
// TimeZone will select a random timezone string
|
||||
func TimeZone() string { return timeZone(GlobalFaker) }
|
||||
|
||||
// TimeZone will select a random timezone string
|
||||
func (f *Faker) TimeZone() string { return timeZone(f) }
|
||||
|
||||
func timeZone(f *Faker) string { return getRandValue(f, []string{"timezone", "text"}) }
|
||||
|
||||
// TimeZoneFull will select a random full timezone string
|
||||
func TimeZoneFull() string { return timeZoneFull(GlobalFaker) }
|
||||
|
||||
// TimeZoneFull will select a random full timezone string
|
||||
func (f *Faker) TimeZoneFull() string { return timeZoneFull(f) }
|
||||
|
||||
func timeZoneFull(f *Faker) string { return getRandValue(f, []string{"timezone", "full"}) }
|
||||
|
||||
// TimeZoneRegion will select a random region style timezone string, e.g. "America/Chicago"
|
||||
func TimeZoneRegion() string { return timeZoneRegion(GlobalFaker) }
|
||||
|
||||
// TimeZoneRegion will select a random region style timezone string, e.g. "America/Chicago"
|
||||
func (f *Faker) TimeZoneRegion() string { return timeZoneRegion(f) }
|
||||
|
||||
func timeZoneRegion(f *Faker) string { return getRandValue(f, []string{"timezone", "region"}) }
|
||||
|
||||
// TimeZoneAbv will select a random timezone abbreviation string
|
||||
func TimeZoneAbv() string { return timeZoneAbv(GlobalFaker) }
|
||||
|
||||
// TimeZoneAbv will select a random timezone abbreviation string
|
||||
func (f *Faker) TimeZoneAbv() string { return timeZoneAbv(f) }
|
||||
|
||||
func timeZoneAbv(f *Faker) string { return getRandValue(f, []string{"timezone", "abr"}) }
|
||||
|
||||
// TimeZoneOffset will select a random timezone offset
|
||||
func TimeZoneOffset() float32 { return timeZoneOffset(GlobalFaker) }
|
||||
|
||||
// TimeZoneOffset will select a random timezone offset
|
||||
func (f *Faker) TimeZoneOffset() float32 { return timeZoneOffset(f) }
|
||||
|
||||
func timeZoneOffset(f *Faker) float32 {
|
||||
value, _ := strconv.ParseFloat(getRandValue(f, []string{"timezone", "offset"}), 32)
|
||||
return float32(value)
|
||||
}
|
||||
|
||||
// javaDateTimeFormatToGolangFormat converts java date/time format into go date/time format
|
||||
func javaDateTimeFormatToGolangFormat(format string) string {
|
||||
format = strings.Replace(format, "ddd", "_2", -1)
|
||||
format = strings.Replace(format, "dd", "02", -1)
|
||||
format = strings.Replace(format, "d", "2", -1)
|
||||
|
||||
format = strings.Replace(format, "HH", "15", -1)
|
||||
format = strings.Replace(format, "H", "15", -1)
|
||||
|
||||
format = strings.Replace(format, "hh", "03", -1)
|
||||
format = strings.Replace(format, "h", "3", -1)
|
||||
|
||||
format = strings.Replace(format, "mm", "04", -1)
|
||||
format = strings.Replace(format, "m", "4", -1)
|
||||
|
||||
format = strings.Replace(format, "ss", "05", -1)
|
||||
format = strings.Replace(format, "s", "5", -1)
|
||||
|
||||
format = strings.Replace(format, "yyyy", "2006", -1)
|
||||
format = strings.Replace(format, "yy", "06", -1)
|
||||
format = strings.Replace(format, "y", "06", -1)
|
||||
|
||||
format = strings.Replace(format, "SSS", "000", -1)
|
||||
|
||||
format = strings.Replace(format, "a", "pm", -1)
|
||||
format = strings.Replace(format, "aa", "PM", -1)
|
||||
|
||||
format = strings.Replace(format, "MMMM", "January", -1)
|
||||
format = strings.Replace(format, "MMM", "Jan", -1)
|
||||
format = strings.Replace(format, "MM", "01", -1)
|
||||
format = strings.Replace(format, "M", "1", -1)
|
||||
|
||||
format = strings.Replace(format, "ZZ", "-0700", -1)
|
||||
|
||||
if !strings.Contains(format, "Z07") {
|
||||
format = strings.Replace(format, "Z", "-07", -1)
|
||||
}
|
||||
|
||||
format = strings.Replace(format, "zz:zz", "Z07:00", -1)
|
||||
format = strings.Replace(format, "zzzz", "Z0700", -1)
|
||||
format = strings.Replace(format, "z", "MST", -1)
|
||||
|
||||
format = strings.Replace(format, "EEEE", "Monday", -1)
|
||||
format = strings.Replace(format, "E", "Mon", -1)
|
||||
|
||||
return format
|
||||
}
|
||||
|
||||
func addDateTimeLookup() {
|
||||
AddFuncLookup("date", Info{
|
||||
Display: "Date",
|
||||
Category: "datetime",
|
||||
Description: "Representation of a specific day, month, and year, often used for chronological reference",
|
||||
Example: "2006-01-02T15:04:05Z07:00",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"date string", "calendar date", "datetime", "timestamp", "chronological reference",
|
||||
},
|
||||
Keywords: []string{
|
||||
"date", "time", "day", "month", "year", "format", "rfc3339", "iso8601", "utc",
|
||||
},
|
||||
Params: []Param{
|
||||
{
|
||||
Field: "format",
|
||||
Display: "Format",
|
||||
Type: "string",
|
||||
Default: "RFC3339",
|
||||
Options: []string{"ANSIC", "UnixDate", "RubyDate", "RFC822", "RFC822Z", "RFC850", "RFC1123", "RFC1123Z", "RFC3339", "RFC3339Nano"},
|
||||
Description: "Date time string format output. You may also use golang time format or java time format",
|
||||
},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
format, err := info.GetString(m, "format")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch format {
|
||||
case "ANSIC":
|
||||
return f.Date().Format(time.ANSIC), nil
|
||||
case "UnixDate":
|
||||
return f.Date().Format(time.UnixDate), nil
|
||||
case "RubyDate":
|
||||
return f.Date().Format(time.RubyDate), nil
|
||||
case "RFC822":
|
||||
return f.Date().Format(time.RFC822), nil
|
||||
case "RFC822Z":
|
||||
return f.Date().Format(time.RFC822Z), nil
|
||||
case "RFC850":
|
||||
return f.Date().Format(time.RFC850), nil
|
||||
case "RFC1123":
|
||||
return f.Date().Format(time.RFC1123), nil
|
||||
case "RFC1123Z":
|
||||
return f.Date().Format(time.RFC1123Z), nil
|
||||
case "RFC3339":
|
||||
return f.Date().Format(time.RFC3339), nil
|
||||
case "RFC3339Nano":
|
||||
return f.Date().Format(time.RFC3339Nano), nil
|
||||
default:
|
||||
if format == "" {
|
||||
return f.Date().Format(time.RFC3339), nil
|
||||
}
|
||||
|
||||
return f.Date().Format(javaDateTimeFormatToGolangFormat(format)), nil
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("daterange", Info{
|
||||
Display: "Date Range",
|
||||
Category: "datetime",
|
||||
Description: "Random date between two ranges",
|
||||
Example: "1995-06-15T14:30:00Z",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"date interval", "date span", "date window", "between dates", "bounded period",
|
||||
},
|
||||
Keywords: []string{
|
||||
"daterange", "range", "between", "date", "time", "random", "bounds", "limits", "window",
|
||||
},
|
||||
Params: []Param{
|
||||
{
|
||||
Field: "startdate",
|
||||
Display: "Start Date",
|
||||
Type: "string",
|
||||
Default: "1970-01-01",
|
||||
Description: "Start date time string",
|
||||
},
|
||||
{
|
||||
Field: "enddate",
|
||||
Display: "End Date",
|
||||
Type: "string",
|
||||
Default: time.Now().Format("2006-01-02"),
|
||||
Description: "End date time string",
|
||||
},
|
||||
{
|
||||
Field: "format",
|
||||
Display: "Format",
|
||||
Type: "string",
|
||||
Default: "yyyy-MM-dd",
|
||||
Description: "Date time string format",
|
||||
},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
format, err := info.GetString(m, "format")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
format = javaDateTimeFormatToGolangFormat(format)
|
||||
|
||||
startdate, err := info.GetString(m, "startdate")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
startDateTime, err := time.Parse(format, startdate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
enddate, err := info.GetString(m, "enddate")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
endDateTime, err := time.Parse(format, enddate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return DateRange(startDateTime, endDateTime).Format(format), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("pastdate", Info{
|
||||
Display: "PastDate",
|
||||
Category: "datetime",
|
||||
Description: "Date that has occurred before the current moment in time",
|
||||
Example: "2007-01-24 13:00:35.820738079 +0000 UTC",
|
||||
Output: "time",
|
||||
Aliases: []string{
|
||||
"past date", "historical date", "previous date", "earlier date", "prior time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"date", "time", "occurred", "elapsed", "gone", "expired", "finished", "completed",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return pastDate(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("futuredate", Info{
|
||||
Display: "FutureDate",
|
||||
Category: "datetime",
|
||||
Description: "Date that has occurred after the current moment in time",
|
||||
Example: "2107-01-24 13:00:35.820738079 +0000 UTC",
|
||||
Output: "time",
|
||||
Aliases: []string{
|
||||
"future date", "upcoming date", "next date", "scheduled date", "later time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"future", "date", "time", "forthcoming", "prospective", "anticipated", "scheduled",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return futureDate(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("nanosecond", Info{
|
||||
Display: "Nanosecond",
|
||||
Category: "datetime",
|
||||
Description: "Unit of time equal to one billionth (10^-9) of a second",
|
||||
Example: "196446360",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"nano", "ns value", "tiny time", "ultra precision", "fractional second",
|
||||
},
|
||||
Keywords: []string{
|
||||
"nanosecond", "time", "unit", "second", "billionth", "ultra", "high", "resolution",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return nanoSecond(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("second", Info{
|
||||
Display: "Second",
|
||||
Category: "datetime",
|
||||
Description: "Unit of time equal to 1/60th of a minute",
|
||||
Example: "43",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"second value", "sec unit", "time second", "sixtieth minute", "time slice",
|
||||
},
|
||||
Keywords: []string{
|
||||
"second", "time", "unit", "minute", "sixtieth", "duration", "interval", "sixty",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return second(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("minute", Info{
|
||||
Display: "Minute",
|
||||
Category: "datetime",
|
||||
Description: "Unit of time equal to 60 seconds",
|
||||
Example: "34",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"minute value", "time minute", "sixty seconds", "short period", "clock minute",
|
||||
},
|
||||
Keywords: []string{
|
||||
"minute", "time", "unit", "60", "seconds", "duration", "interval", "sixtieth", "hour",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return minute(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("hour", Info{
|
||||
Display: "Hour",
|
||||
Category: "datetime",
|
||||
Description: "Unit of time equal to 60 minutes",
|
||||
Example: "8",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"hour value", "time hour", "sixty minutes", "clock hour", "time period",
|
||||
},
|
||||
Keywords: []string{
|
||||
"hour", "time", "unit", "60", "minutes", "duration", "interval", "day",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return hour(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("day", Info{
|
||||
Display: "Day",
|
||||
Category: "datetime",
|
||||
Description: "24-hour period equivalent to one rotation of Earth on its axis",
|
||||
Example: "12",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"calendar day", "day value", "earth rotation", "daily unit", "full day",
|
||||
},
|
||||
Keywords: []string{
|
||||
"day", "time", "unit", "axis", "24-hour", "calendar", "sunrise", "sunset",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return day(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("weekday", Info{
|
||||
Display: "Weekday",
|
||||
Category: "datetime",
|
||||
Description: "Day of the week excluding the weekend",
|
||||
Example: "Friday",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"weekday name", "business day", "work day", "monday to friday", "weekday label",
|
||||
},
|
||||
Keywords: []string{
|
||||
"weekday", "day", "week", "workday", "business", "calendar", "monday", "tuesday", "wednesday", "thursday", "friday",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return weekDay(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("month", Info{
|
||||
Display: "Month",
|
||||
Category: "datetime",
|
||||
Description: "Division of the year, typically 30 or 31 days long",
|
||||
Example: "1",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"calendar month", "month value", "monthly unit", "date month", "time month",
|
||||
},
|
||||
Keywords: []string{
|
||||
"month", "year", "time", "30", "31", "days", "calendar", "period",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return month(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("monthstring", Info{
|
||||
Display: "Month String",
|
||||
Category: "datetime",
|
||||
Description: "String representation of a month name",
|
||||
Example: "September",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"month name", "calendar month name", "full month", "month label", "month string",
|
||||
},
|
||||
Keywords: []string{
|
||||
"month", "string", "time", "representation", "january", "september", "december",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return monthString(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("year", Info{
|
||||
Display: "Year",
|
||||
Category: "datetime",
|
||||
Description: "Period of 365 days, the time Earth takes to orbit the Sun",
|
||||
Example: "1900",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"calendar year", "annual period", "orbit year", "year value", "fiscal year",
|
||||
},
|
||||
Keywords: []string{
|
||||
"year", "time", "365", "days", "leap", "calendar", "decade", "century",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return year(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("timezone", Info{
|
||||
Display: "Timezone",
|
||||
Category: "datetime",
|
||||
Description: "Region where the same standard time is used, based on longitudinal divisions of the Earth",
|
||||
Example: "Kaliningrad Standard Time",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"time zone", "tz name", "standard time zone", "geographic zone", "regional time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timezone", "time", "earth", "utc", "gmt", "pst", "est", "cst", "mst", "dst",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return timeZone(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("timezoneabv", Info{
|
||||
Display: "Timezone Abbreviation",
|
||||
Category: "datetime",
|
||||
Description: "Abbreviated 3-letter word of a timezone",
|
||||
Example: "KST",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"timezone abbr", "tz short code", "abbreviated zone", "short tz name", "zone abbreviation",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timezone", "time", "3-letter", "kst", "pst", "est", "gmt", "utc",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return timeZoneAbv(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("timezonefull", Info{
|
||||
Display: "Timezone Full",
|
||||
Category: "datetime",
|
||||
Description: "Full name of a timezone",
|
||||
Example: "(UTC+03:00) Kaliningrad, Minsk",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"timezone full", "full tz name", "complete zone name", "long tz name", "detailed zone",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timezone", "full", "time", "standard", "format", "display", "utc", "gmt",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return timeZoneFull(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("timezoneoffset", Info{
|
||||
Display: "Timezone Offset",
|
||||
Category: "datetime",
|
||||
Description: "The difference in hours from Coordinated Universal Time (UTC) for a specific region",
|
||||
Example: "-5",
|
||||
Output: "float32",
|
||||
Aliases: []string{
|
||||
"utc offset", "gmt offset", "tz shift", "time difference", "offset value",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timezone", "offset", "utc", "gmt", "plus", "minus", "east", "west",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return timeZoneOffset(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("timezoneregion", Info{
|
||||
Display: "Timezone Region",
|
||||
Category: "datetime",
|
||||
Description: "Geographic area sharing the same standard time",
|
||||
Example: "America/Alaska",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"region zone", "geo time region", "tz area", "regional timezone", "country zone",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timezone", "time", "america", "europe", "asia", "africa", "australia", "continent", "city",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return timeZoneRegion(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("time", Info{
|
||||
Display: "Time",
|
||||
Category: "datetime",
|
||||
Description: "Random time string in the specified format",
|
||||
Example: "14:30:25",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"time string", "clock time", "time format", "time value", "hour minute second",
|
||||
},
|
||||
Keywords: []string{
|
||||
"time", "clock", "hour", "minute", "second", "format", "24-hour", "12-hour", "am", "pm",
|
||||
},
|
||||
Params: []Param{
|
||||
{
|
||||
Field: "format",
|
||||
Display: "Format",
|
||||
Type: "string",
|
||||
Default: "HH:mm:ss",
|
||||
Options: []string{"HH:mm:ss", "HH:mm", "hh:mm:ss a", "hh:mm a", "H:mm", "h:mm a"},
|
||||
Description: "Time format string. Supports Java time format patterns or Go time format patterns",
|
||||
},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
format, err := info.GetString(m, "format")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Convert java format to golang format
|
||||
golangFormat := javaDateTimeFormatToGolangFormat(format)
|
||||
|
||||
// Create a time with today's date but random time
|
||||
t := time.Date(2000, 1, 1, hour(f), minute(f), second(f), nanoSecond(f), time.UTC)
|
||||
|
||||
return t.Format(golangFormat), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("timerange", Info{
|
||||
Display: "Time Range",
|
||||
Category: "datetime",
|
||||
Description: "Random time string between start and end times",
|
||||
Example: "10:15:30",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"time interval", "time span", "time window", "between times", "bounded time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timerange", "range", "between", "time", "start", "end", "bounds", "limits", "window",
|
||||
},
|
||||
Params: []Param{
|
||||
{
|
||||
Field: "starttime",
|
||||
Display: "Start Time",
|
||||
Type: "string",
|
||||
Default: "00:00:00",
|
||||
Description: "Start time string in the specified format",
|
||||
},
|
||||
{
|
||||
Field: "endtime",
|
||||
Display: "End Time",
|
||||
Type: "string",
|
||||
Default: "23:59:59",
|
||||
Description: "End time string in the specified format",
|
||||
},
|
||||
{
|
||||
Field: "format",
|
||||
Display: "Format",
|
||||
Type: "string",
|
||||
Default: "HH:mm:ss",
|
||||
Options: []string{"HH:mm:ss", "HH:mm", "hh:mm:ss a", "hh:mm a", "H:mm", "h:mm a"},
|
||||
Description: "Time format string. Supports Java time format patterns or Go time format patterns",
|
||||
},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
format, err := info.GetString(m, "format")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
startTime, err := info.GetString(m, "starttime")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
endTime, err := info.GetString(m, "endtime")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Convert java format to golang format
|
||||
golangFormat := javaDateTimeFormatToGolangFormat(format)
|
||||
|
||||
// Parse start and end times
|
||||
start, err := time.Parse(golangFormat, startTime)
|
||||
if err != nil {
|
||||
// If parsing fails, use a default start time
|
||||
start = time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
|
||||
}
|
||||
|
||||
end, err := time.Parse(golangFormat, endTime)
|
||||
if err != nil {
|
||||
// If parsing fails, use a default end time
|
||||
end = time.Date(2000, 1, 1, 23, 59, 59, 999999999, time.UTC)
|
||||
}
|
||||
|
||||
// Generate random time between start and end
|
||||
startNano := start.UnixNano()
|
||||
endNano := end.UnixNano()
|
||||
|
||||
if startNano > endNano {
|
||||
startNano, endNano = endNano, startNano
|
||||
}
|
||||
|
||||
randomNano := int64(number(f, int(startNano), int(endNano)))
|
||||
randomTime := time.Unix(0, randomNano).UTC()
|
||||
|
||||
return randomTime.Format(golangFormat), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
4
vendor/github.com/brianvoe/gofakeit/v7/doc.go
generated
vendored
Normal file
4
vendor/github.com/brianvoe/gofakeit/v7/doc.go
generated
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*
|
||||
Package gofakeit provides a set of functions that generate random data
|
||||
*/
|
||||
package gofakeit
|
||||
149
vendor/github.com/brianvoe/gofakeit/v7/emoji.go
generated
vendored
Normal file
149
vendor/github.com/brianvoe/gofakeit/v7/emoji.go
generated
vendored
Normal file
@@ -0,0 +1,149 @@
|
||||
package gofakeit
|
||||
|
||||
// Emoji will return a random fun emoji
|
||||
func Emoji() string { return emoji(GlobalFaker) }
|
||||
|
||||
// Emoji will return a random fun emoji
|
||||
func (f *Faker) Emoji() string { return emoji(f) }
|
||||
|
||||
func emoji(f *Faker) string { return getRandValue(f, []string{"emoji", "emoji"}) }
|
||||
|
||||
// EmojiDescription will return a random fun emoji description
|
||||
func EmojiDescription() string { return emojiDescription(GlobalFaker) }
|
||||
|
||||
// EmojiDescription will return a random fun emoji description
|
||||
func (f *Faker) EmojiDescription() string { return emojiDescription(f) }
|
||||
|
||||
func emojiDescription(f *Faker) string { return getRandValue(f, []string{"emoji", "description"}) }
|
||||
|
||||
// EmojiCategory will return a random fun emoji category
|
||||
func EmojiCategory() string { return emojiCategory(GlobalFaker) }
|
||||
|
||||
// EmojiCategory will return a random fun emoji category
|
||||
func (f *Faker) EmojiCategory() string { return emojiCategory(f) }
|
||||
|
||||
func emojiCategory(f *Faker) string { return getRandValue(f, []string{"emoji", "category"}) }
|
||||
|
||||
// EmojiAlias will return a random fun emoji alias
|
||||
func EmojiAlias() string { return emojiAlias(GlobalFaker) }
|
||||
|
||||
// EmojiAlias will return a random fun emoji alias
|
||||
func (f *Faker) EmojiAlias() string { return emojiAlias(f) }
|
||||
|
||||
func emojiAlias(f *Faker) string { return getRandValue(f, []string{"emoji", "alias"}) }
|
||||
|
||||
// EmojiTag will return a random fun emoji tag
|
||||
func EmojiTag() string { return emojiTag(GlobalFaker) }
|
||||
|
||||
// EmojiTag will return a random fun emoji tag
|
||||
func (f *Faker) EmojiTag() string { return emojiTag(f) }
|
||||
|
||||
func emojiTag(f *Faker) string { return getRandValue(f, []string{"emoji", "tag"}) }
|
||||
|
||||
func addEmojiLookup() {
|
||||
AddFuncLookup("emoji", Info{
|
||||
Display: "Emoji",
|
||||
Category: "emoji",
|
||||
Description: "Digital symbol expressing feelings or ideas in text messages and online chats",
|
||||
Example: "🤣",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"emoticon symbol",
|
||||
"chat icon",
|
||||
"unicode pictograph",
|
||||
"emotional glyph",
|
||||
"digital expression",
|
||||
},
|
||||
Keywords: []string{
|
||||
"emoji", "symbol", "text", "message", "online", "chats", "ideas", "feelings", "digital", "reaction",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return emoji(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("emojidescription", Info{
|
||||
Display: "Emoji Description",
|
||||
Category: "emoji",
|
||||
Description: "Brief explanation of the meaning or emotion conveyed by an emoji",
|
||||
Example: "face vomiting",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"emoji meaning",
|
||||
"emoji definition",
|
||||
"emoji explanation",
|
||||
"emoji summary",
|
||||
"emoji interpretation",
|
||||
},
|
||||
Keywords: []string{
|
||||
"emoji", "brief", "explanation", "meaning", "emotion", "conveyed", "context", "description", "usage",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return emojiDescription(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("emojicategory", Info{
|
||||
Display: "Emoji Category",
|
||||
Category: "emoji",
|
||||
Description: "Group or classification of emojis based on their common theme or use, like 'smileys' or 'animals'",
|
||||
Example: "Smileys & Emotion",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"emoji group",
|
||||
"emoji theme",
|
||||
"emoji section",
|
||||
"emoji classification",
|
||||
"emoji grouping",
|
||||
},
|
||||
Keywords: []string{
|
||||
"emoji", "smileys", "emotion", "animals", "theme", "classification", "set", "category", "collection",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return emojiCategory(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("emojialias", Info{
|
||||
Display: "Emoji Alias",
|
||||
Category: "emoji",
|
||||
Description: "Alternative name or keyword used to represent a specific emoji in text or code",
|
||||
Example: "smile",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"emoji nickname",
|
||||
"emoji shorthand",
|
||||
"emoji label",
|
||||
"emoji alt text",
|
||||
"emoji identifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"emoji", "alias", "smile", "code", "specific", "represent", "alternative", "keyword", "mapping",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return emojiAlias(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("emojitag", Info{
|
||||
Display: "Emoji Tag",
|
||||
Category: "emoji",
|
||||
Description: "Label or keyword associated with an emoji to categorize or search for it easily",
|
||||
Example: "happy",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"emoji keyword",
|
||||
"emoji marker",
|
||||
"emoji label",
|
||||
"emoji hashtag",
|
||||
"emoji reference",
|
||||
},
|
||||
Keywords: []string{
|
||||
"emoji", "tag", "happy", "associated", "categorize", "search", "label", "index", "metadata",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return emojiTag(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
297
vendor/github.com/brianvoe/gofakeit/v7/error.go
generated
vendored
Normal file
297
vendor/github.com/brianvoe/gofakeit/v7/error.go
generated
vendored
Normal file
@@ -0,0 +1,297 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
// Error will return a random generic error
|
||||
func Error() error {
|
||||
return err(GlobalFaker)
|
||||
}
|
||||
|
||||
// Error will return a random generic error
|
||||
func (f *Faker) Error() error {
|
||||
return err(f)
|
||||
}
|
||||
|
||||
func err(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "generic"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorObject will return a random error object word
|
||||
func ErrorObject() error {
|
||||
return errorObject(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorObject will return a random error object word
|
||||
func (f *Faker) ErrorObject() error {
|
||||
return errorObject(f)
|
||||
}
|
||||
|
||||
func errorObject(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "object"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorDatabase will return a random database error
|
||||
func ErrorDatabase() error {
|
||||
return errorDatabase(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorDatabase will return a random database error
|
||||
func (f *Faker) ErrorDatabase() error {
|
||||
return errorDatabase(f)
|
||||
}
|
||||
|
||||
func errorDatabase(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "database"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorGRPC will return a random gRPC error
|
||||
func ErrorGRPC() error {
|
||||
return errorGRPC(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorGRPC will return a random gRPC error
|
||||
func (f *Faker) ErrorGRPC() error {
|
||||
return errorGRPC(f)
|
||||
}
|
||||
|
||||
func errorGRPC(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "grpc"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorHTTP will return a random HTTP error
|
||||
func ErrorHTTP() error {
|
||||
return errorHTTP(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorHTTP will return a random HTTP error
|
||||
func (f *Faker) ErrorHTTP() error {
|
||||
return errorHTTP(f)
|
||||
}
|
||||
|
||||
func errorHTTP(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "http"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorHTTPClient will return a random HTTP client error response (400-418)
|
||||
func ErrorHTTPClient() error {
|
||||
return errorHTTPClient(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorHTTPClient will return a random HTTP client error response (400-418)
|
||||
func (f *Faker) ErrorHTTPClient() error {
|
||||
return errorHTTPClient(f)
|
||||
}
|
||||
|
||||
func errorHTTPClient(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "http_client"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorHTTPServer will return a random HTTP server error response (500-511)
|
||||
func ErrorHTTPServer() error {
|
||||
return errorHTTPServer(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorHTTPServer will return a random HTTP server error response (500-511)
|
||||
func (f *Faker) ErrorHTTPServer() error {
|
||||
return errorHTTPServer(f)
|
||||
}
|
||||
|
||||
func errorHTTPServer(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "http_server"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorRuntime will return a random runtime error
|
||||
func ErrorRuntime() error {
|
||||
return errorRuntime(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorRuntime will return a random runtime error
|
||||
func (f *Faker) ErrorRuntime() error {
|
||||
return errorRuntime(f)
|
||||
}
|
||||
|
||||
func errorRuntime(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "runtime"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
// ErrorValidation will return a random validation error
|
||||
func ErrorValidation() error {
|
||||
return errorValidation(GlobalFaker)
|
||||
}
|
||||
|
||||
// ErrorValidation will return a random validation error
|
||||
func (f *Faker) ErrorValidation() error {
|
||||
return errorValidation(f)
|
||||
}
|
||||
|
||||
func errorValidation(f *Faker) error {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"error", "validation"}))
|
||||
return errors.New(genStr)
|
||||
}
|
||||
|
||||
func addErrorLookup() {
|
||||
AddFuncLookup("error", Info{
|
||||
Display: "Error",
|
||||
Category: "error",
|
||||
Description: "Message displayed by a computer or software when a problem or mistake is encountered",
|
||||
Example: "syntax error",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"fault", "problem", "issue", "bug", "failure",
|
||||
},
|
||||
Keywords: []string{
|
||||
"software", "computer", "crash", "exception", "warning", "alert", "diagnostic", "system", "message", "malfunction",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return err(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorobject", Info{
|
||||
Display: "Error Object",
|
||||
Category: "error",
|
||||
Description: "Various categories conveying details about encountered errors",
|
||||
Example: "protocol",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"category", "classification", "entity", "type", "object detail",
|
||||
},
|
||||
Keywords: []string{
|
||||
"protocol", "context", "identifier", "descriptor", "domain", "nature", "tag", "origin",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorObject(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errordatabase", Info{
|
||||
Display: "Database Error",
|
||||
Category: "error",
|
||||
Description: "A problem or issue encountered while accessing or managing a database",
|
||||
Example: "sql error",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"db error", "query issue", "storage failure", "sql fault", "data access problem",
|
||||
},
|
||||
Keywords: []string{
|
||||
"connection", "query", "timeout", "transaction", "integrity", "constraint", "lock", "schema", "management", "corruption",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorDatabase(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorgrpc", Info{
|
||||
Display: "gRPC Error",
|
||||
Category: "error",
|
||||
Description: "Communication failure in the high-performance, open-source universal RPC framework",
|
||||
Example: "client protocol error",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"grpc failure", "rpc error", "rpc failure", "communication fault", "transport issue",
|
||||
},
|
||||
Keywords: []string{
|
||||
"protocol", "transport", "client", "server", "connection", "status", "unavailable", "timeout", "stream", "call",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorGRPC(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorhttp", Info{
|
||||
Display: "HTTP Error",
|
||||
Category: "error",
|
||||
Description: "A problem with a web HTTP request",
|
||||
Example: "invalid method",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"http failure", "network error", "web problem", "request fault", "protocol issue",
|
||||
},
|
||||
Keywords: []string{
|
||||
"invalid", "method", "status", "response", "request", "header", "url", "timeout", "redirect", "forbidden",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorHTTP(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorhttpclient", Info{
|
||||
Display: "HTTP Client Error",
|
||||
Category: "error",
|
||||
Description: "Failure or issue occurring within a client software that sends requests to web servers",
|
||||
Example: "request timeout",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"client failure", "browser error", "request timeout", "frontend fault", "http client issue",
|
||||
},
|
||||
Keywords: []string{
|
||||
"timeout", "request", "forbidden", "unauthorized",
|
||||
"network", "connectivity", "invalid", "failure", "rejected",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorHTTPClient(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorhttpserver", Info{
|
||||
Display: "HTTP Server Error",
|
||||
Category: "error",
|
||||
Description: "Failure or issue occurring within a server software that receives requests from clients",
|
||||
Example: "internal server error",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"server fault", "backend error", "host issue", "service failure", "internal error",
|
||||
},
|
||||
Keywords: []string{
|
||||
"unavailable", "overload", "gateway", "crash", "timeout", "backend", "processing", "failure", "503", "unexpected",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorHTTPServer(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorruntime", Info{
|
||||
Display: "Runtime Error",
|
||||
Category: "error",
|
||||
Description: "Malfunction occurring during program execution, often causing abrupt termination or unexpected behavior",
|
||||
Example: "address out of bounds",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"execution error", "program crash", "runtime failure", "unexpected fault", "software halt",
|
||||
},
|
||||
Keywords: []string{
|
||||
"execution", "segmentation", "overflow", "invalid", "null", "panic", "crash", "termination", "exception", "bug",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorRuntime(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("errorvalidation", Info{
|
||||
Display: "Validation Error",
|
||||
Category: "error",
|
||||
Description: "Occurs when input data fails to meet required criteria or format specifications",
|
||||
Example: "missing required field",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"invalid input", "format error", "data check failure", "input rejection", "criteria mismatch",
|
||||
},
|
||||
Keywords: []string{
|
||||
"missing", "required", "field", "constraint", "format", "rule", "criteria", "restriction", "validation", "check",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return errorValidation(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
84
vendor/github.com/brianvoe/gofakeit/v7/fakeable.go
generated
vendored
Normal file
84
vendor/github.com/brianvoe/gofakeit/v7/fakeable.go
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// Fakeable is an interface that can be implemented by a type to provide a custom fake value.
|
||||
type Fakeable interface {
|
||||
// Fake returns a fake value for the type.
|
||||
Fake(faker *Faker) (any, error)
|
||||
}
|
||||
|
||||
func isFakeable(t reflect.Type) bool {
|
||||
fakeableTyp := reflect.TypeOf((*Fakeable)(nil)).Elem()
|
||||
|
||||
return t.Implements(fakeableTyp) || reflect.PointerTo(t).Implements(fakeableTyp)
|
||||
}
|
||||
|
||||
func callFake(faker *Faker, v reflect.Value, possibleKinds ...reflect.Kind) (any, error) {
|
||||
f, ok := v.Addr().Interface().(Fakeable)
|
||||
if !ok {
|
||||
return nil, errors.New("not a Fakeable type")
|
||||
}
|
||||
|
||||
fakedValue, err := f.Fake(faker)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error calling Fake: %w", err)
|
||||
}
|
||||
k := reflect.TypeOf(fakedValue).Kind()
|
||||
if !containsKind(possibleKinds, k) {
|
||||
return nil, fmt.Errorf("returned value kind %q is not amongst the valid ones: %v", k, possibleKinds)
|
||||
}
|
||||
|
||||
switch k {
|
||||
case reflect.String:
|
||||
return reflect.ValueOf(fakedValue).String(), nil
|
||||
case reflect.Bool:
|
||||
return reflect.ValueOf(fakedValue).Bool(), nil
|
||||
case reflect.Int:
|
||||
return int(reflect.ValueOf(fakedValue).Int()), nil
|
||||
case reflect.Int8:
|
||||
return int8(reflect.ValueOf(fakedValue).Int()), nil
|
||||
case reflect.Int16:
|
||||
return int16(reflect.ValueOf(fakedValue).Int()), nil
|
||||
case reflect.Int32:
|
||||
return int32(reflect.ValueOf(fakedValue).Int()), nil
|
||||
case reflect.Int64:
|
||||
return int64(reflect.ValueOf(fakedValue).Int()), nil
|
||||
case reflect.Uint:
|
||||
return uint(reflect.ValueOf(fakedValue).Uint()), nil
|
||||
case reflect.Uint8:
|
||||
return uint8(reflect.ValueOf(fakedValue).Uint()), nil
|
||||
case reflect.Uint16:
|
||||
return uint16(reflect.ValueOf(fakedValue).Uint()), nil
|
||||
case reflect.Uint32:
|
||||
return uint32(reflect.ValueOf(fakedValue).Uint()), nil
|
||||
case reflect.Uint64:
|
||||
return uint64(reflect.ValueOf(fakedValue).Uint()), nil
|
||||
case reflect.Float32:
|
||||
return float32(reflect.ValueOf(fakedValue).Float()), nil
|
||||
case reflect.Float64:
|
||||
return float64(reflect.ValueOf(fakedValue).Float()), nil
|
||||
case reflect.Slice, reflect.Array:
|
||||
return reflect.ValueOf(fakedValue).Interface(), nil
|
||||
case reflect.Map:
|
||||
return reflect.ValueOf(fakedValue).Interface(), nil
|
||||
case reflect.Struct:
|
||||
return reflect.ValueOf(fakedValue).Interface(), nil
|
||||
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported type %q", k)
|
||||
}
|
||||
}
|
||||
|
||||
func containsKind(possibleKinds []reflect.Kind, kind reflect.Kind) bool {
|
||||
for _, k := range possibleKinds {
|
||||
if k == kind {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
112
vendor/github.com/brianvoe/gofakeit/v7/faker.go
generated
vendored
Normal file
112
vendor/github.com/brianvoe/gofakeit/v7/faker.go
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"math/rand/v2"
|
||||
"reflect"
|
||||
"sync"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/source"
|
||||
)
|
||||
|
||||
// Create global variable to deal with global function call
|
||||
var GlobalFaker *Faker = New(0)
|
||||
|
||||
// Faker struct is the primary struct for using localized
|
||||
type Faker struct {
|
||||
Rand rand.Source
|
||||
|
||||
// Lock to make thread safe
|
||||
Locked bool
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
// New creates and returns a new Faker struct seeded with a given seed
|
||||
// using the PCG algorithm in lock mode for thread safety
|
||||
func New(seed uint64) *Faker {
|
||||
// If seed is 0, use a random crypto seed
|
||||
if seed == 0 {
|
||||
faker := NewFaker(source.NewCrypto(), false)
|
||||
seed = faker.Uint64()
|
||||
}
|
||||
|
||||
return &Faker{
|
||||
Rand: rand.NewPCG(seed, seed),
|
||||
Locked: true,
|
||||
}
|
||||
}
|
||||
|
||||
// NewFaker takes in a rand.Source and thread lock state and returns a new Faker struct
|
||||
func NewFaker(src rand.Source, lock bool) *Faker {
|
||||
return &Faker{
|
||||
Rand: src,
|
||||
Locked: lock,
|
||||
}
|
||||
}
|
||||
|
||||
// Seed attempts to seed the Faker with the given seed
|
||||
func (f *Faker) Seed(args ...any) error {
|
||||
// Lock if locked
|
||||
if f.Locked {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
}
|
||||
|
||||
// Ensure GlobalFaker is not nil and Rand is initialized
|
||||
if GlobalFaker == nil || GlobalFaker.Rand == nil {
|
||||
return errors.New("GlobalFaker or GlobalFaker.Rand is nil")
|
||||
}
|
||||
|
||||
// If args is empty or 0, seed with a random crypto seed
|
||||
if len(args) == 0 {
|
||||
faker := NewFaker(source.NewCrypto(), false)
|
||||
args = append(args, faker.Uint64())
|
||||
}
|
||||
|
||||
if args[0] == 0 {
|
||||
faker := NewFaker(source.NewCrypto(), false)
|
||||
args[0] = faker.Uint64()
|
||||
}
|
||||
|
||||
// Retrieve the Seed method
|
||||
method := reflect.ValueOf(GlobalFaker.Rand).MethodByName("Seed")
|
||||
if !method.IsValid() {
|
||||
return errors.New("Seed method not found")
|
||||
}
|
||||
|
||||
// Adjust args if method requires exactly 2 args but only 1 was provided
|
||||
if method.Type().NumIn() == 2 && len(args) == 1 {
|
||||
args = append(args, args[0]) // Duplicate the first value if only one is provided
|
||||
}
|
||||
|
||||
// Get array of function argument types and prepare converted arguments
|
||||
argTypes := make([]reflect.Type, method.Type().NumIn())
|
||||
convertedArgs := make([]reflect.Value, len(args))
|
||||
for i := 0; i < method.Type().NumIn(); i++ {
|
||||
argTypes[i] = method.Type().In(i)
|
||||
}
|
||||
|
||||
// Convert args to the expected type by the Seed method
|
||||
for i, arg := range args {
|
||||
if i < len(argTypes) { // Ensure arg index is within argTypes bounds
|
||||
argValue := reflect.ValueOf(arg)
|
||||
// Check if conversion is necessary
|
||||
if argValue.Type().ConvertibleTo(argTypes[i]) {
|
||||
convertedArgs[i] = argValue.Convert(argTypes[i])
|
||||
} else {
|
||||
// If not convertible, use the argument as is (reflectively)
|
||||
convertedArgs[i] = argValue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Dynamically call the Seed method with converted arguments
|
||||
method.Call(convertedArgs)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Seed attempts to seed the GlobalFaker with the given seed
|
||||
func Seed(args ...any) error {
|
||||
return GlobalFaker.Seed(args...)
|
||||
}
|
||||
53
vendor/github.com/brianvoe/gofakeit/v7/file.go
generated
vendored
Normal file
53
vendor/github.com/brianvoe/gofakeit/v7/file.go
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
package gofakeit
|
||||
|
||||
// FileExtension will generate a random file extension
|
||||
func FileExtension() string { return fileExtension(GlobalFaker) }
|
||||
|
||||
// FileExtension will generate a random file extension
|
||||
func (f *Faker) FileExtension() string { return fileExtension(f) }
|
||||
|
||||
func fileExtension(f *Faker) string { return getRandValue(f, []string{"file", "extension"}) }
|
||||
|
||||
// FileMimeType will generate a random mime file type
|
||||
func FileMimeType() string { return fileMimeType(GlobalFaker) }
|
||||
|
||||
// FileMimeType will generate a random mime file type
|
||||
func (f *Faker) FileMimeType() string { return fileMimeType(f) }
|
||||
|
||||
func fileMimeType(f *Faker) string { return getRandValue(f, []string{"file", "mime_type"}) }
|
||||
|
||||
func addFileLookup() {
|
||||
AddFuncLookup("fileextension", Info{
|
||||
Display: "File Extension",
|
||||
Category: "file",
|
||||
Description: "Suffix appended to a filename indicating its format or type",
|
||||
Example: "nes",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"extension", "file suffix", "filename ending", "type indicator", "file ending", "format suffix",
|
||||
},
|
||||
Keywords: []string{
|
||||
"file", "appended", "indicating", "format", "type", "filename", "suffix", "descriptor", "notation", "identifier",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return fileExtension(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("filemimetype", Info{
|
||||
Display: "File Mime Type",
|
||||
Category: "file",
|
||||
Description: "Defines file format and nature for browsers and email clients using standardized identifiers",
|
||||
Example: "application/json",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"mime type", "content type", "internet media type", "media format", "standard identifier", "file format",
|
||||
},
|
||||
Keywords: []string{
|
||||
"file", "defines", "nature", "clients", "identifiers", "application", "json", "browser", "email", "protocol",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return fileMimeType(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
131
vendor/github.com/brianvoe/gofakeit/v7/finance.go
generated
vendored
Normal file
131
vendor/github.com/brianvoe/gofakeit/v7/finance.go
generated
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
const cusipStr = upperStr + numericStr
|
||||
|
||||
// CUSIP
|
||||
func Cusip() string {
|
||||
return cusip(GlobalFaker)
|
||||
}
|
||||
|
||||
func (f *Faker) Cusip() string {
|
||||
return cusip(f)
|
||||
}
|
||||
|
||||
func cusip(f *Faker) string {
|
||||
cusipBytes := make([]byte, 8)
|
||||
for i := 0; i < len(cusipBytes); i++ {
|
||||
cusipBytes[i] = byte(cusipStr[f.IntN(len(cusipStr))])
|
||||
}
|
||||
|
||||
baseCusip := string(cusipBytes)
|
||||
|
||||
chkDigit := cusipChecksumDigit(baseCusip)
|
||||
return baseCusip + chkDigit
|
||||
}
|
||||
|
||||
// ISIN
|
||||
func Isin() string {
|
||||
return isin(GlobalFaker)
|
||||
}
|
||||
|
||||
func (f *Faker) Isin() string {
|
||||
return isin(f)
|
||||
}
|
||||
|
||||
func isin(f *Faker) string {
|
||||
countryCode := countryAbr(f)
|
||||
nsin := cusip(f)
|
||||
isinChkDig := isinChecksumDigit(countryCode + nsin)
|
||||
return countryCode + nsin + isinChkDig
|
||||
}
|
||||
|
||||
// cusipChecksumDigit returns the checksum digit for a CUSIP
|
||||
func cusipChecksumDigit(cusip string) string {
|
||||
sum := 0
|
||||
for i, c := range cusip {
|
||||
v := 0
|
||||
if unicode.IsDigit(c) {
|
||||
v = int(c - '0')
|
||||
}
|
||||
if unicode.IsLetter(c) {
|
||||
//0-indexed ordinal position of Letter + 10
|
||||
v = int(c-'A') + 10
|
||||
}
|
||||
if i%2 != 0 {
|
||||
// Multiply odd digits by two
|
||||
v = v * 2
|
||||
}
|
||||
|
||||
sum = sum + int(v/10) + v%10
|
||||
}
|
||||
|
||||
return strconv.Itoa((10 - (sum % 10)) % 10)
|
||||
}
|
||||
|
||||
// isinChecksumDigit returns the checksum digit for an ISIN
|
||||
func isinChecksumDigit(isin string) string {
|
||||
isinDigits := make([]int, 0)
|
||||
for _, c := range isin {
|
||||
if unicode.IsLetter(c) {
|
||||
letterVal := int(c) - 55
|
||||
// Each digit is added as a separate value
|
||||
isinDigits = append(isinDigits, letterVal/10)
|
||||
isinDigits = append(isinDigits, letterVal%10)
|
||||
}
|
||||
if unicode.IsDigit(c) {
|
||||
isinDigits = append(isinDigits, int(c-'0'))
|
||||
}
|
||||
}
|
||||
|
||||
oddSum := 0
|
||||
evenSum := 0
|
||||
|
||||
// Take the per digit sum of the digitized ISIN, doubling even indexed digits
|
||||
for i, d := range isinDigits {
|
||||
if i%2 == 0 {
|
||||
elem := 2 * d
|
||||
if elem > 9 {
|
||||
// If the element now has two digits, sum those digits
|
||||
elem = (elem % 10) + (elem / 10)
|
||||
}
|
||||
evenSum += elem
|
||||
} else {
|
||||
oddSum += d
|
||||
}
|
||||
}
|
||||
|
||||
return strconv.Itoa((10 - (oddSum+evenSum)%10) % 10)
|
||||
}
|
||||
|
||||
// Lookup Adds
|
||||
func addFinanceLookup() {
|
||||
AddFuncLookup("cusip", Info{
|
||||
Display: "CUSIP",
|
||||
Category: "finance",
|
||||
Description: "Unique identifier for securities, especially bonds, in the United States and Canada",
|
||||
Example: "38259P508",
|
||||
Output: "string",
|
||||
Aliases: []string{"identifier", "bond", "security", "us", "canada", "unique"},
|
||||
Keywords: []string{"finance", "investment", "trading", "securities", "38259p508", "checksum", "validation", "market"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return cusip(f), nil
|
||||
},
|
||||
})
|
||||
AddFuncLookup("isin", Info{
|
||||
Display: "ISIN",
|
||||
Category: "finance",
|
||||
Description: "International standard code for uniquely identifying securities worldwide",
|
||||
Example: "CVLRQCZBXQ97",
|
||||
Output: "string",
|
||||
Aliases: []string{"international", "securities", "identifier", "stock", "bond", "security"},
|
||||
Keywords: []string{"finance", "investment", "trading", "cvlrqczbxq97", "worldwide", "standard", "code", "global"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return isin(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
274
vendor/github.com/brianvoe/gofakeit/v7/food.go
generated
vendored
Normal file
274
vendor/github.com/brianvoe/gofakeit/v7/food.go
generated
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Fruit will return a random fruit name
|
||||
func Fruit() string { return fruit(GlobalFaker) }
|
||||
|
||||
// Fruit will return a random fruit name
|
||||
func (f *Faker) Fruit() string { return fruit(f) }
|
||||
|
||||
func fruit(f *Faker) string { return getRandValue(f, []string{"food", "fruit"}) }
|
||||
|
||||
// Vegetable will return a random vegetable name
|
||||
func Vegetable() string { return vegetable(GlobalFaker) }
|
||||
|
||||
// Vegetable will return a random vegetable name
|
||||
func (f *Faker) Vegetable() string { return vegetable(f) }
|
||||
|
||||
func vegetable(f *Faker) string { return getRandValue(f, []string{"food", "vegetable"}) }
|
||||
|
||||
// Breakfast will return a random breakfast name
|
||||
func Breakfast() string { return breakfast(GlobalFaker) }
|
||||
|
||||
// Breakfast will return a random breakfast name
|
||||
func (f *Faker) Breakfast() string { return breakfast(f) }
|
||||
|
||||
func breakfast(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "breakfast"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
// Lunch will return a random lunch name
|
||||
func Lunch() string { return lunch(GlobalFaker) }
|
||||
|
||||
// Lunch will return a random lunch name
|
||||
func (f *Faker) Lunch() string { return lunch(f) }
|
||||
|
||||
func lunch(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "lunch"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
// Dinner will return a random dinner name
|
||||
func Dinner() string { return dinner(GlobalFaker) }
|
||||
|
||||
// Dinner will return a random dinner name
|
||||
func (f *Faker) Dinner() string { return dinner(f) }
|
||||
|
||||
func dinner(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "dinner"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
// Drink will return a random drink name
|
||||
func Drink() string { return drink(GlobalFaker) }
|
||||
|
||||
// Drink will return a random drink name
|
||||
func (f *Faker) Drink() string { return drink(f) }
|
||||
|
||||
func drink(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "drink"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
// Snack will return a random snack name
|
||||
func Snack() string { return snack(GlobalFaker) }
|
||||
|
||||
// Snack will return a random snack name
|
||||
func (f *Faker) Snack() string { return snack(f) }
|
||||
|
||||
func snack(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "snack"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
// Dessert will return a random dessert name
|
||||
func Dessert() string { return dessert(GlobalFaker) }
|
||||
|
||||
// Dessert will return a random dessert name
|
||||
func (f *Faker) Dessert() string { return dessert(f) }
|
||||
|
||||
func dessert(f *Faker) string {
|
||||
v := getRandValue(f, []string{"food", "dessert"})
|
||||
return strings.ToUpper(v[:1]) + v[1:]
|
||||
}
|
||||
|
||||
func addFoodLookup() {
|
||||
AddFuncLookup("fruit", Info{
|
||||
Display: "Fruit",
|
||||
Category: "food",
|
||||
Description: "Edible plant part, typically sweet, enjoyed as a natural snack or dessert",
|
||||
Example: "Peach",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"fruit item",
|
||||
"natural snack",
|
||||
"sweet produce",
|
||||
"edible plant food",
|
||||
"dessert fruit",
|
||||
},
|
||||
Keywords: []string{
|
||||
"fruit", "edible", "plant", "peach",
|
||||
"snack", "dessert", "sweet", "natural",
|
||||
"produce", "fresh",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return fruit(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("vegetable", Info{
|
||||
Display: "Vegetable",
|
||||
Category: "food",
|
||||
Description: "Edible plant or part of a plant, often used in savory cooking or salads",
|
||||
Example: "Amaranth Leaves",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"veggie",
|
||||
"plant food",
|
||||
"green produce",
|
||||
"savory food",
|
||||
"leafy edible",
|
||||
},
|
||||
Keywords: []string{
|
||||
"vegetable", "greens", "produce", "amaranth",
|
||||
"leaves", "cooking", "salads", "plant",
|
||||
"edible", "savory",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return vegetable(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("breakfast", Info{
|
||||
Display: "Breakfast",
|
||||
Category: "food",
|
||||
Description: "First meal of the day, typically eaten in the morning",
|
||||
Example: "Blueberry banana happy face pancakes",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"morning meal",
|
||||
"first meal",
|
||||
"day starter",
|
||||
"early food",
|
||||
"sunrise meal",
|
||||
},
|
||||
Keywords: []string{
|
||||
"breakfast", "morning", "meal", "start",
|
||||
"pancakes", "blueberry", "banana", "food",
|
||||
"first", "early",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return breakfast(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("lunch", Info{
|
||||
Display: "Lunch",
|
||||
Category: "food",
|
||||
Description: "Midday meal, often lighter than dinner, eaten around noon",
|
||||
Example: "No bake hersheys bar pie",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"midday meal",
|
||||
"noon food",
|
||||
"afternoon meal",
|
||||
"light meal",
|
||||
"daytime meal",
|
||||
},
|
||||
Keywords: []string{
|
||||
"lunch", "meal", "midday", "noon",
|
||||
"lighter", "food", "pie", "bar",
|
||||
"afternoon",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return lunch(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("dinner", Info{
|
||||
Display: "Dinner",
|
||||
Category: "food",
|
||||
Description: "Evening meal, typically the day's main and most substantial meal",
|
||||
Example: "Wild addicting dip",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"evening meal",
|
||||
"main meal",
|
||||
"days supper",
|
||||
"night food",
|
||||
"hearty meal",
|
||||
},
|
||||
Keywords: []string{
|
||||
"dinner", "supper", "evening", "meal",
|
||||
"main", "substantial", "night", "food",
|
||||
"heavy", "course",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return dinner(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("drink", Info{
|
||||
Display: "Drink",
|
||||
Category: "food",
|
||||
Description: "Liquid consumed for hydration, pleasure, or nutritional benefits",
|
||||
Example: "Soda",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"beverage",
|
||||
"refreshment",
|
||||
"hydration",
|
||||
"liquid food",
|
||||
"consumable fluid",
|
||||
},
|
||||
Keywords: []string{
|
||||
"drink", "soda", "liquid",
|
||||
"pleasure", "nutrition", "fluid", "quencher",
|
||||
"consumed",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return drink(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("snack", Info{
|
||||
Display: "Snack",
|
||||
Category: "food",
|
||||
Description: "Small, quick food item eaten between meals",
|
||||
Example: "Trail mix",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"light bite",
|
||||
"quick food",
|
||||
"mini meal",
|
||||
"finger food",
|
||||
"nibble",
|
||||
},
|
||||
Keywords: []string{
|
||||
"snack", "between", "meals", "quick",
|
||||
"small", "food", "item", "random",
|
||||
"bite", "treat",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return snack(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("dessert", Info{
|
||||
Display: "Dessert",
|
||||
Category: "food",
|
||||
Description: "Sweet treat often enjoyed after a meal",
|
||||
Example: "French napoleons",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"after meal sweet",
|
||||
"pastry treat",
|
||||
"confection",
|
||||
"final course",
|
||||
"delicacy",
|
||||
},
|
||||
Keywords: []string{
|
||||
"dessert", "sweet", "treat", "meal",
|
||||
"after", "pastry", "cake", "enjoyed",
|
||||
"final", "sugar",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return dessert(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
126
vendor/github.com/brianvoe/gofakeit/v7/game.go
generated
vendored
Normal file
126
vendor/github.com/brianvoe/gofakeit/v7/game.go
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Gamertag will generate a random video game username
|
||||
func Gamertag() string { return gamertag(GlobalFaker) }
|
||||
|
||||
// Gamertag will generate a random video game username
|
||||
func (f *Faker) Gamertag() string { return gamertag(f) }
|
||||
|
||||
func gamertag(f *Faker) string {
|
||||
str := ""
|
||||
num := number(f, 1, 4)
|
||||
switch num {
|
||||
case 1:
|
||||
str = fmt.Sprintf("%s%ser", title(nounConcrete(f)), title(verbAction(f)))
|
||||
case 2:
|
||||
str = fmt.Sprintf("%s%s", title(adjectiveDescriptive(f)), title(animal(f)))
|
||||
case 3:
|
||||
str = fmt.Sprintf("%s%s", title(adjectiveDescriptive(f)), title(nounConcrete(f)))
|
||||
case 4:
|
||||
str = fmt.Sprintf("%s%s", title(fruit(f)), title(adjectiveDescriptive(f)))
|
||||
}
|
||||
|
||||
// Randomly determine if we should add a number
|
||||
if f.IntN(3) == 1 {
|
||||
str += digitN(f, uint(number(f, 1, 3)))
|
||||
}
|
||||
|
||||
// Remove any spaces
|
||||
str = strings.Replace(str, " ", "", -1)
|
||||
|
||||
return str
|
||||
}
|
||||
|
||||
// Dice will generate a random set of dice
|
||||
func Dice(numDice uint, sides []uint) []uint { return dice(GlobalFaker, numDice, sides) }
|
||||
|
||||
// Dice will generate a random set of dice
|
||||
func (f *Faker) Dice(numDice uint, sides []uint) []uint { return dice(f, numDice, sides) }
|
||||
|
||||
func dice(f *Faker, numDice uint, sides []uint) []uint {
|
||||
dice := make([]uint, numDice)
|
||||
|
||||
// If we dont have any sides well set the sides to 6
|
||||
if len(sides) == 0 {
|
||||
sides = []uint{6}
|
||||
}
|
||||
|
||||
for i := range dice {
|
||||
// If sides[i] doesnt exist use the first side
|
||||
if len(sides)-1 < i {
|
||||
dice[i] = uint(number(f, 1, int(sides[0])))
|
||||
} else {
|
||||
dice[i] = uint(number(f, 1, int(sides[i])))
|
||||
}
|
||||
}
|
||||
|
||||
return dice
|
||||
}
|
||||
|
||||
func addGameLookup() {
|
||||
AddFuncLookup("gamertag", Info{
|
||||
Display: "Gamertag",
|
||||
Category: "game",
|
||||
Description: "User-selected online username or alias used for identification in games",
|
||||
Example: "footinterpret63",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"player handle",
|
||||
"gaming nickname",
|
||||
"online tag",
|
||||
"user alias",
|
||||
"profile name",
|
||||
},
|
||||
Keywords: []string{
|
||||
"gamertag", "user-selected", "username",
|
||||
"alias", "identification", "online", "gaming",
|
||||
"video", "games", "player",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return gamertag(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("dice", Info{
|
||||
Display: "Dice",
|
||||
Category: "game",
|
||||
Description: "Small, cube-shaped objects used in games of chance for random outcomes",
|
||||
Example: "[5, 2, 3]",
|
||||
Output: "[]uint",
|
||||
Aliases: []string{
|
||||
"rolling cubes",
|
||||
"chance cubes",
|
||||
"game dice",
|
||||
"random rollers",
|
||||
"luck blocks",
|
||||
},
|
||||
Keywords: []string{
|
||||
"dice", "games", "cube-shaped", "chance",
|
||||
"random", "outcomes", "roll", "sides",
|
||||
"objects", "probability",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "numdice", Display: "Number of Dice", Type: "uint", Default: "1", Description: "Number of dice to roll"},
|
||||
{Field: "sides", Display: "Number of Sides", Type: "[]uint", Default: "[6]", Description: "Number of sides on each dice"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
numDice, err := info.GetUint(m, "numdice")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sides, err := info.GetUintArray(m, "sides")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return dice(f, numDice, sides), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
645
vendor/github.com/brianvoe/gofakeit/v7/generate.go
generated
vendored
Normal file
645
vendor/github.com/brianvoe/gofakeit/v7/generate.go
generated
vendored
Normal file
@@ -0,0 +1,645 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"regexp/syntax"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Generate fake information from given string.
|
||||
// Replaceable values should be within {}
|
||||
//
|
||||
// Functions
|
||||
// Ex: {firstname} - billy
|
||||
// Ex: {sentence:3} - Record river mind.
|
||||
// Ex: {number:1,10} - 4
|
||||
// Ex: {uuid} - 590c1440-9888-45b0-bd51-a817ee07c3f2
|
||||
//
|
||||
// Letters/Numbers
|
||||
// Ex: ### - 481 - random numbers
|
||||
// Ex: ??? - fda - random letters
|
||||
//
|
||||
// For a complete list of runnable functions use FuncsLookup
|
||||
func Generate(dataVal string) (string, error) { return generate(GlobalFaker, dataVal) }
|
||||
|
||||
// Generate fake information from given string.
|
||||
// Replaceable values should be within {}
|
||||
//
|
||||
// Functions
|
||||
// Ex: {firstname} - billy
|
||||
// Ex: {sentence:3} - Record river mind.
|
||||
// Ex: {number:1,10} - 4
|
||||
// Ex: {uuid} - 590c1440-9888-45b0-bd51-a817ee07c3f2
|
||||
//
|
||||
// Letters/Numbers
|
||||
// Ex: ### - 481 - random numbers
|
||||
// Ex: ??? - fda - random letters
|
||||
//
|
||||
// For a complete list of runnable functions use FuncsLookup
|
||||
func (f *Faker) Generate(dataVal string) (string, error) { return generate(f, dataVal) }
|
||||
|
||||
func generate(f *Faker, dataVal string) (string, error) {
|
||||
// Replace # with numbers and ? with letters
|
||||
dataVal = replaceWithNumbers(f, dataVal)
|
||||
dataVal = replaceWithLetters(f, dataVal)
|
||||
|
||||
// Check if string has any replaceable values
|
||||
// Even if it doesnt its ok we will just return the string
|
||||
if !strings.Contains(dataVal, "{") && !strings.Contains(dataVal, "}") {
|
||||
return dataVal, nil
|
||||
}
|
||||
|
||||
// Variables to identify the index in which it exists
|
||||
startCurly := -1
|
||||
startCurlyIgnore := []int{}
|
||||
endCurly := -1
|
||||
endCurlyIgnore := []int{}
|
||||
|
||||
// Loop through string characters
|
||||
for i := 0; i < len(dataVal); i++ {
|
||||
// Check for ignores if equal skip
|
||||
shouldSkip := false
|
||||
for _, igs := range startCurlyIgnore {
|
||||
if i == igs {
|
||||
shouldSkip = true
|
||||
}
|
||||
}
|
||||
for _, ige := range endCurlyIgnore {
|
||||
if i == ige {
|
||||
shouldSkip = true
|
||||
}
|
||||
}
|
||||
if shouldSkip {
|
||||
continue
|
||||
}
|
||||
|
||||
// Identify items between brackets. Ex: {firstname}
|
||||
if string(dataVal[i]) == "{" {
|
||||
startCurly = i
|
||||
continue
|
||||
}
|
||||
if startCurly != -1 && string(dataVal[i]) == "}" {
|
||||
endCurly = i
|
||||
}
|
||||
if startCurly == -1 || endCurly == -1 {
|
||||
continue
|
||||
}
|
||||
|
||||
// Get the value between brackets
|
||||
fParts := dataVal[startCurly+1 : endCurly]
|
||||
|
||||
// Check if has params separated by :
|
||||
fNameSplit := strings.SplitN(fParts, ":", 2)
|
||||
fName := ""
|
||||
fParams := ""
|
||||
if len(fNameSplit) >= 1 {
|
||||
fName = fNameSplit[0]
|
||||
}
|
||||
if len(fNameSplit) >= 2 {
|
||||
fParams = fNameSplit[1]
|
||||
}
|
||||
|
||||
// Check to see if its a replaceable lookup function
|
||||
if info := GetFuncLookup(fName); info != nil {
|
||||
// Get parameters, make sure params and the split both have values
|
||||
mapParams := NewMapParams()
|
||||
paramsLen := len(info.Params)
|
||||
|
||||
// If just one param and its a string simply just pass it
|
||||
if paramsLen == 1 && info.Params[0].Type == "string" {
|
||||
mapParams.Add(info.Params[0].Field, fParams)
|
||||
} else if paramsLen > 0 && fParams != "" {
|
||||
var err error
|
||||
splitVals, err := funcLookupSplit(fParams)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
mapParams, err = addSplitValsToMapParams(splitVals, info, mapParams)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
if mapParams.Size() == 0 {
|
||||
mapParams = nil
|
||||
}
|
||||
|
||||
// Call function
|
||||
fValue, err := info.Generate(f, mapParams, info)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Successfully found, run replace with new value
|
||||
dataVal = strings.Replace(dataVal, "{"+fParts+"}", fmt.Sprintf("%v", fValue), 1)
|
||||
|
||||
// Reset the curly index back to -1 and reset ignores
|
||||
startCurly = -1
|
||||
startCurlyIgnore = []int{}
|
||||
endCurly = -1
|
||||
endCurlyIgnore = []int{}
|
||||
i = -1 // Reset back to the start of the string
|
||||
continue
|
||||
}
|
||||
|
||||
// Couldnt find anything - mark curly brackets to skip and rerun
|
||||
startCurlyIgnore = append(startCurlyIgnore, startCurly)
|
||||
endCurlyIgnore = append(endCurlyIgnore, endCurly)
|
||||
|
||||
// Reset the curly index back to -1
|
||||
startCurly = -1
|
||||
endCurly = -1
|
||||
i = -1 // Reset back to the start of the string
|
||||
continue
|
||||
}
|
||||
|
||||
return dataVal, nil
|
||||
}
|
||||
|
||||
// FixedWidthOptions defines values needed for csv generation
|
||||
type FixedWidthOptions struct {
|
||||
RowCount int `json:"row_count" xml:"row_count" fake:"{number:1,10}"`
|
||||
Fields []Field `json:"fields" xml:"fields" fake:"{fields}"`
|
||||
}
|
||||
|
||||
// FixedWidth generates an table of random data in fixed width format
|
||||
// A nil FixedWidthOptions returns a randomly structured FixedWidth.
|
||||
func FixedWidth(co *FixedWidthOptions) (string, error) { return fixeWidthFunc(GlobalFaker, co) }
|
||||
|
||||
// FixedWidth generates an table of random data in fixed width format
|
||||
// A nil FixedWidthOptions returns a randomly structured FixedWidth.
|
||||
func (f *Faker) FixedWidth(co *FixedWidthOptions) (string, error) { return fixeWidthFunc(f, co) }
|
||||
|
||||
// Function to generate a fixed width document
|
||||
func fixeWidthFunc(f *Faker, co *FixedWidthOptions) (string, error) {
|
||||
// If we didn't get FixedWidthOptions, create a new random one
|
||||
if co == nil {
|
||||
co = &FixedWidthOptions{}
|
||||
}
|
||||
|
||||
// Make sure you set a row count
|
||||
if co.RowCount <= 0 {
|
||||
co.RowCount = f.IntN(10) + 1
|
||||
}
|
||||
|
||||
// Check fields
|
||||
if len(co.Fields) <= 0 {
|
||||
// Create random fields
|
||||
co.Fields = []Field{
|
||||
{Name: "Name", Function: "{firstname} {lastname}"},
|
||||
{Name: "Email", Function: "email"},
|
||||
{Name: "Password", Function: "password", Params: MapParams{"special": {"false"}, "space": {"false"}}},
|
||||
}
|
||||
}
|
||||
|
||||
data := [][]string{}
|
||||
hasHeader := false
|
||||
|
||||
// Loop through fields, generate data and add to data array
|
||||
for _, field := range co.Fields {
|
||||
// Start new row
|
||||
row := []string{}
|
||||
|
||||
// Add name to first value
|
||||
if field.Name != "" {
|
||||
hasHeader = true
|
||||
}
|
||||
row = append(row, field.Name)
|
||||
|
||||
// Get function
|
||||
funcInfo := GetFuncLookup(field.Function)
|
||||
var value any
|
||||
if funcInfo == nil {
|
||||
// Try to run the function through generate
|
||||
for i := 0; i < co.RowCount; i++ {
|
||||
genStr, err := generate(f, field.Function)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
row = append(row, genStr)
|
||||
}
|
||||
} else {
|
||||
// Generate function value
|
||||
var err error
|
||||
for i := 0; i < co.RowCount; i++ {
|
||||
value, err = funcInfo.Generate(f, &field.Params, funcInfo)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Add value to row
|
||||
row = append(row, anyToString(value))
|
||||
}
|
||||
}
|
||||
|
||||
// Add row to data
|
||||
data = append(data, row)
|
||||
}
|
||||
|
||||
var result strings.Builder
|
||||
|
||||
// Calculate column widths
|
||||
colWidths := make([]int, len(data))
|
||||
for i, row := range data {
|
||||
for _, value := range row {
|
||||
width := len(value) + 5
|
||||
if width > colWidths[i] {
|
||||
colWidths[i] = width
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Append table rows to the string, excluding the entire row if the first value is empty
|
||||
for i := 0; i < len(data[0]); i++ {
|
||||
if !hasHeader && i == 0 {
|
||||
continue // Skip the entire column if the first value is empty
|
||||
}
|
||||
|
||||
var resultRow strings.Builder
|
||||
for j, row := range data {
|
||||
resultRow.WriteString(fmt.Sprintf("%-*s", colWidths[j], row[i]))
|
||||
}
|
||||
|
||||
// Trim trailing spaces
|
||||
result.WriteString(strings.TrimRight(resultRow.String(), " "))
|
||||
|
||||
// Only add new line if not the last row
|
||||
if i != len(data[0])-1 {
|
||||
result.WriteString("\n")
|
||||
}
|
||||
}
|
||||
|
||||
return result.String(), nil
|
||||
}
|
||||
|
||||
// Regex will generate a string based upon a RE2 syntax
|
||||
func Regex(regexStr string) string { return regex(GlobalFaker, regexStr) }
|
||||
|
||||
// Regex will generate a string based upon a RE2 syntax
|
||||
func (f *Faker) Regex(regexStr string) string { return regex(f, regexStr) }
|
||||
|
||||
func regex(f *Faker, regexStr string) (gen string) {
|
||||
re, err := syntax.Parse(regexStr, syntax.Perl)
|
||||
if err != nil {
|
||||
return "Could not parse regex string"
|
||||
}
|
||||
|
||||
// Panic catch
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
gen = fmt.Sprint(f)
|
||||
return
|
||||
|
||||
}
|
||||
}()
|
||||
|
||||
return regexGenerate(f, re, len(regexStr)*100)
|
||||
}
|
||||
|
||||
func regexGenerate(f *Faker, re *syntax.Regexp, limit int) string {
|
||||
if limit <= 0 {
|
||||
panic("Length limit reached when generating output")
|
||||
}
|
||||
|
||||
op := re.Op
|
||||
switch op {
|
||||
case syntax.OpNoMatch: // matches no strings
|
||||
// Do Nothing
|
||||
case syntax.OpEmptyMatch: // matches empty string
|
||||
return ""
|
||||
case syntax.OpLiteral: // matches Runes sequence
|
||||
var b strings.Builder
|
||||
for _, ru := range re.Rune {
|
||||
b.WriteRune(ru)
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpCharClass: // matches Runes interpreted as range pair list
|
||||
// number of possible chars
|
||||
sum := 0
|
||||
for i := 0; i < len(re.Rune); i += 2 {
|
||||
sum += int(re.Rune[i+1]-re.Rune[i]) + 1
|
||||
if re.Rune[i+1] == 0x10ffff { // rune range end
|
||||
sum = -1
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// pick random char in range (inverse match group)
|
||||
if sum == -1 {
|
||||
chars := []uint8{}
|
||||
for j := 0; j < len(allStr); j++ {
|
||||
c := allStr[j]
|
||||
|
||||
// Check c in range
|
||||
for i := 0; i < len(re.Rune); i += 2 {
|
||||
if rune(c) >= re.Rune[i] && rune(c) <= re.Rune[i+1] {
|
||||
chars = append(chars, c)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(chars) > 0 {
|
||||
return string([]byte{chars[f.IntN(len(chars))]})
|
||||
}
|
||||
}
|
||||
|
||||
r := f.IntN(int(sum))
|
||||
var ru rune
|
||||
sum = 0
|
||||
for i := 0; i < len(re.Rune); i += 2 {
|
||||
gap := int(re.Rune[i+1]-re.Rune[i]) + 1
|
||||
if sum+gap > r {
|
||||
ru = re.Rune[i] + rune(r-sum)
|
||||
break
|
||||
}
|
||||
sum += gap
|
||||
}
|
||||
|
||||
return string(ru)
|
||||
case syntax.OpAnyCharNotNL, syntax.OpAnyChar: // matches any character(and except newline)
|
||||
return randCharacter(f, allStr)
|
||||
case syntax.OpBeginLine: // matches empty string at beginning of line
|
||||
case syntax.OpEndLine: // matches empty string at end of line
|
||||
case syntax.OpBeginText: // matches empty string at beginning of text
|
||||
case syntax.OpEndText: // matches empty string at end of text
|
||||
case syntax.OpWordBoundary: // matches word boundary `\b`
|
||||
case syntax.OpNoWordBoundary: // matches word non-boundary `\B`
|
||||
case syntax.OpCapture: // capturing subexpression with index Cap, optional name Name
|
||||
return regexGenerate(f, re.Sub0[0], limit)
|
||||
case syntax.OpStar: // matches Sub[0] zero or more times
|
||||
var b strings.Builder
|
||||
for i := 0; i < number(f, 0, 10); i++ {
|
||||
for _, rs := range re.Sub {
|
||||
b.WriteString(regexGenerate(f, rs, limit-b.Len()))
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpPlus: // matches Sub[0] one or more times
|
||||
var b strings.Builder
|
||||
for i := 0; i < number(f, 1, 10); i++ {
|
||||
for _, rs := range re.Sub {
|
||||
b.WriteString(regexGenerate(f, rs, limit-b.Len()))
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpQuest: // matches Sub[0] zero or one times
|
||||
var b strings.Builder
|
||||
for i := 0; i < number(f, 0, 1); i++ {
|
||||
for _, rs := range re.Sub {
|
||||
b.WriteString(regexGenerate(f, rs, limit-b.Len()))
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpRepeat: // matches Sub[0] at least Min times, at most Max (Max == -1 is no limit)
|
||||
var b strings.Builder
|
||||
count := 0
|
||||
re.Max = int(math.Min(float64(re.Max), float64(10)))
|
||||
if re.Max > re.Min {
|
||||
count = f.IntN(re.Max - re.Min + 1)
|
||||
}
|
||||
for i := 0; i < re.Min || i < (re.Min+count); i++ {
|
||||
for _, rs := range re.Sub {
|
||||
b.WriteString(regexGenerate(f, rs, limit-b.Len()))
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpConcat: // matches concatenation of Subs
|
||||
var b strings.Builder
|
||||
for _, rs := range re.Sub {
|
||||
b.WriteString(regexGenerate(f, rs, limit-b.Len()))
|
||||
}
|
||||
return b.String()
|
||||
case syntax.OpAlternate: // matches alternation of Subs
|
||||
return regexGenerate(f, re.Sub[number(f, 0, len(re.Sub)-1)], limit)
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// Map will generate a random set of map data
|
||||
func Map() map[string]any { return mapFunc(GlobalFaker) }
|
||||
|
||||
// Map will generate a random set of map data
|
||||
func (f *Faker) Map() map[string]any { return mapFunc(f) }
|
||||
|
||||
func mapFunc(f *Faker) map[string]any {
|
||||
m := map[string]any{}
|
||||
|
||||
randWordType := func() string {
|
||||
s := randomString(f, []string{"lorem", "bs", "job", "name", "address"})
|
||||
switch s {
|
||||
case "bs":
|
||||
return bs(f)
|
||||
case "job":
|
||||
return jobTitle(f)
|
||||
case "name":
|
||||
return name(f)
|
||||
case "address":
|
||||
return street(f) + ", " + city(f) + ", " + state(f) + " " + zip(f)
|
||||
}
|
||||
return word(f)
|
||||
}
|
||||
|
||||
randSlice := func() []string {
|
||||
var sl []string
|
||||
for ii := 0; ii < number(f, 3, 10); ii++ {
|
||||
sl = append(sl, word(f))
|
||||
}
|
||||
return sl
|
||||
}
|
||||
|
||||
for i := 0; i < number(f, 3, 10); i++ {
|
||||
t := randomString(f, []string{"string", "int", "float", "slice", "map"})
|
||||
switch t {
|
||||
case "string":
|
||||
m[word(f)] = randWordType()
|
||||
case "int":
|
||||
m[word(f)] = number(f, 1, 10000000)
|
||||
case "float":
|
||||
m[word(f)] = float32Range(f, 1, 1000000)
|
||||
case "slice":
|
||||
m[word(f)] = randSlice()
|
||||
case "map":
|
||||
mm := map[string]any{}
|
||||
tt := randomString(f, []string{"string", "int", "float", "slice"})
|
||||
switch tt {
|
||||
case "string":
|
||||
mm[word(f)] = randWordType()
|
||||
case "int":
|
||||
mm[word(f)] = number(f, 1, 10000000)
|
||||
case "float":
|
||||
mm[word(f)] = float32Range(f, 1, 1000000)
|
||||
case "slice":
|
||||
mm[word(f)] = randSlice()
|
||||
}
|
||||
m[word(f)] = mm
|
||||
}
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func addGenerateLookup() {
|
||||
AddFuncLookup("generate", Info{
|
||||
Display: "Generate",
|
||||
Category: "generate",
|
||||
Description: "Random string generated from string value based upon available data sets",
|
||||
Example: "{firstname} {lastname} {email} - Markus Moen markusmoen@pagac.net",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"template expander",
|
||||
"placeholder interpolator",
|
||||
"variable substitution",
|
||||
"token formatter",
|
||||
"pattern builder",
|
||||
"macro resolver",
|
||||
},
|
||||
Keywords: []string{
|
||||
"generate", "upon", "datasets", "random",
|
||||
"string", "value", "available", "data",
|
||||
"sets", "based",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "str", Display: "String", Type: "string", Description: "String value to generate from"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
str, err := info.GetString(m, "str")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Limit the length of the string passed
|
||||
if len(str) > 1000 {
|
||||
return nil, errors.New("string length is too large. limit to 1000 characters")
|
||||
}
|
||||
|
||||
return generate(f, str)
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("fixed_width", Info{
|
||||
Display: "Fixed Width",
|
||||
Category: "generate",
|
||||
Description: "Fixed width rows of output data based on input fields",
|
||||
Example: `Name Email Password Age
|
||||
Markus Moen sylvanmraz@murphy.net 6VlvH6qqXc7g 13
|
||||
Alayna Wuckert santinostanton@carroll.biz g7sLrS0gEwLO 46
|
||||
Lura Lockman zacherykuhic@feil.name S8gV7Z64KlHG 12`,
|
||||
Output: "[]byte",
|
||||
ContentType: "text/plain",
|
||||
Aliases: []string{
|
||||
"fixed rows", "columnar data", "padded text", "aligned output", "structured fields",
|
||||
},
|
||||
Keywords: []string{
|
||||
"tabular", "data", "format", "alignment", "columns", "rows", "layout", "monospace", "table", "presentation",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "rowcount", Display: "Row Count", Type: "int", Default: "10", Description: "Number of rows"},
|
||||
{Field: "fields", Display: "Fields", Type: "[]Field", Description: "Fields name, function and params"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
co := FixedWidthOptions{}
|
||||
|
||||
rowCount, err := info.GetInt(m, "rowcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
co.RowCount = rowCount
|
||||
|
||||
fields, _ := info.GetStringArray(m, "fields")
|
||||
|
||||
// Check to make sure fields has length
|
||||
if len(fields) > 0 {
|
||||
co.Fields = make([]Field, len(fields))
|
||||
for i, f := range fields {
|
||||
// Unmarshal fields string into fields array
|
||||
err = json.Unmarshal([]byte(f), &co.Fields[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return nil, errors.New("missing fields")
|
||||
}
|
||||
|
||||
out, err := fixeWidthFunc(f, &co)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return out, nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("regex", Info{
|
||||
Display: "Regex",
|
||||
Category: "generate",
|
||||
Description: "Pattern-matching tool used in text processing to search and manipulate strings",
|
||||
Example: "[abcdef]{5} - affec",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"regular expression",
|
||||
"string matcher",
|
||||
"text parser",
|
||||
"pattern engine",
|
||||
"token analyzer",
|
||||
"rule evaluator",
|
||||
},
|
||||
Keywords: []string{
|
||||
"regex", "strings", "re2", "syntax",
|
||||
"pattern-matching", "tool", "search",
|
||||
"validation", "compile", "replace",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "str", Display: "String", Type: "string", Description: "Regex RE2 syntax string"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
str, err := info.GetString(m, "str")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Limit the length of the string passed
|
||||
if len(str) > 500 {
|
||||
return nil, errors.New("string length is too large. limit to 500 characters")
|
||||
}
|
||||
|
||||
return regex(f, str), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("map", Info{
|
||||
Display: "Map",
|
||||
Category: "generate",
|
||||
Description: "Data structure that stores key-value pairs",
|
||||
Example: `{
|
||||
"software": 7518355,
|
||||
"that": ["despite", "pack", "whereas", "recently", "there", "anyone", "time", "read"],
|
||||
"use": 683598,
|
||||
"whom": "innovate",
|
||||
"yourselves": 1987784
|
||||
}`,
|
||||
Output: "map[string]any",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"associative array",
|
||||
"lookup table",
|
||||
"symbol table",
|
||||
"keyed collection",
|
||||
"map structure",
|
||||
"object store",
|
||||
},
|
||||
Keywords: []string{
|
||||
"map", "stores", "key", "value",
|
||||
"dictionary", "hash", "collection",
|
||||
"pairs", "keys", "values", "structure",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return mapFunc(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
179
vendor/github.com/brianvoe/gofakeit/v7/hacker.go
generated
vendored
Normal file
179
vendor/github.com/brianvoe/gofakeit/v7/hacker.go
generated
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// HackerPhrase will return a random hacker sentence
|
||||
func HackerPhrase() string { return hackerPhrase(GlobalFaker) }
|
||||
|
||||
// HackerPhrase will return a random hacker sentence
|
||||
func (f *Faker) HackerPhrase() string { return hackerPhrase(f) }
|
||||
|
||||
func hackerPhrase(f *Faker) string {
|
||||
genStr, _ := generate(f, getRandValue(f, []string{"hacker", "phrase"}))
|
||||
|
||||
words := strings.Split(genStr, " ")
|
||||
words[0] = strings.ToUpper(words[0][0:1]) + words[0][1:]
|
||||
return strings.Join(words, " ")
|
||||
}
|
||||
|
||||
// HackerAbbreviation will return a random hacker abbreviation
|
||||
func HackerAbbreviation() string { return hackerAbbreviation(GlobalFaker) }
|
||||
|
||||
// HackerAbbreviation will return a random hacker abbreviation
|
||||
func (f *Faker) HackerAbbreviation() string { return hackerAbbreviation(f) }
|
||||
|
||||
func hackerAbbreviation(f *Faker) string {
|
||||
return getRandValue(f, []string{"hacker", "abbreviation"})
|
||||
}
|
||||
|
||||
// HackerAdjective will return a random hacker adjective
|
||||
func HackerAdjective() string { return hackerAdjective(GlobalFaker) }
|
||||
|
||||
// HackerAdjective will return a random hacker adjective
|
||||
func (f *Faker) HackerAdjective() string { return hackerAdjective(f) }
|
||||
|
||||
func hackerAdjective(f *Faker) string {
|
||||
return getRandValue(f, []string{"hacker", "adjective"})
|
||||
}
|
||||
|
||||
// HackerNoun will return a random hacker noun
|
||||
func HackerNoun() string { return hackerNoun(GlobalFaker) }
|
||||
|
||||
// HackerNoun will return a random hacker noun
|
||||
func (f *Faker) HackerNoun() string { return hackerNoun(f) }
|
||||
|
||||
func hackerNoun(f *Faker) string {
|
||||
return getRandValue(f, []string{"hacker", "noun"})
|
||||
}
|
||||
|
||||
// HackerVerb will return a random hacker verb
|
||||
func HackerVerb() string { return hackerVerb(GlobalFaker) }
|
||||
|
||||
// HackerVerb will return a random hacker verb
|
||||
func (f *Faker) HackerVerb() string { return hackerVerb(f) }
|
||||
|
||||
func hackerVerb(f *Faker) string {
|
||||
return getRandValue(f, []string{"hacker", "verb"})
|
||||
}
|
||||
|
||||
// HackeringVerb will return a random hacker ingverb
|
||||
func HackeringVerb() string { return hackeringVerb(GlobalFaker) }
|
||||
|
||||
// HackeringVerb will return a random hacker ingverb
|
||||
func (f *Faker) HackeringVerb() string { return hackeringVerb(f) }
|
||||
|
||||
func hackeringVerb(f *Faker) string {
|
||||
return getRandValue(f, []string{"hacker", "ingverb"})
|
||||
}
|
||||
|
||||
func addHackerLookup() {
|
||||
AddFuncLookup("hackerphrase", Info{
|
||||
Display: "Hacker Phrase",
|
||||
Category: "hacker",
|
||||
Description: "Informal jargon and slang used in the hacking and cybersecurity community",
|
||||
Example: "If we calculate the program, we can get to the AI pixel through the redundant XSS matrix!",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hacker jargon", "cyber phrase", "security slang", "tech quip", "infosec phrase",
|
||||
},
|
||||
Keywords: []string{
|
||||
"phrase", "jargon", "slang", "informal", "community",
|
||||
"calculate", "program", "ai", "pixel", "redundant", "xss", "matrix",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackerPhrase(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hackerabbreviation", Info{
|
||||
Display: "Hacker Abbreviation",
|
||||
Category: "hacker",
|
||||
Description: "Abbreviations and acronyms commonly used in the hacking and cybersecurity community",
|
||||
Example: "ADP",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"infosec acronym", "tech abbreviation", "security acronym", "cyber acronym", "hacker shorthand",
|
||||
},
|
||||
Keywords: []string{
|
||||
"abbreviation", "acronym", "short", "code", "initialism",
|
||||
"common", "used", "security", "community", "terminology",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackerAbbreviation(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hackeradjective", Info{
|
||||
Display: "Hacker Adjective",
|
||||
Category: "hacker",
|
||||
Description: "Adjectives describing terms often associated with hackers and cybersecurity experts",
|
||||
Example: "wireless",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hacker descriptor", "cyber adjective", "infosec modifier", "security adjective", "tech describing word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "descriptive", "term", "modifier", "attribute",
|
||||
"wireless", "connected", "digital", "virtual", "networked",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackerAdjective(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hackernoun", Info{
|
||||
Display: "Hacker Noun",
|
||||
Category: "hacker",
|
||||
Description: "Noun representing an element, tool, or concept within the realm of hacking and cybersecurity",
|
||||
Example: "driver",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hacking tool", "cyber noun", "security concept", "tech object", "infosec element",
|
||||
},
|
||||
Keywords: []string{
|
||||
"noun", "element", "tool", "concept", "object",
|
||||
"driver", "exploit", "payload", "virus", "device",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackerNoun(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hackerverb", Info{
|
||||
Display: "Hacker Verb",
|
||||
Category: "hacker",
|
||||
Description: "Verbs associated with actions and activities in the field of hacking and cybersecurity",
|
||||
Example: "synthesize",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hacking verb", "cyber action", "infosec verb", "tech activity", "security verb",
|
||||
},
|
||||
Keywords: []string{
|
||||
"verb", "action", "activity", "task", "operation",
|
||||
"synthesize", "exploit", "inject", "bypass", "scan",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackerVerb(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hackeringverb", Info{
|
||||
Display: "Hackering Verb",
|
||||
Category: "hacker",
|
||||
Description: "Verb describing actions and activities related to hacking, often involving computer systems and security",
|
||||
Example: "connecting",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hacking action", "present participle", "cyber verb", "infosec activity", "progressive verb",
|
||||
},
|
||||
Keywords: []string{
|
||||
"verb", "ing", "connecting", "probing", "listening",
|
||||
"systems", "process", "computer", "security", "operation",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hackeringVerb(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
374
vendor/github.com/brianvoe/gofakeit/v7/helpers.go
generated
vendored
Normal file
374
vendor/github.com/brianvoe/gofakeit/v7/helpers.go
generated
vendored
Normal file
@@ -0,0 +1,374 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"reflect"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
const lowerStr = "abcdefghijklmnopqrstuvwxyz"
|
||||
const upperStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
const numericStr = "0123456789"
|
||||
const specialStr = "@#$%&?|!(){}<>=*+-_:;,."
|
||||
const specialSafeStr = "!@.-_*" // https://github.com/1Password/spg/pull/22
|
||||
const spaceStr = " "
|
||||
const allStr = lowerStr + upperStr + numericStr + specialStr + spaceStr
|
||||
const vowels = "aeiou"
|
||||
const hashtag = '#'
|
||||
const questionmark = '?'
|
||||
const dash = '-'
|
||||
const base58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
||||
const minUint = 0
|
||||
const maxUint = ^uint(0)
|
||||
const minInt = -maxInt - 1
|
||||
const maxInt = int(^uint(0) >> 1)
|
||||
const is32bit = ^uint(0)>>32 == 0
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
// Get Random Value
|
||||
func getRandValue(f *Faker, dataVal []string) string {
|
||||
if !dataCheck(dataVal) {
|
||||
return ""
|
||||
}
|
||||
return data.Data[dataVal[0]][dataVal[1]][f.IntN(len(data.Data[dataVal[0]][dataVal[1]]))]
|
||||
}
|
||||
|
||||
// Replace # with numbers
|
||||
func replaceWithNumbers(f *Faker, 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(f))
|
||||
}
|
||||
}
|
||||
if bytestr[0] == '0' {
|
||||
bytestr[0] = byte(f.IntN(8)+1) + '0'
|
||||
}
|
||||
|
||||
return string(bytestr)
|
||||
}
|
||||
|
||||
// Replace ? with ASCII lowercase letters
|
||||
func replaceWithLetters(f *Faker, 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(f))
|
||||
}
|
||||
}
|
||||
|
||||
return string(bytestr)
|
||||
}
|
||||
|
||||
// Replace ? with ASCII lowercase letters between a and f
|
||||
func replaceWithHexLetters(f *Faker, str string) string {
|
||||
if str == "" {
|
||||
return str
|
||||
}
|
||||
bytestr := []byte(str)
|
||||
for i := 0; i < len(bytestr); i++ {
|
||||
if bytestr[i] == questionmark {
|
||||
bytestr[i] = byte(randHexLetter(f))
|
||||
}
|
||||
}
|
||||
|
||||
return string(bytestr)
|
||||
}
|
||||
|
||||
// Generate random lowercase ASCII letter
|
||||
func randLetter(f *Faker) rune {
|
||||
allLetters := upperStr + lowerStr
|
||||
return rune(allLetters[f.IntN(len(allLetters))])
|
||||
}
|
||||
|
||||
func randCharacter(f *Faker, s string) string {
|
||||
return string(s[f.Int64()%int64(len(s))])
|
||||
}
|
||||
|
||||
// Generate random lowercase ASCII letter between a and f
|
||||
func randHexLetter(f *Faker) rune {
|
||||
return rune(byte(f.IntN(6)) + 'a')
|
||||
}
|
||||
|
||||
// Generate random ASCII digit
|
||||
func randDigit(f *Faker) rune {
|
||||
return rune(byte(f.IntN(10)) + '0')
|
||||
}
|
||||
|
||||
// Generate random integer between min and max
|
||||
func randIntRange(f *Faker, min, max int) int {
|
||||
if min == max {
|
||||
return min
|
||||
}
|
||||
|
||||
if min > max {
|
||||
min, max = max, min // Swap if min is greater than max
|
||||
}
|
||||
|
||||
// Use f.IntN to generate a random number in [0, rangeSize) and shift it into [min, max].
|
||||
return f.IntN(max-min+1) + min
|
||||
}
|
||||
|
||||
// Generate random uint between min and max
|
||||
func randUintRange(f *Faker, min, max uint) uint {
|
||||
if min == max {
|
||||
return min // Immediate return if range is zero
|
||||
}
|
||||
|
||||
if min > max {
|
||||
min, max = max, min // Swap if min is greater than max
|
||||
}
|
||||
|
||||
// Use f.UintN to generate a random number in [0, rangeSize) and shift it into [min, max].
|
||||
return f.UintN(max-min+1) + min
|
||||
}
|
||||
|
||||
func toFixed(num float64, precision int) float64 {
|
||||
output := math.Pow(10, float64(precision))
|
||||
return float64(math.Floor(num*output)) / output
|
||||
}
|
||||
|
||||
func equalSliceString(a, b []string) bool {
|
||||
sizeA, sizeB := len(a), len(b)
|
||||
if sizeA != sizeB {
|
||||
return false
|
||||
}
|
||||
|
||||
for i, va := range a {
|
||||
vb := b[i]
|
||||
|
||||
if va != vb {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func equalSliceInt(a, b []int) bool {
|
||||
sizeA, sizeB := len(a), len(b)
|
||||
if sizeA != sizeB {
|
||||
return false
|
||||
}
|
||||
|
||||
for i, va := range a {
|
||||
vb := b[i]
|
||||
|
||||
if va != vb {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func equalSliceInterface(a, b []any) bool {
|
||||
sizeA, sizeB := len(a), len(b)
|
||||
if sizeA != sizeB {
|
||||
return false
|
||||
}
|
||||
|
||||
for i, va := range a {
|
||||
if !reflect.DeepEqual(va, b[i]) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func stringInSlice(a string, list []string) bool {
|
||||
for _, b := range list {
|
||||
if b == a {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func anyToString(a any) string {
|
||||
if a == nil {
|
||||
return ""
|
||||
}
|
||||
|
||||
// If it's a slice of bytes or struct, unmarshal it into an interface
|
||||
if bytes, ok := a.([]byte); ok {
|
||||
return string(bytes)
|
||||
}
|
||||
|
||||
// If it's a struct, map, or slice, convert to JSON
|
||||
switch reflect.TypeOf(a).Kind() {
|
||||
case reflect.Struct, reflect.Map, reflect.Slice:
|
||||
b, err := json.Marshal(a)
|
||||
if err == nil {
|
||||
return string(b)
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%v", a)
|
||||
}
|
||||
|
||||
// Title returns a copy of the string s with all Unicode letters that begin words
|
||||
// mapped to their Unicode title case
|
||||
func title(s string) string {
|
||||
// isSeparator reports whether the rune could mark a word boundary
|
||||
isSeparator := func(r rune) bool {
|
||||
// ASCII alphanumerics and underscore are not separators
|
||||
if r <= 0x7F {
|
||||
switch {
|
||||
case '0' <= r && r <= '9':
|
||||
return false
|
||||
case 'a' <= r && r <= 'z':
|
||||
return false
|
||||
case 'A' <= r && r <= 'Z':
|
||||
return false
|
||||
case r == '_':
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// Letters and digits are not separators
|
||||
if unicode.IsLetter(r) || unicode.IsDigit(r) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Otherwise, all we can do for now is treat spaces as separators.
|
||||
return unicode.IsSpace(r)
|
||||
}
|
||||
|
||||
prev := ' '
|
||||
return strings.Map(
|
||||
func(r rune) rune {
|
||||
if isSeparator(prev) {
|
||||
prev = r
|
||||
return unicode.ToTitle(r)
|
||||
}
|
||||
prev = r
|
||||
return r
|
||||
},
|
||||
s)
|
||||
}
|
||||
|
||||
func funcLookupSplit(str string) ([]string, error) {
|
||||
out := []string{}
|
||||
for str != "" {
|
||||
if strings.HasPrefix(str, "[") {
|
||||
startIndex := strings.Index(str, "[")
|
||||
endIndex := strings.Index(str, "]")
|
||||
if endIndex == -1 {
|
||||
return nil, fmt.Errorf("invalid lookup split missing ending ] bracket")
|
||||
}
|
||||
|
||||
val := str[(startIndex) : endIndex+1]
|
||||
out = append(out, strings.TrimSpace(val))
|
||||
str = strings.Replace(str, val, "", 1)
|
||||
|
||||
// Trim off comma if it has it
|
||||
if strings.HasPrefix(str, ",") {
|
||||
str = strings.Replace(str, ",", "", 1)
|
||||
}
|
||||
} else {
|
||||
strSplit := strings.SplitN(str, ",", 2)
|
||||
strSplitLen := len(strSplit)
|
||||
if strSplitLen >= 1 {
|
||||
out = append(out, strings.TrimSpace(strSplit[0]))
|
||||
}
|
||||
if strSplitLen >= 2 {
|
||||
str = strSplit[1]
|
||||
} else {
|
||||
str = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// Used for parsing the tag in a struct
|
||||
func parseNameAndParamsFromTag(tag string) (string, string) {
|
||||
// Trim the curly on the beginning and end
|
||||
tag = strings.TrimLeft(tag, "{")
|
||||
tag = strings.TrimRight(tag, "}")
|
||||
// Check if has params separated by :
|
||||
fNameSplit := strings.SplitN(tag, ":", 2)
|
||||
fName := ""
|
||||
fParams := ""
|
||||
if len(fNameSplit) >= 1 {
|
||||
fName = fNameSplit[0]
|
||||
}
|
||||
if len(fNameSplit) >= 2 {
|
||||
fParams = fNameSplit[1]
|
||||
}
|
||||
return fName, fParams
|
||||
}
|
||||
|
||||
// Used for parsing map params
|
||||
func parseMapParams(info *Info, fParams string) (*MapParams, error) {
|
||||
// Get parameters, make sure params and the split both have values
|
||||
mapParams := NewMapParams()
|
||||
paramsLen := len(info.Params)
|
||||
|
||||
// If just one param and its a string simply just pass it
|
||||
if paramsLen == 1 && info.Params[0].Type == "string" {
|
||||
mapParams.Add(info.Params[0].Field, fParams)
|
||||
} else if paramsLen > 0 && fParams != "" {
|
||||
splitVals, err := funcLookupSplit(fParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mapParams, err = addSplitValsToMapParams(splitVals, info, mapParams)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// If mapParams doesnt have a size then return nil
|
||||
if mapParams.Size() == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
return mapParams, nil
|
||||
}
|
||||
|
||||
// Used for splitting the values
|
||||
func addSplitValsToMapParams(splitVals []string, info *Info, mapParams *MapParams) (*MapParams, error) {
|
||||
for ii := 0; ii < len(splitVals); ii++ {
|
||||
if len(info.Params)-1 >= ii {
|
||||
if strings.HasPrefix(splitVals[ii], "[") {
|
||||
lookupSplits, err := funcLookupSplit(strings.TrimRight(strings.TrimLeft(splitVals[ii], "["), "]"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, v := range lookupSplits {
|
||||
mapParams.Add(info.Params[ii].Field, v)
|
||||
}
|
||||
} else {
|
||||
mapParams.Add(info.Params[ii].Field, splitVals[ii])
|
||||
}
|
||||
}
|
||||
}
|
||||
return mapParams, nil
|
||||
}
|
||||
136
vendor/github.com/brianvoe/gofakeit/v7/hipster.go
generated
vendored
Normal file
136
vendor/github.com/brianvoe/gofakeit/v7/hipster.go
generated
vendored
Normal file
@@ -0,0 +1,136 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
// HipsterWord will return a single hipster word
|
||||
func HipsterWord() string { return hipsterWord(GlobalFaker) }
|
||||
|
||||
// HipsterWord will return a single hipster word
|
||||
func (f *Faker) HipsterWord() string { return hipsterWord(f) }
|
||||
|
||||
func hipsterWord(f *Faker) string { return getRandValue(f, []string{"hipster", "word"}) }
|
||||
|
||||
// HipsterSentence will generate a random sentence
|
||||
func HipsterSentence(wordCount int) string { return hipsterSentence(GlobalFaker, wordCount) }
|
||||
|
||||
// HipsterSentence will generate a random sentence
|
||||
func (f *Faker) HipsterSentence(wordCount int) string { return hipsterSentence(f, wordCount) }
|
||||
|
||||
func hipsterSentence(f *Faker, wordCount int) string {
|
||||
return sentenceGen(f, wordCount, hipsterWord)
|
||||
}
|
||||
|
||||
// HipsterParagraph will generate a random paragraphGenerator
|
||||
// Set Paragraph Count
|
||||
// Set Sentence Count
|
||||
// Set Word Count
|
||||
// Set Paragraph Separator
|
||||
func HipsterParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return hipsterParagraph(GlobalFaker, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
// HipsterParagraph will generate a random paragraphGenerator
|
||||
// Set Paragraph Count
|
||||
// Set Sentence Count
|
||||
// Set Word Count
|
||||
// Set Paragraph Separator
|
||||
func (f *Faker) HipsterParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return hipsterParagraph(f, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
func hipsterParagraph(f *Faker, paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return paragraphGen(f, paragrapOptions{paragraphCount, sentenceCount, wordCount, separator}, hipsterSentence)
|
||||
}
|
||||
|
||||
func addHipsterLookup() {
|
||||
AddFuncLookup("hipsterword", Info{
|
||||
Display: "Hipster Word",
|
||||
Category: "hipster",
|
||||
Description: "Trendy and unconventional vocabulary used by hipsters to express unique cultural preferences",
|
||||
Example: "microdosing",
|
||||
Output: "string",
|
||||
Aliases: []string{"word", "trendy", "unconventional", "vocabulary", "culture", "modern"},
|
||||
Keywords: []string{"hipster", "preferences", "microdosing", "artisanal", "craft", "organic", "sustainable", "authentic"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return hipsterWord(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hipstersentence", Info{
|
||||
Display: "Hipster Sentence",
|
||||
Category: "hipster",
|
||||
Description: "Sentence showcasing the use of trendy and unconventional vocabulary associated with hipster culture",
|
||||
Example: "Microdosing roof chia echo pickled.",
|
||||
Output: "string",
|
||||
Aliases: []string{"sentence", "trendy", "unconventional", "vocabulary", "culture", "modern"},
|
||||
Keywords: []string{"hipster", "showcasing", "microdosing", "roof", "chia", "echo", "pickled", "artisanal"},
|
||||
Params: []Param{
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
return hipsterSentence(f, wordCount), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hipsterparagraph", Info{
|
||||
Display: "Hipster Paragraph",
|
||||
Category: "hipster",
|
||||
Description: "Paragraph showcasing the use of trendy and unconventional vocabulary associated with hipster culture",
|
||||
Example: `Microdosing roof chia echo pickled meditation cold-pressed raw denim fingerstache normcore sriracha pork belly. Wolf try-hard pop-up blog tilde hashtag health butcher waistcoat paleo portland vinegar. Microdosing sartorial blue bottle slow-carb freegan five dollar toast you probably haven't heard of them asymmetrical chia farm-to-table narwhal banjo. Gluten-free blog authentic literally synth vinyl meh ethical health fixie banh mi Yuccie. Try-hard drinking squid seitan cray VHS echo chillwave hammock kombucha food truck sustainable.
|
||||
|
||||
Pug bushwick hella tote bag cliche direct trade waistcoat yr waistcoat knausgaard pour-over master. Pitchfork jean shorts franzen flexitarian distillery hella meggings austin knausgaard crucifix wolf heirloom. Crucifix food truck you probably haven't heard of them trust fund fixie gentrify pitchfork stumptown mlkshk umami chambray blue bottle. 3 wolf moon swag +1 biodiesel knausgaard semiotics taxidermy meh artisan hoodie +1 blue bottle. Fashion axe forage mixtape Thundercats pork belly whatever 90's beard selfies chambray cred mlkshk.
|
||||
|
||||
Shabby chic typewriter VHS readymade lo-fi bitters PBR&B gentrify lomo raw denim freegan put a bird on it. Raw denim cliche dreamcatcher pug fixie park trust fund migas fingerstache sriracha +1 mustache. Tilde shoreditch kickstarter franzen dreamcatcher green juice mustache neutra polaroid stumptown organic schlitz. Flexitarian ramps chicharrones kogi lo-fi mustache tilde forage street church-key williamsburg taxidermy. Chia mustache plaid mumblecore squid slow-carb disrupt Thundercats goth shoreditch master direct trade.`,
|
||||
Output: "string",
|
||||
Aliases: []string{"paragraph", "trendy", "unconventional", "vocabulary", "culture", "modern"},
|
||||
Keywords: []string{"hipster", "showcasing", "meditation", "cold-pressed", "raw", "denim", "fingerstache", "normcore", "sriracha"},
|
||||
Params: []Param{
|
||||
{Field: "paragraphcount", Display: "Paragraph Count", Type: "int", Default: "2", Description: "Number of paragraphs"},
|
||||
{Field: "sentencecount", Display: "Sentence Count", Type: "int", Default: "2", Description: "Number of sentences in a paragraph"},
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
{Field: "paragraphseparator", Display: "Paragraph Separator", Type: "string", Default: "<br />", Description: "String value to add between paragraphs"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
paragraphCount, err := info.GetInt(m, "paragraphcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if paragraphCount <= 0 || paragraphCount > 20 {
|
||||
return nil, errors.New("invalid paragraph count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
sentenceCount, err := info.GetInt(m, "sentencecount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if sentenceCount <= 0 || sentenceCount > 20 {
|
||||
return nil, errors.New("invalid sentence count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
paragraphSeparator, err := info.GetString(m, "paragraphseparator")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return hipsterParagraph(f, paragraphCount, sentenceCount, wordCount, paragraphSeparator), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
187
vendor/github.com/brianvoe/gofakeit/v7/html.go
generated
vendored
Normal file
187
vendor/github.com/brianvoe/gofakeit/v7/html.go
generated
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
// InputName will return a random input field name
|
||||
func InputName() string {
|
||||
return inputName(GlobalFaker)
|
||||
}
|
||||
|
||||
// InputName will return a random input field name
|
||||
func (f *Faker) InputName() string {
|
||||
return inputName(f)
|
||||
}
|
||||
|
||||
func inputName(f *Faker) string {
|
||||
return getRandValue(f, []string{"html", "input_name"})
|
||||
}
|
||||
|
||||
type SVGOptions struct {
|
||||
Height int
|
||||
Width int
|
||||
Type string
|
||||
Colors []string
|
||||
}
|
||||
|
||||
// Generate a random svg generator
|
||||
func Svg(options *SVGOptions) string { return svg(GlobalFaker, options) }
|
||||
|
||||
// Generate a random svg generator
|
||||
func (f *Faker) Svg(options *SVGOptions) string { return svg(f, options) }
|
||||
|
||||
func svg(f *Faker, options *SVGOptions) string {
|
||||
// If options is nil, set it to empty struct
|
||||
if options == nil {
|
||||
options = &SVGOptions{}
|
||||
}
|
||||
|
||||
// If options height and weight is not set, set it to random number between 100 and 500
|
||||
if options.Width == 0 {
|
||||
options.Width = number(f, 100, 500)
|
||||
}
|
||||
widthStr := strconv.Itoa(options.Width)
|
||||
if options.Height == 0 {
|
||||
options.Height = number(f, 100, 500)
|
||||
}
|
||||
heightStr := strconv.Itoa(options.Height)
|
||||
|
||||
// Check if type is set, if not set to random type
|
||||
if options.Type == "" {
|
||||
options.Type = randomString(f, data.GetSubData("html", "svg"))
|
||||
}
|
||||
|
||||
// If the colors are not set, set it to a set of nice colors
|
||||
if len(options.Colors) == 0 {
|
||||
options.Colors = niceColors(f)
|
||||
}
|
||||
|
||||
// Start svg string
|
||||
svgStr := `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ` + widthStr + ` ` + heightStr + `" width="` + widthStr + `" height="` + heightStr + `">`
|
||||
|
||||
// Add a rect for the background
|
||||
svgStr += `<rect x="0" y="0" width="100%" height="100%" fill="` + randomString(f, options.Colors) + `" />`
|
||||
|
||||
// Add a random number of shapes
|
||||
for i := 0; i < number(f, 10, 20); i++ {
|
||||
// Add a random shape
|
||||
switch options.Type {
|
||||
case "rect":
|
||||
svgStr += `<rect x="` + strconv.Itoa(number(f, 0, options.Width)) + `" y="` + strconv.Itoa(number(f, 0, options.Height)) + `" width="` + strconv.Itoa(number(f, 0, options.Width)) + `" height="` + strconv.Itoa(number(f, 0, options.Height)) + `" fill="` + randomString(f, options.Colors) + `" />`
|
||||
case "circle":
|
||||
svgStr += `<circle cx="` + strconv.Itoa(number(f, 0, options.Width)) + `" cy="` + strconv.Itoa(number(f, 0, options.Height)) + `" r="` + strconv.Itoa(number(f, 0, options.Width)) + `" fill="` + randomString(f, options.Colors) + `" />`
|
||||
case "ellipse":
|
||||
svgStr += `<ellipse cx="` + strconv.Itoa(number(f, 0, options.Width)) + `" cy="` + strconv.Itoa(number(f, 0, options.Height)) + `" rx="` + strconv.Itoa(number(f, 0, options.Width)) + `" ry="` + strconv.Itoa(number(f, 0, options.Height)) + `" fill="` + randomString(f, options.Colors) + `" />`
|
||||
case "line":
|
||||
svgStr += `<line x1="` + strconv.Itoa(number(f, 0, options.Width)) + `" y1="` + strconv.Itoa(number(f, 0, options.Height)) + `" x2="` + strconv.Itoa(number(f, 0, options.Width)) + `" y2="` + strconv.Itoa(number(f, 0, options.Height)) + `" stroke="` + randomString(f, options.Colors) + `" />`
|
||||
case "polyline":
|
||||
svgStr += `<polyline points="` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + ` ` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + ` ` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + `" fill="` + randomString(f, options.Colors) + `" />`
|
||||
case "polygon":
|
||||
svgStr += `<polygon points="` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + ` ` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + ` ` + strconv.Itoa(number(f, 0, options.Width)) + `,` + strconv.Itoa(number(f, 0, options.Height)) + `" fill="` + randomString(f, options.Colors) + `" />`
|
||||
}
|
||||
}
|
||||
|
||||
// End svg string
|
||||
svgStr += `</svg>`
|
||||
|
||||
return svgStr
|
||||
}
|
||||
|
||||
func addHtmlLookup() {
|
||||
AddFuncLookup("inputname", Info{
|
||||
Display: "Input Name",
|
||||
Category: "html",
|
||||
Description: "Attribute used to define the name of an input element in web forms",
|
||||
Example: "first_name",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"form field", "field name", "html input", "input identifier", "web attribute",
|
||||
},
|
||||
Keywords: []string{
|
||||
"define", "attribute", "element", "parameter", "submission", "mapping", "key", "entry", "binding",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return inputName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("svg", Info{
|
||||
Display: "Image SVG",
|
||||
Category: "html",
|
||||
Description: "Scalable Vector Graphics used to display vector images in web content",
|
||||
Example: `<svg width="369" height="289">
|
||||
<rect fill="#4f2958" />
|
||||
<polygon points="382,87 418,212 415,110" fill="#fffbb7" />
|
||||
</svg>`,
|
||||
Output: "string",
|
||||
ContentType: "image/svg+xml",
|
||||
Aliases: []string{
|
||||
"vector graphic", "xml image", "scalable format", "web graphic", "svg file",
|
||||
},
|
||||
Keywords: []string{
|
||||
"scalable", "vector", "graphics", "image", "drawing", "markup", "shape", "color", "path", "render",
|
||||
},
|
||||
|
||||
Params: []Param{
|
||||
{Field: "width", Display: "Width", Type: "int", Default: "500", Description: "Width in px"},
|
||||
{Field: "height", Display: "Height", Type: "int", Default: "500", Description: "Height in px"},
|
||||
{Field: "type", Display: "Type", Type: "string", Optional: true, Options: data.GetSubData("html", "svg"), Description: "Sub child element type"},
|
||||
{Field: "colors", Display: "Colors", Type: "[]string", Optional: true, Description: "Hex or RGB array of colors to use"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
// Setup new options
|
||||
options := SVGOptions{}
|
||||
var err error
|
||||
|
||||
options.Width, err = info.GetInt(m, "width")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if options.Width < 10 || options.Width >= 1000 {
|
||||
return nil, errors.New("invalid image width, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
options.Height, err = info.GetInt(m, "height")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if options.Height < 10 || options.Height >= 1000 {
|
||||
return nil, errors.New("invalid image height, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
options.Type, err = info.GetString(m, "type")
|
||||
svgData := data.GetSubData("html", "svg")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If type is empty, set with random type
|
||||
if options.Type == "" {
|
||||
options.Type = randomString(f, svgData)
|
||||
}
|
||||
|
||||
// If not in date html svg type array, return error
|
||||
if !stringInSlice(options.Type, svgData) {
|
||||
return nil, errors.New("invalid svg type, must be one of " + strings.Join(svgData, ","))
|
||||
}
|
||||
|
||||
// Get colors
|
||||
options.Colors, err = info.GetStringArray(m, "colors")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// If colors is empty, set with random colors
|
||||
if len(options.Colors) == 0 {
|
||||
options.Colors = niceColors(f)
|
||||
}
|
||||
|
||||
return svg(f, &options), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
126
vendor/github.com/brianvoe/gofakeit/v7/image.go
generated
vendored
Normal file
126
vendor/github.com/brianvoe/gofakeit/v7/image.go
generated
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
img "image"
|
||||
imgCol "image/color"
|
||||
"image/jpeg"
|
||||
"image/png"
|
||||
)
|
||||
|
||||
// Image generates a random rgba image
|
||||
func Image(width int, height int) *img.RGBA { return image(GlobalFaker, width, height) }
|
||||
|
||||
// Image generates a random rgba image
|
||||
func (f *Faker) Image(width int, height int) *img.RGBA { return image(f, width, height) }
|
||||
|
||||
func image(f *Faker, width int, height int) *img.RGBA {
|
||||
upLeft := img.Point{0, 0}
|
||||
lowRight := img.Point{width, height}
|
||||
|
||||
img := img.NewRGBA(img.Rectangle{upLeft, lowRight})
|
||||
|
||||
// Set color for each pixel
|
||||
for x := 0; x < width; x++ {
|
||||
for y := 0; y < height; y++ {
|
||||
img.Set(x, y, imgCol.RGBA{uint8(number(f, 0, 255)), uint8(number(f, 0, 255)), uint8(number(f, 0, 255)), 0xff})
|
||||
}
|
||||
}
|
||||
|
||||
return img
|
||||
}
|
||||
|
||||
// ImageJpeg generates a random rgba jpeg image
|
||||
func ImageJpeg(width int, height int) []byte { return imageJpeg(GlobalFaker, width, height) }
|
||||
|
||||
// ImageJpeg generates a random rgba jpeg image
|
||||
func (f *Faker) ImageJpeg(width int, height int) []byte { return imageJpeg(f, width, height) }
|
||||
|
||||
func imageJpeg(f *Faker, width int, height int) []byte {
|
||||
buf := new(bytes.Buffer)
|
||||
jpeg.Encode(buf, image(f, width, height), nil)
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
// ImagePng generates a random rgba png image
|
||||
func ImagePng(width int, height int) []byte { return imagePng(GlobalFaker, width, height) }
|
||||
|
||||
// ImagePng generates a random rgba png image
|
||||
func (f *Faker) ImagePng(width int, height int) []byte { return imagePng(f, width, height) }
|
||||
|
||||
func imagePng(f *Faker, width int, height int) []byte {
|
||||
buf := new(bytes.Buffer)
|
||||
png.Encode(buf, image(f, width, height))
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
func addImageLookup() {
|
||||
AddFuncLookup("imagejpeg", Info{
|
||||
Display: "Image JPEG",
|
||||
Category: "image",
|
||||
Description: "Image file format known for its efficient compression and compatibility",
|
||||
Example: "file.jpeg - bytes",
|
||||
Output: "[]byte",
|
||||
ContentType: "image/jpeg",
|
||||
Aliases: []string{"jpeg", "jpg", "format", "compression", "compatibility", "photo"},
|
||||
Keywords: []string{"image", "efficient", "file", "bytes", "known", "rgba", "pixel", "width", "height"},
|
||||
Params: []Param{
|
||||
{Field: "width", Display: "Width", Type: "int", Default: "500", Description: "Image width in px"},
|
||||
{Field: "height", Display: "Height", Type: "int", Default: "500", Description: "Image height in px"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
width, err := info.GetInt(m, "width")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if width < 10 || width >= 1000 {
|
||||
return nil, errors.New("invalid image width, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
height, err := info.GetInt(m, "height")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if height < 10 || height >= 1000 {
|
||||
return nil, errors.New("invalid image height, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
return imageJpeg(f, width, height), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("imagepng", Info{
|
||||
Display: "Image PNG",
|
||||
Category: "image",
|
||||
Description: "Image file format known for its lossless compression and support for transparency",
|
||||
Example: "file.png - bytes",
|
||||
Output: "[]byte",
|
||||
ContentType: "image/png",
|
||||
Aliases: []string{"png", "format", "lossless", "compression", "transparency", "graphic"},
|
||||
Keywords: []string{"image", "support", "file", "bytes", "known", "rgba", "pixel", "width", "height"},
|
||||
Params: []Param{
|
||||
{Field: "width", Display: "Width", Type: "int", Default: "500", Description: "Image width in px"},
|
||||
{Field: "height", Display: "Height", Type: "int", Default: "500", Description: "Image height in px"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
width, err := info.GetInt(m, "width")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if width < 10 || width >= 1000 {
|
||||
return nil, errors.New("invalid image width, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
height, err := info.GetInt(m, "height")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if height < 10 || height >= 1000 {
|
||||
return nil, errors.New("invalid image height, must be greater than 10, less than 1000")
|
||||
}
|
||||
|
||||
return imagePng(f, width, height), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
473
vendor/github.com/brianvoe/gofakeit/v7/internet.go
generated
vendored
Normal file
473
vendor/github.com/brianvoe/gofakeit/v7/internet.go
generated
vendored
Normal file
@@ -0,0 +1,473 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
// DomainName will generate a random url domain name
|
||||
func DomainName() string { return domainName(GlobalFaker) }
|
||||
|
||||
// DomainName will generate a random url domain name
|
||||
func (f *Faker) DomainName() string { return domainName(f) }
|
||||
|
||||
func domainName(f *Faker) string {
|
||||
name := strings.Replace(strings.ToLower(jobDescriptor(f)+bs(f)), " ", "", -1)
|
||||
|
||||
return fmt.Sprintf("%s.%s", name, domainSuffix(f))
|
||||
}
|
||||
|
||||
// DomainSuffix will generate a random domain suffix
|
||||
func DomainSuffix() string { return domainSuffix(GlobalFaker) }
|
||||
|
||||
// DomainSuffix will generate a random domain suffix
|
||||
func (f *Faker) DomainSuffix() string { return domainSuffix(f) }
|
||||
|
||||
func domainSuffix(f *Faker) string {
|
||||
return getRandValue(f, []string{"internet", "domain_suffix"})
|
||||
}
|
||||
|
||||
// URL will generate a random url string
|
||||
func URL() string { return url(GlobalFaker) }
|
||||
|
||||
// URL will generate a random url string
|
||||
func (f *Faker) URL() string { return url(f) }
|
||||
|
||||
func url(f *Faker) string {
|
||||
// Slugs
|
||||
num := number(f, 1, 4)
|
||||
slug := make([]string, num)
|
||||
for i := 0; i < num; i++ {
|
||||
slug[i] = bs(f)
|
||||
}
|
||||
|
||||
scheme := randomString(f, []string{"https", "http"})
|
||||
path := strings.ToLower(strings.Join(slug, "/"))
|
||||
|
||||
url := fmt.Sprintf("%s://www.%s/%s", scheme, domainName(f), path)
|
||||
url = strings.Replace(url, " ", "", -1)
|
||||
|
||||
return url
|
||||
}
|
||||
|
||||
// HTTPMethod will generate a random http method
|
||||
func HTTPMethod() string { return httpMethod(GlobalFaker) }
|
||||
|
||||
// HTTPMethod will generate a random http method
|
||||
func (f *Faker) HTTPMethod() string { return httpMethod(f) }
|
||||
|
||||
func httpMethod(f *Faker) string {
|
||||
return getRandValue(f, []string{"internet", "http_method"})
|
||||
}
|
||||
|
||||
// IPv4Address will generate a random version 4 ip address
|
||||
func IPv4Address() string { return ipv4Address(GlobalFaker) }
|
||||
|
||||
// IPv4Address will generate a random version 4 ip address
|
||||
func (f *Faker) IPv4Address() string { return ipv4Address(f) }
|
||||
|
||||
func ipv4Address(f *Faker) string {
|
||||
num := func() int { return f.IntN(256) }
|
||||
|
||||
return fmt.Sprintf("%d.%d.%d.%d", num(), num(), num(), num())
|
||||
}
|
||||
|
||||
// IPv6Address will generate a random version 6 ip address
|
||||
func IPv6Address() string { return ipv6Address(GlobalFaker) }
|
||||
|
||||
// IPv6Address will generate a random version 6 ip address
|
||||
func (f *Faker) IPv6Address() string { return ipv6Address(f) }
|
||||
|
||||
func ipv6Address(f *Faker) string {
|
||||
num := func() int { return f.IntN(65536) }
|
||||
|
||||
return fmt.Sprintf("%x:%x:%x:%x:%x:%x:%x:%x", num(), num(), num(), num(), num(), num(), num(), num())
|
||||
}
|
||||
|
||||
// MacAddress will generate a random mac address
|
||||
func MacAddress() string { return macAddress(GlobalFaker) }
|
||||
|
||||
// MacAddress will generate a random mac address
|
||||
func (f *Faker) MacAddress() string { return macAddress(f) }
|
||||
|
||||
func macAddress(f *Faker) string {
|
||||
num := 255
|
||||
|
||||
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x", f.IntN(num), f.IntN(num), f.IntN(num), f.IntN(num), f.IntN(num), f.IntN(num))
|
||||
}
|
||||
|
||||
// HTTPStatusCode will generate a random status code
|
||||
func HTTPStatusCode() int { return httpStatusCode(GlobalFaker) }
|
||||
|
||||
// HTTPStatusCode will generate a random status code
|
||||
func (f *Faker) HTTPStatusCode() int { return httpStatusCode(f) }
|
||||
|
||||
func httpStatusCode(f *Faker) int {
|
||||
randInt, _ := strconv.Atoi(getRandValue(f, []string{"internet", "http_status_general"}))
|
||||
return randInt
|
||||
}
|
||||
|
||||
// HTTPStatusCodeSimple will generate a random simple status code
|
||||
func HTTPStatusCodeSimple() int { return httpStatusCodeSimple(GlobalFaker) }
|
||||
|
||||
// HTTPStatusCodeSimple will generate a random simple status code
|
||||
func (f *Faker) HTTPStatusCodeSimple() int { return httpStatusCodeSimple(f) }
|
||||
|
||||
func httpStatusCodeSimple(f *Faker) int {
|
||||
randInt, _ := strconv.Atoi(getRandValue(f, []string{"internet", "http_status_simple"}))
|
||||
return randInt
|
||||
}
|
||||
|
||||
// LogLevel will generate a random log level
|
||||
// See data/LogLevels for list of available levels
|
||||
func LogLevel(logType string) string { return logLevel(GlobalFaker, logType) }
|
||||
|
||||
// LogLevel will generate a random log level
|
||||
// See data/LogLevels for list of available levels
|
||||
func (f *Faker) LogLevel(logType string) string { return logLevel(f, logType) }
|
||||
|
||||
func logLevel(f *Faker, logType string) string {
|
||||
if _, ok := data.LogLevels[logType]; ok {
|
||||
return getRandValue(f, []string{"log_level", logType})
|
||||
}
|
||||
|
||||
return getRandValue(f, []string{"log_level", "general"})
|
||||
}
|
||||
|
||||
// UserAgent will generate a random broswer user agent
|
||||
func UserAgent() string { return userAgent(GlobalFaker) }
|
||||
|
||||
// UserAgent will generate a random broswer user agent
|
||||
func (f *Faker) UserAgent() string { return userAgent(f) }
|
||||
|
||||
func userAgent(f *Faker) string {
|
||||
randNum := randIntRange(f, 0, 4)
|
||||
switch randNum {
|
||||
case 0:
|
||||
return chromeUserAgent(f)
|
||||
case 1:
|
||||
return firefoxUserAgent(f)
|
||||
case 2:
|
||||
return safariUserAgent(f)
|
||||
case 3:
|
||||
return operaUserAgent(f)
|
||||
default:
|
||||
return chromeUserAgent(f)
|
||||
}
|
||||
}
|
||||
|
||||
// ChromeUserAgent will generate a random chrome browser user agent string
|
||||
func ChromeUserAgent() string { return chromeUserAgent(GlobalFaker) }
|
||||
|
||||
// ChromeUserAgent will generate a random chrome browser user agent string
|
||||
func (f *Faker) ChromeUserAgent() string { return chromeUserAgent(f) }
|
||||
|
||||
func chromeUserAgent(f *Faker) string {
|
||||
randNum1 := strconv.Itoa(randIntRange(f, 531, 536)) + strconv.Itoa(randIntRange(f, 0, 2))
|
||||
randNum2 := strconv.Itoa(randIntRange(f, 36, 40))
|
||||
randNum3 := strconv.Itoa(randIntRange(f, 800, 899))
|
||||
return "Mozilla/5.0 " + "(" + randomPlatform(f) + ") AppleWebKit/" + randNum1 + " (KHTML, like Gecko) Chrome/" + randNum2 + ".0." + randNum3 + ".0 Mobile Safari/" + randNum1
|
||||
}
|
||||
|
||||
// FirefoxUserAgent will generate a random firefox broswer user agent string
|
||||
func FirefoxUserAgent() string { return firefoxUserAgent(GlobalFaker) }
|
||||
|
||||
// FirefoxUserAgent will generate a random firefox broswer user agent string
|
||||
func (f *Faker) FirefoxUserAgent() string { return firefoxUserAgent(f) }
|
||||
|
||||
func firefoxUserAgent(f *Faker) string {
|
||||
ver := "Gecko/" + date(f).Format("2006-01-02") + " Firefox/" + strconv.Itoa(randIntRange(f, 35, 37)) + ".0"
|
||||
platforms := []string{
|
||||
"(" + windowsPlatformToken(f) + "; " + "en-US" + "; rv:1.9." + strconv.Itoa(randIntRange(f, 0, 3)) + ".20) " + ver,
|
||||
"(" + linuxPlatformToken(f) + "; rv:" + strconv.Itoa(randIntRange(f, 5, 8)) + ".0) " + ver,
|
||||
"(" + macPlatformToken(f) + " rv:" + strconv.Itoa(randIntRange(f, 2, 7)) + ".0) " + ver,
|
||||
}
|
||||
|
||||
return "Mozilla/5.0 " + randomString(f, platforms)
|
||||
}
|
||||
|
||||
// SafariUserAgent will generate a random safari browser user agent string
|
||||
func SafariUserAgent() string { return safariUserAgent(GlobalFaker) }
|
||||
|
||||
// SafariUserAgent will generate a random safari browser user agent string
|
||||
func (f *Faker) SafariUserAgent() string { return safariUserAgent(f) }
|
||||
|
||||
func safariUserAgent(f *Faker) string {
|
||||
randNum := strconv.Itoa(randIntRange(f, 531, 536)) + "." + strconv.Itoa(randIntRange(f, 1, 51)) + "." + strconv.Itoa(randIntRange(f, 1, 8))
|
||||
ver := strconv.Itoa(randIntRange(f, 4, 6)) + "." + strconv.Itoa(randIntRange(f, 0, 2))
|
||||
|
||||
mobileDevices := []string{
|
||||
"iPhone; CPU iPhone OS",
|
||||
"iPad; CPU OS",
|
||||
}
|
||||
|
||||
platforms := []string{
|
||||
"(Windows; U; " + windowsPlatformToken(f) + ") AppleWebKit/" + randNum + " (KHTML, like Gecko) Version/" + ver + " Safari/" + randNum,
|
||||
"(" + macPlatformToken(f) + " rv:" + strconv.Itoa(randIntRange(f, 4, 7)) + ".0; en-US) AppleWebKit/" + randNum + " (KHTML, like Gecko) Version/" + ver + " Safari/" + randNum,
|
||||
"(" + randomString(f, mobileDevices) + " " + strconv.Itoa(randIntRange(f, 7, 9)) + "_" + strconv.Itoa(randIntRange(f, 0, 3)) + "_" + strconv.Itoa(randIntRange(f, 1, 3)) + " like Mac OS X; " + "en-US" + ") AppleWebKit/" + randNum + " (KHTML, like Gecko) Version/" + strconv.Itoa(randIntRange(f, 3, 5)) + ".0.5 Mobile/8B" + strconv.Itoa(randIntRange(f, 111, 120)) + " Safari/6" + randNum,
|
||||
}
|
||||
|
||||
return "Mozilla/5.0 " + randomString(f, platforms)
|
||||
}
|
||||
|
||||
// OperaUserAgent will generate a random opera browser user agent string
|
||||
func OperaUserAgent() string { return operaUserAgent(GlobalFaker) }
|
||||
|
||||
// OperaUserAgent will generate a random opera browser user agent string
|
||||
func (f *Faker) OperaUserAgent() string { return operaUserAgent(f) }
|
||||
|
||||
func operaUserAgent(f *Faker) string {
|
||||
platform := "(" + randomPlatform(f) + "; en-US) Presto/2." + strconv.Itoa(randIntRange(f, 8, 13)) + "." + strconv.Itoa(randIntRange(f, 160, 355)) + " Version/" + strconv.Itoa(randIntRange(f, 10, 13)) + ".00"
|
||||
|
||||
return "Opera/" + strconv.Itoa(randIntRange(f, 8, 10)) + "." + strconv.Itoa(randIntRange(f, 10, 99)) + " " + platform
|
||||
}
|
||||
|
||||
// linuxPlatformToken will generate a random linux platform
|
||||
func linuxPlatformToken(f *Faker) string {
|
||||
return "X11; Linux " + getRandValue(f, []string{"computer", "linux_processor"})
|
||||
}
|
||||
|
||||
// macPlatformToken will generate a random mac platform
|
||||
func macPlatformToken(f *Faker) string {
|
||||
return "Macintosh; " + getRandValue(f, []string{"computer", "mac_processor"}) + " Mac OS X 10_" + strconv.Itoa(randIntRange(f, 5, 9)) + "_" + strconv.Itoa(randIntRange(f, 0, 10))
|
||||
}
|
||||
|
||||
// windowsPlatformToken will generate a random windows platform
|
||||
func windowsPlatformToken(f *Faker) string {
|
||||
return getRandValue(f, []string{"computer", "windows_platform"})
|
||||
}
|
||||
|
||||
// randomPlatform will generate a random platform
|
||||
func randomPlatform(f *Faker) string {
|
||||
platforms := []string{
|
||||
linuxPlatformToken(f),
|
||||
macPlatformToken(f),
|
||||
windowsPlatformToken(f),
|
||||
}
|
||||
|
||||
return randomString(f, platforms)
|
||||
}
|
||||
|
||||
// HTTPVersion will generate a random http version
|
||||
func HTTPVersion() string { return httpVersion(GlobalFaker) }
|
||||
|
||||
// HTTPVersion will generate a random http version
|
||||
func (f *Faker) HTTPVersion() string { return httpVersion(f) }
|
||||
|
||||
func httpVersion(f *Faker) string {
|
||||
return getRandValue(f, []string{"internet", "http_version"})
|
||||
}
|
||||
|
||||
func addInternetLookup() {
|
||||
AddFuncLookup("url", Info{
|
||||
Display: "URL",
|
||||
Category: "internet",
|
||||
Description: "Web address that specifies the location of a resource on the internet",
|
||||
Example: "http://www.principalproductize.biz/target",
|
||||
Output: "string",
|
||||
Aliases: []string{"url string", "web address", "internet link", "website url", "resource locator"},
|
||||
Keywords: []string{"url", "web", "address", "http", "https", "www", "protocol", "scheme", "path", "domain", "location", "resource"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return url(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("domainname", Info{
|
||||
Display: "Domain Name",
|
||||
Category: "internet",
|
||||
Description: "Human-readable web address used to identify websites on the internet",
|
||||
Example: "centraltarget.biz",
|
||||
Output: "string",
|
||||
Aliases: []string{"domain name", "website name", "internet domain", "dns name", "site domain"},
|
||||
Keywords: []string{"domain", "name", "web", "address", "dns", "hostname", "resolve", "centraltarget", "biz", "website"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return domainName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("domainsuffix", Info{
|
||||
Display: "Domain Suffix",
|
||||
Category: "internet",
|
||||
Description: "The part of a domain name that comes after the last dot, indicating its type or purpose",
|
||||
Example: "org",
|
||||
Output: "string",
|
||||
Aliases: []string{"domain suffix", "domain extension", "top level domain", "domain ending"},
|
||||
Keywords: []string{"domain", "suffix", "tld", "top-level", "extension", "org", "com", "net", "gov", "edu", "mil", "int"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return domainSuffix(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("ipv4address", Info{
|
||||
Display: "IPv4 Address",
|
||||
Category: "internet",
|
||||
Description: "Numerical label assigned to devices on a network for identification and communication",
|
||||
Example: "222.83.191.222",
|
||||
Output: "string",
|
||||
Aliases: []string{"ip address", "network address", "internet address", "device ip", "ipv4 label"},
|
||||
Keywords: []string{"ipv4", "ip", "network", "internet", "protocol", "communication", "dotted", "decimal"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return ipv4Address(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("ipv6address", Info{
|
||||
Display: "IPv6 Address",
|
||||
Category: "internet",
|
||||
Description: "Numerical label assigned to devices on a network, providing a larger address space than IPv4 for internet communication",
|
||||
Example: "2001:cafe:8898:ee17:bc35:9064:5866:d019",
|
||||
Output: "string",
|
||||
Aliases: []string{"ip address", "network address", "internet address", "hex ip", "ipv6 label"},
|
||||
Keywords: []string{"ipv6", "ip", "network", "protocol", "hexadecimal", "identification"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return ipv6Address(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("httpmethod", Info{
|
||||
Display: "HTTP Method",
|
||||
Category: "internet",
|
||||
Description: "Verb used in HTTP requests to specify the desired action to be performed on a resource",
|
||||
Example: "HEAD",
|
||||
Output: "string",
|
||||
Aliases: []string{"http verb", "http action", "http request", "http command", "method name"},
|
||||
Keywords: []string{"http", "method", "verb", "get", "post", "put", "delete", "patch", "options", "head", "request", "action"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return httpMethod(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("loglevel", Info{
|
||||
Display: "Log Level",
|
||||
Category: "internet",
|
||||
Description: "Classification used in logging to indicate the severity or priority of a log entry",
|
||||
Example: "error",
|
||||
Output: "string",
|
||||
Aliases: []string{"log severity", "logging level", "log classification", "priority level", "event level"},
|
||||
Keywords: []string{"log", "level", "severity", "priority", "classification", "error", "warn", "info", "debug", "trace", "fatal", "critical"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return logLevel(f, ""), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("useragent", Info{
|
||||
Display: "User Agent",
|
||||
Category: "internet",
|
||||
Description: "String sent by a web browser to identify itself when requesting web content",
|
||||
Example: "Mozilla/5.0 (Windows NT 5.0) AppleWebKit/5362 (KHTML, like Gecko) Chrome/37.0.834.0 Mobile Safari/5362",
|
||||
Output: "string",
|
||||
Aliases: []string{"ua string", "browser ua", "http user agent", "client identifier", "browser identifier"},
|
||||
Keywords: []string{"useragent", "browser", "http", "request", "mozilla", "applewebkit", "chrome", "firefox", "safari", "opera", "mobile"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return userAgent(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("chromeuseragent", Info{
|
||||
Display: "Chrome User Agent",
|
||||
Category: "internet",
|
||||
Description: "The specific identification string sent by the Google Chrome web browser when making requests on the internet",
|
||||
Example: "Mozilla/5.0 (X11; Linux i686) AppleWebKit/5312 (KHTML, like Gecko) Chrome/39.0.836.0 Mobile Safari/5312",
|
||||
Output: "string",
|
||||
Aliases: []string{"chrome ua", "chrome browser ua", "google chrome ua", "chrome identifier", "chrome user agent"},
|
||||
Keywords: []string{"chrome", "google", "browser", "ua", "useragent", "applewebkit", "khtml", "gecko", "safari", "version"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return chromeUserAgent(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("firefoxuseragent", Info{
|
||||
Display: "Firefox User Agent",
|
||||
Category: "internet",
|
||||
Description: "The specific identification string sent by the Firefox web browser when making requests on the internet",
|
||||
Example: "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_8_3 rv:7.0) Gecko/1900-07-01 Firefox/37.0",
|
||||
Output: "string",
|
||||
Aliases: []string{"firefox ua", "firefox browser ua", "mozilla firefox ua", "gecko ua", "firefox identifier"},
|
||||
Keywords: []string{"firefox", "mozilla", "browser", "ua", "useragent", "gecko", "macintosh", "ppc", "version"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return firefoxUserAgent(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("operauseragent", Info{
|
||||
Display: "Opera User Agent",
|
||||
Category: "internet",
|
||||
Description: "The specific identification string sent by the Opera web browser when making requests on the internet",
|
||||
Example: "Opera/8.39 (Macintosh; U; PPC Mac OS X 10_8_7; en-US) Presto/2.9.335 Version/10.00",
|
||||
Output: "string",
|
||||
Aliases: []string{"opera ua", "opera browser ua", "opera identifier", "opera client", "opera user agent"},
|
||||
Keywords: []string{"opera", "presto", "ua", "browser", "useragent", "macintosh", "ppc", "os", "version"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return operaUserAgent(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("safariuseragent", Info{
|
||||
Display: "Safari User Agent",
|
||||
Category: "internet",
|
||||
Description: "The specific identification string sent by the Safari web browser when making requests on the internet",
|
||||
Example: "Mozilla/5.0 (iPad; CPU OS 8_3_2 like Mac OS X; en-US) AppleWebKit/531.15.6 (KHTML, like Gecko) Version/4.0.5 Mobile/8B120 Safari/6531.15.6",
|
||||
Output: "string",
|
||||
Aliases: []string{"safari ua", "apple safari ua", "safari browser ua", "safari identifier", "safari user agent"},
|
||||
Keywords: []string{"safari", "apple", "ipad", "os", "applewebkit", "khtml", "gecko", "browser", "ua", "mobile"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return safariUserAgent(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("httpstatuscode", Info{
|
||||
Display: "HTTP Status Code",
|
||||
Category: "internet",
|
||||
Description: "Random HTTP status code",
|
||||
Example: "200",
|
||||
Output: "int",
|
||||
Aliases: []string{"http status", "response code", "http response", "server status", "status identifier"},
|
||||
Keywords: []string{"http", "status", "code", "server", "response", "200", "404", "500", "301", "302", "401", "403"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return httpStatusCode(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("httpstatuscodesimple", Info{
|
||||
Display: "HTTP Status Code Simple",
|
||||
Category: "internet",
|
||||
Description: "Three-digit number returned by a web server to indicate the outcome of an HTTP request",
|
||||
Example: "404",
|
||||
Output: "int",
|
||||
Aliases: []string{"http status simple", "simple response code", "http response simple", "status code", "server code"},
|
||||
Keywords: []string{"http", "status", "code", "server", "response", "200", "404", "500", "301", "302", "401", "403"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return httpStatusCodeSimple(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("httpversion", Info{
|
||||
Display: "HTTP Version",
|
||||
Category: "internet",
|
||||
Description: "Number indicating the version of the HTTP protocol used for communication between a client and a server",
|
||||
Example: "HTTP/1.1",
|
||||
Output: "string",
|
||||
Aliases: []string{"http version", "protocol version", "http protocol", "http identifier", "http version string"},
|
||||
Keywords: []string{"http", "version", "protocol", "communication", "client", "server"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return httpVersion(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("macaddress", Info{
|
||||
Display: "MAC Address",
|
||||
Category: "internet",
|
||||
Description: "Unique identifier assigned to network interfaces, often used in Ethernet networks",
|
||||
Example: "cb:ce:06:94:22:e9",
|
||||
Output: "string",
|
||||
Aliases: []string{"mac address", "hardware address", "ethernet address", "network identifier", "link-layer address"},
|
||||
Keywords: []string{"mac", "address", "hardware", "ethernet", "network", "identifier", "oui", "vendor", "colon", "hexadecimal"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return macAddress(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
350
vendor/github.com/brianvoe/gofakeit/v7/json.go
generated
vendored
Normal file
350
vendor/github.com/brianvoe/gofakeit/v7/json.go
generated
vendored
Normal file
@@ -0,0 +1,350 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// JSONOptions defines values needed for json generation
|
||||
type JSONOptions struct {
|
||||
Type string `json:"type" xml:"type" fake:"{randomstring:[array,object]}"` // array or object
|
||||
RowCount int `json:"row_count" xml:"row_count" fake:"{number:1,10}"`
|
||||
Indent bool `json:"indent" xml:"indent"`
|
||||
Fields []Field `json:"fields" xml:"fields" fake:"{fields}"`
|
||||
}
|
||||
|
||||
type jsonKeyVal struct {
|
||||
Key string
|
||||
Value any
|
||||
}
|
||||
|
||||
type jsonOrderedKeyVal []*jsonKeyVal
|
||||
|
||||
func (okv jsonOrderedKeyVal) MarshalJSON() ([]byte, error) {
|
||||
var buf bytes.Buffer
|
||||
|
||||
buf.WriteString("{")
|
||||
for i, kv := range okv {
|
||||
// Add comma to all except last one
|
||||
if i != 0 {
|
||||
buf.WriteString(",")
|
||||
}
|
||||
|
||||
// Marshal key and write
|
||||
key, err := json.Marshal(kv.Key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buf.Write(key)
|
||||
|
||||
// Write colon separator
|
||||
buf.WriteString(":")
|
||||
|
||||
// Marshal value and write
|
||||
val, err := json.Marshal(kv.Value)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
buf.Write(val)
|
||||
}
|
||||
buf.WriteString("}")
|
||||
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
// JSON generates an object or an array of objects in json format.
|
||||
// A nil JSONOptions returns a randomly structured JSON.
|
||||
func JSON(jo *JSONOptions) ([]byte, error) { return jsonFunc(GlobalFaker, jo) }
|
||||
|
||||
// JSON generates an object or an array of objects in json format.
|
||||
// A nil JSONOptions returns a randomly structured JSON.
|
||||
func (f *Faker) JSON(jo *JSONOptions) ([]byte, error) { return jsonFunc(f, jo) }
|
||||
|
||||
// JSON generates an object or an array of objects in json format
|
||||
func jsonFunc(f *Faker, jo *JSONOptions) ([]byte, error) {
|
||||
if jo == nil {
|
||||
// We didn't get a JSONOptions, so create a new random one
|
||||
err := f.Struct(&jo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
// Check to make sure they passed in a type
|
||||
if jo.Type != "array" && jo.Type != "object" {
|
||||
return nil, errors.New("invalid type, must be array or object")
|
||||
}
|
||||
|
||||
if len(jo.Fields) <= 0 {
|
||||
return nil, errors.New("must pass fields in order to build json object(s)")
|
||||
}
|
||||
|
||||
if jo.Type == "object" {
|
||||
v := make(jsonOrderedKeyVal, len(jo.Fields))
|
||||
|
||||
// Loop through fields and add to them to map[string]any
|
||||
for i, field := range jo.Fields {
|
||||
if field.Function == "autoincrement" {
|
||||
// Object only has one
|
||||
v[i] = &jsonKeyVal{Key: field.Name, Value: 1}
|
||||
continue
|
||||
}
|
||||
|
||||
// Get function info
|
||||
funcInfo := GetFuncLookup(field.Function)
|
||||
if funcInfo == nil {
|
||||
return nil, errors.New("invalid function, " + field.Function + " does not exist")
|
||||
}
|
||||
|
||||
// Call function value
|
||||
value, err := funcInfo.Generate(f, &field.Params, funcInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if _, ok := value.([]byte); ok {
|
||||
// If it's a slice, unmarshal it into an interface
|
||||
var val any
|
||||
err := json.Unmarshal(value.([]byte), &val)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
value = val
|
||||
}
|
||||
|
||||
v[i] = &jsonKeyVal{Key: field.Name, Value: value}
|
||||
|
||||
}
|
||||
|
||||
// Marshal into bytes
|
||||
if jo.Indent {
|
||||
j, _ := json.MarshalIndent(v, "", " ")
|
||||
return j, nil
|
||||
}
|
||||
|
||||
j, _ := json.Marshal(v)
|
||||
return j, nil
|
||||
}
|
||||
|
||||
if jo.Type == "array" {
|
||||
// Make sure you set a row count
|
||||
if jo.RowCount <= 0 {
|
||||
return nil, errors.New("must have row count")
|
||||
}
|
||||
|
||||
v := make([]jsonOrderedKeyVal, jo.RowCount)
|
||||
|
||||
for i := 0; i < int(jo.RowCount); i++ {
|
||||
vr := make(jsonOrderedKeyVal, len(jo.Fields))
|
||||
|
||||
// Loop through fields and add to them to map[string]any
|
||||
for ii, field := range jo.Fields {
|
||||
if field.Function == "autoincrement" {
|
||||
vr[ii] = &jsonKeyVal{Key: field.Name, Value: i + 1} // +1 because index starts with 0
|
||||
continue
|
||||
}
|
||||
|
||||
// Get function info
|
||||
funcInfo := GetFuncLookup(field.Function)
|
||||
if funcInfo == nil {
|
||||
return nil, errors.New("invalid function, " + field.Function + " does not exist")
|
||||
}
|
||||
|
||||
// Call function value
|
||||
value, err := funcInfo.Generate(f, &field.Params, funcInfo)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if _, ok := value.([]byte); ok {
|
||||
// If it's a slice, unmarshal it into an interface
|
||||
var val any
|
||||
err := json.Unmarshal(value.([]byte), &val)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
value = val
|
||||
}
|
||||
|
||||
vr[ii] = &jsonKeyVal{Key: field.Name, Value: value}
|
||||
}
|
||||
|
||||
v[i] = vr
|
||||
}
|
||||
|
||||
// Marshal into bytes
|
||||
if jo.Indent {
|
||||
j, _ := json.MarshalIndent(v, "", " ")
|
||||
return j, nil
|
||||
}
|
||||
|
||||
j, _ := json.Marshal(v)
|
||||
return j, nil
|
||||
}
|
||||
|
||||
return nil, errors.New("invalid type, must be array or object")
|
||||
}
|
||||
|
||||
func addFileJSONLookup() {
|
||||
AddFuncLookup("json", Info{
|
||||
Display: "JSON",
|
||||
Category: "file",
|
||||
Description: "Format for structured data interchange used in programming, returns an object or an array of objects",
|
||||
Example: `[
|
||||
{ "first_name": "Markus", "last_name": "Moen", "password": "Dc0VYXjkWABx" },
|
||||
{ "first_name": "Osborne", "last_name": "Hilll", "password": "XPJ9OVNbs5lm" },
|
||||
{ "first_name": "Mertie", "last_name": "Halvorson", "password": "eyl3bhwfV8wA" }
|
||||
]`,
|
||||
Output: "[]byte",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"data", "interchange", "structured", "format", "serialization", "api"},
|
||||
Keywords: []string{"json", "object", "array", "fields", "indent", "rowcount", "type", "serialize", "deserialize", "marshal", "unmarshal"},
|
||||
Params: []Param{
|
||||
{Field: "type", Display: "Type", Type: "string", Default: "object", Options: []string{"object", "array"}, Description: "Type of JSON, object or array"},
|
||||
{Field: "rowcount", Display: "Row Count", Type: "int", Default: "100", Description: "Number of rows in JSON array"},
|
||||
{Field: "indent", Display: "Indent", Type: "bool", Default: "false", Description: "Whether or not to add indents and newlines"},
|
||||
{Field: "fields", Display: "Fields", Type: "[]Field", Description: "Fields containing key name and function to run in json format"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
jo := JSONOptions{}
|
||||
|
||||
typ, err := info.GetString(m, "type")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jo.Type = typ
|
||||
|
||||
rowcount, err := info.GetInt(m, "rowcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jo.RowCount = rowcount
|
||||
|
||||
indent, err := info.GetBool(m, "indent")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
jo.Indent = indent
|
||||
|
||||
fieldsStr, err := info.GetStringArray(m, "fields")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Check to make sure fields has length
|
||||
if len(fieldsStr) > 0 {
|
||||
jo.Fields = make([]Field, len(fieldsStr))
|
||||
|
||||
for i, f := range fieldsStr {
|
||||
// Unmarshal fields string into fields array
|
||||
err = json.Unmarshal([]byte(f), &jo.Fields[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return jsonFunc(f, &jo)
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// encoding/json.RawMessage is a special case of []byte
|
||||
// it cannot be handled as a reflect.Array/reflect.Slice
|
||||
// because it needs additional structure in the output
|
||||
func rJsonRawMessage(f *Faker, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
err := rCustom(f, v, tag)
|
||||
if err == nil {
|
||||
jsonData := v.Bytes()
|
||||
if !json.Valid(jsonData) {
|
||||
fName, _ := parseNameAndParamsFromTag(tag)
|
||||
return errors.New("custom function " + fName + " returned invalid json data: " + string(jsonData))
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
b, err := f.JSON(nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetBytes(b)
|
||||
return nil
|
||||
}
|
||||
|
||||
// encoding/json.Number is a special case of string
|
||||
// that represents a JSON number literal.
|
||||
// It cannot be handled as a string because it needs to
|
||||
// represent an integer or a floating-point number.
|
||||
func rJsonNumber(f *Faker, v reflect.Value, tag string) error {
|
||||
var ret json.Number
|
||||
|
||||
var numberType string
|
||||
|
||||
if tag == "" {
|
||||
numberType = f.RandomString([]string{"int", "float"})
|
||||
|
||||
switch numberType {
|
||||
case "int":
|
||||
retInt := f.Int16()
|
||||
ret = json.Number(strconv.Itoa(int(retInt)))
|
||||
case "float":
|
||||
retFloat := f.Float64()
|
||||
ret = json.Number(strconv.FormatFloat(retFloat, 'f', -1, 64))
|
||||
}
|
||||
} else {
|
||||
fName, fParams := parseNameAndParamsFromTag(tag)
|
||||
info := GetFuncLookup(fName)
|
||||
if info == nil {
|
||||
return fmt.Errorf("invalid function, %s does not exist", fName)
|
||||
}
|
||||
|
||||
// Parse map params
|
||||
mapParams, err := parseMapParams(info, fParams)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
valueIface, err := info.Generate(f, mapParams, info)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch value := valueIface.(type) {
|
||||
case int:
|
||||
ret = json.Number(strconv.FormatInt(int64(value), 10))
|
||||
case int8:
|
||||
ret = json.Number(strconv.FormatInt(int64(value), 10))
|
||||
case int16:
|
||||
ret = json.Number(strconv.FormatInt(int64(value), 10))
|
||||
case int32:
|
||||
ret = json.Number(strconv.FormatInt(int64(value), 10))
|
||||
case int64:
|
||||
ret = json.Number(strconv.FormatInt(int64(value), 10))
|
||||
case uint:
|
||||
ret = json.Number(strconv.FormatUint(uint64(value), 10))
|
||||
case uint8:
|
||||
ret = json.Number(strconv.FormatUint(uint64(value), 10))
|
||||
case uint16:
|
||||
ret = json.Number(strconv.FormatUint(uint64(value), 10))
|
||||
case uint32:
|
||||
ret = json.Number(strconv.FormatUint(uint64(value), 10))
|
||||
case uint64:
|
||||
ret = json.Number(strconv.FormatUint(uint64(value), 10))
|
||||
case float32:
|
||||
ret = json.Number(strconv.FormatFloat(float64(value), 'f', -1, 64))
|
||||
case float64:
|
||||
ret = json.Number(strconv.FormatFloat(float64(value), 'f', -1, 64))
|
||||
default:
|
||||
return fmt.Errorf("invalid type, %s is not a valid type for json.Number", reflect.TypeOf(value))
|
||||
}
|
||||
}
|
||||
v.Set(reflect.ValueOf(ret))
|
||||
return nil
|
||||
}
|
||||
89
vendor/github.com/brianvoe/gofakeit/v7/languages.go
generated
vendored
Normal file
89
vendor/github.com/brianvoe/gofakeit/v7/languages.go
generated
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
package gofakeit
|
||||
|
||||
// Language will return a random language
|
||||
func Language() string { return language(GlobalFaker) }
|
||||
|
||||
// Language will return a random language
|
||||
func (f *Faker) Language() string { return language(f) }
|
||||
|
||||
func language(f *Faker) string { return getRandValue(f, []string{"language", "long"}) }
|
||||
|
||||
// LanguageAbbreviation will return a random language abbreviation
|
||||
func LanguageAbbreviation() string { return languageAbbreviation(GlobalFaker) }
|
||||
|
||||
// LanguageAbbreviation will return a random language abbreviation
|
||||
func (f *Faker) LanguageAbbreviation() string { return languageAbbreviation(f) }
|
||||
|
||||
func languageAbbreviation(f *Faker) string { return getRandValue(f, []string{"language", "short"}) }
|
||||
|
||||
// LanguageBCP will return a random language BCP (Best Current Practices)
|
||||
func LanguageBCP() string { return languageBCP(GlobalFaker) }
|
||||
|
||||
// LanguageBCP will return a random language BCP (Best Current Practices)
|
||||
func (f *Faker) LanguageBCP() string { return languageBCP(f) }
|
||||
|
||||
func languageBCP(f *Faker) string { return getRandValue(f, []string{"language", "bcp"}) }
|
||||
|
||||
// ProgrammingLanguage will return a random programming language
|
||||
func ProgrammingLanguage() string { return programmingLanguage(GlobalFaker) }
|
||||
|
||||
// ProgrammingLanguage will return a random programming language
|
||||
func (f *Faker) ProgrammingLanguage() string { return programmingLanguage(f) }
|
||||
|
||||
func programmingLanguage(f *Faker) string {
|
||||
return getRandValue(f, []string{"language", "programming"})
|
||||
}
|
||||
|
||||
func addLanguagesLookup() {
|
||||
AddFuncLookup("language", Info{
|
||||
Display: "Language",
|
||||
Category: "language",
|
||||
Description: "System of communication using symbols, words, and grammar to convey meaning between individuals",
|
||||
Example: "Kazakh",
|
||||
Output: "string",
|
||||
Aliases: []string{"spoken tongue", "dialect name", "native language", "speech form", "linguistic system"},
|
||||
Keywords: []string{"language", "communication", "symbols", "words", "grammar", "meaning", "system", "convey", "individuals"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return language(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("languageabbreviation", Info{
|
||||
Display: "Language Abbreviation",
|
||||
Category: "language",
|
||||
Description: "Shortened form of a language's name",
|
||||
Example: "kk",
|
||||
Output: "string",
|
||||
Aliases: []string{"language code", "iso code", "locale code", "short form", "abbreviated tag"},
|
||||
Keywords: []string{"abbreviation", "identifier", "shortened", "representation", "two-letter", "three-letter", "standard", "locale"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return languageAbbreviation(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("languagebcp", Info{
|
||||
Display: "Language BCP",
|
||||
Category: "language",
|
||||
Description: "Set of guidelines and standards for identifying and representing languages in computing and internet protocols",
|
||||
Example: "en-US",
|
||||
Output: "string",
|
||||
Aliases: []string{"bcp47 tag", "language tag", "locale identifier", "regional code", "protocol language code"},
|
||||
Keywords: []string{"guidelines", "standards", "rfc", "internet", "protocols", "representation", "locale", "region", "country"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return languageBCP(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("programminglanguage", Info{
|
||||
Display: "Programming Language",
|
||||
Category: "language",
|
||||
Description: "Formal system of instructions used to create software and perform computational tasks",
|
||||
Example: "Go",
|
||||
Output: "string",
|
||||
Aliases: []string{"coding language", "scripting language", "software language", "development language", "computer language"},
|
||||
Keywords: []string{"programming", "instructions", "formal", "system", "tasks", "development", "compilation", "execution"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return programmingLanguage(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
BIN
vendor/github.com/brianvoe/gofakeit/v7/logo.png
generated
vendored
Normal file
BIN
vendor/github.com/brianvoe/gofakeit/v7/logo.png
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
515
vendor/github.com/brianvoe/gofakeit/v7/lookup.go
generated
vendored
Normal file
515
vendor/github.com/brianvoe/gofakeit/v7/lookup.go
generated
vendored
Normal file
@@ -0,0 +1,515 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// FuncLookups is the primary map array with mapping to all available data
|
||||
var FuncLookups map[string]Info
|
||||
var lockFuncLookups sync.Mutex
|
||||
|
||||
// MapParams is the values to pass into a lookup generate
|
||||
type MapParams map[string]MapParamsValue
|
||||
|
||||
type MapParamsValue []string
|
||||
|
||||
// Info structures fields to better break down what each one generates
|
||||
type Info struct {
|
||||
Display string `json:"display"` // display name
|
||||
Category string `json:"category"` // category
|
||||
Description string `json:"description"` // description
|
||||
Example string `json:"example"` // example
|
||||
Output string `json:"output"` // output type
|
||||
Aliases []string `json:"aliases"` // alt names users might type
|
||||
Keywords []string `json:"keywords"` // free words and domain terms
|
||||
ContentType string `json:"content_type"` // content type
|
||||
Params []Param `json:"params"` // params
|
||||
Any any `json:"any"` // any
|
||||
Generate func(f *Faker, m *MapParams, info *Info) (any, error) `json:"-"` // generate function
|
||||
}
|
||||
|
||||
// Param is a breakdown of param requirements and type definition
|
||||
type Param struct {
|
||||
Field string `json:"field"`
|
||||
Display string `json:"display"`
|
||||
Type string `json:"type"`
|
||||
Optional bool `json:"optional"`
|
||||
Default string `json:"default"`
|
||||
Options []string `json:"options"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
// Field is used for defining what name and function you to generate for file outuputs
|
||||
type Field struct {
|
||||
Name string `json:"name"`
|
||||
Function string `json:"function"`
|
||||
Params MapParams `json:"params"`
|
||||
}
|
||||
|
||||
func init() { initLookup() }
|
||||
|
||||
// init will add all the functions to MapLookups
|
||||
func initLookup() {
|
||||
addAddressLookup()
|
||||
addAnimalLookup()
|
||||
addAppLookup()
|
||||
addAuthLookup()
|
||||
addBeerLookup()
|
||||
addBookLookup()
|
||||
addCarLookup()
|
||||
addCelebrityLookup()
|
||||
addColorLookup()
|
||||
addCompanyLookup()
|
||||
addDatabaseSQLLookup()
|
||||
addDateTimeLookup()
|
||||
addEmojiLookup()
|
||||
addErrorLookup()
|
||||
addFileCSVLookup()
|
||||
addFileJSONLookup()
|
||||
addFileLookup()
|
||||
addFileXMLLookup()
|
||||
addFinanceLookup()
|
||||
addFoodLookup()
|
||||
addGameLookup()
|
||||
addGenerateLookup()
|
||||
addHackerLookup()
|
||||
addHipsterLookup()
|
||||
addHtmlLookup()
|
||||
addImageLookup()
|
||||
addInternetLookup()
|
||||
addLanguagesLookup()
|
||||
addMinecraftLookup()
|
||||
addMiscLookup()
|
||||
addMovieLookup()
|
||||
addNumberLookup()
|
||||
addPaymentLookup()
|
||||
addPersonLookup()
|
||||
addProductLookup()
|
||||
addSchoolLookup()
|
||||
addSongLookup()
|
||||
addStringLookup()
|
||||
addTemplateLookup()
|
||||
addWeightedLookup()
|
||||
addWordAdjectiveLookup()
|
||||
addWordAdverbLookup()
|
||||
addWordConnectiveLookup()
|
||||
addWordGeneralLookup()
|
||||
addWordGrammerLookup()
|
||||
addWordNounLookup()
|
||||
addWordPrepositionLookup()
|
||||
addWordPronounLookup()
|
||||
addWordVerbLookup()
|
||||
addWordMiscLookup()
|
||||
addTextLookup()
|
||||
}
|
||||
|
||||
// internalFuncLookups is the internal map array with mapping to all available data
|
||||
var internalFuncLookups map[string]Info = map[string]Info{
|
||||
"fields": {
|
||||
Description: "Example fields for generating csv, json, xml, etc",
|
||||
Output: "gofakeit.Field",
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
function, _ := GetRandomSimpleFunc(f)
|
||||
return Field{
|
||||
Name: function,
|
||||
Function: function,
|
||||
}, nil
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
// NewMapParams will create a new MapParams
|
||||
func NewMapParams() *MapParams {
|
||||
return &MapParams{}
|
||||
}
|
||||
|
||||
// Add will take in a field and value and add it to the map params type
|
||||
func (m *MapParams) Add(field string, value string) {
|
||||
_, ok := (*m)[field]
|
||||
if !ok {
|
||||
(*m)[field] = []string{value}
|
||||
return
|
||||
}
|
||||
|
||||
(*m)[field] = append((*m)[field], value)
|
||||
}
|
||||
|
||||
// Get will return the array of string from the provided field
|
||||
func (m *MapParams) Get(field string) []string {
|
||||
return (*m)[field]
|
||||
}
|
||||
|
||||
// Size will return the total size of the underlying map
|
||||
func (m *MapParams) Size() int {
|
||||
size := 0
|
||||
for range *m {
|
||||
size++
|
||||
}
|
||||
return size
|
||||
}
|
||||
|
||||
// UnmarshalJSON will unmarshal the json into the []string
|
||||
func (m *MapParamsValue) UnmarshalJSON(data []byte) error {
|
||||
// check if the data is an array
|
||||
// if so, marshal it into m
|
||||
if data[0] == '[' {
|
||||
var values []any
|
||||
err := json.Unmarshal(data, &values)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// convert the values to array of strings
|
||||
for _, value := range values {
|
||||
typeOf := reflect.TypeOf(value).Kind().String()
|
||||
|
||||
if typeOf == "map" {
|
||||
v, err := json.Marshal(value)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*m = append(*m, string(v))
|
||||
} else {
|
||||
*m = append(*m, fmt.Sprintf("%v", value))
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// if not, then convert into a string and add it to m
|
||||
var s any
|
||||
if err := json.Unmarshal(data, &s); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
*m = append(*m, fmt.Sprintf("%v", s))
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetRandomSimpleFunc(f *Faker) (string, Info) {
|
||||
// Loop through all the functions and add them to a slice
|
||||
var keys []string
|
||||
for k, info := range FuncLookups {
|
||||
// Only grab simple functions
|
||||
if info.Params == nil {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
}
|
||||
|
||||
// Randomly grab a function from the slice
|
||||
randomKey := randomString(f, keys)
|
||||
|
||||
// Return the function name and info
|
||||
return randomKey, FuncLookups[randomKey]
|
||||
}
|
||||
|
||||
// AddFuncLookup takes a field and adds it to map
|
||||
func AddFuncLookup(functionName string, info Info) {
|
||||
if FuncLookups == nil {
|
||||
FuncLookups = make(map[string]Info)
|
||||
}
|
||||
|
||||
// Check content type
|
||||
if info.ContentType == "" {
|
||||
info.ContentType = "text/plain"
|
||||
}
|
||||
|
||||
lockFuncLookups.Lock()
|
||||
FuncLookups[functionName] = info
|
||||
lockFuncLookups.Unlock()
|
||||
}
|
||||
|
||||
// GetFuncLookup will lookup
|
||||
func GetFuncLookup(functionName string) *Info {
|
||||
var info Info
|
||||
var ok bool
|
||||
|
||||
// Check internal functions first
|
||||
info, ok = internalFuncLookups[functionName]
|
||||
if ok {
|
||||
return &info
|
||||
}
|
||||
|
||||
info, ok = FuncLookups[functionName]
|
||||
if ok {
|
||||
return &info
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// RemoveFuncLookup will remove a function from lookup
|
||||
func RemoveFuncLookup(functionName string) {
|
||||
_, ok := FuncLookups[functionName]
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
lockFuncLookups.Lock()
|
||||
delete(FuncLookups, functionName)
|
||||
lockFuncLookups.Unlock()
|
||||
}
|
||||
|
||||
// GetAny will retrieve Any field from Info
|
||||
func (i *Info) GetAny(m *MapParams, field string) (any, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Make sure value[0] exists
|
||||
if len(value) == 0 {
|
||||
return nil, fmt.Errorf("could not find field: %s", field)
|
||||
}
|
||||
|
||||
var anyValue any
|
||||
|
||||
// Try to convert to int
|
||||
valueInt, err := strconv.ParseInt(value[0], 10, 64)
|
||||
if err == nil {
|
||||
return int(valueInt), nil
|
||||
}
|
||||
|
||||
// Try to convert to float
|
||||
valueFloat, err := strconv.ParseFloat(value[0], 64)
|
||||
if err == nil {
|
||||
return valueFloat, nil
|
||||
}
|
||||
|
||||
// Try to convert to boolean
|
||||
valueBool, err := strconv.ParseBool(value[0])
|
||||
if err == nil {
|
||||
return valueBool, nil
|
||||
}
|
||||
|
||||
err = json.Unmarshal([]byte(value[0]), &anyValue)
|
||||
if err == nil {
|
||||
return valueBool, nil
|
||||
}
|
||||
|
||||
return value[0], nil
|
||||
}
|
||||
|
||||
// GetMap will retrieve map[string]any field from data
|
||||
func (i *Info) GetMap(m *MapParams, field string) (map[string]any, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var mapValue map[string]any
|
||||
err = json.Unmarshal([]byte(value[0]), &mapValue)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s field could not parse to map[string]any", field)
|
||||
}
|
||||
|
||||
return mapValue, nil
|
||||
}
|
||||
|
||||
// GetField will retrieve field from data
|
||||
func (i *Info) GetField(m *MapParams, field string) (*Param, []string, error) {
|
||||
// Get param
|
||||
var p *Param
|
||||
for _, param := range i.Params {
|
||||
if param.Field == field {
|
||||
p = ¶m
|
||||
break
|
||||
}
|
||||
}
|
||||
if p == nil {
|
||||
return nil, nil, fmt.Errorf("could not find param field %s", field)
|
||||
}
|
||||
|
||||
// Get value from map
|
||||
if m != nil {
|
||||
value, ok := (*m)[field]
|
||||
if !ok {
|
||||
// If default isnt empty use default
|
||||
if p.Default != "" {
|
||||
return p, []string{p.Default}, nil
|
||||
}
|
||||
|
||||
return nil, nil, fmt.Errorf("could not find field: %s", field)
|
||||
}
|
||||
|
||||
return p, value, nil
|
||||
} else if p.Default != "" {
|
||||
// If p.Type is []uint, then we need to convert it to []string
|
||||
if strings.HasPrefix(p.Default, "[") {
|
||||
// Remove [] from type
|
||||
defaultClean := p.Default[1 : len(p.Default)-1]
|
||||
|
||||
// Split on comma
|
||||
defaultSplit := strings.Split(defaultClean, ",")
|
||||
|
||||
return p, defaultSplit, nil
|
||||
}
|
||||
|
||||
// If default isnt empty use default
|
||||
return p, []string{p.Default}, nil
|
||||
}
|
||||
|
||||
return nil, nil, fmt.Errorf("could not find field: %s", field)
|
||||
}
|
||||
|
||||
// GetBool will retrieve boolean field from data
|
||||
func (i *Info) GetBool(m *MapParams, field string) (bool, error) {
|
||||
p, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// Try to convert to boolean
|
||||
valueBool, err := strconv.ParseBool(value[0])
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("%s field could not parse to bool value", p.Field)
|
||||
}
|
||||
|
||||
return valueBool, nil
|
||||
}
|
||||
|
||||
// GetInt will retrieve int field from data
|
||||
func (i *Info) GetInt(m *MapParams, field string) (int, error) {
|
||||
p, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Try to convert to int
|
||||
valueInt, err := strconv.ParseInt(value[0], 10, 64)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("%s field could not parse to int value", p.Field)
|
||||
}
|
||||
|
||||
return int(valueInt), nil
|
||||
}
|
||||
|
||||
// GetUint will retrieve uint field from data
|
||||
func (i *Info) GetUint(m *MapParams, field string) (uint, error) {
|
||||
p, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Try to convert to int
|
||||
valueUint, err := strconv.ParseUint(value[0], 10, 64)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("%s field could not parse to int value", p.Field)
|
||||
}
|
||||
|
||||
return uint(valueUint), nil
|
||||
}
|
||||
|
||||
// GetFloat32 will retrieve int field from data
|
||||
func (i *Info) GetFloat32(m *MapParams, field string) (float32, error) {
|
||||
p, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Try to convert to float
|
||||
valueFloat, err := strconv.ParseFloat(value[0], 32)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("%s field could not parse to float value", p.Field)
|
||||
}
|
||||
|
||||
return float32(valueFloat), nil
|
||||
}
|
||||
|
||||
// GetFloat64 will retrieve int field from data
|
||||
func (i *Info) GetFloat64(m *MapParams, field string) (float64, error) {
|
||||
p, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Try to convert to float
|
||||
valueFloat, err := strconv.ParseFloat(value[0], 64)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("%s field could not parse to float value", p.Field)
|
||||
}
|
||||
|
||||
return valueFloat, nil
|
||||
}
|
||||
|
||||
// GetString will retrieve string field from data
|
||||
func (i *Info) GetString(m *MapParams, field string) (string, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return value[0], nil
|
||||
}
|
||||
|
||||
// GetStringArray will retrieve []string field from data
|
||||
func (i *Info) GetStringArray(m *MapParams, field string) ([]string, error) {
|
||||
_, values, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return values, nil
|
||||
}
|
||||
|
||||
// GetIntArray will retrieve []int field from data
|
||||
func (i *Info) GetIntArray(m *MapParams, field string) ([]int, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var ints []int
|
||||
for i := 0; i < len(value); i++ {
|
||||
valueInt, err := strconv.ParseInt(value[i], 10, 64)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s value could not parse to int", value[i])
|
||||
}
|
||||
ints = append(ints, int(valueInt))
|
||||
}
|
||||
|
||||
return ints, nil
|
||||
}
|
||||
|
||||
// GetUintArray will retrieve []uint field from data
|
||||
func (i *Info) GetUintArray(m *MapParams, field string) ([]uint, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var uints []uint
|
||||
for i := 0; i < len(value); i++ {
|
||||
valueUint, err := strconv.ParseUint(value[i], 10, 64)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s value could not parse to uint", value[i])
|
||||
}
|
||||
uints = append(uints, uint(valueUint))
|
||||
}
|
||||
|
||||
return uints, nil
|
||||
}
|
||||
|
||||
// GetFloat32Array will retrieve []float field from data
|
||||
func (i *Info) GetFloat32Array(m *MapParams, field string) ([]float32, error) {
|
||||
_, value, err := i.GetField(m, field)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var floats []float32
|
||||
for i := 0; i < len(value); i++ {
|
||||
valueFloat, err := strconv.ParseFloat(value[i], 32)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%s value could not parse to float", value[i])
|
||||
}
|
||||
floats = append(floats, float32(valueFloat))
|
||||
}
|
||||
|
||||
return floats, nil
|
||||
}
|
||||
BIN
vendor/github.com/brianvoe/gofakeit/v7/merch.png
generated
vendored
Normal file
BIN
vendor/github.com/brianvoe/gofakeit/v7/merch.png
generated
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
401
vendor/github.com/brianvoe/gofakeit/v7/minecraft.go
generated
vendored
Normal file
401
vendor/github.com/brianvoe/gofakeit/v7/minecraft.go
generated
vendored
Normal file
@@ -0,0 +1,401 @@
|
||||
package gofakeit
|
||||
|
||||
// MinecraftOre will generate a random Minecraft ore
|
||||
func MinecraftOre() string { return minecraftOre(GlobalFaker) }
|
||||
|
||||
// MinecraftOre will generate a random Minecraft ore
|
||||
func (f *Faker) MinecraftOre() string { return minecraftOre(f) }
|
||||
|
||||
func minecraftOre(f *Faker) string { return getRandValue(f, []string{"minecraft", "ore"}) }
|
||||
|
||||
// MinecraftWood will generate a random Minecraft wood
|
||||
func MinecraftWood() string { return minecraftWood(GlobalFaker) }
|
||||
|
||||
// MinecraftWood will generate a random Minecraft wood
|
||||
func (f *Faker) MinecraftWood() string { return minecraftWood(f) }
|
||||
|
||||
func minecraftWood(f *Faker) string { return getRandValue(f, []string{"minecraft", "wood"}) }
|
||||
|
||||
// MinecraftArmorTier will generate a random Minecraft armor tier
|
||||
func MinecraftArmorTier() string { return minecraftArmorTier(GlobalFaker) }
|
||||
|
||||
// MinecraftArmorTier will generate a random Minecraft armor tier
|
||||
func (f *Faker) MinecraftArmorTier() string { return minecraftArmorTier(f) }
|
||||
|
||||
func minecraftArmorTier(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "armortier"})
|
||||
}
|
||||
|
||||
// MinecraftArmorPart will generate a random Minecraft armor part
|
||||
func MinecraftArmorPart() string { return minecraftArmorPart(GlobalFaker) }
|
||||
|
||||
// MinecraftArmorPart will generate a random Minecraft armor part
|
||||
func (f *Faker) MinecraftArmorPart() string { return minecraftArmorPart(f) }
|
||||
|
||||
func minecraftArmorPart(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "armorpart"})
|
||||
}
|
||||
|
||||
// MinecraftWeapon will generate a random Minecraft weapon
|
||||
func MinecraftWeapon() string { return minecraftWeapon(GlobalFaker) }
|
||||
|
||||
// MinecraftWeapon will generate a random Minecraft weapon
|
||||
func (f *Faker) MinecraftWeapon() string { return minecraftWeapon(f) }
|
||||
|
||||
func minecraftWeapon(f *Faker) string { return getRandValue(f, []string{"minecraft", "weapon"}) }
|
||||
|
||||
// MinecraftTool will generate a random Minecraft tool
|
||||
func MinecraftTool() string { return minecraftTool(GlobalFaker) }
|
||||
|
||||
// MinecraftTool will generate a random Minecraft tool
|
||||
func (f *Faker) MinecraftTool() string { return minecraftTool(f) }
|
||||
|
||||
func minecraftTool(f *Faker) string { return getRandValue(f, []string{"minecraft", "tool"}) }
|
||||
|
||||
// MinecraftDye will generate a random Minecraft dye
|
||||
func MinecraftDye() string { return minecraftDye(GlobalFaker) }
|
||||
|
||||
// MinecraftDye will generate a random Minecraft dye
|
||||
func (f *Faker) MinecraftDye() string { return minecraftDye(f) }
|
||||
|
||||
func minecraftDye(f *Faker) string { return getRandValue(f, []string{"minecraft", "dye"}) }
|
||||
|
||||
// MinecraftFood will generate a random Minecraft food
|
||||
func MinecraftFood() string { return minecraftFood(GlobalFaker) }
|
||||
|
||||
// MinecraftFood will generate a random Minecraft food
|
||||
func (f *Faker) MinecraftFood() string { return minecraftFood(f) }
|
||||
|
||||
func minecraftFood(f *Faker) string { return getRandValue(f, []string{"minecraft", "food"}) }
|
||||
|
||||
// MinecraftAnimal will generate a random Minecraft animal
|
||||
func MinecraftAnimal() string { return minecraftAnimal(GlobalFaker) }
|
||||
|
||||
// MinecraftAnimal will generate a random Minecraft animal
|
||||
func (f *Faker) MinecraftAnimal() string { return minecraftAnimal(f) }
|
||||
|
||||
func minecraftAnimal(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "animal"})
|
||||
}
|
||||
|
||||
// MinecraftVillagerJob will generate a random Minecraft villager job
|
||||
func MinecraftVillagerJob() string { return minecraftVillagerJob(GlobalFaker) }
|
||||
|
||||
// MinecraftVillagerJob will generate a random Minecraft villager job
|
||||
func (f *Faker) MinecraftVillagerJob() string { return minecraftVillagerJob(f) }
|
||||
|
||||
func minecraftVillagerJob(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "villagerjob"})
|
||||
}
|
||||
|
||||
// MinecraftVillagerStation will generate a random Minecraft villager station
|
||||
func MinecraftVillagerStation() string { return minecraftVillagerStation(GlobalFaker) }
|
||||
|
||||
// MinecraftVillagerStation will generate a random Minecraft villager station
|
||||
func (f *Faker) MinecraftVillagerStation() string { return minecraftVillagerStation(f) }
|
||||
|
||||
func minecraftVillagerStation(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "villagerstation"})
|
||||
}
|
||||
|
||||
// MinecraftVillagerLevel will generate a random Minecraft villager level
|
||||
func MinecraftVillagerLevel() string { return minecraftVillagerLevel(GlobalFaker) }
|
||||
|
||||
// MinecraftVillagerLevel will generate a random Minecraft villager level
|
||||
func (f *Faker) MinecraftVillagerLevel() string { return minecraftVillagerLevel(f) }
|
||||
|
||||
func minecraftVillagerLevel(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "villagerlevel"})
|
||||
}
|
||||
|
||||
// MinecraftMobPassive will generate a random Minecraft mob passive
|
||||
func MinecraftMobPassive() string { return minecraftMobPassive(GlobalFaker) }
|
||||
|
||||
// MinecraftMobPassive will generate a random Minecraft mob passive
|
||||
func (f *Faker) MinecraftMobPassive() string { return minecraftMobPassive(f) }
|
||||
|
||||
func minecraftMobPassive(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "mobpassive"})
|
||||
}
|
||||
|
||||
// MinecraftMobNeutral will generate a random Minecraft mob neutral
|
||||
func MinecraftMobNeutral() string { return minecraftMobNeutral(GlobalFaker) }
|
||||
|
||||
// MinecraftMobNeutral will generate a random Minecraft mob neutral
|
||||
func (f *Faker) MinecraftMobNeutral() string { return minecraftMobNeutral(f) }
|
||||
|
||||
func minecraftMobNeutral(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "mobneutral"})
|
||||
}
|
||||
|
||||
// MinecraftMobHostile will generate a random Minecraft mob hostile
|
||||
func MinecraftMobHostile() string { return minecraftMobHostile(GlobalFaker) }
|
||||
|
||||
// MinecraftMobHostile will generate a random Minecraft mob hostile
|
||||
func (f *Faker) MinecraftMobHostile() string { return minecraftMobHostile(f) }
|
||||
|
||||
func minecraftMobHostile(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "mobhostile"})
|
||||
}
|
||||
|
||||
// MinecraftMobBoss will generate a random Minecraft mob boss
|
||||
func MinecraftMobBoss() string { return minecraftMobBoss(GlobalFaker) }
|
||||
|
||||
// MinecraftMobBoss will generate a random Minecraft mob boss
|
||||
func (f *Faker) MinecraftMobBoss() string { return minecraftMobBoss(f) }
|
||||
|
||||
func minecraftMobBoss(f *Faker) string {
|
||||
return getRandValue(f, []string{"minecraft", "mobboss"})
|
||||
}
|
||||
|
||||
// MinecraftBiome will generate a random Minecraft biome
|
||||
func MinecraftBiome() string { return minecraftBiome(GlobalFaker) }
|
||||
|
||||
// MinecraftBiome will generate a random Minecraft biome
|
||||
func (f *Faker) MinecraftBiome() string { return minecraftBiome(f) }
|
||||
|
||||
func minecraftBiome(f *Faker) string { return getRandValue(f, []string{"minecraft", "biome"}) }
|
||||
|
||||
// MinecraftWeather will generate a random Minecraft weather
|
||||
func MinecraftWeather() string { return minecraftWeather(GlobalFaker) }
|
||||
|
||||
// MinecraftWeather will generate a random Minecraft weather
|
||||
func (f *Faker) MinecraftWeather() string { return minecraftWeather(f) }
|
||||
|
||||
func minecraftWeather(f *Faker) string { return getRandValue(f, []string{"minecraft", "weather"}) }
|
||||
|
||||
func addMinecraftLookup() {
|
||||
AddFuncLookup("minecraftore", Info{
|
||||
Display: "Minecraft ore",
|
||||
Category: "minecraft",
|
||||
Description: "Naturally occurring minerals found in the game Minecraft, used for crafting purposes",
|
||||
Example: "coal",
|
||||
Output: "string",
|
||||
Aliases: []string{"resource block", "crafting ore", "mining material", "mineral node", "in-game ore"},
|
||||
Keywords: []string{"naturally", "occurring", "coal", "iron", "gold", "diamond", "lapis", "emerald", "redstone"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftOre(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftwood", Info{
|
||||
Display: "Minecraft wood",
|
||||
Category: "minecraft",
|
||||
Description: "Natural resource in Minecraft, used for crafting various items and building structures",
|
||||
Example: "oak",
|
||||
Output: "string",
|
||||
Aliases: []string{"tree log", "wood block", "timber type", "crafting wood", "building wood"},
|
||||
Keywords: []string{"natural", "resource", "oak", "birch", "jungle", "spruce", "mangrove", "planks"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftWood(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftarmortier", Info{
|
||||
Display: "Minecraft armor tier",
|
||||
Category: "minecraft",
|
||||
Description: "Classification system for armor sets in Minecraft, indicating their effectiveness and protection level",
|
||||
Example: "iron",
|
||||
Output: "string",
|
||||
Aliases: []string{"armor level", "armor rank", "armor category", "tier type", "defense tier"},
|
||||
Keywords: []string{"classification", "iron", "diamond", "netherite", "leather", "chainmail", "gold", "effectiveness", "defense"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftArmorTier(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftarmorpart", Info{
|
||||
Display: "Minecraft armor part",
|
||||
Category: "minecraft",
|
||||
Description: "Component of an armor set in Minecraft, such as a helmet, chestplate, leggings, or boots",
|
||||
Example: "helmet",
|
||||
Output: "string",
|
||||
Aliases: []string{"armor piece", "armor gear", "armor equipment", "armor slot", "protective item"},
|
||||
Keywords: []string{"helmet", "chestplate", "leggings", "boots", "component", "set", "gear"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftArmorPart(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftweapon", Info{
|
||||
Display: "Minecraft weapon",
|
||||
Category: "minecraft",
|
||||
Description: "Tools and items used in Minecraft for combat and defeating hostile mobs",
|
||||
Example: "bow",
|
||||
Output: "string",
|
||||
Aliases: []string{"combat item", "fighting tool", "attack weapon", "battle gear", "mob killer"},
|
||||
Keywords: []string{"bow", "sword", "axe", "trident", "crossbow", "used", "combat", "damage"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftWeapon(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecrafttool", Info{
|
||||
Display: "Minecraft tool",
|
||||
Category: "minecraft",
|
||||
Description: "Items in Minecraft designed for specific tasks, including mining, digging, and building",
|
||||
Example: "shovel",
|
||||
Output: "string",
|
||||
Aliases: []string{"utility tool", "crafting tool", "gathering tool", "work tool", "task tool"},
|
||||
Keywords: []string{"pickaxe", "axe", "hoe", "shovel", "fishing-rod", "tasks", "mining", "digging"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftTool(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftdye", Info{
|
||||
Display: "Minecraft dye",
|
||||
Category: "minecraft",
|
||||
Description: "Items used to change the color of various in-game objects",
|
||||
Example: "white",
|
||||
Output: "string",
|
||||
Aliases: []string{"color dye", "pigment item", "colorant", "dye material", "color change"},
|
||||
Keywords: []string{"red", "blue", "green", "yellow", "white", "wool", "coloring", "sheep"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftDye(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftfood", Info{
|
||||
Display: "Minecraft food",
|
||||
Category: "minecraft",
|
||||
Description: "Consumable items in Minecraft that provide nourishment to the player character",
|
||||
Example: "apple",
|
||||
Output: "string",
|
||||
Aliases: []string{"edible item", "consumable block", "nourishment item", "hunger food", "survival food"},
|
||||
Keywords: []string{"apple", "bread", "meat", "carrot", "potato", "steak", "restore", "health", "hunger"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftFood(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftanimal", Info{
|
||||
Display: "Minecraft animal",
|
||||
Category: "minecraft",
|
||||
Description: "Non-hostile creatures in Minecraft, often used for resources and farming",
|
||||
Example: "chicken",
|
||||
Output: "string",
|
||||
Aliases: []string{"farm animal", "passive mob", "resource creature", "livestock", "tameable mob"},
|
||||
Keywords: []string{"cow", "pig", "sheep", "chicken", "horse", "llama", "resources", "farming"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftAnimal(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftvillagerjob", Info{
|
||||
Display: "Minecraft villager job",
|
||||
Category: "minecraft",
|
||||
Description: "The profession or occupation assigned to a villager character in the game",
|
||||
Example: "farmer",
|
||||
Output: "string",
|
||||
Aliases: []string{"villager profession", "npc job", "trade role", "occupation type", "work class"},
|
||||
Keywords: []string{"farmer", "librarian", "cleric", "armorer", "fletcher", "smith", "trading"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftVillagerJob(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftvillagerstation", Info{
|
||||
Display: "Minecraft villager station",
|
||||
Category: "minecraft",
|
||||
Description: "Designated area or structure in Minecraft where villagers perform their job-related tasks and trading",
|
||||
Example: "furnace",
|
||||
Output: "string",
|
||||
Aliases: []string{"workstation block", "villager station", "profession station", "trade station", "job block"},
|
||||
Keywords: []string{"furnace", "grindstone", "lectern", "brewing", "stand", "smithing", "table", "trading", "block"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftVillagerStation(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftvillagerlevel", Info{
|
||||
Display: "Minecraft villager level",
|
||||
Category: "minecraft",
|
||||
Description: "Measure of a villager's experience and proficiency in their assigned job or profession",
|
||||
Example: "master",
|
||||
Output: "string",
|
||||
Aliases: []string{"villager rank", "experience tier", "profession level", "npc level", "skill grade"},
|
||||
Keywords: []string{"novice", "apprentice", "journeyman", "expert", "master", "progression"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftVillagerLevel(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftmobpassive", Info{
|
||||
Display: "Minecraft mob passive",
|
||||
Category: "minecraft",
|
||||
Description: "Non-aggressive creatures in the game that do not attack players",
|
||||
Example: "cow",
|
||||
Output: "string",
|
||||
Aliases: []string{"peaceful mob", "friendly creature", "safe entity", "passive entity", "non-hostile mob"},
|
||||
Keywords: []string{"cow", "sheep", "chicken", "villager", "bat", "neutral", "farm"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftMobPassive(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftmobneutral", Info{
|
||||
Display: "Minecraft mob neutral",
|
||||
Category: "minecraft",
|
||||
Description: "Creature in the game that only becomes hostile if provoked, typically defending itself when attacked",
|
||||
Example: "bee",
|
||||
Output: "string",
|
||||
Aliases: []string{"conditional mob", "provokable creature", "neutral mob", "reactive entity", "self-defense mob"},
|
||||
Keywords: []string{"bee", "wolf", "enderman", "goat", "attack", "provoked", "defending"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftMobNeutral(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftmobhostile", Info{
|
||||
Display: "Minecraft mob hostile",
|
||||
Category: "minecraft",
|
||||
Description: "Aggressive creatures in the game that actively attack players when encountered",
|
||||
Example: "spider",
|
||||
Output: "string",
|
||||
Aliases: []string{"enemy mob", "aggressive entity", "dangerous creature", "threat mob", "monster mob"},
|
||||
Keywords: []string{"spider", "zombie", "skeleton", "creeper", "witch", "attack", "players"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftMobHostile(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftmobboss", Info{
|
||||
Display: "Minecraft mob boss",
|
||||
Category: "minecraft",
|
||||
Description: "Powerful hostile creature in the game, often found in challenging dungeons or structures",
|
||||
Example: "ender dragon",
|
||||
Output: "string",
|
||||
Aliases: []string{"boss mob", "elite mob", "endgame creature", "raid boss", "legendary mob"},
|
||||
Keywords: []string{"ender", "dragon", "wither", "warden", "powerful", "challenging", "structure", "hostile"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftMobBoss(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftbiome", Info{
|
||||
Display: "Minecraft biome",
|
||||
Category: "minecraft",
|
||||
Description: "Distinctive environmental regions in the game, characterized by unique terrain, vegetation, and weather",
|
||||
Example: "forest",
|
||||
Output: "string",
|
||||
Aliases: []string{"environment zone", "terrain type", "climate region", "biome area", "ecological zone"},
|
||||
Keywords: []string{"forest", "plains", "jungle", "desert", "swamp", "tundra", "savanna"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftBiome(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("minecraftweather", Info{
|
||||
Display: "Minecraft weather",
|
||||
Category: "minecraft",
|
||||
Description: "Atmospheric conditions in the game that include rain, thunderstorms, and clear skies, affecting gameplay and ambiance",
|
||||
Example: "rain",
|
||||
Output: "string",
|
||||
Aliases: []string{"climate condition", "weather effect", "game atmosphere", "sky state", "environmental condition"},
|
||||
Keywords: []string{"rain", "clear", "thunderstorm", "snow", "atmospheric", "storm", "lightning"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return minecraftWeather(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
170
vendor/github.com/brianvoe/gofakeit/v7/misc.go
generated
vendored
Normal file
170
vendor/github.com/brianvoe/gofakeit/v7/misc.go
generated
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"reflect"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
// Bool will generate a random boolean value
|
||||
func Bool() bool { return boolFunc(GlobalFaker) }
|
||||
|
||||
// Bool will generate a random boolean value
|
||||
func (f *Faker) Bool() bool { return boolFunc(f) }
|
||||
|
||||
func boolFunc(f *Faker) bool { return randIntRange(f, 0, 1) == 1 }
|
||||
|
||||
// UUID (version 4) will generate a random unique identifier based upon random numbers
|
||||
// Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
|
||||
func UUID() string { return uuid(GlobalFaker) }
|
||||
|
||||
// UUID (version 4) will generate a random unique identifier based upon random numbers
|
||||
// Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 8-4-4-4-12
|
||||
func (f *Faker) UUID() string { return uuid(f) }
|
||||
|
||||
func uuid(f *Faker) string {
|
||||
version := byte(4)
|
||||
uuid := make([]byte, 16)
|
||||
|
||||
// Read 16 random bytes
|
||||
for i := 0; i < 16; i++ {
|
||||
uuid[i] = byte(f.IntN(256))
|
||||
}
|
||||
|
||||
// Set version
|
||||
uuid[6] = (uuid[6] & 0x0f) | (version << 4)
|
||||
|
||||
// Set variant
|
||||
uuid[8] = (uuid[8] & 0xbf) | 0x80
|
||||
|
||||
buf := make([]byte, 36)
|
||||
hex.Encode(buf[0:8], uuid[0:4])
|
||||
buf[8] = dash
|
||||
hex.Encode(buf[9:13], uuid[4:6])
|
||||
buf[13] = dash
|
||||
hex.Encode(buf[14:18], uuid[6:8])
|
||||
buf[18] = dash
|
||||
hex.Encode(buf[19:23], uuid[8:10])
|
||||
buf[23] = dash
|
||||
hex.Encode(buf[24:], uuid[10:])
|
||||
|
||||
return string(buf)
|
||||
}
|
||||
|
||||
// ShuffleAnySlice takes in a slice and outputs it in a random order
|
||||
func ShuffleAnySlice(v any) { shuffleAnySlice(GlobalFaker, v) }
|
||||
|
||||
// ShuffleAnySlice takes in a slice and outputs it in a random order
|
||||
func (f *Faker) ShuffleAnySlice(v any) { shuffleAnySlice(f, v) }
|
||||
|
||||
func shuffleAnySlice(f *Faker, v any) {
|
||||
if v == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Check type of passed in value, if not a slice return with no action taken
|
||||
typ := reflect.TypeOf(v)
|
||||
if typ.Kind() != reflect.Slice {
|
||||
return
|
||||
}
|
||||
|
||||
s := reflect.ValueOf(v)
|
||||
n := s.Len()
|
||||
|
||||
if n <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
swap := func(i, j int) {
|
||||
tmp := reflect.ValueOf(s.Index(i).Interface())
|
||||
s.Index(i).Set(s.Index(j))
|
||||
s.Index(j).Set(tmp)
|
||||
}
|
||||
|
||||
//if size is > int32 probably it will never finish, or ran out of entropy
|
||||
i := n - 1
|
||||
for ; i > 0; i-- {
|
||||
j := int(int32NFunc(f, int32(i+1)))
|
||||
swap(i, j)
|
||||
}
|
||||
}
|
||||
|
||||
// FlipACoin will return a random value of Heads or Tails
|
||||
func FlipACoin() string { return flipACoin(GlobalFaker) }
|
||||
|
||||
// FlipACoin will return a random value of Heads or Tails
|
||||
func (f *Faker) FlipACoin() string { return flipACoin(f) }
|
||||
|
||||
func flipACoin(f *Faker) string {
|
||||
if boolFunc(f) {
|
||||
return "Heads"
|
||||
}
|
||||
|
||||
return "Tails"
|
||||
}
|
||||
|
||||
// RandomMapKey will return a random key from a map
|
||||
func RandomMapKey(mapI any) any { return randomMapKey(GlobalFaker, mapI) }
|
||||
|
||||
// RandomMapKey will return a random key from a map
|
||||
func (f *Faker) RandomMapKey(mapI any) any { return randomMapKey(f, mapI) }
|
||||
|
||||
func randomMapKey(f *Faker, mapI any) any {
|
||||
keys := reflect.ValueOf(mapI).MapKeys()
|
||||
return keys[f.IntN(len(keys))].Interface()
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
func addMiscLookup() {
|
||||
AddFuncLookup("uuid", Info{
|
||||
Display: "UUID",
|
||||
Category: "misc",
|
||||
Description: "128-bit identifier used to uniquely identify objects or entities in computer systems",
|
||||
Example: "590c1440-9888-45b0-bd51-a817ee07c3f2",
|
||||
Output: "string",
|
||||
Aliases: []string{"identifier", "unique", "guid", "id", "128-bit"},
|
||||
Keywords: []string{"uuid", "computer", "system", "objects", "entities", "identify", "version", "hexadecimal"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return uuid(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("bool", Info{
|
||||
Display: "Boolean",
|
||||
Category: "misc",
|
||||
Description: "Data type that represents one of two possible values, typically true or false",
|
||||
Example: "true",
|
||||
Output: "bool",
|
||||
Aliases: []string{"boolean", "true", "false", "logic", "binary"},
|
||||
Keywords: []string{"bool", "data", "type", "represents", "values", "typically", "two", "possible"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return boolFunc(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("flipacoin", Info{
|
||||
Display: "Flip A Coin",
|
||||
Category: "misc",
|
||||
Description: "Decision-making method involving the tossing of a coin to determine outcomes",
|
||||
Example: "Tails",
|
||||
Output: "string",
|
||||
Aliases: []string{"coin", "flip", "heads", "tails", "decision", "random"},
|
||||
Keywords: []string{"decision-making", "method", "tossing", "determine", "outcomes", "chance", "probability"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return flipACoin(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
95
vendor/github.com/brianvoe/gofakeit/v7/movie.go
generated
vendored
Normal file
95
vendor/github.com/brianvoe/gofakeit/v7/movie.go
generated
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
package gofakeit
|
||||
|
||||
func MovieName() string { return movieName(GlobalFaker) }
|
||||
|
||||
func (f *Faker) MovieName() string { return movieName(f) }
|
||||
|
||||
func movieName(f *Faker) string { return getRandValue(f, []string{"movie", "name"}) }
|
||||
|
||||
func MovieGenre() string { return movieGenre(GlobalFaker) }
|
||||
|
||||
func (f *Faker) MovieGenre() string { return movieGenre(f) }
|
||||
|
||||
func movieGenre(f *Faker) string { return getRandValue(f, []string{"movie", "genre"}) }
|
||||
|
||||
type MovieInfo struct {
|
||||
Name string `json:"name" xml:"name"`
|
||||
Genre string `json:"genre" xml:"genre"`
|
||||
}
|
||||
|
||||
func Movie() *MovieInfo { return movie(GlobalFaker) }
|
||||
|
||||
func (f *Faker) Movie() *MovieInfo { return movie(f) }
|
||||
|
||||
func movie(f *Faker) *MovieInfo {
|
||||
return &MovieInfo{
|
||||
Name: movieName(f),
|
||||
Genre: movieGenre(f),
|
||||
}
|
||||
}
|
||||
|
||||
func addMovieLookup() {
|
||||
AddFuncLookup("movie", Info{
|
||||
Display: "Movie",
|
||||
Category: "movie",
|
||||
Description: "A story told through moving pictures and sound",
|
||||
Example: `{
|
||||
"name": "Psycho",
|
||||
"genre": "Mystery"
|
||||
}`,
|
||||
Output: "map[string]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{"cinema", "picture", "story", "entertainment", "motion"},
|
||||
Keywords: []string{"movie", "film", "moving", "sound", "pictures", "told", "through", "psycho", "mystery"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return movie(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("moviename", Info{
|
||||
Display: "Movie Name",
|
||||
Category: "movie",
|
||||
Description: "Title or name of a specific film used for identification and reference",
|
||||
Example: "The Matrix",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"movie title",
|
||||
"film title",
|
||||
"film name",
|
||||
"motion picture title",
|
||||
"cinema title",
|
||||
},
|
||||
Keywords: []string{
|
||||
"movie", "film", "title", "name", "cinema",
|
||||
"motionpicture", "blockbuster", "feature", "picture",
|
||||
"hollywood", "bollywood", "screenplay", "screen",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return movieName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("moviegenre", Info{
|
||||
Display: "Genre",
|
||||
Category: "movie",
|
||||
Description: "Category that classifies movies based on common themes, styles, and storytelling approaches",
|
||||
Example: "Action",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"film genre",
|
||||
"movie category",
|
||||
"film type",
|
||||
"cinema genre",
|
||||
"movie classification",
|
||||
},
|
||||
Keywords: []string{
|
||||
"genre", "category", "type", "classification",
|
||||
"movie", "film", "cinema", "style", "theme",
|
||||
"drama", "comedy", "horror", "thriller", "romance",
|
||||
"documentary", "animation", "sci-fi", "fantasy", "action",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return movieGenre(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
890
vendor/github.com/brianvoe/gofakeit/v7/number.go
generated
vendored
Normal file
890
vendor/github.com/brianvoe/gofakeit/v7/number.go
generated
vendored
Normal file
@@ -0,0 +1,890 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/bits"
|
||||
)
|
||||
|
||||
// Number will generate a random number between given min and max
|
||||
func Number(min int, max int) int { return number(GlobalFaker, min, max) }
|
||||
|
||||
// Number will generate a random number between given min and max
|
||||
func (f *Faker) Number(min int, max int) int { return number(f, min, max) }
|
||||
|
||||
func number(f *Faker, min int, max int) int { return randIntRange(f, min, max) }
|
||||
|
||||
// Uint will generate a random uint value
|
||||
func Uint() uint { return uintFunc(GlobalFaker) }
|
||||
|
||||
// Uint will generate a random uint value
|
||||
func (f *Faker) Uint() uint { return uintFunc(f) }
|
||||
|
||||
func uintFunc(f *Faker) uint { return uint(f.Uint64()) }
|
||||
|
||||
// UintN will generate a random uint value between 0 and n
|
||||
func UintN(n uint) uint { return uintNFunc(GlobalFaker, n) }
|
||||
|
||||
// UintN will generate a random uint value between 0 and n
|
||||
func (f *Faker) UintN(n uint) uint { return uintNFunc(f, n) }
|
||||
|
||||
func uintNFunc(f *Faker, n uint) uint {
|
||||
if n == 0 {
|
||||
return 0
|
||||
}
|
||||
return uint(uint64NFunc(f, uint64(n)))
|
||||
}
|
||||
|
||||
// Uint8 will generate a random uint8 value
|
||||
func Uint8() uint8 { return uint8Func(GlobalFaker) }
|
||||
|
||||
// Uint8 will generate a random uint8 value
|
||||
func (f *Faker) Uint8() uint8 { return uint8Func(f) }
|
||||
|
||||
func uint8Func(f *Faker) uint8 { return uint8(randIntRange(f, minUint, math.MaxUint8)) }
|
||||
|
||||
// Uint16 will generate a random uint16 value
|
||||
func Uint16() uint16 { return uint16Func(GlobalFaker) }
|
||||
|
||||
// Uint16 will generate a random uint16 value
|
||||
func (f *Faker) Uint16() uint16 { return uint16Func(f) }
|
||||
|
||||
func uint16Func(f *Faker) uint16 { return uint16(randIntRange(f, minUint, math.MaxUint16)) }
|
||||
|
||||
// Uint32 will generate a random uint32 value
|
||||
func Uint32() uint32 { return uint32Func(GlobalFaker) }
|
||||
|
||||
// Uint32 will generate a random uint32 value
|
||||
func (f *Faker) Uint32() uint32 { return uint32Func(f) }
|
||||
|
||||
func uint32Func(f *Faker) uint32 { return uint32(f.Uint64() >> 32) }
|
||||
|
||||
// Uint64 will generate a random uint64 value
|
||||
func Uint64() uint64 { return GlobalFaker.Uint64() }
|
||||
|
||||
// Uint64 will generate a random uint64 value
|
||||
// This is the primary location in which the random number is generated.
|
||||
// This will be the only location in which reading from Rand.Uint64() is lockable
|
||||
func (f *Faker) Uint64() uint64 {
|
||||
// Check if the source is locked
|
||||
if f.Locked {
|
||||
// Lock the source
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
}
|
||||
|
||||
return f.Rand.Uint64()
|
||||
}
|
||||
|
||||
// uint64n is the no-bounds-checks version of Uint64N.
|
||||
// See https://cs.opensource.google/go/go/+/refs/tags/go1.22.0:src/math/rand/v2/rand.go;l=78
|
||||
// hidden as to not clutter with additional N functions
|
||||
func uint64NFunc(f *Faker, n uint64) uint64 {
|
||||
if is32bit && uint64(uint32(n)) == n {
|
||||
// create reusable function here
|
||||
uint32NFunc := func(f *Faker, n uint32) uint32 {
|
||||
if n&(n-1) == 0 { // n is power of two, can mask
|
||||
return uint32(f.Uint64()) & (n - 1)
|
||||
}
|
||||
|
||||
x := f.Uint64()
|
||||
lo1a, lo0 := bits.Mul32(uint32(x), n)
|
||||
hi, lo1b := bits.Mul32(uint32(x>>32), n)
|
||||
lo1, c := bits.Add32(lo1a, lo1b, 0)
|
||||
hi += c
|
||||
if lo1 == 0 && lo0 < uint32(n) {
|
||||
n64 := uint64(n)
|
||||
thresh := uint32(-n64 % n64)
|
||||
for lo1 == 0 && lo0 < thresh {
|
||||
x := f.Uint64()
|
||||
lo1a, lo0 = bits.Mul32(uint32(x), n)
|
||||
hi, lo1b = bits.Mul32(uint32(x>>32), n)
|
||||
lo1, c = bits.Add32(lo1a, lo1b, 0)
|
||||
hi += c
|
||||
}
|
||||
}
|
||||
return hi
|
||||
}
|
||||
|
||||
return uint64(uint32NFunc(f, uint32(n)))
|
||||
}
|
||||
if n&(n-1) == 0 { // n is power of two, can mask
|
||||
return f.Uint64() & (n - 1)
|
||||
}
|
||||
|
||||
hi, lo := bits.Mul64(f.Uint64(), n)
|
||||
if lo < n {
|
||||
thresh := -n % n
|
||||
for lo < thresh {
|
||||
hi, lo = bits.Mul64(f.Uint64(), n)
|
||||
}
|
||||
}
|
||||
return hi
|
||||
}
|
||||
|
||||
// UintRange will generate a random uint value between min and max
|
||||
func UintRange(min, max uint) uint { return uintRangeFunc(GlobalFaker, min, max) }
|
||||
|
||||
// UintRange will generate a random uint value between min and max
|
||||
func (f *Faker) UintRange(min, max uint) uint { return uintRangeFunc(f, min, max) }
|
||||
|
||||
func uintRangeFunc(f *Faker, min, max uint) uint { return randUintRange(f, min, max) }
|
||||
|
||||
// Int will generate a random int value
|
||||
func Int() int { return intFunc(GlobalFaker) }
|
||||
|
||||
// Int will generate a random int value
|
||||
func (f *Faker) Int() int { return intFunc(f) }
|
||||
|
||||
func intFunc(f *Faker) int { return int(uint(f.Uint64()) << 1 >> 1) }
|
||||
|
||||
// IntN will generate a random int value between 0 and n
|
||||
func IntN(n int) int { return intNFunc(GlobalFaker, n) }
|
||||
|
||||
// IntN will generate a random int value between 0 and n
|
||||
func (f *Faker) IntN(n int) int { return intNFunc(f, n) }
|
||||
|
||||
func intNFunc(f *Faker, n int) int {
|
||||
if n <= 0 {
|
||||
return 0
|
||||
}
|
||||
return int(uint64NFunc(f, uint64(n)))
|
||||
}
|
||||
|
||||
// Int8 will generate a random Int8 value
|
||||
func Int8() int8 { return int8Func(GlobalFaker) }
|
||||
|
||||
// Int8 will generate a random Int8 value
|
||||
func (f *Faker) Int8() int8 { return int8Func(f) }
|
||||
|
||||
func int8Func(f *Faker) int8 { return int8(randIntRange(f, math.MinInt8, math.MaxInt8)) }
|
||||
|
||||
// Int16 will generate a random int16 value
|
||||
func Int16() int16 { return int16Func(GlobalFaker) }
|
||||
|
||||
// Int16 will generate a random int16 value
|
||||
func (f *Faker) Int16() int16 { return int16Func(f) }
|
||||
|
||||
func int16Func(f *Faker) int16 { return int16(randIntRange(f, math.MinInt16, math.MaxInt16)) }
|
||||
|
||||
// Int32 will generate a random int32 value
|
||||
func Int32() int32 { return int32Func(GlobalFaker) }
|
||||
|
||||
// Int32 will generate a random int32 value
|
||||
func (f *Faker) Int32() int32 { return int32Func(f) }
|
||||
|
||||
func int32Func(f *Faker) int32 { return int32(f.Uint64() >> 33) }
|
||||
|
||||
// int32n is an identical computation to int64n
|
||||
// hidden as to not clutter with additional N functions
|
||||
func int32NFunc(f *Faker, n int32) int32 {
|
||||
if n <= 0 {
|
||||
return 0
|
||||
}
|
||||
return int32(uint64NFunc(f, uint64(n)))
|
||||
}
|
||||
|
||||
// Int64 will generate a random int64 value
|
||||
func Int64() int64 { return int64Func(GlobalFaker) }
|
||||
|
||||
// Int64 will generate a random int64 value
|
||||
func (f *Faker) Int64() int64 { return int64Func(f) }
|
||||
|
||||
func int64Func(f *Faker) int64 { return int64(f.Uint64() &^ (1 << 63)) }
|
||||
|
||||
// IntRange will generate a random int value between min and max
|
||||
func IntRange(min, max int) int { return intRangeFunc(GlobalFaker, min, max) }
|
||||
|
||||
// IntRange will generate a random int value between min and max
|
||||
func (f *Faker) IntRange(min, max int) int { return intRangeFunc(f, min, max) }
|
||||
|
||||
func intRangeFunc(f *Faker, min, max int) int { return randIntRange(f, min, max) }
|
||||
|
||||
// Float32 will generate a random float32 value
|
||||
func Float32() float32 { return float32Func(GlobalFaker) }
|
||||
|
||||
// Float32 will generate a random float32 value
|
||||
func (f *Faker) Float32() float32 { return float32Func(f) }
|
||||
|
||||
func float32Func(f *Faker) float32 {
|
||||
// There are exactly 1<<24 float32s in [0,1). Use Intn(1<<24) / (1<<24).
|
||||
return float32(f.Uint32()<<8>>8) / (1 << 24)
|
||||
}
|
||||
|
||||
// Float32Range will generate a random float32 value between min and max
|
||||
func Float32Range(min, max float32) float32 {
|
||||
return float32Range(GlobalFaker, min, max)
|
||||
}
|
||||
|
||||
// Float32Range will generate a random float32 value between min and max
|
||||
func (f *Faker) Float32Range(min, max float32) float32 {
|
||||
return float32Range(f, min, max)
|
||||
}
|
||||
|
||||
func float32Range(f *Faker, min, max float32) float32 {
|
||||
if min == max {
|
||||
return min
|
||||
}
|
||||
return f.Float32()*(max-min) + min
|
||||
}
|
||||
|
||||
// Float64 will generate a random float64 value
|
||||
func Float64() float64 {
|
||||
return float64Func(GlobalFaker)
|
||||
}
|
||||
|
||||
// Float64 will generate a random float64 value
|
||||
func (f *Faker) Float64() float64 {
|
||||
return float64Func(f)
|
||||
}
|
||||
|
||||
func float64Func(f *Faker) float64 {
|
||||
// There are exactly 1<<53 float64s in [0,1). Use Intn(1<<53) / (1<<53).
|
||||
return float64(f.Uint64()<<11>>11) / (1 << 53)
|
||||
}
|
||||
|
||||
// Float64Range will generate a random float64 value between min and max
|
||||
func Float64Range(min, max float64) float64 {
|
||||
return float64Range(GlobalFaker, min, max)
|
||||
}
|
||||
|
||||
// Float64Range will generate a random float64 value between min and max
|
||||
func (f *Faker) Float64Range(min, max float64) float64 {
|
||||
return float64Range(f, min, max)
|
||||
}
|
||||
|
||||
func float64Range(f *Faker, min, max float64) float64 {
|
||||
if min == max {
|
||||
return min
|
||||
}
|
||||
return f.Float64()*(max-min) + min
|
||||
}
|
||||
|
||||
// ShuffleInts will randomize a slice of ints
|
||||
func ShuffleInts(a []int) { shuffleInts(GlobalFaker, a) }
|
||||
|
||||
// ShuffleInts will randomize a slice of ints
|
||||
func (f *Faker) ShuffleInts(a []int) { shuffleInts(f, a) }
|
||||
|
||||
func shuffleInts(f *Faker, a []int) {
|
||||
for i := range a {
|
||||
j := f.IntN(i + 1)
|
||||
a[i], a[j] = a[j], a[i]
|
||||
}
|
||||
}
|
||||
|
||||
// RandomInt will take in a slice of int and return a randomly selected value
|
||||
func RandomInt(i []int) int { return randomInt(GlobalFaker, i) }
|
||||
|
||||
// RandomInt will take in a slice of int and return a randomly selected value
|
||||
func (f *Faker) RandomInt(i []int) int { return randomInt(f, i) }
|
||||
|
||||
func randomInt(f *Faker, i []int) int {
|
||||
size := len(i)
|
||||
if size == 0 {
|
||||
return 0
|
||||
}
|
||||
if size == 1 {
|
||||
return i[0]
|
||||
}
|
||||
return i[f.IntN(size)]
|
||||
}
|
||||
|
||||
// RandomUint will take in a slice of uint and return a randomly selected value
|
||||
func RandomUint(u []uint) uint { return randomUint(GlobalFaker, u) }
|
||||
|
||||
// RandomUint will take in a slice of uint and return a randomly selected value
|
||||
func (f *Faker) RandomUint(u []uint) uint { return randomUint(f, u) }
|
||||
|
||||
func randomUint(f *Faker, u []uint) uint {
|
||||
size := len(u)
|
||||
if size == 0 {
|
||||
return 0
|
||||
}
|
||||
if size == 1 {
|
||||
return u[0]
|
||||
}
|
||||
return u[f.IntN(size)]
|
||||
}
|
||||
|
||||
// HexUint will generate a random uint hex value with "0x" prefix
|
||||
func HexUint(bitSize int) string { return hexUint(GlobalFaker, bitSize) }
|
||||
|
||||
// HexUint will generate a random uint hex value with "0x" prefix
|
||||
func (f *Faker) HexUint(bitSize int) string { return hexUint(f, bitSize) }
|
||||
|
||||
func hexUint(f *Faker, bitSize int) string {
|
||||
digits := []byte("0123456789abcdef")
|
||||
hexLen := (bitSize >> 2) + 2
|
||||
if hexLen <= 2 {
|
||||
return "0x"
|
||||
}
|
||||
|
||||
s := make([]byte, hexLen)
|
||||
s[0], s[1] = '0', 'x'
|
||||
for i := 2; i < hexLen; i++ {
|
||||
s[i] = digits[f.IntN(16)]
|
||||
}
|
||||
return string(s)
|
||||
}
|
||||
|
||||
func addNumberLookup() {
|
||||
AddFuncLookup("number", Info{
|
||||
Display: "Number",
|
||||
Category: "number",
|
||||
Description: "Integer used for counting or measuring, with optional bounds",
|
||||
Example: "14866",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"integer value",
|
||||
"whole-number output",
|
||||
"bounded result",
|
||||
"range-limited value",
|
||||
"discrete quantity",
|
||||
},
|
||||
Keywords: []string{
|
||||
"number", "integer", "int", "random",
|
||||
"min", "max", "range", "bounded", "between", "inclusive",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "int", Default: "-2147483648", Description: "Minimum integer value"},
|
||||
{Field: "max", Display: "Max", Type: "int", Default: "2147483647", Description: "Maximum integer value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetInt(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetInt(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return number(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("uint", Info{
|
||||
Display: "Uint",
|
||||
Category: "number",
|
||||
Description: "Unsigned integer (nonnegative whole number)",
|
||||
Example: "14866",
|
||||
Output: "uint",
|
||||
Aliases: []string{
|
||||
"nonnegative value",
|
||||
"natural-count type",
|
||||
"unsigned whole",
|
||||
"zero-or-greater",
|
||||
"cardinal quantity",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uint", "unsigned", "integer", "nonnegative",
|
||||
"natural", "zero", "positive", "whole",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return uintFunc(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("uintn", Info{
|
||||
Display: "UintN",
|
||||
Category: "number",
|
||||
Description: "Unsigned integer between 0 (inclusive) and n (exclusive)",
|
||||
Example: "32783",
|
||||
Output: "uint",
|
||||
Aliases: []string{
|
||||
"upper-bounded uint",
|
||||
"cap-limited unsigned",
|
||||
"zero-to-n minus one",
|
||||
"exclusive-maximum uint",
|
||||
"limited-range unsigned",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uintn", "unsigned", "range", "upper",
|
||||
"limit", "bound", "cap", "max", "exclusive",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "n", Display: "N", Type: "uint", Default: "4294967295", Description: "Maximum uint value (exclusive)"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
n, err := info.GetUint(m, "n")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return uintNFunc(f, n), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("uint8", Info{
|
||||
Display: "Uint8",
|
||||
Category: "number",
|
||||
Description: "Unsigned 8-bit integer, range 0–255",
|
||||
Example: "152",
|
||||
Output: "uint8",
|
||||
Aliases: []string{
|
||||
"byte-sized unsigned",
|
||||
"octet quantity",
|
||||
"small-range unsigned",
|
||||
"one-byte value",
|
||||
"0-255 whole",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uint8", "unsigned", "8bit", "byte", "octet", "range",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return uint8Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("uint16", Info{
|
||||
Display: "Uint16",
|
||||
Category: "number",
|
||||
Description: "Unsigned 16-bit integer, range 0–65,535",
|
||||
Example: "34968",
|
||||
Output: "uint16",
|
||||
Aliases: []string{
|
||||
"two-byte unsigned",
|
||||
"ushort quantity",
|
||||
"medium-range unsigned",
|
||||
"port-sized value",
|
||||
"0-65535 whole",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uint16", "unsigned", "16bit", "word", "port", "range",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return uint16Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("uint32", Info{
|
||||
Display: "Uint32",
|
||||
Category: "number",
|
||||
Description: "Unsigned 32-bit integer, range 0–4,294,967,295",
|
||||
Example: "1075055705",
|
||||
Output: "uint32",
|
||||
Aliases: []string{
|
||||
"four-byte unsigned", "u32 numeric", "ipv4-scale value",
|
||||
"wide-range unsigned", "32-bit whole", "medium unsigned int", "standard unsigned int",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uint32", "unsigned", "32bit", "range", "ipv4", "integer", "binary", "numeric",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return uint32Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("uint64", Info{
|
||||
Display: "Uint64",
|
||||
Category: "number",
|
||||
Description: "Unsigned 64-bit integer, range 0–18,446,744,073,709,551,615",
|
||||
Example: "843730692693298265",
|
||||
Output: "uint64",
|
||||
Aliases: []string{
|
||||
"eight-byte unsigned", "u64 numeric", "very-large unsigned", "wide whole count", "extended-range value", "large uint", "unsigned bigint",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uint64", "unsigned", "64bit", "range", "bigint", "integer", "numeric", "arithmetic",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return f.Uint64(), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("uintrange", Info{
|
||||
Display: "Uint Range",
|
||||
Category: "number",
|
||||
Description: "Unsigned integer value within a given range",
|
||||
Example: "1075055705",
|
||||
Output: "uint",
|
||||
Aliases: []string{
|
||||
"unsigned span",
|
||||
"nonnegative interval",
|
||||
"ranged cardinal",
|
||||
"bounded unsigned result",
|
||||
"constrained uint output",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uintrange", "unsigned", "range", "min", "max",
|
||||
"bounds", "limits", "interval", "span",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "uint", Default: "0", Description: "Minimum uint value"},
|
||||
{Field: "max", Display: "Max", Type: "uint", Default: "4294967295", Description: "Maximum uint value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetUint(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetUint(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return uintRangeFunc(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("int", Info{
|
||||
Display: "Int",
|
||||
Category: "number",
|
||||
Description: "Signed integer",
|
||||
Example: "14866",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"signed whole",
|
||||
"two-sided count",
|
||||
"negative-or-positive value",
|
||||
"zero-inclusive whole",
|
||||
"general int type",
|
||||
},
|
||||
Keywords: []string{
|
||||
"int", "signed", "integer",
|
||||
"positive", "negative", "zero", "counting",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return intFunc(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("intn", Info{
|
||||
Display: "IntN",
|
||||
Category: "number",
|
||||
Description: "Integer between 0 (inclusive) and n (exclusive)",
|
||||
Example: "32783",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"upper-bounded int",
|
||||
"exclusive-maximum int",
|
||||
"zero-through-n minus one",
|
||||
"limited-range int",
|
||||
"cap-limited integer",
|
||||
},
|
||||
Keywords: []string{
|
||||
"intn", "range", "upper", "limit", "bound",
|
||||
"cap", "max", "exclusive", "integer",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "n", Display: "N", Type: "int", Default: "2147483647", Description: "Maximum int value (exclusive)"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
n, err := info.GetInt(m, "n")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return intNFunc(f, n), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("int8", Info{
|
||||
Display: "Int8",
|
||||
Category: "number",
|
||||
Description: "Signed 8-bit integer, range −128–127",
|
||||
Example: "24",
|
||||
Output: "int8",
|
||||
Aliases: []string{
|
||||
"byte-sized signed", "small signed range", "one-byte integer", "8-bit whole signed", "narrow signed value", "tiny int", "signed byte",
|
||||
},
|
||||
Keywords: []string{
|
||||
"int8", "signed", "8bit", "range", "twoscomplement", "integer", "arithmetic", "numeric", "binary", "storage",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return int8Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("int16", Info{
|
||||
Display: "Int16",
|
||||
Category: "number",
|
||||
Description: "Signed 16-bit integer, range −32,768–32,767",
|
||||
Example: "2200",
|
||||
Output: "int16",
|
||||
Aliases: []string{
|
||||
"two-byte signed", "short integer signed", "16-bit whole signed", "narrow-mid signed", "twobyte int", "short int", "halfword signed",
|
||||
},
|
||||
Keywords: []string{
|
||||
"int16", "signed", "16bit", "range", "word", "numeric", "arithmetic", "binary", "integer",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return int16Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("int32", Info{
|
||||
Display: "Int32",
|
||||
Category: "number",
|
||||
Description: "Signed 32-bit integer, range −2,147,483,648–2,147,483,647",
|
||||
Example: "-1072427943",
|
||||
Output: "int32",
|
||||
Aliases: []string{
|
||||
"four-byte signed", "standard-width signed", "32-bit whole signed", "midrange integer", "int32 value", "long int", "standard signed int",
|
||||
},
|
||||
Keywords: []string{
|
||||
"int32", "signed", "32bit", "range", "ipv4", "numeric", "arithmetic", "binary", "integer",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return int32Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("int64", Info{
|
||||
Display: "Int64",
|
||||
Category: "number",
|
||||
Description: "Signed 64-bit integer, range −9,223,372,036,854,775,808–9,223,372,036,854,775,807",
|
||||
Example: "-8379641344161477543",
|
||||
Output: "int64",
|
||||
Aliases: []string{
|
||||
"eight-byte signed",
|
||||
"long-width integer",
|
||||
"64-bit whole signed",
|
||||
"large signed value",
|
||||
"extended signed range",
|
||||
},
|
||||
Keywords: []string{
|
||||
"int64", "signed", "64bit", "bigint", "range", "timestamp", "nanosecond",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return int64Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("intrange", Info{
|
||||
Display: "Int Range",
|
||||
Category: "number",
|
||||
Description: "Signed integer value within a given range",
|
||||
Example: "-8379477543",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"signed span",
|
||||
"bounded integer result",
|
||||
"constrained int output",
|
||||
"limited signed interval",
|
||||
"ranged whole value",
|
||||
},
|
||||
Keywords: []string{
|
||||
"intrange", "int", "range", "min", "max",
|
||||
"bounds", "limits", "interval", "span",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "int", Description: "Minimum int value"},
|
||||
{Field: "max", Display: "Max", Type: "int", Description: "Maximum int value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetInt(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetInt(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return intRangeFunc(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("float32", Info{
|
||||
Display: "Float32",
|
||||
Category: "number",
|
||||
Description: "Floating-point number with 32-bit single precision (IEEE 754)",
|
||||
Example: "3.1128167e+37",
|
||||
Output: "float32",
|
||||
Aliases: []string{
|
||||
"single-precision float",
|
||||
"fp32 numeric",
|
||||
"32-bit real",
|
||||
"float single",
|
||||
"reduced-precision real",
|
||||
},
|
||||
Keywords: []string{
|
||||
"float32", "single-precision", "ieee754",
|
||||
"fp32", "mantissa", "exponent", "decimal",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return float32Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("float32range", Info{
|
||||
Display: "Float32 Range",
|
||||
Category: "number",
|
||||
Description: "Float32 value within a given range",
|
||||
Example: "914774.6",
|
||||
Output: "float32",
|
||||
Aliases: []string{
|
||||
"single-precision span",
|
||||
"bounded fp32",
|
||||
"limited float32 output",
|
||||
"constrained 32-bit real",
|
||||
"float single interval",
|
||||
},
|
||||
Keywords: []string{
|
||||
"float32range", "float32", "range",
|
||||
"min", "max", "bounds", "limits", "interval",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "float", Description: "Minimum float32 value"},
|
||||
{Field: "max", Display: "Max", Type: "float", Description: "Maximum float32 value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetFloat32(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetFloat32(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return float32Range(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("float64", Info{
|
||||
Display: "Float64",
|
||||
Category: "number",
|
||||
Description: "Floating-point number with 64-bit double precision (IEEE 754)",
|
||||
Example: "1.644484108270445e+307",
|
||||
Output: "float64",
|
||||
Aliases: []string{
|
||||
"double-precision float",
|
||||
"fp64 numeric",
|
||||
"64-bit real",
|
||||
"float double",
|
||||
"high-precision real",
|
||||
},
|
||||
Keywords: []string{
|
||||
"float64", "double-precision", "ieee754",
|
||||
"fp64", "mantissa", "exponent", "decimal",
|
||||
"precision", "scientific", "number",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return float64Func(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("float64range", Info{
|
||||
Display: "Float64 Range",
|
||||
Category: "number",
|
||||
Description: "Float64 value within a given range",
|
||||
Example: "914774.5585333086",
|
||||
Output: "float64",
|
||||
Aliases: []string{
|
||||
"double-precision span",
|
||||
"bounded fp64",
|
||||
"limited float64 output",
|
||||
"constrained 64-bit real",
|
||||
"float double interval",
|
||||
},
|
||||
Keywords: []string{
|
||||
"float64range", "float64", "range",
|
||||
"min", "max", "bounds", "limits", "interval",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "float", Description: "Minimum float64 value"},
|
||||
{Field: "max", Display: "Max", Type: "float", Description: "Maximum float64 value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetFloat64(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetFloat64(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return float64Range(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("shuffleints", Info{
|
||||
Display: "Shuffle Ints",
|
||||
Category: "number",
|
||||
Description: "Shuffles an array of ints",
|
||||
Example: "1,2,3,4 => 3,1,4,2",
|
||||
Output: "[]int",
|
||||
Aliases: []string{
|
||||
"reorder integers",
|
||||
"scramble int slice",
|
||||
"random permutation ints",
|
||||
"reshuffle numbers",
|
||||
"jumbled int output",
|
||||
},
|
||||
Keywords: []string{
|
||||
"shuffleints", "shuffle", "permute", "randomize",
|
||||
"ints", "slice", "array", "permutation",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "ints", Display: "Integers", Type: "[]int", Description: "Delimited separated integers"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
ints, err := info.GetIntArray(m, "ints")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
shuffleInts(f, ints)
|
||||
return ints, nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("randomint", Info{
|
||||
Display: "Random Int",
|
||||
Category: "number",
|
||||
Description: "Randomly selected value from a slice of int",
|
||||
Example: "-1,2,-3,4 => -3",
|
||||
Output: "int",
|
||||
Aliases: []string{
|
||||
"draw one integer",
|
||||
"sample an int",
|
||||
"pick from ints",
|
||||
"select a number",
|
||||
"choose single int",
|
||||
},
|
||||
Keywords: []string{
|
||||
"randomint", "random", "pick", "choose",
|
||||
"select", "ints", "slice", "list",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "ints", Display: "Integers", Type: "[]int", Description: "Delimited separated integers"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
ints, err := info.GetIntArray(m, "ints")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return randomInt(f, ints), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("randomuint", Info{
|
||||
Display: "Random Uint",
|
||||
Category: "number",
|
||||
Description: "Randomly selected value from a slice of uint",
|
||||
Example: "1,2,3,4 => 4",
|
||||
Output: "uint",
|
||||
Aliases: []string{
|
||||
"draw one unsigned",
|
||||
"sample a uint",
|
||||
"pick from uints",
|
||||
"select an unsigned",
|
||||
"choose single uint",
|
||||
},
|
||||
Keywords: []string{
|
||||
"randomuint", "random", "pick", "choose",
|
||||
"select", "uints", "slice", "list", "nonnegative",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "uints", Display: "Unsigned Integers", Type: "[]uint", Description: "Delimited separated unsigned integers"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
uints, err := info.GetUintArray(m, "uints")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return randomUint(f, uints), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("hexuint", Info{
|
||||
Display: "HexUint",
|
||||
Category: "number",
|
||||
Description: "Hexadecimal representation of an unsigned integer",
|
||||
Example: "0x87",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hex-encoded unsigned",
|
||||
"base-16 uint string",
|
||||
"prefixed 0x value",
|
||||
"hex view of uint",
|
||||
"formatted unsigned hex",
|
||||
},
|
||||
Keywords: []string{
|
||||
"hexuint", "hex", "base16", "uint", "0x",
|
||||
"bits", "width", "format",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "bitSize", Display: "Bit Size", Type: "int", Default: "8", Description: "Bit size of the unsigned integer"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
bitSize, err := info.GetInt(m, "bitSize")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return hexUint(f, bitSize), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
529
vendor/github.com/brianvoe/gofakeit/v7/payment.go
generated
vendored
Normal file
529
vendor/github.com/brianvoe/gofakeit/v7/payment.go
generated
vendored
Normal file
@@ -0,0 +1,529 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
// CurrencyInfo is a struct of currency information
|
||||
type CurrencyInfo struct {
|
||||
Short string `json:"short" xml:"short"`
|
||||
Long string `json:"long" xml:"long"`
|
||||
}
|
||||
|
||||
// Currency will generate a struct with random currency information
|
||||
func Currency() *CurrencyInfo { return currency(GlobalFaker) }
|
||||
|
||||
// Currency will generate a struct with random currency information
|
||||
func (f *Faker) Currency() *CurrencyInfo { return currency(f) }
|
||||
|
||||
func currency(f *Faker) *CurrencyInfo {
|
||||
index := f.IntN(len(data.Data["currency"]["short"]))
|
||||
return &CurrencyInfo{
|
||||
Short: data.Data["currency"]["short"][index],
|
||||
Long: data.Data["currency"]["long"][index],
|
||||
}
|
||||
}
|
||||
|
||||
// CurrencyShort will generate a random short currency value
|
||||
func CurrencyShort() string { return currencyShort(GlobalFaker) }
|
||||
|
||||
// CurrencyShort will generate a random short currency value
|
||||
func (f *Faker) CurrencyShort() string { return currencyShort(f) }
|
||||
|
||||
func currencyShort(f *Faker) string { return getRandValue(f, []string{"currency", "short"}) }
|
||||
|
||||
// CurrencyLong will generate a random long currency name
|
||||
func CurrencyLong() string { return currencyLong(GlobalFaker) }
|
||||
|
||||
// CurrencyLong will generate a random long currency name
|
||||
func (f *Faker) CurrencyLong() string { return currencyLong(f) }
|
||||
|
||||
func currencyLong(f *Faker) string { return getRandValue(f, []string{"currency", "long"}) }
|
||||
|
||||
// Price will take in a min and max value and return a formatted price
|
||||
func Price(min, max float64) float64 { return price(GlobalFaker, min, max) }
|
||||
|
||||
// Price will take in a min and max value and return a formatted price
|
||||
func (f *Faker) Price(min, max float64) float64 { return price(f, min, max) }
|
||||
|
||||
func price(f *Faker, min, max float64) float64 {
|
||||
return math.Floor(float64Range(f, min, max)*100) / 100
|
||||
}
|
||||
|
||||
// CreditCardInfo is a struct containing credit variables
|
||||
type CreditCardInfo struct {
|
||||
Type string `json:"type" xml:"type"`
|
||||
Number string `json:"number" xml:"number"`
|
||||
Exp string `json:"exp" xml:"exp"`
|
||||
Cvv string `json:"cvv" xml:"cvv"`
|
||||
}
|
||||
|
||||
// CreditCard will generate a struct full of credit card information
|
||||
func CreditCard() *CreditCardInfo { return creditCard(GlobalFaker) }
|
||||
|
||||
// CreditCard will generate a struct full of credit card information
|
||||
func (f *Faker) CreditCard() *CreditCardInfo { return creditCard(f) }
|
||||
|
||||
func creditCard(f *Faker) *CreditCardInfo {
|
||||
ccType := randomString(f, data.CreditCardTypes)
|
||||
ccv, _ := generate(f, strings.Repeat("#", int(data.CreditCards[randomString(f, data.CreditCardTypes)].Code.Size)))
|
||||
|
||||
return &CreditCardInfo{
|
||||
Type: data.CreditCards[randomString(f, data.CreditCardTypes)].Display,
|
||||
Number: creditCardNumber(f, &CreditCardOptions{Types: []string{ccType}}),
|
||||
Exp: creditCardExp(f),
|
||||
Cvv: ccv,
|
||||
}
|
||||
}
|
||||
|
||||
// CreditCardType will generate a random credit card type string
|
||||
func CreditCardType() string { return creditCardType(GlobalFaker) }
|
||||
|
||||
// CreditCardType will generate a random credit card type string
|
||||
func (f *Faker) CreditCardType() string { return creditCardType(f) }
|
||||
|
||||
func creditCardType(f *Faker) string {
|
||||
return data.CreditCards[randomString(f, data.CreditCardTypes)].Display
|
||||
}
|
||||
|
||||
// CreditCardOptions is the options for credit card number
|
||||
type CreditCardOptions struct {
|
||||
Types []string `json:"types"`
|
||||
Bins []string `json:"bins"` // optional parameter of prepended numbers
|
||||
Gaps bool `json:"gaps"`
|
||||
}
|
||||
|
||||
// CreditCardNumber will generate a random luhn credit card number
|
||||
func CreditCardNumber(cco *CreditCardOptions) string { return creditCardNumber(GlobalFaker, cco) }
|
||||
|
||||
// CreditCardNumber will generate a random luhn credit card number
|
||||
func (f *Faker) CreditCardNumber(cco *CreditCardOptions) string { return creditCardNumber(f, cco) }
|
||||
|
||||
func creditCardNumber(f *Faker, cco *CreditCardOptions) string {
|
||||
if cco == nil {
|
||||
cco = &CreditCardOptions{}
|
||||
}
|
||||
if len(cco.Types) == 0 {
|
||||
cco.Types = data.CreditCardTypes
|
||||
}
|
||||
ccType := randomString(f, cco.Types)
|
||||
|
||||
// Get Card info
|
||||
var cardInfo data.CreditCardInfo
|
||||
if info, ok := data.CreditCards[ccType]; ok {
|
||||
cardInfo = info
|
||||
} else {
|
||||
ccType = randomString(f, data.CreditCardTypes)
|
||||
cardInfo = data.CreditCards[ccType]
|
||||
}
|
||||
|
||||
// Get length and pattern
|
||||
length := randomUint(f, cardInfo.Lengths)
|
||||
numStr := ""
|
||||
if len(cco.Bins) >= 1 {
|
||||
numStr = randomString(f, cco.Bins)
|
||||
} else {
|
||||
numStr = strconv.FormatUint(uint64(randomUint(f, cardInfo.Patterns)), 10)
|
||||
}
|
||||
numStr += strings.Repeat("#", int(length)-len(numStr))
|
||||
numStr = numerify(f, numStr)
|
||||
ui, _ := strconv.ParseUint(numStr, 10, 64)
|
||||
|
||||
// Loop through until its a valid luhn
|
||||
for {
|
||||
valid := isLuhn(strconv.FormatUint(ui, 10))
|
||||
if valid {
|
||||
break
|
||||
}
|
||||
ui++
|
||||
}
|
||||
numStr = strconv.FormatUint(ui, 10)
|
||||
|
||||
// Add gaps to number
|
||||
if cco.Gaps {
|
||||
for i, spot := range cardInfo.Gaps {
|
||||
numStr = numStr[:(int(spot)+i)] + " " + numStr[(int(spot)+i):]
|
||||
}
|
||||
}
|
||||
|
||||
return numStr
|
||||
}
|
||||
|
||||
// CreditCardExp will generate a random credit card expiration date string
|
||||
// Exp date will always be a future date
|
||||
func CreditCardExp() string { return creditCardExp(GlobalFaker) }
|
||||
|
||||
// CreditCardExp will generate a random credit card expiration date string
|
||||
// Exp date will always be a future date
|
||||
func (f *Faker) CreditCardExp() string { return creditCardExp(f) }
|
||||
|
||||
func creditCardExp(f *Faker) string {
|
||||
month := strconv.Itoa(randIntRange(f, 1, 12))
|
||||
if len(month) == 1 {
|
||||
month = "0" + month
|
||||
}
|
||||
|
||||
var currentYear = time.Now().Year() - 2000
|
||||
return month + "/" + strconv.Itoa(randIntRange(f, currentYear+1, currentYear+10))
|
||||
}
|
||||
|
||||
// CreditCardCvv will generate a random CVV number
|
||||
// Its a string because you could have 017 as an exp date
|
||||
func CreditCardCvv() string { return creditCardCvv(GlobalFaker) }
|
||||
|
||||
// CreditCardCvv will generate a random CVV number
|
||||
// Its a string because you could have 017 as an exp date
|
||||
func (f *Faker) CreditCardCvv() string { return creditCardCvv(f) }
|
||||
|
||||
func creditCardCvv(f *Faker) string { return numerify(f, "###") }
|
||||
|
||||
// isLuhn check is used for checking if credit card is a valid luhn card
|
||||
func isLuhn(s string) bool {
|
||||
var t = [...]int{0, 2, 4, 6, 8, 1, 3, 5, 7, 9}
|
||||
odd := len(s) & 1
|
||||
var sum int
|
||||
for i, c := range s {
|
||||
if c < '0' || c > '9' {
|
||||
return false
|
||||
}
|
||||
if i&1 == odd {
|
||||
sum += t[c-'0']
|
||||
} else {
|
||||
sum += int(c - '0')
|
||||
}
|
||||
}
|
||||
return sum%10 == 0
|
||||
}
|
||||
|
||||
// AchRouting will generate a 9 digit routing number
|
||||
func AchRouting() string { return achRouting(GlobalFaker) }
|
||||
|
||||
// AchRouting will generate a 9 digit routing number
|
||||
func (f *Faker) AchRouting() string { return achRouting(f) }
|
||||
|
||||
func achRouting(f *Faker) string { return numerify(f, "#########") }
|
||||
|
||||
// AchAccount will generate a 12 digit account number
|
||||
func AchAccount() string { return achAccount(GlobalFaker) }
|
||||
|
||||
// AchAccount will generate a 12 digit account number
|
||||
func (f *Faker) AchAccount() string { return achAccount(f) }
|
||||
|
||||
func achAccount(f *Faker) string { return numerify(f, "############") }
|
||||
|
||||
// BitcoinAddress will generate a random bitcoin address consisting of numbers, upper and lower characters
|
||||
func BitcoinAddress() string { return bitcoinAddress(GlobalFaker) }
|
||||
|
||||
// BitcoinAddress will generate a random bitcoin address consisting of numbers, upper and lower characters
|
||||
func (f *Faker) BitcoinAddress() string { return bitcoinAddress(f) }
|
||||
|
||||
func bitcoinAddress(f *Faker) string {
|
||||
return randomString(f, []string{"1", "3"}) + password(f, true, true, true, false, false, number(f, 25, 34))
|
||||
}
|
||||
|
||||
// BitcoinPrivateKey will generate a random bitcoin private key base58 consisting of numbers, upper and lower characters
|
||||
func BitcoinPrivateKey() string { return bitcoinPrivateKey(GlobalFaker) }
|
||||
|
||||
// BitcoinPrivateKey will generate a random bitcoin private key base58 consisting of numbers, upper and lower characters
|
||||
func (f *Faker) BitcoinPrivateKey() string { return bitcoinPrivateKey(f) }
|
||||
|
||||
func bitcoinPrivateKey(f *Faker) string {
|
||||
var b strings.Builder
|
||||
for i := 0; i < 49; i++ {
|
||||
b.WriteString(randCharacter(f, base58))
|
||||
}
|
||||
return "5" + randomString(f, []string{"H", "J", "K"}) + b.String()
|
||||
}
|
||||
|
||||
func BankName() string { return bankName(GlobalFaker) }
|
||||
|
||||
func (f *Faker) BankName() string { return bankName(f) }
|
||||
|
||||
func bankName(f *Faker) string { return getRandValue(f, []string{"bank", "name"}) }
|
||||
|
||||
func BankType() string { return bankType(GlobalFaker) }
|
||||
|
||||
func (f *Faker) BankType() string { return bankType(f) }
|
||||
|
||||
func bankType(f *Faker) string { return getRandValue(f, []string{"bank", "type"}) }
|
||||
|
||||
func addPaymentLookup() {
|
||||
AddFuncLookup("currency", Info{
|
||||
Display: "Currency",
|
||||
Category: "payment",
|
||||
Description: "Medium of exchange, often in the form of money, used for trade and transactions",
|
||||
Example: `{
|
||||
"short": "IQD",
|
||||
"long": "Iraq Dinar"
|
||||
}`,
|
||||
Output: "map[string]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"currency unit", "currency code", "money type", "exchange currency", "monetary unit", "legal tender", "fiat money",
|
||||
},
|
||||
Keywords: []string{
|
||||
"currency", "money", "exchange", "fiat", "unit", "code", "iso", "usd", "eur", "gbp", "jpy", "cny", "trade", "transaction", "market",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return currency(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("currencyshort", Info{
|
||||
Display: "Currency Short",
|
||||
Category: "payment",
|
||||
Description: "Short 3-letter ISO code used to represent a specific currency",
|
||||
Example: "USD",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"iso alpha-3", "currency ticker", "alpha-3 code", "currency shorthand", "iso-4217 code",
|
||||
},
|
||||
Keywords: []string{
|
||||
"currency", "short", "iso", "code", "alpha3", "usd", "eur", "gbp", "jpy", "cad", "aud",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return currencyShort(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("currencylong", Info{
|
||||
Display: "Currency Long",
|
||||
Category: "payment",
|
||||
Description: "Complete name of a specific currency used in financial transactions",
|
||||
Example: "United States Dollar",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"currency name", "full currency", "long form name", "official currency", "monetary name",
|
||||
},
|
||||
Keywords: []string{
|
||||
"currency", "name", "long", "full", "official", "dollar", "euro", "pound", "yen", "franc", "peso", "rupee",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return currencyLong(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("price", Info{
|
||||
Display: "Price",
|
||||
Category: "payment",
|
||||
Description: "The amount of money assigned to a product, service, or asset in a transaction",
|
||||
Example: "92.26",
|
||||
Output: "float64",
|
||||
Aliases: []string{
|
||||
"amount", "cost", "value", "fee", "charge", "rate", "unit price",
|
||||
},
|
||||
Keywords: []string{
|
||||
"price", "payment", "transaction", "retail", "wholesale", "market", "asset", "listing", "quote", "valuation",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "min", Display: "Min", Type: "float", Default: "0", Description: "Minimum price value"},
|
||||
{Field: "max", Display: "Max", Type: "float", Default: "1000", Description: "Maximum price value"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
min, err := info.GetFloat64(m, "min")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
max, err := info.GetFloat64(m, "max")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return price(f, min, max), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("creditcard", Info{
|
||||
Display: "Credit Card",
|
||||
Category: "payment",
|
||||
Description: "Card allowing users to make purchases on credit, with payment due at a later date",
|
||||
Example: `{
|
||||
"type": "Visa",
|
||||
"number": "4111111111111111",
|
||||
"exp": "02/27",
|
||||
"cvv": "123"
|
||||
}`,
|
||||
Output: "map[string]any",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"credit card", "payment card", "charge card", "credit instrument", "card account", "plastic card",
|
||||
},
|
||||
Keywords: []string{
|
||||
"credit", "card", "payment", "debt", "visa", "mastercard", "amex", "discover", "unionpay", "maestro", "jcb",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return creditCard(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("creditcardtype", Info{
|
||||
Display: "Credit Card Type",
|
||||
Category: "payment",
|
||||
Description: "Classification of credit cards based on the issuing company",
|
||||
Example: "Visa",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"credit card type", "issuer brand", "card network", "scheme name", "card family", "issuer type",
|
||||
},
|
||||
Keywords: []string{
|
||||
"credit", "card", "type", "issuer", "brand", "network", "visa", "mastercard", "amex", "discover", "unionpay", "maestro", "jcb",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return creditCardType(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("creditcardnumber", Info{
|
||||
Display: "Credit Card Number",
|
||||
Category: "payment",
|
||||
Description: "Unique number on a credit card used for electronic payments",
|
||||
Example: "4111111111111111",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"credit card", "credit card number", "card number", "cc number", "primary account number", "pan value", "payment number",
|
||||
},
|
||||
Keywords: []string{
|
||||
"credit", "card", "number", "identifier", "luhn", "validation", "checksum", "bin", "tokenize", "masking", "digits",
|
||||
},
|
||||
Params: []Param{
|
||||
{
|
||||
Field: "types", Display: "Types", Type: "[]string", Default: "all",
|
||||
Options: []string{"visa", "mastercard", "american-express", "diners-club", "discover", "jcb", "unionpay", "maestro", "elo", "hiper", "hipercard"},
|
||||
Description: "A select number of types you want to use when generating a credit card number",
|
||||
},
|
||||
{Field: "bins", Display: "Bins", Type: "[]string", Optional: true, Description: "Optional list of prepended bin numbers to pick from"},
|
||||
{Field: "gaps", Display: "Gaps", Type: "bool", Default: "false", Optional: true, Description: "Whether or not to have gaps in number"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
types, err := info.GetStringArray(m, "types")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(types) == 1 && types[0] == "all" {
|
||||
types = []string{}
|
||||
}
|
||||
bins, _ := info.GetStringArray(m, "bins")
|
||||
gaps, _ := info.GetBool(m, "gaps")
|
||||
options := CreditCardOptions{Types: types, Gaps: gaps}
|
||||
if len(bins) >= 1 {
|
||||
options.Bins = bins
|
||||
}
|
||||
return creditCardNumber(f, &options), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("creditcardexp", Info{
|
||||
Display: "Credit Card Exp",
|
||||
Category: "payment",
|
||||
Description: "Expiration date of a credit card",
|
||||
Example: "01/27",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"credit card exp", "credit card expiration", "expiry date", "expiration date", "exp date", "valid thru", "card expiry",
|
||||
},
|
||||
Keywords: []string{
|
||||
"credit", "card", "exp", "expiry", "expiration", "month", "year", "validity", "future", "expired",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return creditCardExp(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("creditcardcvv", Info{
|
||||
Display: "Credit Card CVV",
|
||||
Category: "payment",
|
||||
Description: "Three or four-digit security code on a credit card",
|
||||
Example: "513",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"credit card cvv", "cvv", "cvc", "cid", "security number", "auth digits", "card check value", "security code",
|
||||
},
|
||||
Keywords: []string{
|
||||
"security", "code", "verification", "authentication", "fraud", "protection", "online", "payment", "transaction",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return creditCardCvv(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("achrouting", Info{
|
||||
Display: "ACH Routing Number",
|
||||
Category: "payment",
|
||||
Description: "Nine-digit code used in the U.S. for identifying a bank in ACH transactions",
|
||||
Example: "513715684",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"routing number", "aba number", "routing transit number", "rtn code", "bank routing id",
|
||||
},
|
||||
Keywords: []string{
|
||||
"ach", "routing", "aba", "us", "bank", "federal", "reserve", "clearinghouse",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return achRouting(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("achaccount", Info{
|
||||
Display: "ACH Account Number",
|
||||
Category: "payment",
|
||||
Description: "Bank account number used for Automated Clearing House transactions",
|
||||
Example: "491527954328",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"account number", "ach account", "bank account", "checking account", "savings account", "account identifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"ach", "account", "banking", "checking", "savings", "finance", "electronic", "transfer", "payment",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return achAccount(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("bitcoinaddress", Info{
|
||||
Display: "Bitcoin Address",
|
||||
Category: "payment",
|
||||
Description: "Cryptographic identifier used to send and receive Bitcoin",
|
||||
Example: "1BoatSLRHtKNngkdXEeobR76b53LETtpyT",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"btc address", "bitcoin wallet", "crypto address", "public address", "payment address",
|
||||
},
|
||||
Keywords: []string{
|
||||
"bitcoin", "btc", "wallet", "blockchain", "public", "key", "hash", "base58",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return bitcoinAddress(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("bitcoinprivatekey", Info{
|
||||
Display: "Bitcoin Private Key",
|
||||
Category: "payment",
|
||||
Description: "Secret key that allows access and control over Bitcoin holdings",
|
||||
Example: "5HueCGU8rMjxEXxiPuD5BDuG6o5xjA7QkbPp",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"btc private key", "wallet key", "secret key", "private wif", "signing key",
|
||||
},
|
||||
Keywords: []string{
|
||||
"bitcoin", "btc", "private", "key", "blockchain", "wallet", "signature", "base58", "wif",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return bitcoinPrivateKey(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("bankname", Info{
|
||||
Display: "Bank Name",
|
||||
Category: "payment",
|
||||
Description: "Name of a financial institution that offers banking services",
|
||||
Example: "Wells Fargo",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"financial institution", "banking entity", "lender name", "depository name", "institution title",
|
||||
},
|
||||
Keywords: []string{
|
||||
"bank", "name", "institution", "financial", "wells", "fargo", "chase", "citibank", "pnc", "boa", "usbank",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return bankName(f), nil },
|
||||
})
|
||||
|
||||
AddFuncLookup("banktype", Info{
|
||||
Display: "Bank Type",
|
||||
Category: "payment",
|
||||
Description: "Classification of a bank based on its services and operations",
|
||||
Example: "Investment Bank",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"bank classification", "bank category", "bank segment", "institution class", "service tier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"bank", "type", "classification", "category", "segment", "investment", "commercial", "retail", "savings", "credit", "union", "central", "federal",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return bankType(f), nil },
|
||||
})
|
||||
|
||||
}
|
||||
617
vendor/github.com/brianvoe/gofakeit/v7/person.go
generated
vendored
Normal file
617
vendor/github.com/brianvoe/gofakeit/v7/person.go
generated
vendored
Normal file
@@ -0,0 +1,617 @@
|
||||
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"`
|
||||
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),
|
||||
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"}) }
|
||||
|
||||
// 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"}) }
|
||||
|
||||
// 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",
|
||||
"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{
|
||||
"person", "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{
|
||||
"name", "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 (keep terms neutral and search-friendly)
|
||||
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{
|
||||
"gender", "male", "female", "nonbinary",
|
||||
"identity", "label", "category", "sex",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return gender(f), nil },
|
||||
})
|
||||
|
||||
// ssn (us)
|
||||
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{
|
||||
"ssn", "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{
|
||||
"ein", "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{
|
||||
"hobby", "leisure", "recreation",
|
||||
"activity", "sport", "craft",
|
||||
"game", "collection",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) { return hobby(f), 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{
|
||||
"email", "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{
|
||||
"phone", "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{
|
||||
"teams", "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
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
646
vendor/github.com/brianvoe/gofakeit/v7/product.go
generated
vendored
Normal file
646
vendor/github.com/brianvoe/gofakeit/v7/product.go
generated
vendored
Normal file
@@ -0,0 +1,646 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/brianvoe/gofakeit/v7/data"
|
||||
)
|
||||
|
||||
type ProductInfo struct {
|
||||
Name string `json:"name" xml:"name"`
|
||||
Description string `json:"description" xml:"description"`
|
||||
Categories []string `json:"categories" xml:"categories"`
|
||||
Price float64 `json:"price" xml:"price"`
|
||||
Features []string `json:"features" xml:"features"`
|
||||
Color string `json:"color" xml:"color"`
|
||||
Material string `json:"material" xml:"material"`
|
||||
UPC string `json:"upc" xml:"upc"`
|
||||
Audience []string `json:"audience" xml:"audience"`
|
||||
Dimension string `json:"dimension" xml:"dimension"`
|
||||
UseCase string `json:"use_case" xml:"use_case"`
|
||||
Benefit string `json:"benefit" xml:"benefit"`
|
||||
Suffix string `json:"suffix" xml:"suffix"`
|
||||
}
|
||||
|
||||
// Product will generate a random set of product information
|
||||
func Product() *ProductInfo { return product(GlobalFaker) }
|
||||
|
||||
// Product will generate a random set of product information
|
||||
func (f *Faker) Product() *ProductInfo { return product(f) }
|
||||
|
||||
func product(f *Faker) *ProductInfo {
|
||||
// Categories
|
||||
categories := []string{}
|
||||
weightedCategory, _ := weighted(f, []any{1, 2, 3, 4}, []float32{1, 4, 3, 4})
|
||||
|
||||
for i := 0; i < weightedCategory.(int); i++ {
|
||||
categories = append(categories, productCategory(f))
|
||||
}
|
||||
|
||||
// Features
|
||||
features := []string{}
|
||||
for i := 0; i < number(f, 1, 5); i++ {
|
||||
features = append(features, productFeature(f))
|
||||
}
|
||||
|
||||
product := &ProductInfo{
|
||||
Name: productName(f),
|
||||
Description: productDescription(f),
|
||||
Categories: categories,
|
||||
Price: price(f, 3.00, 100.00),
|
||||
UPC: productUPC(f),
|
||||
Features: features,
|
||||
Color: safeColor(f),
|
||||
Material: productMaterial(f),
|
||||
Audience: productAudience(f),
|
||||
Dimension: productDimension(f),
|
||||
UseCase: productUseCase(f),
|
||||
Benefit: productBenefit(f),
|
||||
Suffix: productSuffix(f),
|
||||
}
|
||||
|
||||
return product
|
||||
}
|
||||
|
||||
// ProductName will generate a random product name
|
||||
func ProductName() string { return productName(GlobalFaker) }
|
||||
|
||||
// ProductName will generate a random product name
|
||||
func (f *Faker) ProductName() string { return productName(f) }
|
||||
|
||||
func productName(f *Faker) string {
|
||||
name := getRandValue(f, []string{"product", "name"})
|
||||
switch number(f, 0, 9) {
|
||||
case 1:
|
||||
// Name + Adjective + Feature
|
||||
return title(fmt.Sprintf("%s %s %s", name, getRandValue(f, []string{"product", "adjective"}), productFeature(f)))
|
||||
case 2:
|
||||
// Adjective + Material + Name
|
||||
return title(fmt.Sprintf("%s %s %s", getRandValue(f, []string{"product", "adjective"}), productMaterial(f), name))
|
||||
case 3:
|
||||
// Color + Name + Suffix
|
||||
return title(fmt.Sprintf("%s %s %s", safeColor(f), name, getRandValue(f, []string{"product", "suffix"})))
|
||||
case 4:
|
||||
// Feature + Name + Adjective
|
||||
return title(fmt.Sprintf("%s %s %s", productFeature(f), name, getRandValue(f, []string{"product", "adjective"})))
|
||||
case 5:
|
||||
// Material + Color + Name
|
||||
return title(fmt.Sprintf("%s %s %s", productMaterial(f), safeColor(f), name))
|
||||
case 6:
|
||||
// Name + Suffix + Material
|
||||
return title(fmt.Sprintf("%s %s %s", name, getRandValue(f, []string{"product", "suffix"}), productMaterial(f)))
|
||||
case 7:
|
||||
// Adjective + Feature + Name
|
||||
return title(fmt.Sprintf("%s %s %s", getRandValue(f, []string{"product", "adjective"}), productFeature(f), name))
|
||||
case 8:
|
||||
// Color + Material + Name
|
||||
return title(fmt.Sprintf("%s %s %s", safeColor(f), productMaterial(f), name))
|
||||
case 9:
|
||||
// Suffix + Adjective + Name
|
||||
return title(fmt.Sprintf("%s %s %s", getRandValue(f, []string{"product", "suffix"}), getRandValue(f, []string{"product", "adjective"}), name))
|
||||
}
|
||||
|
||||
// case: 0 - Adjective + Name + Suffix
|
||||
return title(fmt.Sprintf("%s %s %s", getRandValue(f, []string{"product", "adjective"}), name, getRandValue(f, []string{"product", "suffix"})))
|
||||
}
|
||||
|
||||
// ProductDescription will generate a random product description
|
||||
func ProductDescription() string { return productDescription(GlobalFaker) }
|
||||
|
||||
// ProductDescription will generate a random product description
|
||||
func (f *Faker) ProductDescription() string { return productDescription(f) }
|
||||
|
||||
func productDescription(f *Faker) string {
|
||||
prodDesc := getRandValue(f, []string{"product", "description"})
|
||||
|
||||
// Replace all {productaudience} with join "and"
|
||||
for strings.Contains(prodDesc, "{productaudience}") {
|
||||
prodDesc = strings.Replace(prodDesc, "{productaudience}", strings.Join(productAudience(f), " and "), 1)
|
||||
}
|
||||
|
||||
desc, _ := generate(f, prodDesc)
|
||||
return desc
|
||||
}
|
||||
|
||||
// ProductCategory will generate a random product category
|
||||
func ProductCategory() string { return productCategory(GlobalFaker) }
|
||||
|
||||
// ProductCategory will generate a random product category
|
||||
func (f *Faker) ProductCategory() string { return productCategory(f) }
|
||||
|
||||
func productCategory(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "category"})
|
||||
}
|
||||
|
||||
// ProductFeature will generate a random product feature
|
||||
func ProductFeature() string { return productFeature(GlobalFaker) }
|
||||
|
||||
// ProductFeature will generate a random product feature
|
||||
func (f *Faker) ProductFeature() string { return productFeature(f) }
|
||||
|
||||
func productFeature(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "feature"})
|
||||
}
|
||||
|
||||
// ProductMaterial will generate a random product material
|
||||
func ProductMaterial() string { return productMaterial(GlobalFaker) }
|
||||
|
||||
// ProductMaterial will generate a random product material
|
||||
func (f *Faker) ProductMaterial() string { return productMaterial(f) }
|
||||
|
||||
func productMaterial(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "material"})
|
||||
}
|
||||
|
||||
// ProductUPC will generate a random product UPC
|
||||
func ProductUPC() string { return productUPC(GlobalFaker) }
|
||||
|
||||
// ProductUPC will generate a random product UPC
|
||||
func (f *Faker) ProductUPC() string { return productUPC(f) }
|
||||
|
||||
func productUPC(f *Faker) string {
|
||||
// The first digit of a UPC is a fixed digit (usually 0)
|
||||
upc := "0"
|
||||
|
||||
// Generate the remaining 11 digits randomly
|
||||
for i := 1; i < 12; i++ {
|
||||
digit := number(f, 0, 9)
|
||||
upc += fmt.Sprintf("%d", digit)
|
||||
}
|
||||
|
||||
return upc
|
||||
}
|
||||
|
||||
// ProductAudience will generate a random target audience
|
||||
func ProductAudience() []string { return productAudience(GlobalFaker) }
|
||||
|
||||
// ProductAudience will generate a random target audience
|
||||
func (f *Faker) ProductAudience() []string { return productAudience(f) }
|
||||
|
||||
func productAudience(f *Faker) []string {
|
||||
audiences := []string{}
|
||||
for i := 0; i < number(f, 1, 2); i++ {
|
||||
// Check if the target audience is already in the list
|
||||
// If it is, generate a new target audience
|
||||
for {
|
||||
audience := getRandValue(f, []string{"product", "target_audience"})
|
||||
// Check if in array
|
||||
if !stringInSlice(audience, audiences) {
|
||||
audiences = append(audiences, audience)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return audiences
|
||||
}
|
||||
|
||||
// ProductDimension will generate a random product dimension
|
||||
func ProductDimension() string { return productDimension(GlobalFaker) }
|
||||
|
||||
// ProductDimension will generate a random product dimension
|
||||
func (f *Faker) ProductDimension() string { return productDimension(f) }
|
||||
|
||||
func productDimension(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "dimension"})
|
||||
}
|
||||
|
||||
// ProductUseCase will generate a random product use case
|
||||
func ProductUseCase() string { return productUseCase(GlobalFaker) }
|
||||
|
||||
// ProductUseCase will generate a random product use case
|
||||
func (f *Faker) ProductUseCase() string { return productUseCase(f) }
|
||||
|
||||
func productUseCase(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "use_case"})
|
||||
}
|
||||
|
||||
// ProductBenefit will generate a random product benefit
|
||||
func ProductBenefit() string { return productBenefit(GlobalFaker) }
|
||||
|
||||
// ProductBenefit will generate a random product benefit
|
||||
func (f *Faker) ProductBenefit() string { return productBenefit(f) }
|
||||
|
||||
func productBenefit(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "benefit"})
|
||||
}
|
||||
|
||||
// ProductSuffix will generate a random product suffix
|
||||
func ProductSuffix() string { return productSuffix(GlobalFaker) }
|
||||
|
||||
// ProductSuffix will generate a random product suffix
|
||||
func (f *Faker) ProductSuffix() string { return productSuffix(f) }
|
||||
|
||||
func productSuffix(f *Faker) string {
|
||||
return getRandValue(f, []string{"product", "suffix"})
|
||||
}
|
||||
|
||||
// ProductISBN13 will generate a random ISBN-13 string for the product
|
||||
func ProductISBN(opts *ISBNOptions) string { return productISBN(GlobalFaker, opts) }
|
||||
|
||||
// ProductISBN13 will generate a random ISBN-13 string for the product
|
||||
func (f *Faker) ProductISBN(opts *ISBNOptions) string { return productISBN(f, opts) }
|
||||
|
||||
type ISBNOptions struct {
|
||||
Version string // "10" or "13"
|
||||
Separator string // e.g. "-", "" (default: "-")
|
||||
}
|
||||
|
||||
func productISBN(f *Faker, opts *ISBNOptions) string {
|
||||
if opts == nil {
|
||||
opts = &ISBNOptions{Version: "13", Separator: "-"}
|
||||
}
|
||||
|
||||
sep := opts.Separator
|
||||
if sep == "" {
|
||||
sep = "-"
|
||||
}
|
||||
|
||||
// string of n random digits
|
||||
randomDigits := func(f *Faker, n int) string {
|
||||
digits := make([]byte, n)
|
||||
for i := 0; i < n; i++ {
|
||||
digits[i] = byte('0' + number(f, 0, 9))
|
||||
}
|
||||
return string(digits)
|
||||
}
|
||||
|
||||
switch opts.Version {
|
||||
case "10":
|
||||
// ISBN-10 format: group(1)-registrant(4)-publication(3)-check(1)
|
||||
group := randomDigits(f, 1)
|
||||
registrant := randomDigits(f, 4)
|
||||
publication := randomDigits(f, 3)
|
||||
base := group + registrant + publication
|
||||
|
||||
// checksum
|
||||
sum := 0
|
||||
for i, c := range base {
|
||||
digit := int(c - '0')
|
||||
sum += digit * (10 - i)
|
||||
}
|
||||
remainder := (11 - (sum % 11)) % 11
|
||||
check := "X"
|
||||
if remainder < 10 {
|
||||
check = strconv.Itoa(remainder)
|
||||
}
|
||||
|
||||
return strings.Join([]string{group, registrant, publication, check}, sep)
|
||||
|
||||
case "13":
|
||||
// ISBN-13 format: prefix(3)-group(1)-registrant(4)-publication(4)-check(1)
|
||||
prefix := data.ISBN13Prefix
|
||||
group := randomDigits(f, 1)
|
||||
registrant := randomDigits(f, 4)
|
||||
publication := randomDigits(f, 4)
|
||||
base := prefix + group + registrant + publication
|
||||
|
||||
// checksum
|
||||
sum := 0
|
||||
for i, c := range base {
|
||||
digit := int(c - '0')
|
||||
if i%2 == 0 {
|
||||
sum += digit
|
||||
} else {
|
||||
sum += digit * 3
|
||||
}
|
||||
}
|
||||
remainder := (10 - (sum % 10)) % 10
|
||||
check := strconv.Itoa(remainder)
|
||||
|
||||
return strings.Join([]string{prefix, group, registrant, publication, check}, sep)
|
||||
|
||||
default:
|
||||
// fallback to ISBN-13 if invalid version provided
|
||||
return productISBN(f, &ISBNOptions{Version: "13", Separator: sep})
|
||||
}
|
||||
}
|
||||
|
||||
func addProductLookup() {
|
||||
AddFuncLookup("product", Info{
|
||||
Display: "Product",
|
||||
Category: "product",
|
||||
Description: "An item created for sale or use",
|
||||
Example: `{
|
||||
"name": "olive copper monitor",
|
||||
"description": "Backwards caused quarterly without week it hungry thing someone him regularly. Whomever this revolt hence from his timing as quantity us these yours.",
|
||||
"categories": [
|
||||
"clothing",
|
||||
"tools and hardware"
|
||||
],
|
||||
"price": 7.61,
|
||||
"features": [
|
||||
"ultra-lightweight"
|
||||
],
|
||||
"color": "navy",
|
||||
"material": "brass",
|
||||
"upc": "012780949980",
|
||||
"audience": [
|
||||
"adults"
|
||||
],
|
||||
"dimension": "medium",
|
||||
"use_case": "home",
|
||||
"benefit": "comfort",
|
||||
"suffix": "pro"
|
||||
}`,
|
||||
Output: "map[string]any",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"goods",
|
||||
"merchandise",
|
||||
"retail item",
|
||||
"consumer product",
|
||||
"commercial item",
|
||||
},
|
||||
Keywords: []string{
|
||||
"product", "sale", "use", "trade", "manufactured",
|
||||
"market", "inventory", "supply", "distribution", "commodity",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return product(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productname", Info{
|
||||
Display: "Product Name",
|
||||
Category: "product",
|
||||
Description: "Distinctive title or label assigned to a product for identification and marketing",
|
||||
Example: "olive copper monitor",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product title",
|
||||
"product label",
|
||||
"brand name",
|
||||
"item name",
|
||||
"product identifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"product", "name", "title", "label", "brand",
|
||||
"item", "merchandise", "goods", "article",
|
||||
"identifier", "marketing", "branding",
|
||||
"catalog", "inventory",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productdescription", Info{
|
||||
Display: "Product Description",
|
||||
Category: "product",
|
||||
Description: "Explanation detailing the features and characteristics of a product",
|
||||
Example: "Backwards caused quarterly without week it hungry thing someone him regularly. Whomever this revolt hence from his timing as quantity us these yours.",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product details",
|
||||
"product specs",
|
||||
"item description",
|
||||
"feature list",
|
||||
"marketing copy",
|
||||
},
|
||||
Keywords: []string{
|
||||
"product", "description", "details", "features",
|
||||
"specifications", "characteristics", "summary",
|
||||
"overview", "attributes", "benefits",
|
||||
"marketing", "content", "copy", "info", "text",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productDescription(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productcategory", Info{
|
||||
Display: "Product Category",
|
||||
Category: "product",
|
||||
Description: "Classification grouping similar products based on shared characteristics or functions",
|
||||
Example: "clothing",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product classification",
|
||||
"product type",
|
||||
"item category",
|
||||
"product group",
|
||||
"product segment",
|
||||
},
|
||||
Keywords: []string{
|
||||
"product", "category", "type", "class", "classification",
|
||||
"group", "segment", "line", "collection", "range",
|
||||
"electronics", "furniture", "clothing", "appliances",
|
||||
"food", "toys", "accessories", "goods",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productCategory(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productfeature", Info{
|
||||
Display: "Product Feature",
|
||||
Category: "product",
|
||||
Description: "Specific characteristic of a product that distinguishes it from others products",
|
||||
Example: "ultra-lightweight",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product trait",
|
||||
"product attribute",
|
||||
"key feature",
|
||||
"unique feature",
|
||||
"special characteristic",
|
||||
},
|
||||
Keywords: []string{
|
||||
"feature", "trait", "attribute", "characteristic",
|
||||
"capability", "functionality", "specification",
|
||||
"benefit", "advantage", "highlight",
|
||||
"unique", "differentiator",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productFeature(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productmaterial", Info{
|
||||
Display: "Product Material",
|
||||
Category: "product",
|
||||
Description: "The substance from which a product is made, influencing its appearance, durability, and properties",
|
||||
Example: "brass",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"material type",
|
||||
"product substance",
|
||||
"product composition",
|
||||
"item material",
|
||||
"build material",
|
||||
},
|
||||
Keywords: []string{
|
||||
"material", "substance", "composition", "make",
|
||||
"fabric", "textile", "cloth", "leather", "wool",
|
||||
"wood", "metal", "plastic", "glass", "stone",
|
||||
"durability", "properties", "construction",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productMaterial(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productupc", Info{
|
||||
Display: "Product UPC",
|
||||
Category: "product",
|
||||
Description: "Standardized barcode used for product identification and tracking in retail and commerce",
|
||||
Example: "012780949980",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"upc code",
|
||||
"product barcode",
|
||||
"product code",
|
||||
"product sku",
|
||||
"universal product code",
|
||||
"retail barcode",
|
||||
},
|
||||
Keywords: []string{
|
||||
"upc", "barcode", "product", "code", "identifier",
|
||||
"sku", "retail", "commerce", "inventory",
|
||||
"tracking", "scanning", "checkout", "label",
|
||||
"universal", "standard",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productUPC(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productaudience", Info{
|
||||
Display: "Product Audience",
|
||||
Category: "product",
|
||||
Description: "The group of people for whom the product is designed or intended",
|
||||
Example: "adults",
|
||||
Output: "[]string",
|
||||
Aliases: []string{
|
||||
"target audience",
|
||||
"target market",
|
||||
"customer group",
|
||||
"user base",
|
||||
"demographic group",
|
||||
},
|
||||
Keywords: []string{
|
||||
"audience", "market", "segment", "demographic",
|
||||
"consumer", "customer", "buyer", "user",
|
||||
"group", "target", "population", "adults",
|
||||
"kids", "teens", "families", "professionals",
|
||||
},
|
||||
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productAudience(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productdimension", Info{
|
||||
Display: "Product Dimension",
|
||||
Category: "product",
|
||||
Description: "The size or dimension of a product",
|
||||
Example: "medium",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product size",
|
||||
"product measurement",
|
||||
"item dimensions",
|
||||
"product scale",
|
||||
"size specification",
|
||||
},
|
||||
Keywords: []string{
|
||||
"dimension", "size", "measurement", "proportion",
|
||||
"scale", "specification", "specs", "length",
|
||||
"width", "height", "depth", "volume", "weight",
|
||||
"product", "item",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productDimension(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productusecase", Info{
|
||||
Display: "Product Use Case",
|
||||
Category: "product",
|
||||
Description: "The scenario or purpose for which a product is typically used",
|
||||
Example: "home",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"use case",
|
||||
"product purpose",
|
||||
"intended use",
|
||||
"product application",
|
||||
"usage scenario",
|
||||
},
|
||||
Keywords: []string{
|
||||
"use", "usecase", "purpose", "usage", "application",
|
||||
"context", "scenario", "situation", "case",
|
||||
"intention", "goal", "objective", "function",
|
||||
"home", "office", "outdoor", "industrial", "commercial",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productUseCase(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productbenefit", Info{
|
||||
Display: "Product Benefit",
|
||||
Category: "product",
|
||||
Description: "The key advantage or value the product provides",
|
||||
Example: "comfort",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product advantage",
|
||||
"product value",
|
||||
"user benefit",
|
||||
"customer gain",
|
||||
"selling point",
|
||||
},
|
||||
Keywords: []string{
|
||||
"benefit", "advantage", "value", "improvement",
|
||||
"enhancement", "feature", "positive", "outcome",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productBenefit(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productsuffix", Info{
|
||||
Display: "Product Suffix",
|
||||
Category: "product",
|
||||
Description: "A suffix used to differentiate product models or versions",
|
||||
Example: "pro",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"product suffix",
|
||||
"model suffix",
|
||||
"version suffix",
|
||||
"edition suffix",
|
||||
"name suffix",
|
||||
},
|
||||
Keywords: []string{
|
||||
"suffix", "variant", "edition", "version", "model",
|
||||
"series", "line", "tier", "release", "upgrade",
|
||||
"plus", "pro", "max", "lite", "mini",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productSuffix(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("productisbn", Info{
|
||||
Display: "Product ISBN",
|
||||
Category: "product",
|
||||
Description: "ISBN-10 or ISBN-13 identifier for books",
|
||||
Example: "978-1-4028-9462-6",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"isbn code", "isbn number", "book isbn", "isbn13",
|
||||
"isbn10", "publication code", "book identifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"identifier", "publication", "library", "catalog",
|
||||
"literature", "reference", "edition", "registration", "publishing",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return productISBN(f, nil), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
31
vendor/github.com/brianvoe/gofakeit/v7/school.go
generated
vendored
Normal file
31
vendor/github.com/brianvoe/gofakeit/v7/school.go
generated
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
package gofakeit
|
||||
|
||||
// School will generate a random School type
|
||||
func School() string { return school(GlobalFaker) }
|
||||
|
||||
func (f *Faker) School() string { return school(f) }
|
||||
|
||||
func school(f *Faker) string {
|
||||
return getRandValue(f, []string{"school", "name"}) + " " +
|
||||
getRandValue(f, []string{"school", "isPrivate"}) + " " +
|
||||
getRandValue(f, []string{"school", "type"})
|
||||
}
|
||||
|
||||
func addSchoolLookup() {
|
||||
AddFuncLookup("school", Info{
|
||||
Display: "School",
|
||||
Category: "school",
|
||||
Description: "An institution for formal education and learning",
|
||||
Example: `Harborview State Academy`,
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"academy", "educational institute", "learning center", "training school", "academic institution",
|
||||
},
|
||||
Keywords: []string{
|
||||
"institution", "education", "learning", "teaching", "university", "college", "campus", "classroom", "study", "pupil", "curriculum", "instruction",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return school(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
19
vendor/github.com/brianvoe/gofakeit/v7/slice.go
generated
vendored
Normal file
19
vendor/github.com/brianvoe/gofakeit/v7/slice.go
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// Slice fills built-in types and exported fields of a struct with random data.
|
||||
func Slice(v any) { sliceFunc(GlobalFaker, v) }
|
||||
|
||||
// Slice fills built-in types and exported fields of a struct with random data.
|
||||
func (f *Faker) Slice(v any) { sliceFunc(f, v) }
|
||||
|
||||
func sliceFunc(f *Faker, v any) {
|
||||
// Note: We intentionally call r with size -1 instead of using structFunc.
|
||||
// structFunc starts with size 0, which would result in zero-length top-level
|
||||
// slices and maps. Passing -1 lets rSlice/rMap auto-size (random length)
|
||||
// when no fakesize tag is provided.
|
||||
r(f, reflect.TypeOf(v), reflect.ValueOf(v), "", -1, 0)
|
||||
}
|
||||
131
vendor/github.com/brianvoe/gofakeit/v7/song.go
generated
vendored
Normal file
131
vendor/github.com/brianvoe/gofakeit/v7/song.go
generated
vendored
Normal file
@@ -0,0 +1,131 @@
|
||||
package gofakeit
|
||||
|
||||
func SongName() string { return songName(GlobalFaker) }
|
||||
|
||||
func (f *Faker) SongName() string { return songName(f) }
|
||||
|
||||
func songName(f *Faker) string { return getRandValue(f, []string{"song", "name"}) }
|
||||
|
||||
func SongArtist() string { return songArtist(GlobalFaker) }
|
||||
|
||||
func (f *Faker) SongArtist() string { return songArtist(f) }
|
||||
|
||||
func songArtist(f *Faker) string { return getRandValue(f, []string{"song", "artist"}) }
|
||||
|
||||
func SongGenre() string { return songGenre(GlobalFaker) }
|
||||
|
||||
func (f *Faker) SongGenre() string { return songGenre(f) }
|
||||
|
||||
func songGenre(f *Faker) string { return getRandValue(f, []string{"song", "genre"}) }
|
||||
|
||||
type SongInfo struct {
|
||||
Name string `json:"name" xml:"name"`
|
||||
Artist string `json:"artist" xml:"artist"`
|
||||
Genre string `json:"genre" xml:"genre"`
|
||||
}
|
||||
|
||||
func Song() *SongInfo { return song(GlobalFaker) }
|
||||
|
||||
func (f *Faker) Song() *SongInfo { return song(f) }
|
||||
|
||||
func song(f *Faker) *SongInfo {
|
||||
return &SongInfo{
|
||||
Name: songName(f),
|
||||
Artist: songArtist(f),
|
||||
Genre: songGenre(f),
|
||||
}
|
||||
}
|
||||
|
||||
func addSongLookup() {
|
||||
AddFuncLookup("song", Info{
|
||||
Display: "Song",
|
||||
Category: "song",
|
||||
Description: "Song with a drum and horn instrumentation",
|
||||
Example: `{
|
||||
"name": "New Rules",
|
||||
"genre": "Tropical house"
|
||||
}`,
|
||||
Output: "map[string]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"musical work",
|
||||
"sound piece",
|
||||
"single release",
|
||||
"record title",
|
||||
"audio selection",
|
||||
},
|
||||
Keywords: []string{
|
||||
"song", "music", "track", "tune", "melody",
|
||||
"artist", "genre", "name", "composition", "recording",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return song(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("songname", Info{
|
||||
Display: "Song Name",
|
||||
Category: "song",
|
||||
Description: "Title or name of a specific song used for identification and reference",
|
||||
Example: "New Rules",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"song title",
|
||||
"track name",
|
||||
"music title",
|
||||
"song label",
|
||||
},
|
||||
Keywords: []string{
|
||||
"song", "title", "name", "track", "music",
|
||||
"single", "hit", "tune", "recording",
|
||||
"composition", "melody",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return songName(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("songartist", Info{
|
||||
Display: "Song Artist",
|
||||
Category: "song",
|
||||
Description: "The artist of maker of song",
|
||||
Example: "Dua Lipa",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"performer name",
|
||||
"music act",
|
||||
"band name",
|
||||
"recording artist",
|
||||
"song creator",
|
||||
},
|
||||
Keywords: []string{
|
||||
"song", "artist", "singer", "musician", "composer",
|
||||
"band", "producer", "vocalist", "group", "instrumentalist",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return songArtist(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("songgenre", Info{
|
||||
Display: "Genre",
|
||||
Category: "song",
|
||||
Description: "Category that classifies song based on common themes, styles, and storytelling approaches",
|
||||
Example: "Action",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"music style",
|
||||
"song category",
|
||||
"musical classification",
|
||||
"sound type",
|
||||
"genre label",
|
||||
},
|
||||
Keywords: []string{
|
||||
"song", "genre", "style", "category", "type",
|
||||
"classification", "theme", "musical", "subgenre", "influence",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return songGenre(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
16
vendor/github.com/brianvoe/gofakeit/v7/source/BENCHMARKS.md
generated
vendored
Normal file
16
vendor/github.com/brianvoe/gofakeit/v7/source/BENCHMARKS.md
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
go test -bench=. -benchmem \
|
||||
goos: darwin \
|
||||
goarch: amd64 \
|
||||
pkg: github.com/brianvoe/gofakeit/v7 \
|
||||
cpu: Apple M1 Max \
|
||||
Table generated with tablesgenerator.com/markdown_tables File->Paste table data
|
||||
|
||||
| Benchmark | Iterations| Time/Iter | Bytes | Allocations |
|
||||
|---------------------|-----------|-------------|--------|-------------|
|
||||
| BenchmarkPCG-10 | 251946703 | 4.763 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkChaCha8-10 | 228052915 | 5.262 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkJSF-10 | 323858558 | 3.712 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkSFC-10 | 394809136 | 3.035 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkOld-10 | 207714157 | 5.733 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkDumb-10 | 458967214 | 2.611 ns/op | 0 B/op | 0 allocs/op |
|
||||
| BenchmarkCrypto-10 | 15747936 | 77.15 ns/op | 0 B/op | 0 allocs/op |
|
||||
65
vendor/github.com/brianvoe/gofakeit/v7/source/README.md
generated
vendored
Normal file
65
vendor/github.com/brianvoe/gofakeit/v7/source/README.md
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
# Random Number Generators Collection
|
||||
|
||||
This repository contains a collection of random number generators (RNGs) implemented in Go, designed to cater to a wide range of applications, from cryptographic operations to testing environments. Each RNG in the collection offers distinct features and performance characteristics, making it suitable for various use cases, including those requiring cryptographic security.
|
||||
|
||||
## Generators
|
||||
|
||||
### Crypto
|
||||
|
||||
- **Description**: Utilizes Go's `crypto/rand` package to provide cryptographically secure random numbers, suitable for security-sensitive applications.
|
||||
- **Usage**:
|
||||
```go
|
||||
source := NewCryptoSource()
|
||||
number := source.Uint64()
|
||||
```
|
||||
|
||||
### JSF (Jenkins Small Fast)
|
||||
|
||||
- **Description**: An implementation of the Jenkins Small Fast hash function for efficient pseudo-random number generation, balancing speed and randomness quality for general use.
|
||||
- **Usage**:
|
||||
```go
|
||||
source := NewJSFSource(seed)
|
||||
number := source.Uint64()
|
||||
```
|
||||
|
||||
### SFC (Simple Fast Counter)
|
||||
|
||||
- **Description**: Based on the Simple Fast Counter algorithm, this source offers rapid number generation with satisfactory randomness properties, ideal for simulations and non-cryptographic applications.
|
||||
- **Usage**:
|
||||
```go
|
||||
source := NewSFCSource(seed)
|
||||
number := source.Uint64()
|
||||
```
|
||||
|
||||
### Dumb
|
||||
|
||||
- **Description**: A deterministic generator designed primarily for testing, providing predictable output for scenarios where consistent results are more beneficial than high-quality randomness.
|
||||
- **Usage**:
|
||||
```go
|
||||
source := NewDumb(seed)
|
||||
number := source.Uint64()
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
To use these RNGs in your Go project, import the package as follows:
|
||||
|
||||
```go
|
||||
import "github.com/yourusername/randsource"
|
||||
```
|
||||
|
||||
Replace `yourusername` with your GitHub username or organization name where the repository is hosted.
|
||||
|
||||
## Usage
|
||||
|
||||
After importing the package, initialize the desired RNG with or without a seed (as applicable) and use the `Uint64` method to generate random numbers. See the usage examples under each generator's description for more details.
|
||||
|
||||
## Benchmarks
|
||||
|
||||
Performance benchmarks for each RNG are provided to help you choose the right generator for your application. These benchmarks cover various aspects, including speed and randomness quality.
|
||||
|
||||
For detailed benchmark results, see the [Benchmarks](https://github.com/brianvoe/gofakeit/blob/master/source/BENCHMARKS.md) file.
|
||||
|
||||
## Contributing
|
||||
|
||||
We welcome contributions and suggestions! Please open an issue or submit a pull request with your improvements.
|
||||
55
vendor/github.com/brianvoe/gofakeit/v7/source/crypto.go
generated
vendored
Normal file
55
vendor/github.com/brianvoe/gofakeit/v7/source/crypto.go
generated
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
package source
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/binary"
|
||||
)
|
||||
|
||||
// Package source implements a cryptographically secure pseudo-random number generator (CSPRNG)
|
||||
// using Go's crypto/rand. The Crypto type is designed for generating high-quality random
|
||||
// uint64 values, suitable for cryptographic applications like secure token generation,
|
||||
// cryptographic key creation, and other security-sensitive operations. It offers optional
|
||||
// thread safety through a locking mechanism, making it suitable for concurrent usage.
|
||||
|
||||
// Pros:
|
||||
// - Provides cryptographically secure randomness, suitable for security-sensitive applications.
|
||||
// - Optional thread safety with locking, enabling safe concurrent access.
|
||||
|
||||
// Cons:
|
||||
// - Locking mechanism, when enabled, may introduce performance overhead.
|
||||
// - Does not utilize a seed, as it leverages the system's cryptographic RNG, which may be a
|
||||
// limitation in scenarios where deterministic pseudo-randomness is desired.
|
||||
|
||||
type Crypto struct {
|
||||
buffer [64]byte // Buffer to hold a block of random data
|
||||
offset int // Current offset in the buffer
|
||||
}
|
||||
|
||||
// NewCrypto creates a new instance of Crypto.
|
||||
func NewCrypto() *Crypto {
|
||||
return &Crypto{
|
||||
buffer: [64]byte{}, // Initialize buffer with zeros
|
||||
offset: 64, // Set offset to the end of the buffer to trigger a refill on the first call
|
||||
}
|
||||
}
|
||||
|
||||
// refillBuffer fills the buffer with random data from crypto/rand.
|
||||
func (s *Crypto) refillBuffer() {
|
||||
if _, err := rand.Read(s.buffer[:]); err != nil {
|
||||
panic("crypto/rand failed: " + err.Error()) // Handle the error appropriately for your application
|
||||
}
|
||||
s.offset = 0 // Reset offset after refilling
|
||||
}
|
||||
|
||||
// Uint64 generates a pseudo-random 64-bit value using crypto/rand, served from a buffered block of data.
|
||||
func (s *Crypto) Uint64() uint64 {
|
||||
if s.offset+8 > len(s.buffer) { // Check if we need to refill the buffer
|
||||
s.refillBuffer()
|
||||
}
|
||||
|
||||
// Extract a uint64 value from the current position in the buffer
|
||||
val := binary.BigEndian.Uint64(s.buffer[s.offset:])
|
||||
s.offset += 8 // Move the offset for the next call
|
||||
|
||||
return val
|
||||
}
|
||||
44
vendor/github.com/brianvoe/gofakeit/v7/source/dumb.go
generated
vendored
Normal file
44
vendor/github.com/brianvoe/gofakeit/v7/source/dumb.go
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
package source
|
||||
|
||||
import "time"
|
||||
|
||||
// Dumb is a deterministic pseudo-random number generator designed specifically for testing purposes.
|
||||
// It offers predictable sequences of numbers based on the provided seed, making it ideal for scenarios
|
||||
// where consistent and reproducible test results are critical. By default, if initialized with a seed of 0,
|
||||
// Dumb uses the current timestamp to generate a starting point, ensuring some level of variability between runs.
|
||||
|
||||
// Pros:
|
||||
// - Predictability: Ensures reproducible outcomes in tests by providing a consistent sequence of numbers for a given seed.
|
||||
// - Simplicity: Easy to understand and integrate into testing frameworks, with minimal overhead.
|
||||
// - Default Variability: Uses the current timestamp as the default seed, providing variability across different test runs when no seed is specified.
|
||||
|
||||
// Cons:
|
||||
// - Not Suitable for Production: Lacks the randomness quality required for production-level cryptographic or statistical applications.
|
||||
// - Limited Randomness: The simple incrementation approach does not simulate the complexity of real-world random number generation.
|
||||
|
||||
// Dumb is a simplistic generator for predictable testing.
|
||||
type Dumb struct {
|
||||
state uint64
|
||||
}
|
||||
|
||||
// NewDumb initializes a Dumb generator.
|
||||
// If the seed is 0, initializes with the current timestamp.
|
||||
func NewDumb(seed uint64) *Dumb {
|
||||
d := &Dumb{}
|
||||
d.Seed(seed)
|
||||
return d
|
||||
}
|
||||
|
||||
// Seed sets the generator's state. If the seed is 0, it uses the current timestamp as the seed.
|
||||
func (d *Dumb) Seed(seed uint64) {
|
||||
if seed == 0 {
|
||||
seed = uint64(time.Now().UnixNano())
|
||||
}
|
||||
d.state = seed
|
||||
}
|
||||
|
||||
// Uint64 returns the next number in the sequence, incrementing the state.
|
||||
func (d *Dumb) Uint64() uint64 {
|
||||
d.state += 1
|
||||
return d.state
|
||||
}
|
||||
50
vendor/github.com/brianvoe/gofakeit/v7/source/jsf.go
generated
vendored
Normal file
50
vendor/github.com/brianvoe/gofakeit/v7/source/jsf.go
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
package source
|
||||
|
||||
// The JSF(Jenkins Small Fast) pseudo-random number generator.
|
||||
// Developed by Bob Jenkins, JSF is known for its speed and efficiency, making it suitable
|
||||
// for applications requiring fast, non-cryptographic quality random numbers. This implementation
|
||||
// offers seamless integration with Go's math/rand package and includes an improved seeding mechanism.
|
||||
|
||||
// Pros:
|
||||
// - Fast and efficient, ideal for high-performance requirements.
|
||||
// - Good randomness quality for non-cryptographic applications.
|
||||
// - Small state size and simple operations, ensuring a minimal memory footprint.
|
||||
|
||||
// Cons:
|
||||
// - Not suitable for cryptographic purposes due to its non-cryptographic security level.
|
||||
// - Quality of randomness may not match that of more complex algorithms.
|
||||
|
||||
type JSF struct {
|
||||
a, b, c, d uint32
|
||||
}
|
||||
|
||||
// NewJSF creates and returns a new JSF pseudo-random number generator.
|
||||
func NewJSF(seed uint64) *JSF {
|
||||
jsf := &JSF{}
|
||||
jsf.Seed(seed)
|
||||
return jsf
|
||||
}
|
||||
|
||||
// Seed sets the seed of the JSF with an improved seeding mechanism.
|
||||
func (jsf *JSF) Seed(seed uint64) {
|
||||
// Use the seed to derive initial values for a, b, c, d with better distribution
|
||||
// Splitting the 64-bit seed into parts and using different operations to diversify
|
||||
s1 := uint32(seed)
|
||||
s2 := uint32(seed >> 32)
|
||||
jsf.a = 0xf1ea5eed
|
||||
jsf.b = s1 ^ jsf.a
|
||||
jsf.c = s2 ^ jsf.b
|
||||
jsf.d = s1
|
||||
}
|
||||
|
||||
// Uint64 generates a pseudo-random 64-bit value using the improved JSF algorithm.
|
||||
func (jsf *JSF) Uint64() uint64 {
|
||||
e := jsf.a - (jsf.b<<27 | jsf.b>>(32-27))
|
||||
f := jsf.b ^ (jsf.c << 17)
|
||||
jsf.c += jsf.d
|
||||
jsf.d += e
|
||||
jsf.a = jsf.b + f
|
||||
jsf.b = jsf.c + e
|
||||
jsf.c = f + jsf.a
|
||||
return uint64(jsf.d)<<32 | uint64(jsf.a)
|
||||
}
|
||||
44
vendor/github.com/brianvoe/gofakeit/v7/source/sfc.go
generated
vendored
Normal file
44
vendor/github.com/brianvoe/gofakeit/v7/source/sfc.go
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
package source
|
||||
|
||||
// The SFC(Simple Fast Counter) algorithm is designed for fast and efficient generation of pseudo-random numbers,
|
||||
// utilizing arithmetic and bitwise operations across state variables and a counter to ensure
|
||||
// good randomness quality. It is particularly well-suited for applications requiring rapid
|
||||
// number generation without the need for cryptographic security.
|
||||
|
||||
// Pros:
|
||||
// - High efficiency and speed, ideal for performance-sensitive applications.
|
||||
// - Simple to implement and maintain, with minimal computational overhead.
|
||||
// - Offers a balance between speed and randomness quality, suitable for a wide range of uses.
|
||||
|
||||
// Cons:
|
||||
// - Not designed for cryptographic applications due to its level of randomness.
|
||||
// - Initial seeding mechanism is basic; may require enhancement for more complex use cases.
|
||||
|
||||
type SFC struct {
|
||||
a, b, c, counter uint64
|
||||
}
|
||||
|
||||
// NewSFC creates and returns a new SFC pseudo-random number generator seeded with a given seed.
|
||||
func NewSFC(seed uint64) *SFC {
|
||||
s := &SFC{}
|
||||
s.Seed(seed)
|
||||
return s
|
||||
}
|
||||
|
||||
// Seed sets the seed of the SFC. This implementation can be enhanced to
|
||||
// provide a more distributed seeding process across the state variables.
|
||||
func (s *SFC) Seed(seed uint64) {
|
||||
s.a = seed
|
||||
s.b = seed
|
||||
s.c = seed
|
||||
s.counter = 1 // Reset counter with new seed
|
||||
}
|
||||
|
||||
// Uint64 generates a pseudo-random 64-bit value using the SFC algorithm.
|
||||
func (s *SFC) Uint64() uint64 {
|
||||
s.a += s.b + s.counter
|
||||
s.b ^= s.c
|
||||
s.c -= s.a
|
||||
s.counter++
|
||||
return s.c + s.b
|
||||
}
|
||||
163
vendor/github.com/brianvoe/gofakeit/v7/sql.go
generated
vendored
Normal file
163
vendor/github.com/brianvoe/gofakeit/v7/sql.go
generated
vendored
Normal file
@@ -0,0 +1,163 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type SQLOptions struct {
|
||||
Table string `json:"table" xml:"table"` // Table name we are inserting into
|
||||
Count int `json:"count" xml:"count"` // How many entries (tuples) we're generating
|
||||
Fields []Field `json:"fields" xml:"fields"` // The fields to be generated
|
||||
}
|
||||
|
||||
func SQL(so *SQLOptions) (string, error) { return sqlFunc(GlobalFaker, so) }
|
||||
|
||||
func (f *Faker) SQL(so *SQLOptions) (string, error) { return sqlFunc(f, so) }
|
||||
|
||||
func sqlFunc(f *Faker, so *SQLOptions) (string, error) {
|
||||
if so.Table == "" {
|
||||
return "", errors.New("must provide table name to generate SQL")
|
||||
}
|
||||
if len(so.Fields) <= 0 {
|
||||
return "", errors.New(("must pass fields in order to generate SQL queries"))
|
||||
}
|
||||
if so.Count <= 0 {
|
||||
return "", errors.New("must have entry count")
|
||||
}
|
||||
|
||||
var sb strings.Builder
|
||||
sb.WriteString("INSERT INTO " + so.Table + " ")
|
||||
|
||||
// Loop through each field and put together column names
|
||||
var cols []string
|
||||
for _, f := range so.Fields {
|
||||
cols = append(cols, f.Name)
|
||||
}
|
||||
sb.WriteString("(" + strings.Join(cols, ", ") + ")")
|
||||
|
||||
sb.WriteString(" VALUES ")
|
||||
for i := 0; i < so.Count; i++ {
|
||||
// Start opening value
|
||||
sb.WriteString("(")
|
||||
|
||||
// Now, we need to add all of our fields
|
||||
var endStr string
|
||||
for ii, field := range so.Fields {
|
||||
// Set end of value string
|
||||
endStr = ", "
|
||||
if ii == len(so.Fields)-1 {
|
||||
endStr = ""
|
||||
}
|
||||
|
||||
// If autoincrement, add based upon loop
|
||||
if field.Function == "autoincrement" {
|
||||
sb.WriteString(fmt.Sprintf("%d%s", i+1, endStr))
|
||||
continue
|
||||
}
|
||||
|
||||
// Get the function info for the field
|
||||
funcInfo := GetFuncLookup(field.Function)
|
||||
if funcInfo == nil {
|
||||
return "", errors.New("invalid function, " + field.Function + " does not exist")
|
||||
}
|
||||
|
||||
// Generate the value
|
||||
val, err := funcInfo.Generate(f, &field.Params, funcInfo)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Convert the output value to the proper SQL type
|
||||
convertType := sqlConvertType(funcInfo.Output, val)
|
||||
|
||||
// If its the last field, we need to close the value
|
||||
sb.WriteString(convertType + endStr)
|
||||
}
|
||||
|
||||
// If its the last value, we need to close the value
|
||||
if i == so.Count-1 {
|
||||
sb.WriteString(");")
|
||||
} else {
|
||||
sb.WriteString("),")
|
||||
}
|
||||
}
|
||||
|
||||
return sb.String(), nil
|
||||
}
|
||||
|
||||
// sqlConvertType will take in a type and value and convert it to the proper SQL type
|
||||
func sqlConvertType(t string, val any) string {
|
||||
switch t {
|
||||
case "string":
|
||||
return `'` + fmt.Sprintf("%v", val) + `'`
|
||||
case "[]byte":
|
||||
return `'` + fmt.Sprintf("%s", val) + `'`
|
||||
default:
|
||||
return fmt.Sprintf("%v", val)
|
||||
}
|
||||
}
|
||||
|
||||
func addDatabaseSQLLookup() {
|
||||
AddFuncLookup("sql", Info{
|
||||
Display: "SQL",
|
||||
Category: "database",
|
||||
Description: "Command in SQL used to add new data records into a database table",
|
||||
Example: `INSERT INTO people
|
||||
(id, first_name, price, age, created_at)
|
||||
VALUES
|
||||
(1, 'Markus', 804.92, 21, '1937-01-30 07:58:01'),
|
||||
(2, 'Santino', 235.13, 40, '1964-07-07 22:25:40');`,
|
||||
Output: "string",
|
||||
ContentType: "application/sql",
|
||||
Aliases: []string{
|
||||
"insert command", "database query", "sql statement", "record insert", "data query",
|
||||
},
|
||||
Keywords: []string{
|
||||
"database", "insert", "command", "records", "table", "tuples", "rows", "data", "values", "query",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "table", Display: "Table", Type: "string", Description: "Name of the table to insert into"},
|
||||
{Field: "count", Display: "Count", Type: "int", Default: "100", Description: "Number of inserts to generate"},
|
||||
{Field: "fields", Display: "Fields", Type: "[]Field", Description: "Fields containing key name and function to run in json format"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
so := SQLOptions{}
|
||||
|
||||
table, err := info.GetString(m, "table")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
so.Table = table
|
||||
|
||||
count, err := info.GetInt(m, "count")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
so.Count = count
|
||||
|
||||
fieldsStr, err := info.GetStringArray(m, "fields")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Check to make sure fields has length
|
||||
if len(fieldsStr) > 0 {
|
||||
so.Fields = make([]Field, len(fieldsStr))
|
||||
|
||||
for i, f := range fieldsStr {
|
||||
// Unmarshal fields string into fields array
|
||||
err = json.Unmarshal([]byte(f), &so.Fields[i])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return sqlFunc(f, &so)
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
325
vendor/github.com/brianvoe/gofakeit/v7/string.go
generated
vendored
Normal file
325
vendor/github.com/brianvoe/gofakeit/v7/string.go
generated
vendored
Normal file
@@ -0,0 +1,325 @@
|
||||
package gofakeit
|
||||
|
||||
// Letter will generate a single random lower case ASCII letter
|
||||
func Letter() string { return letter(GlobalFaker) }
|
||||
|
||||
// Letter will generate a single random lower case ASCII letter
|
||||
func (f *Faker) Letter() string { return letter(f) }
|
||||
|
||||
func letter(f *Faker) string { return string(randLetter(f)) }
|
||||
|
||||
// LetterN will generate a random ASCII string with length N. Note that this function returns a string with a length of 1 when 0 is passed.
|
||||
func LetterN(n uint) string { return letterN(GlobalFaker, n) }
|
||||
|
||||
// LetterN will generate a random ASCII string with length N. Note that this function returns a string with a length of 1 when 0 is passed.
|
||||
func (f *Faker) LetterN(n uint) string { return letterN(f, n) }
|
||||
|
||||
func letterN(f *Faker, n uint) string {
|
||||
// Make sure we dont use 0
|
||||
if n == 0 {
|
||||
n = 1
|
||||
}
|
||||
out := make([]rune, n)
|
||||
for i := 0; i < int(n); i++ {
|
||||
out[i] = randLetter(f)
|
||||
}
|
||||
return string(out)
|
||||
}
|
||||
|
||||
// Vowel will generate a single random lower case vowel
|
||||
func Vowel() string { return vowel(GlobalFaker) }
|
||||
|
||||
// Vowel will generate a single random lower case vowel
|
||||
func (f *Faker) Vowel() string { return vowel(f) }
|
||||
|
||||
func vowel(f *Faker) string { return string(randCharacter(f, vowels)) }
|
||||
|
||||
// Digit will generate a single ASCII digit
|
||||
func Digit() string { return digit(GlobalFaker) }
|
||||
|
||||
// Digit will generate a single ASCII digit
|
||||
func (f *Faker) Digit() string { return digit(f) }
|
||||
|
||||
func digit(f *Faker) string { return string(randDigit(f)) }
|
||||
|
||||
// DigitN will generate a random string of length N consists of ASCII digits. Note that the string generated can start with 0 and this function returns a string with a length of 1 when 0 is passed.
|
||||
func DigitN(n uint) string { return digitN(GlobalFaker, n) }
|
||||
|
||||
// DigitN will generate a random string of length N consists of ASCII digits. Note that the string generated can start with 0 and this function returns a string with a length of 1 when 0 is passed.
|
||||
func (f *Faker) DigitN(n uint) string { return digitN(f, n) }
|
||||
|
||||
func digitN(f *Faker, n uint) string {
|
||||
// Make sure we dont use 0
|
||||
if n == 0 {
|
||||
n = 1
|
||||
}
|
||||
out := make([]rune, n)
|
||||
for i := 0; i < int(n); i++ {
|
||||
out[i] = randDigit(f)
|
||||
}
|
||||
return string(out)
|
||||
}
|
||||
|
||||
// Numerify will replace # with random numerical values
|
||||
func Numerify(str string) string { return numerify(GlobalFaker, str) }
|
||||
|
||||
// Numerify will replace # with random numerical values
|
||||
func (f *Faker) Numerify(str string) string { return numerify(f, str) }
|
||||
|
||||
func numerify(f *Faker, str string) string { return replaceWithNumbers(f, str) }
|
||||
|
||||
// Lexify will replace ? with random generated letters
|
||||
func Lexify(str string) string { return lexify(GlobalFaker, str) }
|
||||
|
||||
// Lexify will replace ? with random generated letters
|
||||
func (f *Faker) Lexify(str string) string { return lexify(f, str) }
|
||||
|
||||
func lexify(f *Faker, str string) string { return replaceWithLetters(f, str) }
|
||||
|
||||
// ShuffleStrings will randomize a slice of strings
|
||||
func ShuffleStrings(a []string) { shuffleStrings(GlobalFaker, a) }
|
||||
|
||||
// ShuffleStrings will randomize a slice of strings
|
||||
func (f *Faker) ShuffleStrings(a []string) { shuffleStrings(f, a) }
|
||||
|
||||
func shuffleStrings(f *Faker, a []string) {
|
||||
swap := func(i, j int) {
|
||||
a[i], a[j] = a[j], a[i]
|
||||
}
|
||||
//to avoid upgrading to 1.10 I copied the algorithm
|
||||
n := len(a)
|
||||
if n <= 1 {
|
||||
return
|
||||
}
|
||||
|
||||
//if size is > int32 probably it will never finish, or ran out of entropy
|
||||
i := n - 1
|
||||
for ; i > 0; i-- {
|
||||
j := int(int32NFunc(f, int32(i+1)))
|
||||
swap(i, j)
|
||||
}
|
||||
}
|
||||
|
||||
// RandomString will take in a slice of string and return a randomly selected value
|
||||
func RandomString(a []string) string { return randomString(GlobalFaker, a) }
|
||||
|
||||
// RandomString will take in a slice of string and return a randomly selected value
|
||||
func (f *Faker) RandomString(a []string) string { return randomString(f, a) }
|
||||
|
||||
func randomString(f *Faker, a []string) string {
|
||||
size := len(a)
|
||||
if size == 0 {
|
||||
return ""
|
||||
}
|
||||
if size == 1 {
|
||||
return a[0]
|
||||
}
|
||||
return a[f.IntN(size)]
|
||||
}
|
||||
|
||||
func addStringLookup() {
|
||||
AddFuncLookup("letter", Info{
|
||||
Display: "Letter",
|
||||
Category: "string",
|
||||
Description: "Character or symbol from the American Standard Code for Information Interchange (ASCII) character set",
|
||||
Example: "g",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"alphabet", "character", "text symbol", "ascii char", "alphabetical sign",
|
||||
},
|
||||
Keywords: []string{
|
||||
"standard", "code", "information", "interchange", "set", "printable", "typography", "symbolic", "encoding",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return letter(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("lettern", Info{
|
||||
Display: "LetterN",
|
||||
Category: "string",
|
||||
Description: "ASCII string with length N",
|
||||
Example: "gbRMaRxHki",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"random letters", "ascii string", "text sequence", "generated letters", "alphabetical string",
|
||||
},
|
||||
Keywords: []string{
|
||||
"sequence", "multiple", "concatenated", "combined", "series", "generated", "batch", "collection",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "count", Display: "Count", Type: "uint", Description: "Number of digits to generate"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
ui, err := info.GetUint(m, "count")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return letterN(f, ui), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("vowel", Info{
|
||||
Display: "Vowel",
|
||||
Category: "string",
|
||||
Description: "Speech sound produced with an open vocal tract",
|
||||
Example: "a",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"vocal sound", "speech letter", "phonetic vowel", "linguistic vowel", "spoken sound",
|
||||
},
|
||||
Keywords: []string{
|
||||
"open", "e", "i", "o", "u", "phonetic", "linguistic", "articulation", "pronunciation", "syllable",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return vowel(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("digit", Info{
|
||||
Display: "Digit",
|
||||
Category: "string",
|
||||
Description: "Numerical symbol used to represent numbers",
|
||||
Example: "0",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"number symbol", "numeric character", "decimal digit", "ascii number", "numerical sign",
|
||||
},
|
||||
Keywords: []string{
|
||||
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "decimal", "base10", "notation", "numeric",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return digit(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("digitn", Info{
|
||||
Display: "DigitN",
|
||||
Category: "string",
|
||||
Description: "String of length N consisting of ASCII digits",
|
||||
Example: "0136459948",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"numeric string", "digit sequence", "number series", "generated digits", "ascii digits",
|
||||
},
|
||||
Keywords: []string{
|
||||
"consisting", "multiple", "concatenated", "combined", "series", "numeric", "sequence", "continuous", "string", "digits",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "count", Display: "Count", Type: "uint", Description: "Number of digits to generate"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
ui, err := info.GetUint(m, "count")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return digitN(f, ui), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("numerify", Info{
|
||||
Display: "Numerify",
|
||||
Category: "string",
|
||||
Description: "Replace # with random numerical values",
|
||||
Example: "(###)###-#### => (555)867-5309",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"hash replace", "number substitute", "pattern filler", "digit replacer", "placeholder numbers",
|
||||
},
|
||||
Keywords: []string{
|
||||
"replace", "hash", "pound", "template", "placeholder", "format", "substitute", "pattern", "randomize", "masking",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "str", Display: "String", Type: "string", Description: "String value to replace #'s"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
str, err := info.GetString(m, "str")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return numerify(f, str), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("lexify", Info{
|
||||
Display: "Lexify",
|
||||
Category: "string",
|
||||
Description: "Replace ? with random generated letters",
|
||||
Example: "?????@??????.com => billy@mister.com",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"letter substitute", "pattern letters", "placeholder letters", "random letter filler", "character replacer",
|
||||
},
|
||||
Keywords: []string{
|
||||
"replace", "question", "mark", "template", "placeholder", "format", "substitute", "pattern", "randomize", "masking",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "str", Display: "String", Type: "string", Description: "String value to replace ?'s"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
str, err := info.GetString(m, "str")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return lexify(f, str), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("shufflestrings", Info{
|
||||
Display: "Shuffle Strings",
|
||||
Category: "string",
|
||||
Description: "Shuffle an array of strings",
|
||||
Example: "hello,world,whats,up => whats,world,hello,up",
|
||||
Output: "[]string",
|
||||
ContentType: "application/json",
|
||||
Aliases: []string{
|
||||
"array shuffle", "list randomize", "string reorder", "string mixer", "sequence shuffle",
|
||||
},
|
||||
Keywords: []string{
|
||||
"collection", "list", "slice", "permutation", "randomized", "scrambled", "jumbled", "unordered",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "strs", Display: "Strings", Type: "[]string", Description: "Delimited separated strings"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
strs, err := info.GetStringArray(m, "strs")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
shuffleStrings(f, strs)
|
||||
|
||||
return strs, nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("randomstring", Info{
|
||||
Display: "Random String",
|
||||
Category: "string",
|
||||
Description: "Return a random string from a string array",
|
||||
Example: "hello,world,whats,up => world",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"string picker", "array choice", "string select", "random pick", "string chooser",
|
||||
},
|
||||
Keywords: []string{
|
||||
"selection", "chosen", "picked", "random", "list", "slice", "array", "choice", "element", "option",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "strs", Display: "Strings", Type: "[]string", Description: "Delimited separated strings"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
strs, err := info.GetStringArray(m, "strs")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return randomString(f, strs), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
642
vendor/github.com/brianvoe/gofakeit/v7/struct.go
generated
vendored
Normal file
642
vendor/github.com/brianvoe/gofakeit/v7/struct.go
generated
vendored
Normal file
@@ -0,0 +1,642 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// RecursiveDepth controls the maximum recursion depth when populating structs.
|
||||
// Increase if your data structures are deeply nested; decrease to be more conservative.
|
||||
var RecursiveDepth = 10
|
||||
|
||||
// Struct fills in exported fields of a struct with random data
|
||||
// based on the value of `fake` tag of exported fields
|
||||
// or with the result of a call to the Fake() method
|
||||
// if the field type implements `Fakeable`.
|
||||
// Use `fake:"skip"` to explicitly skip an element.
|
||||
// All built-in types are supported, with templating support
|
||||
// for string types.
|
||||
func Struct(v any) error { return structFunc(GlobalFaker, v) }
|
||||
|
||||
// Struct fills in exported fields of a struct with random data
|
||||
// based on the value of `fake` tag of exported fields.
|
||||
// Use `fake:"skip"` to explicitly skip an element.
|
||||
// All built-in types are supported, with templating support
|
||||
// for string types.
|
||||
func (f *Faker) Struct(v any) error { return structFunc(f, v) }
|
||||
|
||||
func structFunc(f *Faker, v any) error {
|
||||
return r(f, reflect.TypeOf(v), reflect.ValueOf(v), "", 0, 0)
|
||||
}
|
||||
|
||||
func r(f *Faker, t reflect.Type, v reflect.Value, tag string, size int, depth int) error {
|
||||
// Handle special types
|
||||
|
||||
if t.PkgPath() == "encoding/json" {
|
||||
// encoding/json has two special types:
|
||||
// - RawMessage
|
||||
// - Number
|
||||
|
||||
switch t.Name() {
|
||||
case "RawMessage":
|
||||
return rJsonRawMessage(f, v, tag)
|
||||
case "Number":
|
||||
return rJsonNumber(f, v, tag)
|
||||
default:
|
||||
return errors.New("unknown encoding/json type: " + t.Name())
|
||||
}
|
||||
}
|
||||
|
||||
// Handle generic types
|
||||
switch t.Kind() {
|
||||
case reflect.Ptr:
|
||||
return rPointer(f, t, v, tag, size, depth)
|
||||
case reflect.Struct:
|
||||
return rStruct(f, t, v, tag, depth)
|
||||
case reflect.String:
|
||||
return rString(f, t, v, tag)
|
||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||
return rUint(f, t, v, tag)
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
return rInt(f, t, v, tag)
|
||||
case reflect.Float32, reflect.Float64:
|
||||
return rFloat(f, t, v, tag)
|
||||
case reflect.Bool:
|
||||
return rBool(f, t, v, tag)
|
||||
case reflect.Array, reflect.Slice:
|
||||
return rSlice(f, t, v, tag, size, depth)
|
||||
case reflect.Map:
|
||||
return rMap(f, t, v, tag, size, depth)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rCustom(f *Faker, v reflect.Value, tag string) error {
|
||||
// If tag is empty return error
|
||||
if tag == "" {
|
||||
return errors.New("tag is empty")
|
||||
}
|
||||
|
||||
fName, fParams := parseNameAndParamsFromTag(tag)
|
||||
info := GetFuncLookup(fName)
|
||||
|
||||
// Check to see if it's a replaceable lookup function
|
||||
if info == nil {
|
||||
return fmt.Errorf("function %q not found", tag)
|
||||
}
|
||||
|
||||
// Parse map params
|
||||
mapParams, err := parseMapParams(info, fParams)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Call function
|
||||
fValue, err := info.Generate(f, mapParams, info)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create new element of expected type
|
||||
field := reflect.New(reflect.TypeOf(fValue))
|
||||
field.Elem().Set(reflect.ValueOf(fValue))
|
||||
|
||||
// Check if element is pointer if so
|
||||
// grab the underlying value
|
||||
fieldElem := field.Elem()
|
||||
if fieldElem.Kind() == reflect.Ptr {
|
||||
fieldElem = fieldElem.Elem()
|
||||
}
|
||||
|
||||
// Check if field kind is the same as the expected type
|
||||
if fieldElem.Kind() != v.Kind() {
|
||||
// return error saying the field and kinds that do not match
|
||||
return errors.New("field kind " + fieldElem.Kind().String() + " does not match expected kind " + v.Kind().String())
|
||||
}
|
||||
|
||||
// Set the value
|
||||
v.Set(fieldElem.Convert(v.Type()))
|
||||
|
||||
// If a function is called to set the struct
|
||||
// stop from going through sub fields
|
||||
return nil
|
||||
}
|
||||
|
||||
func rStruct(f *Faker, t reflect.Type, v reflect.Value, tag string, depth int) error {
|
||||
// Prevent recursing deeper than configured levels
|
||||
if depth >= RecursiveDepth {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check if tag exists, if so run custom function
|
||||
if t.Name() != "" && tag != "" {
|
||||
return rCustom(f, v, tag)
|
||||
}
|
||||
|
||||
// Check if struct is fakeable
|
||||
if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Struct)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Set(reflect.ValueOf(value))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Loop through all the fields of the struct
|
||||
n := t.NumField()
|
||||
for i := 0; i < n; i++ {
|
||||
elementT := t.Field(i)
|
||||
elementV := v.Field(i)
|
||||
fakeTag, ok := elementT.Tag.Lookup("fake")
|
||||
|
||||
// Check whether or not to skip this field
|
||||
if ok && fakeTag == "skip" || fakeTag == "-" {
|
||||
// Do nothing, skip it
|
||||
continue
|
||||
}
|
||||
|
||||
// Check to make sure you can set it or that it's an embedded(anonymous) field
|
||||
if !elementV.CanSet() && !elementT.Anonymous {
|
||||
continue
|
||||
}
|
||||
|
||||
// Check if reflect type is of values we can specifically set
|
||||
elemStr := elementT.Type.String()
|
||||
switch elemStr {
|
||||
case "time.Time", "*time.Time":
|
||||
// Check if element is a pointer
|
||||
elemV := elementV
|
||||
if elemStr == "*time.Time" {
|
||||
elemV = reflect.New(elementT.Type.Elem()).Elem()
|
||||
}
|
||||
|
||||
// Run rTime on the element
|
||||
err := rTime(f, elementT, elemV, fakeTag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if elemStr == "*time.Time" {
|
||||
elementV.Set(elemV.Addr())
|
||||
}
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
// Check if fakesize is set
|
||||
size := -1 // Set to -1 to indicate fakesize was not set
|
||||
fs, ok := elementT.Tag.Lookup("fakesize")
|
||||
if ok {
|
||||
var err error
|
||||
|
||||
// Check if size has params separated by ,
|
||||
if strings.Contains(fs, ",") {
|
||||
sizeSplit := strings.SplitN(fs, ",", 2)
|
||||
if len(sizeSplit) == 2 {
|
||||
var sizeMin int
|
||||
var sizeMax int
|
||||
|
||||
sizeMin, err = strconv.Atoi(sizeSplit[0])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sizeMax, err = strconv.Atoi(sizeSplit[1])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
size = f.IntN(sizeMax-sizeMin+1) + sizeMin
|
||||
}
|
||||
} else {
|
||||
size, err = strconv.Atoi(fs)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Recursively call r() to fill in the struct
|
||||
err := r(f, elementT.Type, elementV, fakeTag, size, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rPointer(f *Faker, t reflect.Type, v reflect.Value, tag string, size int, depth int) error {
|
||||
elemT := t.Elem()
|
||||
// Prevent recursing deeper than configured levels
|
||||
if depth >= RecursiveDepth {
|
||||
return nil
|
||||
}
|
||||
|
||||
if v.IsNil() {
|
||||
nv := reflect.New(elemT).Elem()
|
||||
err := r(f, elemT, nv, tag, size, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Set(nv.Addr())
|
||||
} else {
|
||||
err := r(f, elemT, v.Elem(), tag, size, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rSlice(f *Faker, t reflect.Type, v reflect.Value, tag string, size int, depth int) error {
|
||||
// If you cant even set it dont even try
|
||||
if !v.CanSet() {
|
||||
return errors.New("cannot set slice")
|
||||
}
|
||||
|
||||
// Prevent recursing deeper than configured levels
|
||||
if depth >= RecursiveDepth {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check if tag exists, if so run custom function
|
||||
if t.Name() != "" && tag != "" {
|
||||
// Check to see if custom function works if not continue to normal loop of values
|
||||
err := rCustom(f, v, tag)
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Slice, reflect.Array)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Set(reflect.ValueOf(value))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Grab original size to use if needed for sub arrays
|
||||
ogSize := size
|
||||
|
||||
// If the value has a len and is less than the size
|
||||
// use that instead of the requested size
|
||||
elemLen := v.Len()
|
||||
if elemLen == 0 && size == -1 {
|
||||
size = number(f, 1, 10)
|
||||
} else if elemLen != 0 && (size == -1 || elemLen < size) {
|
||||
size = elemLen
|
||||
}
|
||||
|
||||
// Get the element type
|
||||
elemT := t.Elem()
|
||||
|
||||
// Loop through the elements length and set based upon the index
|
||||
for i := 0; i < size; i++ {
|
||||
nv := reflect.New(elemT)
|
||||
err := r(f, elemT, nv.Elem(), tag, ogSize, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// If values are already set fill them up, otherwise append
|
||||
if elemLen != 0 {
|
||||
v.Index(i).Set(reflect.Indirect(nv))
|
||||
} else {
|
||||
v.Set(reflect.Append(reflect.Indirect(v), reflect.Indirect(nv)))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rMap(f *Faker, t reflect.Type, v reflect.Value, tag string, size int, depth int) error {
|
||||
// If you cant even set it dont even try
|
||||
if !v.CanSet() {
|
||||
return errors.New("cannot set slice")
|
||||
}
|
||||
|
||||
// Prevent recursing deeper than configured levels
|
||||
if depth >= RecursiveDepth {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Check if tag exists, if so run custom function
|
||||
if tag != "" {
|
||||
return rCustom(f, v, tag)
|
||||
} else if isFakeable(t) && size <= 0 {
|
||||
// Only call custom function if no fakesize is specified (size <= 0)
|
||||
value, err := callFake(f, v, reflect.Map)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Set(reflect.ValueOf(value))
|
||||
return nil
|
||||
}
|
||||
|
||||
// Set a size
|
||||
newSize := size
|
||||
if newSize == -1 {
|
||||
newSize = number(f, 1, 10)
|
||||
}
|
||||
|
||||
// Create new map based upon map key value type
|
||||
mapType := reflect.MapOf(t.Key(), t.Elem())
|
||||
newMap := reflect.MakeMap(mapType)
|
||||
|
||||
for i := 0; i < newSize; i++ {
|
||||
// Create new key
|
||||
mapIndex := reflect.New(t.Key())
|
||||
err := r(f, t.Key(), mapIndex.Elem(), "", -1, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Create new value
|
||||
mapValue := reflect.New(t.Elem())
|
||||
err = r(f, t.Elem(), mapValue.Elem(), "", -1, depth+1)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
newMap.SetMapIndex(mapIndex.Elem(), mapValue.Elem())
|
||||
}
|
||||
|
||||
// Set newMap into struct field
|
||||
if t.Kind() == reflect.Ptr {
|
||||
v.Set(newMap.Elem())
|
||||
} else {
|
||||
v.Set(newMap)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rString(f *Faker, t reflect.Type, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
genStr, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetString(genStr)
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.String)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
valueStr, ok := value.(string)
|
||||
if !ok {
|
||||
return errors.New("call to Fake method did not return a string")
|
||||
}
|
||||
v.SetString(valueStr)
|
||||
} else {
|
||||
genStr, err := generate(f, strings.Repeat("?", number(f, 4, 10)))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetString(genStr)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rInt(f *Faker, t reflect.Type, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
genStr, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
i, err := strconv.ParseInt(genStr, 10, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetInt(i)
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch i := value.(type) {
|
||||
case int:
|
||||
v.SetInt(int64(i))
|
||||
case int8:
|
||||
v.SetInt(int64(i))
|
||||
case int16:
|
||||
v.SetInt(int64(i))
|
||||
case int32:
|
||||
v.SetInt(int64(i))
|
||||
case int64:
|
||||
v.SetInt(int64(i))
|
||||
default:
|
||||
return errors.New("call to Fake method did not return an integer")
|
||||
}
|
||||
} else {
|
||||
// If no tag or error converting to int, set with random value
|
||||
switch t.Kind() {
|
||||
case reflect.Int:
|
||||
v.SetInt(int64Func(f))
|
||||
case reflect.Int8:
|
||||
v.SetInt(int64(int8Func(f)))
|
||||
case reflect.Int16:
|
||||
v.SetInt(int64(int16Func(f)))
|
||||
case reflect.Int32:
|
||||
v.SetInt(int64(int32Func(f)))
|
||||
case reflect.Int64:
|
||||
v.SetInt(int64Func(f))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rUint(f *Faker, t reflect.Type, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
genStr, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
u, err := strconv.ParseUint(genStr, 10, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetUint(u)
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch i := value.(type) {
|
||||
case uint:
|
||||
v.SetUint(uint64(i))
|
||||
case uint8:
|
||||
v.SetUint(uint64(i))
|
||||
case uint16:
|
||||
v.SetUint(uint64(i))
|
||||
case uint32:
|
||||
v.SetUint(uint64(i))
|
||||
case uint64:
|
||||
v.SetUint(uint64(i))
|
||||
default:
|
||||
return errors.New("call to Fake method did not return an unsigned integer")
|
||||
}
|
||||
} else {
|
||||
// If no tag or error converting to uint, set with random value
|
||||
switch t.Kind() {
|
||||
case reflect.Uint:
|
||||
v.SetUint(f.Uint64())
|
||||
case reflect.Uint8:
|
||||
v.SetUint(uint64(uint8Func(f)))
|
||||
case reflect.Uint16:
|
||||
v.SetUint(uint64(uint16Func(f)))
|
||||
case reflect.Uint32:
|
||||
v.SetUint(uint64(uint32Func(f)))
|
||||
case reflect.Uint64:
|
||||
v.SetUint(f.Uint64())
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rFloat(f *Faker, t reflect.Type, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
genStr, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f, err := strconv.ParseFloat(genStr, 64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetFloat(f)
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Float32, reflect.Float64)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch i := value.(type) {
|
||||
case float32:
|
||||
v.SetFloat(float64(i))
|
||||
case float64:
|
||||
v.SetFloat(float64(i))
|
||||
default:
|
||||
return errors.New("call to Fake method did not return a float")
|
||||
}
|
||||
} else {
|
||||
// If no tag or error converting to float, set with random value
|
||||
switch t.Kind() {
|
||||
case reflect.Float64:
|
||||
v.SetFloat(float64Func(f))
|
||||
case reflect.Float32:
|
||||
v.SetFloat(float64(float32Func(f)))
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func rBool(f *Faker, t reflect.Type, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
genStr, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
b, err := strconv.ParseBool(genStr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.SetBool(b)
|
||||
} else if isFakeable(t) {
|
||||
value, err := callFake(f, v, reflect.Bool)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
switch i := value.(type) {
|
||||
case bool:
|
||||
v.SetBool(bool(i))
|
||||
default:
|
||||
return errors.New("call to Fake method did not return a boolean")
|
||||
}
|
||||
} else {
|
||||
// If no tag or error converting to boolean, set with random value
|
||||
v.SetBool(boolFunc(f))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// rTime will set a time.Time field the best it can from either the default date tag or from the generate tag
|
||||
func rTime(f *Faker, t reflect.StructField, v reflect.Value, tag string) error {
|
||||
if tag != "" {
|
||||
// Generate time
|
||||
timeOutput, err := generate(f, tag)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Check to see if timeOutput has monotonic clock reading
|
||||
// if so, remove it. This is because time.Parse() does not
|
||||
// support parsing the monotonic clock reading
|
||||
if strings.Contains(timeOutput, " m=") {
|
||||
timeOutput = strings.Split(timeOutput, " m=")[0]
|
||||
}
|
||||
|
||||
// Check to see if they are passing in a format to parse the time
|
||||
timeFormat, timeFormatOK := t.Tag.Lookup("format")
|
||||
if timeFormatOK {
|
||||
timeFormat = javaDateTimeFormatToGolangFormat(timeFormat)
|
||||
} else {
|
||||
// If tag == "{date}" use time.RFC3339
|
||||
// They are attempting to use the default date lookup
|
||||
if tag == "{date}" {
|
||||
timeFormat = time.RFC3339
|
||||
} else {
|
||||
// Default format of time.Now().String()
|
||||
timeFormat = "2006-01-02 15:04:05.999999999 -0700 MST"
|
||||
}
|
||||
}
|
||||
|
||||
// If output is larger than format cut the output
|
||||
// This helps us avoid errors from time.Parse
|
||||
if len(timeOutput) > len(timeFormat) {
|
||||
timeOutput = timeOutput[:len(timeFormat)]
|
||||
}
|
||||
|
||||
// Attempt to parse the time
|
||||
timeStruct, err := time.Parse(timeFormat, timeOutput)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
v.Set(reflect.ValueOf(timeStruct))
|
||||
return nil
|
||||
}
|
||||
|
||||
v.Set(reflect.ValueOf(date(f)))
|
||||
return nil
|
||||
}
|
||||
465
vendor/github.com/brianvoe/gofakeit/v7/template.go
generated
vendored
Normal file
465
vendor/github.com/brianvoe/gofakeit/v7/template.go
generated
vendored
Normal file
@@ -0,0 +1,465 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"reflect"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
// TemplateOptions defines values needed for template document generation
|
||||
type TemplateOptions struct {
|
||||
Funcs template.FuncMap `fake:"-"`
|
||||
Data any `json:"data" xml:"data" fake:"-"`
|
||||
}
|
||||
|
||||
// Template generates an document based on the the supplied template
|
||||
func Template(template string, co *TemplateOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &TemplateOptions{}
|
||||
GlobalFaker.Struct(co)
|
||||
}
|
||||
return templateFunc(template, templateFuncMap(GlobalFaker, &co.Funcs), co)
|
||||
}
|
||||
|
||||
// Template generates an document based on the the supplied template
|
||||
func (f *Faker) Template(template string, co *TemplateOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &TemplateOptions{}
|
||||
f.Struct(co)
|
||||
}
|
||||
return templateFunc(template, templateFuncMap(f, &co.Funcs), co)
|
||||
}
|
||||
|
||||
// MarkdownOptions defines values needed for markdown document generation
|
||||
type MarkdownOptions struct {
|
||||
}
|
||||
|
||||
// Template for Markdown
|
||||
const templateMarkdown = `
|
||||
{{$repo := Gamertag}}
|
||||
{{$language := RandomString (SliceString "go" "python" "javascript")}}
|
||||
{{$username := Gamertag}}
|
||||
{{$weightedSlice := SliceAny "github.com" "gitlab.com" "bitbucket.org"}}
|
||||
{{$weightedWeights := SliceF32 5 1 1}}
|
||||
{{$domain := Weighted $weightedSlice $weightedWeights}}
|
||||
{{$action := RandomString (SliceString "process" "run" "execute" "perform" "handle")}}
|
||||
{{$usage := RandomString (SliceString "whimsical story" "quirky message" "playful alert" "funny request" "lighthearted command")}}
|
||||
{{$result := RandomString (SliceString "success" "error" "unknown" "completed" "failed" "finished" "in progress" "terminated")}}
|
||||
|
||||
# {{$repo}}
|
||||
|
||||
*Author: {{FirstName}} {{LastName}}*
|
||||
|
||||
{{Paragraph 2 5 7 "\n\n"}}
|
||||
|
||||
## Table of Contents
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [License](#license)
|
||||
|
||||
## Installation
|
||||
{{if eq $language "go"}}'''go
|
||||
go get {{$domain}}/{{$username}}/{{$repo}}
|
||||
'''{{else if eq $language "python"}}'''bash
|
||||
pip install {{$repo}}
|
||||
'''{{else if eq $language "javascript"}}'''js
|
||||
npm install {{$repo}}
|
||||
'''{{end}}
|
||||
|
||||
## Usage
|
||||
{{if eq $language "go"}}'''go
|
||||
result := {{$repo}}.{{$action}}("{{ToLower $usage}}")
|
||||
fmt.Println("{{ToLower $repo}} result:", "{{ToLower $result}}")
|
||||
'''{{else if eq $language "python"}}'''python
|
||||
result = {{ToLower $repo}}.{{$action}}("{{ToLower $usage}}")
|
||||
print("{{ToLower $repo}} result:", "{{ToLower $result}}")
|
||||
'''{{else if eq $language "javascript"}}'''javascript
|
||||
const result = {{ToLower $repo}}.{{$action}}("{{ToLower $usage}}");
|
||||
console.log("{{ToLower $repo}} result:", "{{ToLower $result}}");
|
||||
'''{{end}}
|
||||
|
||||
## License
|
||||
{{RandomString (SliceString "MIT" "Apache 2.0" "GPL-3.0" "BSD-3-Clause" "ISC")}}
|
||||
`
|
||||
|
||||
// Markdown will return a single random Markdown template document
|
||||
func Markdown(co *MarkdownOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &MarkdownOptions{}
|
||||
GlobalFaker.Struct(co)
|
||||
}
|
||||
return templateFunc(templateMarkdown, templateFuncMap(GlobalFaker, nil), co)
|
||||
}
|
||||
|
||||
// Markdown will return a single random Markdown template document
|
||||
func (f *Faker) Markdown(co *MarkdownOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &MarkdownOptions{}
|
||||
f.Struct(co)
|
||||
}
|
||||
return templateFunc(templateMarkdown, templateFuncMap(f, nil), co)
|
||||
}
|
||||
|
||||
// EmailOptions defines values needed for email document generation
|
||||
type EmailOptions struct {
|
||||
}
|
||||
|
||||
// Template for email text
|
||||
const templateEmail = `
|
||||
Subject: {{RandomString (SliceString "Greetings" "Hello" "Hi")}} from {{FirstName}}!
|
||||
|
||||
Dear {{LastName}},
|
||||
|
||||
{{RandomString (SliceString "Greetings!" "Hello there!" "Hi, how are you?")}} {{RandomString (SliceString "How's everything going?" "I hope your day is going well." "Sending positive vibes your way.")}}
|
||||
|
||||
{{RandomString (SliceString "I trust this email finds you well." "I hope you're doing great." "Hoping this message reaches you in good spirits.")}} {{RandomString (SliceString "Wishing you a fantastic day!" "May your week be filled with joy." "Sending good vibes your way.")}}
|
||||
|
||||
{{Paragraph 3 5 10 "\n\n"}}
|
||||
|
||||
{{RandomString (SliceString "I would appreciate your thoughts on" "I'm eager to hear your feedback on" "I'm curious to know what you think about")}} it. If you have a moment, please feel free to check out the project on {{RandomString (SliceString "GitHub" "GitLab" "Bitbucket")}}
|
||||
|
||||
{{RandomString (SliceString "Your insights would be invaluable." "I'm eager to hear what you think." "Feel free to share your opinions with me.")}} {{RandomString (SliceString "Looking forward to your feedback!" "Your perspective is highly valued." "Your thoughts matter to me.")}}
|
||||
|
||||
{{RandomString (SliceString "Thank you for your consideration!" "I appreciate your attention to this matter." "Your support means a lot to me.")}} {{RandomString (SliceString "Wishing you a wonderful day!" "Thanks in advance for your time." "Your feedback is greatly appreciated.")}}
|
||||
|
||||
{{RandomString (SliceString "Warm regards" "Best wishes" "Kind regards" "Sincerely" "With gratitude")}}
|
||||
{{FirstName}} {{LastName}}
|
||||
{{Email}}
|
||||
{{PhoneFormatted}}
|
||||
`
|
||||
|
||||
// EmailText will return a single random text email template document
|
||||
func EmailText(co *EmailOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &EmailOptions{}
|
||||
GlobalFaker.Struct(co)
|
||||
}
|
||||
return templateFunc(templateEmail, templateFuncMap(GlobalFaker, nil), co)
|
||||
}
|
||||
|
||||
// EmailText will return a single random text email template document
|
||||
func (f *Faker) EmailText(co *EmailOptions) (string, error) {
|
||||
if co == nil {
|
||||
co = &EmailOptions{}
|
||||
f.Struct(co)
|
||||
}
|
||||
return templateFunc(templateEmail, templateFuncMap(f, nil), co)
|
||||
}
|
||||
|
||||
// functions that wont work with template engine
|
||||
var templateExclusion = []string{
|
||||
"RandomMapKey",
|
||||
"SQL",
|
||||
"Template",
|
||||
}
|
||||
|
||||
// Build the template.FuncMap for the template engine
|
||||
func templateFuncMap(f *Faker, fm *template.FuncMap) *template.FuncMap {
|
||||
|
||||
// create a new function map
|
||||
funcMap := template.FuncMap{}
|
||||
|
||||
v := reflect.ValueOf(f)
|
||||
|
||||
// loop through the methods
|
||||
for i := 0; i < v.NumMethod(); i++ {
|
||||
// check if the method is in the exclusion list
|
||||
if stringInSlice(v.Type().Method(i).Name, templateExclusion) {
|
||||
continue
|
||||
}
|
||||
|
||||
// Check if method has return values
|
||||
// If not don't add to function map
|
||||
if v.Type().Method(i).Type.NumOut() == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
// add the method to the function map
|
||||
funcMap[v.Type().Method(i).Name] = v.Method(i).Interface()
|
||||
}
|
||||
|
||||
// make string upper case
|
||||
funcMap["ToUpper"] = strings.ToUpper
|
||||
|
||||
// make string lower case
|
||||
funcMap["ToLower"] = strings.ToLower
|
||||
|
||||
// make string title case
|
||||
funcMap["IntRange"] = func(start, end int) []int {
|
||||
n := end - start + 1
|
||||
result := make([]int, n)
|
||||
for i := 0; i < n; i++ {
|
||||
result[i] = start + i
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// enable passing any type to return a string
|
||||
funcMap["ToInt"] = func(args any) int {
|
||||
switch v := args.(type) {
|
||||
case string:
|
||||
i, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
return i
|
||||
case float64:
|
||||
return int(v)
|
||||
case float32:
|
||||
return int(v)
|
||||
case int:
|
||||
return v
|
||||
|
||||
// Anything else return 0
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
// enable passing any type to return a float64
|
||||
funcMap["ToFloat"] = func(args any) float64 {
|
||||
switch v := args.(type) {
|
||||
case string:
|
||||
i, err := strconv.ParseFloat(v, 64)
|
||||
if err != nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
return i
|
||||
case float64:
|
||||
return v
|
||||
case float32:
|
||||
return float64(v)
|
||||
case int:
|
||||
return float64(v)
|
||||
|
||||
// Anything else return 0
|
||||
default:
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
// ensable passing any type to return a string
|
||||
funcMap["ToString"] = func(args any) string {
|
||||
switch v := args.(type) {
|
||||
case string:
|
||||
return v
|
||||
case float64:
|
||||
return strconv.FormatFloat(v, 'f', -1, 64)
|
||||
case float32:
|
||||
return strconv.FormatFloat(float64(v), 'f', -1, 32)
|
||||
case int:
|
||||
return strconv.Itoa(v)
|
||||
|
||||
// Anything else return empty string
|
||||
default:
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
// function to convert string to date time
|
||||
funcMap["ToDate"] = func(dateString string) time.Time {
|
||||
date, err := time.Parse("2006-01-02", dateString)
|
||||
if err != nil {
|
||||
return time.Now()
|
||||
}
|
||||
return date
|
||||
}
|
||||
|
||||
// enable passing slice of interface to functions
|
||||
funcMap["SliceAny"] = func(args ...any) []any {
|
||||
return args
|
||||
}
|
||||
|
||||
// enable passing slice of string to functions
|
||||
funcMap["SliceString"] = func(args ...string) []string {
|
||||
return args
|
||||
}
|
||||
|
||||
// enable passing slice of uint to functions
|
||||
funcMap["SliceUInt"] = func(args ...uint) []uint {
|
||||
return args
|
||||
}
|
||||
|
||||
// enable passing slice of int to functions
|
||||
funcMap["SliceInt"] = func(args ...int) []int {
|
||||
return args
|
||||
}
|
||||
|
||||
// enable passing slice of int to functions
|
||||
funcMap["SliceF32"] = func(args ...float32) []float32 {
|
||||
return args
|
||||
}
|
||||
|
||||
// Add passed in function map to the function map
|
||||
if fm != nil {
|
||||
for k, v := range *fm {
|
||||
funcMap[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
return &funcMap
|
||||
}
|
||||
|
||||
// function to build the function map for the template engine from the global faker
|
||||
func templateFunc(temp string, funcs *template.FuncMap, data any) (string, error) {
|
||||
if temp == "" {
|
||||
return "", fmt.Errorf("template parameter is empty")
|
||||
}
|
||||
|
||||
// Create a new template and parse
|
||||
template_gen, err := template.New("CodeRun").Funcs(*funcs).Parse(temp)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
b := &bytes.Buffer{}
|
||||
err = template_gen.Execute(b, data)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
// Return the result
|
||||
return strings.ReplaceAll(b.String(), "\\n", "\n"), nil
|
||||
|
||||
}
|
||||
|
||||
// addTemplateLookup will add the template functions to the global lookup
|
||||
func addTemplateLookup() {
|
||||
AddFuncLookup("template", Info{
|
||||
Display: "Template",
|
||||
Category: "template",
|
||||
Description: "Generates document from template",
|
||||
Example: `{{Firstname}} {{Lastname}}
|
||||
|
||||
// output
|
||||
Markus Moen`,
|
||||
Output: "string",
|
||||
ContentType: "text/plain",
|
||||
Aliases: []string{
|
||||
"document template", "layout", "blueprint", "design pattern", "text template", "generator", "format schema",
|
||||
},
|
||||
Keywords: []string{
|
||||
"template", "generates", "format", "structure", "engine", "document", "pattern", "design", "syntax", "render", "compile",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "template", Display: "Template", Type: "string", Description: "Golang template to generate the document from"},
|
||||
{Field: "data", Display: "Custom Data", Type: "string", Default: "", Optional: true, Description: "Custom data to pass to the template"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
tpl, err := info.GetString(m, "template")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
data, err := info.GetAny(m, "data")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
templateOut, err := templateFunc(tpl, templateFuncMap(f, nil), &TemplateOptions{Data: data})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return templateOut, nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("markdown", Info{
|
||||
Display: "Random markdown document",
|
||||
Category: "template",
|
||||
Description: "Lightweight markup language used for formatting plain text",
|
||||
Example: `# PurpleSheep5
|
||||
|
||||
*Author: Amie Feil*
|
||||
|
||||
Quarterly without week it hungry thing someone. Him regularly today whomever this revolt hence. From his timing as quantity us these. Yours live these frantic not may another. How this ours his them those whose.
|
||||
|
||||
Them batch its Iraqi most that few. Abroad cheese this whereas next how there. Gorgeous genetics time choir fiction therefore yourselves. Am those infrequently heap software quarterly rather. Punctuation yellow where several his orchard to.
|
||||
|
||||
## Table of Contents
|
||||
- [Installation](#installation)
|
||||
- [Usage](#usage)
|
||||
- [License](#license)
|
||||
|
||||
## Installation
|
||||
'''bash
|
||||
pip install PurpleSheep5
|
||||
'''
|
||||
|
||||
## Usage
|
||||
'''python
|
||||
result = purplesheep5.process("funny request")
|
||||
print("purplesheep5 result:", "in progress")
|
||||
'''
|
||||
|
||||
## License
|
||||
MIT`,
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"markup language", "readme format", "lightweight markup", "documentation style", "plain text format", "md file", "doc format",
|
||||
},
|
||||
Keywords: []string{
|
||||
"markdown", "markup", "language", "formatting", "plain", "text", "documentation", "lightweight", "syntax", "rendering", "structure", "readme",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
template_result, err := templateFunc(templateMarkdown, templateFuncMap(f, nil), &MarkdownOptions{})
|
||||
return string(template_result), err
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("email_text", Info{
|
||||
Display: "Random text email Document",
|
||||
Category: "template",
|
||||
Description: "Written content of an email message, including the sender's message to the recipient",
|
||||
Example: `Subject: Greetings from Marcel!
|
||||
|
||||
Dear Pagac,
|
||||
|
||||
Hello there! Sending positive vibes your way.
|
||||
|
||||
I hope you're doing great. May your week be filled with joy.
|
||||
|
||||
Virtually woman where team late quarterly without week it hungry. Thing someone him regularly today whomever this revolt hence from. His timing as quantity us these yours live these frantic. Not may another how this ours his them those whose. Them batch its Iraqi most that few abroad cheese this.
|
||||
|
||||
Whereas next how there gorgeous genetics time choir fiction therefore. Yourselves am those infrequently heap software quarterly rather punctuation yellow. Where several his orchard to frequently hence victorious boxers each. Does auspicious yourselves first soup tomorrow this that must conclude. Anyway some yearly who cough laugh himself both yet rarely.
|
||||
|
||||
Me dolphin intensely block would leap plane us first then. Down them eager would hundred super throughout animal yet themselves. Been group flock shake part purchase up usually it her. None it hers boat what their there Turkmen moreover one. Lebanese to brace these shower in it everybody should whatever.
|
||||
|
||||
I'm curious to know what you think about it. If you have a moment, please feel free to check out the project on Bitbucket
|
||||
|
||||
I'm eager to hear what you think. Looking forward to your feedback!
|
||||
|
||||
Thank you for your consideration! Thanks in advance for your time.
|
||||
|
||||
Kind regards
|
||||
Milford Johnston
|
||||
jamelhaag@king.org
|
||||
(507)096-3058`,
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"email body",
|
||||
"email text",
|
||||
"email message",
|
||||
"message body",
|
||||
"email content",
|
||||
},
|
||||
Keywords: []string{
|
||||
"email", "body", "message", "content",
|
||||
"subject", "salutation", "greeting", "closing",
|
||||
"signature", "footer", "paragraph", "plaintext",
|
||||
"correspondence", "communication",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
template_result, err := templateFunc(templateEmail, templateFuncMap(f, nil), &EmailOptions{})
|
||||
return string(template_result), err
|
||||
},
|
||||
})
|
||||
}
|
||||
596
vendor/github.com/brianvoe/gofakeit/v7/text.go
generated
vendored
Normal file
596
vendor/github.com/brianvoe/gofakeit/v7/text.go
generated
vendored
Normal file
@@ -0,0 +1,596 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"strings"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
type paragrapOptions struct {
|
||||
paragraphCount int
|
||||
sentenceCount int
|
||||
wordCount int
|
||||
separator string
|
||||
}
|
||||
|
||||
const bytesPerWordEstimation = 6
|
||||
|
||||
type sentenceGenerator func(f *Faker, wordCount int) string
|
||||
type wordGenerator func(f *Faker) string
|
||||
|
||||
// Comment will generate a random statement or remark expressing an opinion, observation, or reaction
|
||||
func Comment() string { return comment(GlobalFaker) }
|
||||
|
||||
// Comment will generate a random statement or remark expressing an opinion, observation, or reaction
|
||||
func (f *Faker) Comment() string { return comment(f) }
|
||||
|
||||
func comment(f *Faker) string {
|
||||
structures := [][]string{
|
||||
{"interjection", "adjective", "noun", "verb", "adverb"},
|
||||
{"noun", "verb", "preposition", "determiner", "adjective", "noun"},
|
||||
{"noun", "verb", "adverb"},
|
||||
{"adjective", "noun", "verb"},
|
||||
{"noun", "verb", "preposition", "noun"},
|
||||
}
|
||||
|
||||
// Randomly select a structure
|
||||
structure := structures[number(f, 0, len(structures)-1)]
|
||||
|
||||
// Build the sentence
|
||||
var commentParts []string
|
||||
for _, wordType := range structure {
|
||||
switch wordType {
|
||||
case "noun":
|
||||
commentParts = append(commentParts, noun(f))
|
||||
case "verb":
|
||||
commentParts = append(commentParts, verb(f))
|
||||
case "adjective":
|
||||
commentParts = append(commentParts, adjective(f))
|
||||
case "adverb":
|
||||
commentParts = append(commentParts, adverb(f))
|
||||
case "interjection":
|
||||
commentParts = append(commentParts, interjection(f))
|
||||
case "preposition":
|
||||
commentParts = append(commentParts, preposition(f))
|
||||
case "determiner":
|
||||
commentParts = append(commentParts, nounDeterminer(f))
|
||||
default:
|
||||
// Should never hit
|
||||
panic("Invalid word type")
|
||||
}
|
||||
}
|
||||
|
||||
// Combine the words into a sentence
|
||||
sentence := strings.Join(commentParts, " ")
|
||||
|
||||
// Capitalize the first letter
|
||||
sentence = title(sentence)
|
||||
|
||||
// Add a period to the end of the sentence
|
||||
sentence = sentence + "."
|
||||
|
||||
return sentence
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
|
||||
// Sentence will generate a random sentence
|
||||
func Sentence(wordCount int) string { return sentence(GlobalFaker, wordCount) }
|
||||
|
||||
// Sentence will generate a random sentence
|
||||
func (f *Faker) Sentence(wordCount int) string { return sentence(f, wordCount) }
|
||||
|
||||
func sentence(f *Faker, wordCount int) string {
|
||||
return sentenceGen(f, wordCount, word)
|
||||
}
|
||||
|
||||
// Paragraph will generate a random paragraphGenerator
|
||||
func Paragraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return paragraph(GlobalFaker, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
// Paragraph will generate a random paragraphGenerator
|
||||
func (f *Faker) Paragraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return paragraph(f, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
func paragraph(f *Faker, paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return paragraphGen(f, paragrapOptions{paragraphCount, sentenceCount, wordCount, separator}, sentence)
|
||||
}
|
||||
|
||||
func sentenceGen(f *Faker, wordCount int, word wordGenerator) string {
|
||||
if wordCount <= 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
wordSeparator := ' '
|
||||
sentence := bytes.Buffer{}
|
||||
sentence.Grow(wordCount * bytesPerWordEstimation)
|
||||
|
||||
for i := 0; i < wordCount; i++ {
|
||||
word := word(f)
|
||||
if i == 0 {
|
||||
runes := []rune(word)
|
||||
runes[0] = unicode.ToTitle(runes[0])
|
||||
word = string(runes)
|
||||
}
|
||||
sentence.WriteString(word)
|
||||
if i < wordCount-1 {
|
||||
sentence.WriteRune(wordSeparator)
|
||||
}
|
||||
}
|
||||
sentence.WriteRune('.')
|
||||
return sentence.String()
|
||||
}
|
||||
|
||||
func paragraphGen(f *Faker, opts paragrapOptions, sentecer sentenceGenerator) string {
|
||||
if opts.paragraphCount <= 0 || opts.sentenceCount <= 0 || opts.wordCount <= 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
//to avoid making Go 1.10 dependency, we cannot use strings.Builder
|
||||
paragraphs := bytes.Buffer{}
|
||||
//we presume the length
|
||||
paragraphs.Grow(opts.paragraphCount * opts.sentenceCount * opts.wordCount * bytesPerWordEstimation)
|
||||
wordSeparator := ' '
|
||||
|
||||
for i := 0; i < opts.paragraphCount; i++ {
|
||||
for e := 0; e < opts.sentenceCount; e++ {
|
||||
paragraphs.WriteString(sentecer(f, opts.wordCount))
|
||||
if e < opts.sentenceCount-1 {
|
||||
paragraphs.WriteRune(wordSeparator)
|
||||
}
|
||||
}
|
||||
|
||||
if i < opts.paragraphCount-1 {
|
||||
paragraphs.WriteString(opts.separator)
|
||||
}
|
||||
}
|
||||
|
||||
return paragraphs.String()
|
||||
}
|
||||
|
||||
// Question will return a random question
|
||||
func Question() string {
|
||||
return question(GlobalFaker)
|
||||
}
|
||||
|
||||
// Question will return a random question
|
||||
func (f *Faker) Question() string {
|
||||
return question(f)
|
||||
}
|
||||
|
||||
func question(f *Faker) string {
|
||||
return strings.Replace(hipsterSentence(f, number(f, 3, 10)), ".", "?", 1)
|
||||
}
|
||||
|
||||
// Quote will return a random quote from a random person
|
||||
func Quote() string { return quote(GlobalFaker) }
|
||||
|
||||
// Quote will return a random quote from a random person
|
||||
func (f *Faker) Quote() string { return quote(f) }
|
||||
|
||||
func quote(f *Faker) string {
|
||||
return `"` + hipsterSentence(f, number(f, 3, 10)) + `" - ` + firstName(f) + " " + lastName(f)
|
||||
}
|
||||
|
||||
// LoremIpsumSentence will generate a random sentence
|
||||
func LoremIpsumSentence(wordCount int) string {
|
||||
return loremIpsumSentence(GlobalFaker, wordCount)
|
||||
}
|
||||
|
||||
// LoremIpsumSentence will generate a random sentence
|
||||
func (f *Faker) LoremIpsumSentence(wordCount int) string {
|
||||
return loremIpsumSentence(f, wordCount)
|
||||
}
|
||||
|
||||
func loremIpsumSentence(f *Faker, wordCount int) string {
|
||||
return sentenceGen(f, wordCount, loremIpsumWord)
|
||||
}
|
||||
|
||||
// LoremIpsumParagraph will generate a random paragraphGenerator
|
||||
func LoremIpsumParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return loremIpsumParagraph(GlobalFaker, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
// LoremIpsumParagraph will generate a random paragraphGenerator
|
||||
func (f *Faker) LoremIpsumParagraph(paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return loremIpsumParagraph(f, paragraphCount, sentenceCount, wordCount, separator)
|
||||
}
|
||||
|
||||
func loremIpsumParagraph(f *Faker, paragraphCount int, sentenceCount int, wordCount int, separator string) string {
|
||||
return paragraphGen(f, paragrapOptions{paragraphCount, sentenceCount, wordCount, separator}, loremIpsumSentence)
|
||||
}
|
||||
|
||||
func addTextLookup() {
|
||||
AddFuncLookup("comment", Info{
|
||||
Display: "Comment",
|
||||
Category: "text",
|
||||
Description: "Statement or remark expressing an opinion, observation, or reaction",
|
||||
Example: "wow",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"verbal statement", "expressed thought", "spoken remark", "communication element", "casual note",
|
||||
},
|
||||
Keywords: []string{
|
||||
"opinion", "observation", "reaction", "response", "feedback", "critique", "interpretation", "perspective", "reflection", "discussion",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return comment(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("phrase", Info{
|
||||
Display: "Phrase",
|
||||
Category: "text",
|
||||
Description: "A small group of words standing together",
|
||||
Example: "time will tell",
|
||||
Output: "string",
|
||||
Aliases: []string{"word group", "language unit", "text element", "expression block"},
|
||||
Keywords: []string{"phrase", "words", "group", "sentence", "text", "language", "grammar", "expression", "unit", "collection"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return phrase(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("phrasenoun", Info{
|
||||
Display: "Noun Phrase",
|
||||
Category: "text",
|
||||
Description: "Phrase with a noun as its head, functions within sentence like a noun",
|
||||
Example: "a tribe",
|
||||
Output: "string",
|
||||
Aliases: []string{"nominal phrase", "substantive element", "subject phrase", "object phrase"},
|
||||
Keywords: []string{"phrase", "noun", "grammar", "subject", "object", "head", "sentence", "nominal", "substantive", "entity"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return phraseNoun(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("phraseverb", Info{
|
||||
Display: "Verb Phrase",
|
||||
Category: "text",
|
||||
Description: "Phrase that Consists of a verb and its modifiers, expressing an action or state",
|
||||
Example: "a tribe",
|
||||
Output: "string",
|
||||
Aliases: []string{"predicate phrase", "verbal element", "action phrase", "state phrase"},
|
||||
Keywords: []string{"phrase", "verb", "grammar", "action", "state", "modifiers", "sentence", "predicate", "verbal", "behavior"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return phraseVerb(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("phraseadverb", Info{
|
||||
Display: "Adverb Phrase",
|
||||
Category: "text",
|
||||
Description: "Phrase that modifies a verb, adjective, or another adverb, providing additional information.",
|
||||
Example: "fully gladly",
|
||||
Output: "string",
|
||||
Aliases: []string{"adverbial phrase", "qualifier element", "modifier phrase", "description phrase"},
|
||||
Keywords: []string{"phrase", "adverb", "grammar", "modifier", "description", "information", "adverbial", "qualifier", "modification"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return phraseAdverb(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("phrasepreposition", Info{
|
||||
Display: "Preposition Phrase",
|
||||
Category: "text",
|
||||
Description: "Phrase starting with a preposition, showing relation between elements in a sentence.",
|
||||
Example: "out the black thing",
|
||||
Output: "string",
|
||||
Aliases: []string{"prepositional phrase", "relational element", "connection phrase", "grammar bridge"},
|
||||
Keywords: []string{"phrase", "preposition", "grammar", "relation", "connection", "sentence", "prepositional", "relational", "linking"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return phrasePreposition(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("sentence", Info{
|
||||
Display: "Sentence",
|
||||
Category: "text",
|
||||
Description: "Set of words expressing a statement, question, exclamation, or command",
|
||||
Example: "Interpret context record river mind.",
|
||||
Output: "string",
|
||||
Aliases: []string{"complete thought", "grammatical unit", "word group", "linguistic element"},
|
||||
Keywords: []string{"sentence", "complete", "thought", "grammatical", "unit", "word", "group", "expression", "clause", "utterance"},
|
||||
Params: []Param{
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
return sentence(f, wordCount), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("paragraph", Info{
|
||||
Display: "Paragraph",
|
||||
Category: "text",
|
||||
Description: "Distinct section of writing covering a single theme, composed of multiple sentences",
|
||||
Example: "Interpret context record river mind press self should compare property outcome divide. Combine approach sustain consult discover explanation direct address church husband seek army. Begin own act welfare replace press suspect stay link place manchester specialist. Arrive price satisfy sign force application hair train provide basis right pay. Close mark teacher strengthen information attempt head touch aim iron tv take.",
|
||||
Output: "string",
|
||||
Aliases: []string{"text block", "writing section", "thematic unit", "content block"},
|
||||
Keywords: []string{"paragraph", "text", "block", "writing", "section", "theme", "sentences", "composition", "distinct", "passage", "content"},
|
||||
Params: []Param{
|
||||
{Field: "paragraphcount", Display: "Paragraph Count", Type: "int", Default: "2", Description: "Number of paragraphs"},
|
||||
{Field: "sentencecount", Display: "Sentence Count", Type: "int", Default: "2", Description: "Number of sentences in a paragraph"},
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
{Field: "paragraphseparator", Display: "Paragraph Separator", Type: "string", Default: "<br />", Description: "String value to add between paragraphs"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
paragraphCount, err := info.GetInt(m, "paragraphcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if paragraphCount <= 0 || paragraphCount > 20 {
|
||||
return nil, errors.New("invalid paragraph count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
sentenceCount, err := info.GetInt(m, "sentencecount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if sentenceCount <= 0 || sentenceCount > 20 {
|
||||
return nil, errors.New("invalid sentence count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
paragraphSeparator, err := info.GetString(m, "paragraphseparator")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return paragraph(f, paragraphCount, sentenceCount, wordCount, paragraphSeparator), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("question", Info{
|
||||
Display: "Question",
|
||||
Category: "text",
|
||||
Description: "Statement formulated to inquire or seek clarification",
|
||||
Example: "Roof chia echo?",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"interrogative sentence",
|
||||
"information request",
|
||||
"asking phrase",
|
||||
"query prompt",
|
||||
"clarifying ask",
|
||||
},
|
||||
Keywords: []string{
|
||||
"question", "inquiry", "clarification", "interrogative",
|
||||
"ask", "who", "what", "when", "where", "why", "how", "mark",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return question(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("quote", Info{
|
||||
Display: "Quote",
|
||||
Category: "text",
|
||||
Description: "Direct repetition of someone else's words",
|
||||
Example: `"Roof chia echo." - Lura Lockman`,
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"direct speech",
|
||||
"verbatim line",
|
||||
"cited passage",
|
||||
"attributed text",
|
||||
"pulled excerpt",
|
||||
},
|
||||
Keywords: []string{
|
||||
"quote", "quotation", "citation", "reference", "excerpt",
|
||||
"epigraph", "saying", "maxim", "attribution", "blockquote",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return quote(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("loremipsumsentence", Info{
|
||||
Display: "Lorem Ipsum Sentence",
|
||||
Category: "text",
|
||||
Description: "Sentence of the Lorem Ipsum placeholder text used in design and publishing",
|
||||
Example: "Quia quae repellat consequatur quidem.",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"lorem sentence",
|
||||
"ipsum sentence",
|
||||
"placeholder sentence",
|
||||
"latin sentence",
|
||||
},
|
||||
Keywords: []string{
|
||||
"lorem", "ipsum", "sentence", "placeholder",
|
||||
"latin", "dummy", "filler", "text",
|
||||
"typography", "mockup",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
return loremIpsumSentence(f, wordCount), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("loremipsumparagraph", Info{
|
||||
Display: "Lorem Ipsum Paragraph",
|
||||
Category: "text",
|
||||
Description: "Paragraph of the Lorem Ipsum placeholder text used in design and publishing",
|
||||
Example: `Quia quae repellat consequatur quidem nisi quo qui voluptatum accusantium quisquam amet. Quas et ut non dolorem ipsam aut enim assumenda mollitia harum ut. Dicta similique veniam nulla voluptas at excepturi non ad maxime at non. Eaque hic repellat praesentium voluptatem qui consequuntur dolor iusto autem velit aut. Fugit tempore exercitationem harum consequatur voluptatum modi minima aut eaque et et.
|
||||
|
||||
Aut ea voluptatem dignissimos expedita odit tempore quod aut beatae ipsam iste. Minus voluptatibus dolorem maiores eius sed nihil vel enim odio voluptatem accusamus. Natus quibusdam temporibus tenetur cumque sint necessitatibus dolorem ex ducimus iusto ex. Voluptatem neque dicta explicabo officiis et ducimus sit ut ut praesentium pariatur. Illum molestias nisi at dolore ut voluptatem accusantium et fugiat et ut.
|
||||
|
||||
Explicabo incidunt reprehenderit non quia dignissimos recusandae vitae soluta quia et quia. Aut veniam voluptas consequatur placeat sapiente non eveniet voluptatibus magni velit eum. Nobis vel repellendus sed est qui autem laudantium quidem quam ullam consequatur. Aut iusto ut commodi similique quae voluptatem atque qui fugiat eum aut. Quis distinctio consequatur voluptatem vel aliquid aut laborum facere officiis iure tempora.`,
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"lorem paragraph",
|
||||
"ipsum paragraph",
|
||||
"placeholder paragraph",
|
||||
"latin paragraph",
|
||||
},
|
||||
Keywords: []string{
|
||||
"lorem", "ipsum", "paragraph", "placeholder",
|
||||
"latin", "dummy", "filler", "text",
|
||||
"typography", "mockup",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "paragraphcount", Display: "Paragraph Count", Type: "int", Default: "2", Description: "Number of paragraphs"},
|
||||
{Field: "sentencecount", Display: "Sentence Count", Type: "int", Default: "2", Description: "Number of sentences in a paragraph"},
|
||||
{Field: "wordcount", Display: "Word Count", Type: "int", Default: "5", Description: "Number of words in a sentence"},
|
||||
{Field: "paragraphseparator", Display: "Paragraph Separator", Type: "string", Default: "<br />", Description: "String value to add between paragraphs"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
paragraphCount, err := info.GetInt(m, "paragraphcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if paragraphCount <= 0 || paragraphCount > 20 {
|
||||
return nil, errors.New("invalid paragraph count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
sentenceCount, err := info.GetInt(m, "sentencecount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if sentenceCount <= 0 || sentenceCount > 20 {
|
||||
return nil, errors.New("invalid sentence count, must be greater than 0, less than 20")
|
||||
}
|
||||
|
||||
wordCount, err := info.GetInt(m, "wordcount")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if wordCount <= 0 || wordCount > 50 {
|
||||
return nil, errors.New("invalid word count, must be greater than 0, less than 50")
|
||||
}
|
||||
|
||||
paragraphSeparator, err := info.GetString(m, "paragraphseparator")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return loremIpsumParagraph(f, paragraphCount, sentenceCount, wordCount, paragraphSeparator), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
112
vendor/github.com/brianvoe/gofakeit/v7/weighted.go
generated
vendored
Normal file
112
vendor/github.com/brianvoe/gofakeit/v7/weighted.go
generated
vendored
Normal file
@@ -0,0 +1,112 @@
|
||||
package gofakeit
|
||||
|
||||
import (
|
||||
"errors"
|
||||
)
|
||||
|
||||
// Weighted will take in an array of options and weights and return a random selection based upon its indexed weight
|
||||
func Weighted(options []any, weights []float32) (any, error) {
|
||||
return weighted(GlobalFaker, options, weights)
|
||||
}
|
||||
|
||||
// Weighted will take in an array of options and weights and return a random selection based upon its indexed weight
|
||||
func (f *Faker) Weighted(options []any, weights []float32) (any, error) {
|
||||
return weighted(f, options, weights)
|
||||
}
|
||||
|
||||
// Weighted will take in an array of options and weights and return a random selection based upon its indexed weight
|
||||
func weighted(f *Faker, options []any, weights []float32) (any, error) {
|
||||
ol := len(options)
|
||||
wl := len(weights)
|
||||
|
||||
// If options length is 1 just return it back
|
||||
if ol == 1 {
|
||||
return options[0], nil
|
||||
}
|
||||
|
||||
// Make sure they are passing in options
|
||||
if ol == 0 {
|
||||
return nil, errors.New("didnt pass options")
|
||||
}
|
||||
|
||||
// Make sure they are passing in weights
|
||||
if wl == 0 {
|
||||
return nil, errors.New("didnt pass weights")
|
||||
}
|
||||
|
||||
// Make sure they are passing in the same length
|
||||
if ol != wl {
|
||||
return nil, errors.New("options and weights need to be the same length")
|
||||
}
|
||||
|
||||
// Compute the discrete cumulative density from the sum of the weights
|
||||
cdf := make([]float32, wl)
|
||||
var sumOfWeights float32 = 0.0
|
||||
for i, weight := range weights {
|
||||
if i > 0 {
|
||||
cdf[i] = cdf[i-1] + weight
|
||||
sumOfWeights += weight
|
||||
continue
|
||||
}
|
||||
|
||||
cdf[i] = weight
|
||||
sumOfWeights += weight
|
||||
}
|
||||
|
||||
// Get rand value from a multple of sumOfWeights
|
||||
randSumOfWeights := f.Float32() * sumOfWeights
|
||||
|
||||
var l int = 0
|
||||
var h int = wl - 1
|
||||
for l <= h {
|
||||
m := l + (h-l)/2
|
||||
if randSumOfWeights <= cdf[m] {
|
||||
if m == 0 || (m > 0 && randSumOfWeights > cdf[m-1]) {
|
||||
return options[m], nil
|
||||
}
|
||||
h = m - 1
|
||||
} else {
|
||||
l = m + 1
|
||||
}
|
||||
}
|
||||
|
||||
return nil, errors.New("end of function")
|
||||
}
|
||||
|
||||
func addWeightedLookup() {
|
||||
AddFuncLookup("weighted", Info{
|
||||
Display: "Weighted",
|
||||
Category: "misc",
|
||||
Description: "Randomly select a given option based upon an equal amount of weights",
|
||||
Example: "[hello, 2, 6.9],[1, 2, 3] => 6.9",
|
||||
Output: "any",
|
||||
Aliases: []string{
|
||||
"weighted choice", "probabilistic pick", "random weight", "distribution choice", "chance selection", "ratio selection", "stochastic option",
|
||||
},
|
||||
Keywords: []string{
|
||||
"randomly", "select", "probability", "distribution", "likelihood", "chance", "statistical", "outcome", "bias", "ratio",
|
||||
},
|
||||
Params: []Param{
|
||||
{Field: "options", Display: "Options", Type: "[]string", Description: "Array of any values"},
|
||||
{Field: "weights", Display: "Weights", Type: "[]float", Description: "Array of weights"},
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
options, err := info.GetStringArray(m, "options")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
weights, err := info.GetFloat32Array(m, "weights")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
optionsInterface := make([]any, len(options))
|
||||
for i, o := range options {
|
||||
optionsInterface[i] = o
|
||||
}
|
||||
|
||||
return weighted(f, optionsInterface, weights)
|
||||
},
|
||||
})
|
||||
}
|
||||
274
vendor/github.com/brianvoe/gofakeit/v7/word_adjective.go
generated
vendored
Normal file
274
vendor/github.com/brianvoe/gofakeit/v7/word_adjective.go
generated
vendored
Normal file
@@ -0,0 +1,274 @@
|
||||
package gofakeit
|
||||
|
||||
// Adjective will generate a random adjective
|
||||
func Adjective() string { return adjective(GlobalFaker) }
|
||||
|
||||
// Adjective will generate a random adjective
|
||||
func (f *Faker) Adjective() string { return adjective(f) }
|
||||
|
||||
func adjective(f *Faker) string {
|
||||
var adjType = map[int]string{
|
||||
0: "adjective_descriptive",
|
||||
1: "adjective_quantitative",
|
||||
2: "adjective_proper",
|
||||
3: "adjective_demonstrative",
|
||||
4: "adjective_possessive",
|
||||
5: "adjective_interrogative",
|
||||
6: "adjective_indefinite",
|
||||
}
|
||||
return getRandValue(f, []string{"word", adjType[number(f, 0, 6)]})
|
||||
}
|
||||
|
||||
// AdjectiveDescriptive will generate a random descriptive adjective
|
||||
func AdjectiveDescriptive() string { return adjectiveDescriptive(GlobalFaker) }
|
||||
|
||||
// AdjectiveDescriptive will generate a random descriptive adjective
|
||||
func (f *Faker) AdjectiveDescriptive() string { return adjectiveDescriptive(f) }
|
||||
|
||||
func adjectiveDescriptive(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_descriptive"})
|
||||
}
|
||||
|
||||
// AdjectiveQuantitative will generate a random quantitative adjective
|
||||
func AdjectiveQuantitative() string { return adjectiveQuantitative(GlobalFaker) }
|
||||
|
||||
// AdjectiveQuantitative will generate a random quantitative adjective
|
||||
func (f *Faker) AdjectiveQuantitative() string { return adjectiveQuantitative(f) }
|
||||
|
||||
func adjectiveQuantitative(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_quantitative"})
|
||||
}
|
||||
|
||||
// AdjectiveProper will generate a random proper adjective
|
||||
func AdjectiveProper() string { return adjectiveProper(GlobalFaker) }
|
||||
|
||||
// AdjectiveProper will generate a random proper adjective
|
||||
func (f *Faker) AdjectiveProper() string { return adjectiveProper(f) }
|
||||
|
||||
func adjectiveProper(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_proper"})
|
||||
}
|
||||
|
||||
// AdjectiveDemonstrative will generate a random demonstrative adjective
|
||||
func AdjectiveDemonstrative() string { return adjectiveDemonstrative(GlobalFaker) }
|
||||
|
||||
// AdjectiveDemonstrative will generate a random demonstrative adjective
|
||||
func (f *Faker) AdjectiveDemonstrative() string { return adjectiveDemonstrative(f) }
|
||||
|
||||
func adjectiveDemonstrative(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_demonstrative"})
|
||||
}
|
||||
|
||||
// AdjectivePossessive will generate a random possessive adjective
|
||||
func AdjectivePossessive() string { return adjectivePossessive(GlobalFaker) }
|
||||
|
||||
// AdjectivePossessive will generate a random possessive adjective
|
||||
func (f *Faker) AdjectivePossessive() string { return adjectivePossessive(f) }
|
||||
|
||||
func adjectivePossessive(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_possessive"})
|
||||
}
|
||||
|
||||
// AdjectiveInterrogative will generate a random interrogative adjective
|
||||
func AdjectiveInterrogative() string { return adjectiveInterrogative(GlobalFaker) }
|
||||
|
||||
// AdjectiveInterrogative will generate a random interrogative adjective
|
||||
func (f *Faker) AdjectiveInterrogative() string { return adjectiveInterrogative(f) }
|
||||
|
||||
func adjectiveInterrogative(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_interrogative"})
|
||||
}
|
||||
|
||||
// AdjectiveIndefinite will generate a random indefinite adjective
|
||||
func AdjectiveIndefinite() string { return adjectiveIndefinite(GlobalFaker) }
|
||||
|
||||
// AdjectiveIndefinite will generate a random indefinite adjective
|
||||
func (f *Faker) AdjectiveIndefinite() string { return adjectiveIndefinite(f) }
|
||||
|
||||
func adjectiveIndefinite(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adjective_indefinite"})
|
||||
}
|
||||
|
||||
func addWordAdjectiveLookup() {
|
||||
AddFuncLookup("adjective", Info{
|
||||
Display: "Adjective",
|
||||
Category: "word",
|
||||
Description: "Word describing or modifying a noun",
|
||||
Example: "genuine",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"descriptor term",
|
||||
"qualifying modifier",
|
||||
"attribute marker",
|
||||
"descriptive label",
|
||||
"noun qualifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "noun", "speech", "quality", "attribute",
|
||||
"characteristic", "property", "trait", "descriptive", "modifier",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjective(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectivedescriptive", Info{
|
||||
Display: "Descriptive Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective that provides detailed characteristics about a noun",
|
||||
Example: "brave",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"qualitative adjective",
|
||||
"detail-rich modifier",
|
||||
"characterizing term",
|
||||
"specific descriptor",
|
||||
"noun enhancer",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "word", "describing", "modifying", "attribute",
|
||||
"property", "trait", "feature", "aspect", "detailed", "characteristics",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveDescriptive(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectivequantitative", Info{
|
||||
Display: "Quantitative Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective that indicates the quantity or amount of something",
|
||||
Example: "a little",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"numeric descriptor",
|
||||
"cardinal qualifier",
|
||||
"quantifier adjective",
|
||||
"how many indicator",
|
||||
"magnitude marker",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "quantitative", "word", "describing", "modifying",
|
||||
"count", "volume", "extent", "degree", "magnitude", "quantity", "amount",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveQuantitative(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectiveproper", Info{
|
||||
Display: "Proper Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective derived from a proper noun, often used to describe nationality or origin",
|
||||
Example: "Afghan",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"nationality adjective",
|
||||
"eponym-derived",
|
||||
"proper-noun based",
|
||||
"demonym adjective",
|
||||
"origin descriptor",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "noun", "word", "describing",
|
||||
"cultural", "regional", "ethnic", "linguistic", "heritage",
|
||||
"proper", "nationality",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveProper(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectivedemonstrative", Info{
|
||||
Display: "Demonstrative Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective used to point out specific things",
|
||||
Example: "this",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"demonstrative adjective",
|
||||
"pointing adjective",
|
||||
"deictic adjective",
|
||||
"proximal distal adjective",
|
||||
"reference adjective",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "demonstrative", "deictic",
|
||||
"this", "that", "these", "those",
|
||||
"proximal", "distal", "near", "far",
|
||||
"pointer", "reference", "specific", "grammar",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveDemonstrative(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectivepossessive", Info{
|
||||
Display: "Possessive Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective indicating ownership or possession",
|
||||
Example: "my",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"ownership adjective",
|
||||
"owners descriptor",
|
||||
"possessive determiner",
|
||||
"belonging indicator",
|
||||
"proprietary modifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "word", "grammar",
|
||||
"my", "your", "his", "her", "its", "our", "their",
|
||||
"belong", "possessive", "ownership",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectivePossessive(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectiveinterrogative", Info{
|
||||
Display: "Interrogative Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective used to ask questions",
|
||||
Example: "what",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"interrogative adjective",
|
||||
"question word",
|
||||
"asking adjective",
|
||||
"inquiry word",
|
||||
"grammar adjective",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "word", "grammar", "what", "which", "whose",
|
||||
"question", "inquiry", "interrogation", "interrogative", "ask",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveInterrogative(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adjectiveindefinite", Info{
|
||||
Display: "Indefinite Adjective",
|
||||
Category: "word",
|
||||
Description: "Adjective describing a non-specific noun",
|
||||
Example: "few",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"unspecified adjective",
|
||||
"quantifier-like",
|
||||
"noncount marker",
|
||||
"broad determiner",
|
||||
"approximate amount",
|
||||
},
|
||||
Keywords: []string{
|
||||
"adjective", "noun", "word", "grammar",
|
||||
"some", "any", "many", "few", "several", "various", "certain",
|
||||
"indefinite", "non-specific",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adjectiveIndefinite(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
223
vendor/github.com/brianvoe/gofakeit/v7/word_adverb.go
generated
vendored
Normal file
223
vendor/github.com/brianvoe/gofakeit/v7/word_adverb.go
generated
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
package gofakeit
|
||||
|
||||
// Adverb will generate a random adverb
|
||||
func Adverb() string { return adverb(GlobalFaker) }
|
||||
|
||||
// Adverb will generate a random adverb
|
||||
func (f *Faker) Adverb() string { return adverb(f) }
|
||||
|
||||
func adverb(f *Faker) string {
|
||||
var adverbType = map[int]string{
|
||||
0: "adverb_manner",
|
||||
1: "adverb_degree",
|
||||
2: "adverb_place",
|
||||
3: "adverb_time_definite",
|
||||
4: "adverb_time_indefinite",
|
||||
5: "adverb_frequency_definite",
|
||||
6: "adverb_frequency_indefinite",
|
||||
}
|
||||
return getRandValue(f, []string{"word", adverbType[number(f, 0, 6)]})
|
||||
}
|
||||
|
||||
// AdverbManner will generate a random manner adverb
|
||||
func AdverbManner() string { return adverbManner(GlobalFaker) }
|
||||
|
||||
// AdverbManner will generate a random manner adverb
|
||||
func (f *Faker) AdverbManner() string { return adverbManner(f) }
|
||||
|
||||
func adverbManner(f *Faker) string { return getRandValue(f, []string{"word", "adverb_manner"}) }
|
||||
|
||||
// AdverbDegree will generate a random degree adverb
|
||||
func AdverbDegree() string { return adverbDegree(GlobalFaker) }
|
||||
|
||||
// AdverbDegree will generate a random degree adverb
|
||||
func (f *Faker) AdverbDegree() string { return adverbDegree(f) }
|
||||
|
||||
func adverbDegree(f *Faker) string { return getRandValue(f, []string{"word", "adverb_degree"}) }
|
||||
|
||||
// AdverbPlace will generate a random place adverb
|
||||
func AdverbPlace() string { return adverbPlace(GlobalFaker) }
|
||||
|
||||
// AdverbPlace will generate a random place adverb
|
||||
func (f *Faker) AdverbPlace() string { return adverbPlace(f) }
|
||||
|
||||
func adverbPlace(f *Faker) string { return getRandValue(f, []string{"word", "adverb_place"}) }
|
||||
|
||||
// AdverbTimeDefinite will generate a random time definite adverb
|
||||
func AdverbTimeDefinite() string { return adverbTimeDefinite(GlobalFaker) }
|
||||
|
||||
// AdverbTimeDefinite will generate a random time definite adverb
|
||||
func (f *Faker) AdverbTimeDefinite() string { return adverbTimeDefinite(f) }
|
||||
|
||||
func adverbTimeDefinite(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adverb_time_definite"})
|
||||
}
|
||||
|
||||
// AdverbTimeIndefinite will generate a random time indefinite adverb
|
||||
func AdverbTimeIndefinite() string { return adverbTimeIndefinite(GlobalFaker) }
|
||||
|
||||
// AdverbTimeIndefinite will generate a random time indefinite adverb
|
||||
func (f *Faker) AdverbTimeIndefinite() string { return adverbTimeIndefinite(f) }
|
||||
|
||||
func adverbTimeIndefinite(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adverb_time_indefinite"})
|
||||
}
|
||||
|
||||
// AdverbFrequencyDefinite will generate a random frequency definite adverb
|
||||
func AdverbFrequencyDefinite() string { return adverbFrequencyDefinite(GlobalFaker) }
|
||||
|
||||
// AdverbFrequencyDefinite will generate a random frequency definite adverb
|
||||
func (f *Faker) AdverbFrequencyDefinite() string { return adverbFrequencyDefinite(f) }
|
||||
|
||||
func adverbFrequencyDefinite(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adverb_frequency_definite"})
|
||||
}
|
||||
|
||||
// AdverbFrequencyIndefinite will generate a random frequency indefinite adverb
|
||||
func AdverbFrequencyIndefinite() string { return adverbFrequencyIndefinite(GlobalFaker) }
|
||||
|
||||
// AdverbFrequencyIndefinite will generate a random frequency indefinite adverb
|
||||
func (f *Faker) AdverbFrequencyIndefinite() string { return adverbFrequencyIndefinite(f) }
|
||||
|
||||
func adverbFrequencyIndefinite(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "adverb_frequency_indefinite"})
|
||||
}
|
||||
|
||||
func addWordAdverbLookup() {
|
||||
AddFuncLookup("adverb", Info{
|
||||
Display: "Adverb",
|
||||
Category: "word",
|
||||
Description: "Word that modifies verbs, adjectives, or other adverbs",
|
||||
Example: "smoothly",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"modifier", "descriptive word", "language part", "expression word", "qualifier",
|
||||
},
|
||||
Keywords: []string{
|
||||
"intensity", "manner", "degree", "place", "time", "frequency", "extent", "emphasis", "usage", "context",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverb(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbmanner", Info{
|
||||
Display: "Adverb Manner",
|
||||
Category: "word",
|
||||
Description: "Adverb that describes how an action is performed",
|
||||
Example: "stupidly",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"manner word", "action style", "performance word", "descriptive term", "behavior word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"style", "process", "mode", "technique", "behavior", "attitude", "fashion", "pattern", "characteristic", "approach",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbManner(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbdegree", Info{
|
||||
Display: "Adverb Degree",
|
||||
Category: "word",
|
||||
Description: "Adverb that indicates the degree or intensity of an action or adjective",
|
||||
Example: "intensely",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"degree word", "intensity word", "level word", "strength word", "extent word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"measure", "force", "strength", "scope", "magnitude", "gradation", "amount", "power", "amplification", "range",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbDegree(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbplace", Info{
|
||||
Display: "Adverb Place",
|
||||
Category: "word",
|
||||
Description: "Adverb that indicates the location or direction of an action",
|
||||
Example: "east",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"place word", "location word", "direction word", "position word", "movement word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"orientation", "destination", "area", "region", "spot", "placement", "site", "territory", "geography", "setting",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbPlace(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbtimedefinite", Info{
|
||||
Display: "Adverb Time Definite",
|
||||
Category: "word",
|
||||
Description: "Adverb that specifies the exact time an action occurs",
|
||||
Example: "now",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"time word", "definite time", "exact time", "moment word", "specific time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"precise", "instant", "point", "schedule", "fixed", "timestamp", "occasion", "momentary", "calendar", "chronology",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbTimeDefinite(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbtimeindefinite", Info{
|
||||
Display: "Adverb Time Indefinite",
|
||||
Category: "word",
|
||||
Description: "Adverb that gives a general or unspecified time frame",
|
||||
Example: "already",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"time word", "indefinite time", "general time", "approximate time", "vague time",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uncertain", "broad", "loose", "non-specific", "undefined", "imprecise", "approximation", "unsure", "flexible", "open-ended",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbTimeIndefinite(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbfrequencydefinite", Info{
|
||||
Display: "Adverb Frequency Definite",
|
||||
Category: "word",
|
||||
Description: "Adverb that specifies how often an action occurs with a clear frequency",
|
||||
Example: "hourly",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"frequency word", "repetition word", "regular word", "interval word", "scheduled word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"interval", "regular", "pattern", "routine", "cycle", "repetition", "rate", "periodic", "consistency", "predictable",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbFrequencyDefinite(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("adverbfrequencyindefinite", Info{
|
||||
Display: "Adverb Frequency Indefinite",
|
||||
Category: "word",
|
||||
Description: "Adverb that specifies how often an action occurs without specifying a particular frequency",
|
||||
Example: "occasionally",
|
||||
Output: "string",
|
||||
Aliases: []string{
|
||||
"frequency word", "indefinite frequency", "irregular word", "sporadic word", "recurring word",
|
||||
},
|
||||
Keywords: []string{
|
||||
"uncertain", "sporadic", "occasional", "irregular", "unfixed", "varying", "undetermined", "fluctuating", "approximate", "inconsistent",
|
||||
},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return adverbFrequencyIndefinite(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
173
vendor/github.com/brianvoe/gofakeit/v7/word_connective.go
generated
vendored
Normal file
173
vendor/github.com/brianvoe/gofakeit/v7/word_connective.go
generated
vendored
Normal file
@@ -0,0 +1,173 @@
|
||||
package gofakeit
|
||||
|
||||
// Connective will generate a random connective
|
||||
func Connective() string { return connective(GlobalFaker) }
|
||||
|
||||
// Connective will generate a random connective
|
||||
func (f *Faker) Connective() string { return connective(f) }
|
||||
|
||||
func connective(f *Faker) string {
|
||||
var connectiveType = map[int]string{
|
||||
0: "connective_time",
|
||||
1: "connective_comparative",
|
||||
2: "connective_complaint",
|
||||
3: "connective_listing",
|
||||
4: "connective_casual",
|
||||
5: "connective_examplify",
|
||||
}
|
||||
return getRandValue(f, []string{"word", connectiveType[number(f, 0, 5)]})
|
||||
}
|
||||
|
||||
// ConnectiveTime will generate a random connective time
|
||||
func ConnectiveTime() string { return connectiveTime(GlobalFaker) }
|
||||
|
||||
// ConnectiveTime will generate a random connective time
|
||||
|
||||
func (f *Faker) ConnectiveTime() string { return connectiveTime(f) }
|
||||
|
||||
func connectiveTime(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_time"})
|
||||
}
|
||||
|
||||
// ConnectiveComparative will generate a random comparative connective
|
||||
func ConnectiveComparative() string { return connectiveComparative(GlobalFaker) }
|
||||
|
||||
// ConnectiveComparative will generate a random comparative connective
|
||||
func (f *Faker) ConnectiveComparative() string { return connectiveComparative(f) }
|
||||
|
||||
func connectiveComparative(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_comparative"})
|
||||
}
|
||||
|
||||
// ConnectiveComplaint will generate a random complaint connective
|
||||
func ConnectiveComplaint() string { return connectiveComplaint(GlobalFaker) }
|
||||
|
||||
// ConnectiveComplaint will generate a random complaint connective
|
||||
func (f *Faker) ConnectiveComplaint() string { return connectiveComplaint(f) }
|
||||
|
||||
func connectiveComplaint(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_complaint"})
|
||||
}
|
||||
|
||||
// ConnectiveListing will generate a random listing connective
|
||||
func ConnectiveListing() string { return connectiveListing(GlobalFaker) }
|
||||
|
||||
// ConnectiveListing will generate a random listing connective
|
||||
func (f *Faker) ConnectiveListing() string { return connectiveListing(f) }
|
||||
|
||||
func connectiveListing(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_listing"})
|
||||
}
|
||||
|
||||
// ConnectiveCasual will generate a random casual connective
|
||||
func ConnectiveCasual() string { return connectiveCasual(GlobalFaker) }
|
||||
|
||||
// ConnectiveCasual will generate a random casual connective
|
||||
func (f *Faker) ConnectiveCasual() string { return connectiveCasual(f) }
|
||||
|
||||
func connectiveCasual(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_casual"})
|
||||
}
|
||||
|
||||
// ConnectiveExamplify will generate a random examplify connective
|
||||
func ConnectiveExamplify() string { return connectiveExamplify(GlobalFaker) }
|
||||
|
||||
// ConnectiveExamplify will generate a random examplify connective
|
||||
func (f *Faker) ConnectiveExamplify() string { return connectiveExamplify(f) }
|
||||
|
||||
func connectiveExamplify(f *Faker) string {
|
||||
return getRandValue(f, []string{"word", "connective_examplify"})
|
||||
}
|
||||
|
||||
func addWordConnectiveLookup() {
|
||||
AddFuncLookup("connective", Info{
|
||||
Display: "Connective",
|
||||
Category: "word",
|
||||
Description: "Word used to connect words or sentences",
|
||||
Example: "such as",
|
||||
Output: "string",
|
||||
Aliases: []string{"joining element", "grammar connector", "sentence bridge", "word linker"},
|
||||
Keywords: []string{"connective", "word", "connect", "sentence", "grammar", "used", "conjunction", "link", "joining"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connective(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectivetime", Info{
|
||||
Display: "Connective Time",
|
||||
Category: "word",
|
||||
Description: "Connective word used to indicate a temporal relationship between events or actions",
|
||||
Example: "finally",
|
||||
Output: "string",
|
||||
Aliases: []string{"temporal connector", "time relationship", "chronological link", "sequence element"},
|
||||
Keywords: []string{"connective", "time", "temporal", "relationship", "events", "grammar", "actions", "chronological", "sequence", "timing"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveTime(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectivecomparative", Info{
|
||||
Display: "Connective Comparitive",
|
||||
Category: "word",
|
||||
Description: "Connective word used to indicate a comparison between two or more things",
|
||||
Example: "in addition",
|
||||
Output: "string",
|
||||
Aliases: []string{"comparison connector", "contrast element", "similarity link", "grammar bridge"},
|
||||
Keywords: []string{"connective", "comparative", "comparison", "things", "grammar", "indicate", "contrast", "similarity", "relative"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveComparative(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectivecomplaint", Info{
|
||||
Display: "Connective Complaint",
|
||||
Category: "word",
|
||||
Description: "Connective word used to express dissatisfaction or complaints about a situation",
|
||||
Example: "besides",
|
||||
Output: "string",
|
||||
Aliases: []string{"objection connector", "criticism element", "dissatisfaction link", "grammar bridge"},
|
||||
Keywords: []string{"connective", "complaint", "dissatisfaction", "situation", "grammar", "express", "objection", "criticism", "negative"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveComplaint(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectivelisting", Info{
|
||||
Display: "Connective Listing",
|
||||
Category: "word",
|
||||
Description: "Connective word used to list or enumerate items or examples",
|
||||
Example: "firstly",
|
||||
Output: "string",
|
||||
Aliases: []string{"enumeration connector", "sequence element", "order link", "grammar bridge"},
|
||||
Keywords: []string{"connective", "listing", "enumerate", "items", "examples", "grammar", "list", "sequence", "order", "numbered"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveListing(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectivecasual", Info{
|
||||
Display: "Connective Casual",
|
||||
Category: "word",
|
||||
Description: "Connective word used to indicate a cause-and-effect relationship between events or actions",
|
||||
Example: "an outcome of",
|
||||
Output: "string",
|
||||
Aliases: []string{"causal connector", "effect relationship", "consequence link", "grammar bridge"},
|
||||
Keywords: []string{"connective", "casual", "cause", "effect", "relationship", "grammar", "events", "actions", "causal", "consequence", "result"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveCasual(f), nil
|
||||
},
|
||||
})
|
||||
|
||||
AddFuncLookup("connectiveexamplify", Info{
|
||||
Display: "Connective Examplify",
|
||||
Category: "word",
|
||||
Description: "Connective word used to provide examples or illustrations of a concept or idea",
|
||||
Example: "then",
|
||||
Output: "string",
|
||||
Aliases: []string{"example connector", "illustration element", "instance link", "grammar bridge"},
|
||||
Keywords: []string{"connective", "examplify", "examples", "illustrations", "concept", "grammar", "provide", "instance", "demonstration", "sample"},
|
||||
Generate: func(f *Faker, m *MapParams, info *Info) (any, error) {
|
||||
return connectiveExamplify(f), nil
|
||||
},
|
||||
})
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user