Skip to content

Commit

Permalink
Update entropy calculation logic
Browse files Browse the repository at this point in the history
  • Loading branch information
jasonnam committed Jan 20, 2017
1 parent a2f626c commit 12b7082
Showing 1 changed file with 22 additions and 7 deletions.
29 changes: 22 additions & 7 deletions Source/Navajo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,38 +76,53 @@ open class Navajo: NSObject {
return 0.0
}

var includesLowercaseCharacter = false,
includesUppercaseCharacter = false,
includesDecimalDigitCharacter = false,
includesPunctuationCharacter = false,
includesSymbolCharacter = false,
includesWhitespaceCharacter = false,
includesNonBaseCharacter = false

var sizeOfCharacterSet: Float = 0

string.enumerateSubstrings(in: string.startIndex ..< string.endIndex, options: String.EnumerationOptions.byComposedCharacterSequences) { subString, _, _, _ in
guard let subString = subString, let unicodeScalar = UnicodeScalar((subString as NSString).character(at: 0)) else {
return
}

if CharacterSet.lowercaseLetters.contains(unicodeScalar) {
if !includesLowercaseCharacter && CharacterSet.lowercaseLetters.contains(unicodeScalar) {
includesLowercaseCharacter = true
sizeOfCharacterSet += 26
}

if CharacterSet.uppercaseLetters.contains(unicodeScalar) {
if !includesUppercaseCharacter && CharacterSet.uppercaseLetters.contains(unicodeScalar) {
includesUppercaseCharacter = true
sizeOfCharacterSet += 26
}

if CharacterSet.decimalDigits.contains(unicodeScalar) {
if !includesDecimalDigitCharacter && CharacterSet.decimalDigits.contains(unicodeScalar) {
includesDecimalDigitCharacter = true
sizeOfCharacterSet += 10
}

if CharacterSet.symbols.contains(unicodeScalar) {
if !includesSymbolCharacter && CharacterSet.symbols.contains(unicodeScalar) {
includesSymbolCharacter = true
sizeOfCharacterSet += 10
}

if CharacterSet.punctuationCharacters.contains(unicodeScalar) {
if !includesPunctuationCharacter && CharacterSet.punctuationCharacters.contains(unicodeScalar) {
includesPunctuationCharacter = true
sizeOfCharacterSet += 20
}

if CharacterSet.whitespacesAndNewlines.contains(unicodeScalar) {
if !includesWhitespaceCharacter && CharacterSet.whitespacesAndNewlines.contains(unicodeScalar) {
includesWhitespaceCharacter = true
sizeOfCharacterSet += 1
}

if CharacterSet.nonBaseCharacters.contains(unicodeScalar) {
if !includesNonBaseCharacter && CharacterSet.nonBaseCharacters.contains(unicodeScalar) {
includesNonBaseCharacter = true
sizeOfCharacterSet += 32 + 128
}
}
Expand Down

0 comments on commit 12b7082

Please sign in to comment.