Skip to content

Commit 8b52984

Browse files
author
wule61
committed
+
0 parents  commit 8b52984

File tree

12 files changed

+1026
-0
lines changed

12 files changed

+1026
-0
lines changed

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Binaries for programs and plugins
2+
*.exe
3+
*.exe~
4+
*.dll
5+
*.so
6+
*.dylib
7+
.idea
8+
# Test binary, build with `go test -c`
9+
*.test
10+
11+
# Output of the go coverage tool, specifically when used with LiteIDE
12+
*.out

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# faker
2+
faker 是一个数据库填充工具,最新代码见dev分支

address/address.format.go

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package address
2+
3+
var cityPrefix = []string{"North", "East", "West", "South", "New", "Lake", "Port"}
4+
var citySuffix = []string{"town", "ton", "land", "ville", "berg", "burgh", "borough", "bury", "view", "port", "mouth", "stad", "furt", "chester", "mouth", "fort", "haven", "side", "shire"}
5+
var buildingNumber = []string{"####", "###", "##"}
6+
var streetSuffix = []string{
7+
"Alley", "Avenue", "Branch", "Bridge", "Brook", "Brooks", "Burg", "Burgs", "Bypass",
8+
"Camp", "Canyon", "Cape", "Causeway", "Center", "Centers", "Circle", "Circles", "Cliff",
9+
"Cliffs", "Club", "Common", "Corner", "Corners", "Course", "Court", "Courts", "Cove",
10+
"Coves", "Creek", "Crescent", "Crest", "Crossing", "Crossroad", "Curve", "Dale", "Dam",
11+
"Divide", "Drive", "Drive", "Drives", "Estate", "Estates", "Expressway", "Extension",
12+
"Extensions", "Fall", "Falls", "Ferry", "Field", "Fields", "Flat", "Flats", "Ford",
13+
"Fords", "Forest", "Forge", "Forges", "Fork", "Forks", "Fort", "Freeway", "Garden",
14+
"Gardens", "Gateway", "Glen", "Glens", "Green", "Greens", "Grove", "Groves",
15+
"Harbor", "Harbors", "Haven", "Heights", "Highway", "Hill", "Hills", "Hollow",
16+
"Inlet", "Inlet", "Island", "Island", "Islands", "Islands", "Isle", "Isle",
17+
"Junction", "Junctions", "Key", "Keys", "Knoll", "Knolls", "Lake", "Lakes",
18+
"Land", "Landing", "Lane", "Light", "Lights", "Loaf", "Lock", "Locks", "Locks",
19+
"Lodge", "Lodge", "Loop", "Mall", "Manor", "Manors", "Meadow", "Meadows", "Mews",
20+
"Mill", "Mills", "Mission", "Mission", "Motorway", "Mount", "Mountain",
21+
"Mountain", "Mountains", "Mountains", "Neck", "Orchard", "Oval", "Overpass",
22+
"Park", "Parks", "Parkway", "Parkways", "Pass", "Passage", "Path", "Pike",
23+
"Pine", "Pines", "Place", "Plain", "Plains", "Plains", "Plaza", "Plaza",
24+
"Point", "Points", "Port", "Port", "Ports", "Ports", "Prairie", "Prairie",
25+
"Radial", "Ramp", "Ranch", "Rapid", "Rapids", "Rest", "Ridge", "Ridges",
26+
"River", "Road", "Road", "Roads", "Roads", "Route", "Row", "Rue", "Run",
27+
"Shoal", "Shoals", "Shore", "Shores", "Skyway", "Spring", "Springs",
28+
"Springs", "Spur", "Spurs", "Square", "Square", "Squares", "Squares",
29+
"Station", "Station", "Stravenue", "Stravenue", "Stream", "Stream",
30+
"Street", "Street", "Streets", "Summit", "Summit", "Terrace", "Throughway",
31+
"Trace", "Track", "Trafficway", "Trail", "Trail", "Tunnel", "Tunnel",
32+
"Turnpike", "Turnpike", "Underpass", "Union", "Unions", "Valley",
33+
"Valleys", "Via", "Viaduct", "View", "Views", "Village", "Village",
34+
"Villages", "Ville", "Vista", "Vista", "Walk", "Walks", "Wall", "Way",
35+
"Ways", "Well", "Wells",
36+
}
37+
var postcode = []string{"#####"}
38+
var state = []string{
39+
"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut",
40+
"Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois",
41+
"Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts",
42+
"Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada",
43+
"New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota",
44+
"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina",
45+
"South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
46+
"West Virginia", "Wisconsin", "Wyoming",
47+
}
48+
var stateAbbr = []string{
49+
"AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "HI", "IA", "ID",
50+
"IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NC",
51+
"ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC", "SD",
52+
"TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY",
53+
}
54+
var country = []string{
55+
"Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica (the territory South of 60 deg S}", "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
56+
"Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Bouvet Island (Bouvetoya}", "Brazil", "British Indian Ocean Territory (Chagos Archipelago}", "British Virgin Islands", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi",
57+
"Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling} Islands", "Colombia", "Comoros", "Congo", "Cook Islands", "Costa Rica", "Cote d\"Ivoire", "Croatia", "Cuba", "Cyprus", "Czech Republic",
58+
"Denmark", "Djibouti", "Dominica", "Dominican Republic",
59+
"Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia",
60+
"Faroe Islands", "Falkland Islands (Malvinas}", "Fiji", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories",
61+
"Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana",
62+
"Haiti", "Heard Island and McDonald Islands", "Holy See (Vatican City State}", "Honduras", "Hong Kong", "Hungary",
63+
"Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy",
64+
"Jamaica", "Japan", "Jersey", "Jordan",
65+
"Kazakhstan", "Kenya", "Kiribati", "Korea", "Korea", "Kuwait", "Kyrgyz Republic",
66+
"Lao People\"s Democratic Republic", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein", "Lithuania", "Luxembourg",
67+
"Macao", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar",
68+
"Namibia", "Nauru", "Nepal", "Netherlands Antilles", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway",
69+
"Oman",
70+
"Pakistan", "Palau", "Palestinian Territories", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico",
71+
"Qatar",
72+
"Reunion", "Romania", "Russian Federation", "Rwanda",
73+
"Saint Barthelemy", "Saint Helena", "Saint Kitts and Nevis", "Saint Lucia", "Saint Martin", "Saint Pierre and Miquelon", "Saint Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia (Slovak Republic}", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and the South Sandwich Islands", "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard & Jan Mayen Islands", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic",
74+
"Taiwan", "Tajikistan", "Tanzania", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu",
75+
"Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States of America", "United States Minor Outlying Islands", "United States Virgin Islands", "Uruguay", "Uzbekistan",
76+
"Vanuatu", "Venezuela", "Vietnam",
77+
"Wallis and Futuna", "Western Sahara",
78+
"Yemen",
79+
"Zambia", "Zimbabwe",
80+
}
81+
var cityFormats = []string{
82+
"{{CityPrefix}} {{LastName}} {{CitySuffix}}",
83+
"{{CityPrefix}} {{LastName}}",
84+
"{{LastName}} {{CitySuffix}}",
85+
}
86+
87+
var streetNameFormats = []string{
88+
"{{LastName}} {{StreetSuffix}}",
89+
}
90+
var streetAddressFormats = []string{
91+
"{{BuildingNumber}} {{StreetName}}",
92+
}
93+
var addressFormats = []string{
94+
"{{StreetAddress}} {{City}},{{StateAbbr}} {{Postcode}}",
95+
}
96+
97+
98+
var lastName = []string{
99+
"Abbott", "Abernathy", "Abshire", "Adams", "Altenwerth", "Anderson", "Ankunding", "Armstrong", "Auer", "Aufderhar",
100+
"Bahringer", "Bailey", "Balistreri", "Barrows", "Bartell", "Bartoletti", "Barton", "Bashirian", "Batz", "Bauch", "Baumbach", "Bayer", "Beahan", "Beatty", "Bechtelar", "Becker", "Bednar", "Beer", "Beier", "Berge", "Bergnaum", "Bergstrom", "Bernhard", "Bernier", "Bins", "Blanda", "Blick", "Block", "Bode", "Boehm", "Bogan", "Bogisich", "Borer", "Bosco", "Botsford", "Boyer", "Boyle", "Bradtke", "Brakus", "Braun", "Breitenberg", "Brekke", "Brown", "Bruen", "Buckridge",
101+
"Carroll", "Carter", "Cartwright", "Casper", "Cassin", "Champlin", "Christiansen", "Cole", "Collier", "Collins", "Conn", "Connelly", "Conroy", "Considine", "Corkery", "Cormier", "Corwin", "Cremin", "Crist", "Crona", "Cronin", "Crooks", "Cruickshank", "Cummerata", "Cummings",
102+
"Dach", "D\"Amore", "Daniel", "Dare", "Daugherty", "Davis", "Deckow", "Denesik", "Dibbert", "Dickens", "Dicki", "Dickinson", "Dietrich", "Donnelly", "Dooley", "Douglas", "Doyle", "DuBuque", "Durgan",
103+
"Ebert", "Effertz", "Eichmann", "Emard", "Emmerich", "Erdman", "Ernser", "Fadel",
104+
"Fahey", "Farrell", "Fay", "Feeney", "Feest", "Feil", "Ferry", "Fisher", "Flatley", "Frami", "Franecki", "Friesen", "Fritsch", "Funk",
105+
"Gaylord", "Gerhold", "Gerlach", "Gibson", "Gislason", "Gleason", "Gleichner", "Glover", "Goldner", "Goodwin", "Gorczany", "Gottlieb", "Goyette", "Grady", "Graham", "Grant", "Green", "Greenfelder", "Greenholt", "Grimes", "Gulgowski", "Gusikowski", "Gutkowski", "Gutmann",
106+
"Haag", "Hackett", "Hagenes", "Hahn", "Haley", "Halvorson", "Hamill", "Hammes", "Hand", "Hane", "Hansen", "Harber", "Harris", "Hartmann", "Harvey", "Hauck", "Hayes", "Heaney", "Heathcote", "Hegmann", "Heidenreich", "Heller", "Herman", "Hermann", "Hermiston", "Herzog", "Hessel", "Hettinger", "Hickle", "Hill", "Hills", "Hilpert", "Hintz", "Hirthe", "Hodkiewicz", "Hoeger", "Homenick", "Hoppe", "Howe", "Howell", "Hudson", "Huel", "Huels", "Hyatt",
107+
"Jacobi", "Jacobs", "Jacobson", "Jakubowski", "Jaskolski", "Jast", "Jenkins", "Jerde", "Johns", "Johnson", "Johnston", "Jones",
108+
"Kassulke", "Kautzer", "Keebler", "Keeling", "Kemmer", "Kerluke", "Kertzmann", "Kessler", "Kiehn", "Kihn", "Kilback", "King", "Kirlin", "Klein", "Kling", "Klocko", "Koch", "Koelpin", "Koepp", "Kohler", "Konopelski", "Koss", "Kovacek", "Kozey", "Krajcik", "Kreiger", "Kris", "Kshlerin", "Kub", "Kuhic", "Kuhlman", "Kuhn", "Kulas", "Kunde", "Kunze", "Kuphal", "Kutch", "Kuvalis",
109+
"Labadie", "Lakin", "Lang", "Langosh", "Langworth", "Larkin", "Larson", "Leannon", "Lebsack", "Ledner", "Leffler", "Legros", "Lehner", "Lemke", "Lesch", "Leuschke", "Lind", "Lindgren", "Littel", "Little", "Lockman", "Lowe", "Lubowitz", "Lueilwitz", "Luettgen", "Lynch",
110+
"Macejkovic", "Maggio", "Mann", "Mante", "Marks", "Marquardt", "Marvin", "Mayer", "Mayert", "McClure", "McCullough", "McDermott", "McGlynn", "McKenzie", "McLaughlin", "Medhurst", "Mertz", "Metz", "Miller", "Mills", "Mitchell", "Moen", "Mohr", "Monahan", "Moore", "Morar", "Morissette", "Mosciski", "Mraz", "Mueller", "Muller", "Murazik", "Murphy", "Murray",
111+
"Nader", "Nicolas", "Nienow", "Nikolaus", "Nitzsche", "Nolan",
112+
"Oberbrunner", "O\"Connell", "O\"Conner", "O\"Hara", "O\"Keefe", "O\"Kon", "Okuneva", "Olson", "Ondricka", "O\"Reilly", "Orn", "Ortiz", "Osinski",
113+
"Pacocha", "Padberg", "Pagac", "Parisian", "Parker", "Paucek", "Pfannerstill", "Pfeffer", "Pollich", "Pouros", "Powlowski", "Predovic", "Price", "Prohaska", "Prosacco", "Purdy",
114+
"Quigley", "Quitzon",
115+
"Rath", "Ratke", "Rau", "Raynor", "Reichel", "Reichert", "Reilly", "Reinger", "Rempel", "Renner", "Reynolds", "Rice", "Rippin", "Ritchie", "Robel", "Roberts", "Rodriguez", "Rogahn", "Rohan", "Rolfson", "Romaguera", "Roob", "Rosenbaum", "Rowe", "Ruecker", "Runolfsdottir", "Runolfsson", "Runte", "Russel", "Rutherford", "Ryan", "Sanford", "Satterfield", "Sauer", "Sawayn",
116+
"Schaden", "Schaefer", "Schamberger", "Schiller", "Schimmel", "Schinner", "Schmeler", "Schmidt", "Schmitt", "Schneider", "Schoen", "Schowalter", "Schroeder", "Schulist", "Schultz", "Schumm", "Schuppe", "Schuster", "Senger", "Shanahan", "Shields", "Simonis", "Sipes", "Skiles", "Smith", "Smitham", "Spencer", "Spinka", "Sporer", "Stamm", "Stanton", "Stark", "Stehr", "Steuber", "Stiedemann", "Stokes", "Stoltenberg", "Stracke", "Streich", "Stroman", "Strosin", "Swaniawski", "Swift",
117+
"Terry", "Thiel", "Thompson", "Tillman", "Torp", "Torphy", "Towne", "Toy", "Trantow", "Tremblay", "Treutel", "Tromp", "Turcotte", "Turner",
118+
"Ullrich", "Upton",
119+
"Vandervort", "Veum", "Volkman", "Von", "VonRueden",
120+
"Waelchi", "Walker", "Walsh", "Walter", "Ward", "Waters", "Watsica", "Weber", "Wehner", "Weimann", "Weissnat", "Welch", "West", "White", "Wiegand", "Wilderman", "Wilkinson", "Will", "Williamson", "Willms", "Windler", "Wintheiser", "Wisoky", "Wisozk", "Witting", "Wiza", "Wolf", "Wolff", "Wuckert", "Wunsch", "Wyman",
121+
"Yost", "Yundt",
122+
"Zboncak", "Zemlak", "Ziemann", "Zieme", "Zulauf",
123+
}

