frequency.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package frequency
  2. import (
  3. "encoding/json"
  4. "github.com/nbutton23/zxcvbn-go/data"
  5. "log"
  6. )
  7. type FrequencyList struct {
  8. Name string
  9. List []string
  10. }
  11. var FrequencyLists = make(map[string]FrequencyList)
  12. func init() {
  13. maleFilePath := getAsset("data/MaleNames.json")
  14. femaleFilePath := getAsset("data/FemaleNames.json")
  15. surnameFilePath := getAsset("data/Surnames.json")
  16. englishFilePath := getAsset("data/English.json")
  17. passwordsFilePath := getAsset("data/Passwords.json")
  18. FrequencyLists["MaleNames"] = GetStringListFromAsset(maleFilePath, "MaleNames")
  19. FrequencyLists["FemaleNames"] = GetStringListFromAsset(femaleFilePath, "FemaleNames")
  20. FrequencyLists["Surname"] = GetStringListFromAsset(surnameFilePath, "Surname")
  21. FrequencyLists["English"] = GetStringListFromAsset(englishFilePath, "English")
  22. FrequencyLists["Passwords"] = GetStringListFromAsset(passwordsFilePath, "Passwords")
  23. }
  24. func getAsset(name string) []byte {
  25. data, err := zxcvbn_data.Asset(name)
  26. if err != nil {
  27. panic("Error getting asset " + name)
  28. }
  29. return data
  30. }
  31. func GetStringListFromAsset(data []byte, name string) FrequencyList {
  32. var tempList FrequencyList
  33. err := json.Unmarshal(data, &tempList)
  34. if err != nil {
  35. log.Fatal(err)
  36. }
  37. tempList.Name = name
  38. return tempList
  39. }