Skip to content

Instantly share code, notes, and snippets.

@JanGorman
Last active August 29, 2015 14:23
Show Gist options
  • Save JanGorman/7d102fa83fb162d949f6 to your computer and use it in GitHub Desktop.
Save JanGorman/7d102fa83fb162d949f6 to your computer and use it in GitHub Desktop.
class PasswordGenerator {
private static let Lowercase = "abcdefghijklmnopqrstuvwxyz".split()
private static let Uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split()
private static let Symbols = "!@#$%^&*?".split()
private static let Numbers = "0123456789".split()
class func generate(length: Int = 10) -> String {
let allLetters = (Lowercase + Uppercase + Symbols + Numbers).shuffle()
var password = ""
var i = 0
var generator = allLetters.generate()
while let letter = generator.next() where i < length {
password += letter
++i
}
return password
}
}
extension String {
func split(separator: String = "") -> [String] {
if separator.isEmpty {
var items = [String]()
for character in characters {
items.append(String(character))
}
return items
}
return componentsSeparatedByString(separator)
}
}
extension Array {
func shuffle() -> [T] {
var shuffled = self
for i in 0..<shuffled.count {
let j = Int(arc4random()) % shuffled.count
shuffled.insert(shuffled.removeAtIndex(j), atIndex: i)
}
return shuffled
}
}
PasswordGenerator.generate(20)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment