From 8fddc9ceb06e8b4ec9e3bec4f4357436668ba903 Mon Sep 17 00:00:00 2001 From: Lawrence Bensaid Date: Thu, 24 Mar 2022 14:09:59 -0400 Subject: [PATCH] Made String extension accessible --- Package.swift | 2 +- Sources/WickedRandom/String.swift | 855 ------------------ Sources/WickedRandom/WickedRandom.swift | 851 ++++++++++++++++- .../WickedRandomTests/WickedRandomTests.swift | 2 +- 4 files changed, 851 insertions(+), 859 deletions(-) delete mode 100644 Sources/WickedRandom/String.swift diff --git a/Package.swift b/Package.swift index 0707e16..8e44ee8 100644 --- a/Package.swift +++ b/Package.swift @@ -9,7 +9,7 @@ let package = Package( // Products define the executables and libraries a package produces, and make them visible to other packages. .library( name: "WickedRandom", - targets: ["WickedRandom", "String"]), + targets: ["WickedRandom"]), ], dependencies: [ // Dependencies declare other packages that this package depends on. diff --git a/Sources/WickedRandom/String.swift b/Sources/WickedRandom/String.swift deleted file mode 100644 index a8ab0d4..0000000 --- a/Sources/WickedRandom/String.swift +++ /dev/null @@ -1,855 +0,0 @@ -// -// String.swift -// -// -// Created by Lawrence Bensaid on 3/24/22. -// - -import Foundation - -public extension String { - - enum RandomStringType { case adjective, noun, humanName, manName, womanName, distinguished, `default` } - - struct Characters: OptionSet { - - public let rawValue: Int - - public init(rawValue: Int) { - self.rawValue = rawValue - } - - private init(_ rawValue: Int) { - self.rawValue = rawValue - } - - public static let upper: Characters = .init(1) - public static let lower: Characters = .init(2) - public static let letters: Characters = [.lower, .upper] - public static let numbers: Characters = .init(4) - public static let special: Characters = .init(8) - public static let symbols: Characters = .init(16) - public static let uncommon: Characters = [.special, .symbols] - public static let characters: Characters = [.letters, .numbers, .uncommon] - public static let spaces: Characters = .init(32) - public static let tabs: Characters = .init(64) - public static let linebreak: Characters = .init(128) - public static let whitespaces: Characters = [.spaces, .tabs, .linebreak] - - } - - var isLowercase: Bool { - guard count > 0 else { return false } - var lowercase = true - for character in self { - if let scala = UnicodeScalar(String(character)) { - if CharacterSet.uppercaseLetters.contains(scala) { - lowercase = false - } - } - } - return lowercase - } - - var isUppercase: Bool { - guard count > 0 else { return false } - var uppercase = true - for character in self { - if let scala = UnicodeScalar(String(character)) { - if CharacterSet.lowercaseLetters.contains(scala) { - uppercase = false - } - } - } - return uppercase - } - - static func random(_ type: RandomStringType, delimiter: String = " ") -> String { - switch type { - case .noun: - return noun.randomElement()! - case .adjective: - return adjectives.randomElement()! - case .humanName: - return "\(menFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" - case .manName: - return "\(menFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" - case .womanName: - return "\(womanFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" - case .distinguished: - let name = "\(adjectives.randomElement()!)\(delimiter)\(significantPeopleLastnames.randomElement()!)" - if name == "Boring\(delimiter)Wozniak" { - print("Steve Wozniak isn't boring!") - return random(type, delimiter: delimiter) - } - case .default: break - } - return "\(adjectives.randomElement()!)\(delimiter)\(noun.randomElement()!)" - } - - static func random(_ characters: Characters, ofSize length: Int) -> String { - var letters = "" - if characters.contains(.upper) { - letters += "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - } - if characters.contains(.lower) { - letters += "abcdefghijklmnopqrstuvwxyz" - } - if characters.contains(.numbers) { - letters += "0123456789" - } - if characters.contains(.special) { - letters += "!@#$%&?" - } - if characters.contains(.symbols) { - letters += "^*(){}[]_+-=:\"|;'\\<>,./`~§±" - } - if characters.contains(.spaces) { - letters += " " - } - if characters.contains(.tabs) { - letters += "\t" - } - if characters.contains(.linebreak) { - letters += "\n" - } - return String((0.. 0 else { return false } + var lowercase = true + for character in self { + if let scala = UnicodeScalar(String(character)) { + if CharacterSet.uppercaseLetters.contains(scala) { + lowercase = false + } + } + } + return lowercase + } + + var isUppercase: Bool { + guard count > 0 else { return false } + var uppercase = true + for character in self { + if let scala = UnicodeScalar(String(character)) { + if CharacterSet.lowercaseLetters.contains(scala) { + uppercase = false + } + } + } + return uppercase + } + + static func random(_ type: RandomStringType, delimiter: String = " ") -> String { + switch type { + case .noun: + return noun.randomElement()! + case .adjective: + return adjectives.randomElement()! + case .humanName: + return "\(menFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" + case .manName: + return "\(menFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" + case .womanName: + return "\(womanFirstNames.randomElement()!)\(delimiter)\(lastNames.randomElement()!)" + case .distinguished: + let name = "\(adjectives.randomElement()!)\(delimiter)\(significantPeopleLastnames.randomElement()!)" + if name == "Boring\(delimiter)Wozniak" { + print("Steve Wozniak isn't boring!") + return random(type, delimiter: delimiter) + } + case .default: break + } + return "\(adjectives.randomElement()!)\(delimiter)\(noun.randomElement()!)" + } + + static func random(_ characters: Characters, ofSize length: Int) -> String { + var letters = "" + if characters.contains(.upper) { + letters += "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + } + if characters.contains(.lower) { + letters += "abcdefghijklmnopqrstuvwxyz" + } + if characters.contains(.numbers) { + letters += "0123456789" + } + if characters.contains(.special) { + letters += "!@#$%&?" + } + if characters.contains(.symbols) { + letters += "^*(){}[]_+-=:\"|;'\\<>,./`~§±" + } + if characters.contains(.spaces) { + letters += " " + } + if characters.contains(.tabs) { + letters += "\t" + } + if characters.contains(.linebreak) { + letters += "\n" + } + return String((0..