address/address.go

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package address
2+
3+
import (
4+
"reflect"
5+
"regexp"
6+
7+
"github.com/sereiner/faker/base"
8+
)
9+
10+
type IAddress interface {
11+
CityPrefix() string
12+
State() string
13+
StateAbbr() string
14+
CitySuffix() string
15+
StreetSuffix() string
16+
BuildingNumber() string
17+
City() string
18+
StreetName() string
19+
StreetAddress() string
20+
Postcode() string
21+
Address() string
22+
Country() string
23+
Latitude() float32
24+
Longitude() float32
25+
}
26+
27+
type Address struct {
28+
}
29+
30+
//CityPrefix 城市前缀
31+
func (a *Address) CityPrefix() string {
32+
return base.RandomElement(cityPrefix)
33+
}
34+
35+
func (a *Address) State() string {
36+
return base.RandomElement(state)
37+
}
38+
39+
func (a *Address) StateAbbr() string {
40+
return base.RandomElement(stateAbbr)
41+
}
42+
43+
func (a *Address) CitySuffix() string {
44+
return base.RandomElement(citySuffix)
45+
}
46+
47+
func (a *Address) StreetSuffix() string {
48+
return base.RandomElement(streetSuffix)
49+
}
50+
51+
func (a *Address) BuildingNumber() string {
52+
format := base.RandomElement(buildingNumber)
53+
return base.Numerify(format)
54+
}
55+
56+
func (a *Address) City() string {
57+
format := base.RandomElement(cityFormats)
58+
return a.parse(format)
59+
}
60+
61+
func (a *Address) parse(format string) (str string) {
62+
re, _ := regexp.Compile(base.Rex)
63+
all := re.FindAll([]byte(format), -1)
64+
for _, v := range all {
65+
mtV := reflect.ValueOf(&a).Elem()
66+
s := mtV.MethodByName(string(v)).Call(nil)[0]
67+
str += s.Interface().(string) + " "
68+
}
69+
return str
70+
}
71+
72+
func (a *Address) LastName() string {
73+
return base.RandomElement(lastName)
74+
}
75+
76+
func (a *Address) StreetName() string {
77+
format := base.RandomElement(streetNameFormats)
78+
return a.parse(format)
79+
}
80+
81+
func (a *Address) StreetAddress() string {
82+
format := base.RandomElement(streetAddressFormats)
83+
return a.parse(format)
84+
}
85+
86+
func (a *Address) Postcode() string {
87+
format := base.RandomElement(postcode)
88+
return base.Numerify(format)
89+
}
90+
91+
func (a *Address) Address() string {
92+
format := base.RandomElement(addressFormats)
93+
return a.parse(format)
94+
}
95+
96+
func (a *Address) Country() string {
97+
return base.RandomElement(country)
98+
99+
}
100+
101+
func (a *Address) Latitude() float32 {
102+
return float32(base.RandInt(-90, 90)) + base.RandomFloat32()
103+
}
104+
105+
func (a *Address) Longitude() float32 {
106+
return float32(base.RandInt(-180, 180)) + base.RandomFloat32()
107+
}

0 commit comments

Comments
 (0)