summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/icrowley/fake/general.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/icrowley/fake/general.go')
-rw-r--r--vendor/github.com/icrowley/fake/general.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/vendor/github.com/icrowley/fake/general.go b/vendor/github.com/icrowley/fake/general.go
new file mode 100644
index 000000000..8b1ec7cbd
--- /dev/null
+++ b/vendor/github.com/icrowley/fake/general.go
@@ -0,0 +1,79 @@
+package fake
+
+var lowerLetters = []rune("abcdefghijklmnopqrstuvwxyz")
+var upperLetters = []rune("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
+var numeric = []rune("0123456789")
+var specialChars = []rune(`!'@#$%^&*()_+-=[]{};:",./?`)
+var hexDigits = []rune("0123456789abcdef")
+
+func text(atLeast, atMost int, allowLower, allowUpper, allowNumeric, allowSpecial bool) string {
+ allowedChars := []rune{}
+ if allowLower {
+ allowedChars = append(allowedChars, lowerLetters...)
+ }
+ if allowUpper {
+ allowedChars = append(allowedChars, upperLetters...)
+ }
+ if allowNumeric {
+ allowedChars = append(allowedChars, numeric...)
+ }
+ if allowSpecial {
+ allowedChars = append(allowedChars, specialChars...)
+ }
+
+ result := []rune{}
+ nTimes := r.Intn(atMost-atLeast+1) + atLeast
+ for i := 0; i < nTimes; i++ {
+ result = append(result, allowedChars[r.Intn(len(allowedChars))])
+ }
+ return string(result)
+}
+
+// Password generates password with the length from atLeast to atMOst charachers,
+// allow* parameters specify whether corresponding symbols can be used
+func Password(atLeast, atMost int, allowUpper, allowNumeric, allowSpecial bool) string {
+ return text(atLeast, atMost, true, allowUpper, allowNumeric, allowSpecial)
+}
+
+// SimplePassword is a wrapper around Password,
+// it generates password with the length from 6 to 12 symbols, with upper characters and numeric symbols allowed
+func SimplePassword() string {
+ return Password(6, 12, true, true, false)
+}
+
+// Color generates color name
+func Color() string {
+ return lookup(lang, "colors", true)
+}
+
+// DigitsN returns n digits as a string
+func DigitsN(n int) string {
+ digits := make([]rune, n)
+ for i := 0; i < n; i++ {
+ digits[i] = numeric[r.Intn(len(numeric))]
+ }
+ return string(digits)
+}
+
+// Digits returns from 1 to 5 digits as a string
+func Digits() string {
+ return DigitsN(r.Intn(5) + 1)
+}
+
+func hexDigitsStr(n int) string {
+ var num []rune
+ for i := 0; i < n; i++ {
+ num = append(num, hexDigits[r.Intn(len(hexDigits))])
+ }
+ return string(num)
+}
+
+// HexColor generates hex color name
+func HexColor() string {
+ return hexDigitsStr(6)
+}
+
+// HexColorShort generates short hex color name
+func HexColorShort() string {
+ return hexDigitsStr(3)
+}