mirror of
https://github.com/whoeevee/EeveeSpotifyReborn.git
synced 2026-01-09 00:23:20 +01:00
53 lines
1.4 KiB
Swift
53 lines
1.4 KiB
Swift
// Copyright (c) 2018-2020 XMLCoder contributors
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
//
|
|
// Created by Vincent Esche on 12/18/18.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
extension StringProtocol where Self.Index == String.Index {
|
|
func escape(_ characterSet: [(character: String, escapedCharacter: String)]) -> String {
|
|
var string = String(self)
|
|
|
|
for set in characterSet {
|
|
string = string.replacingOccurrences(of: set.character, with: set.escapedCharacter, options: .literal)
|
|
}
|
|
|
|
return string
|
|
}
|
|
}
|
|
|
|
extension StringProtocol {
|
|
func capitalizingFirstLetter() -> Self {
|
|
guard !isEmpty else {
|
|
return self
|
|
}
|
|
return Self(prefix(1).uppercased() + dropFirst())!
|
|
}
|
|
|
|
mutating func capitalizeFirstLetter() {
|
|
self = capitalizingFirstLetter()
|
|
}
|
|
|
|
func lowercasingFirstLetter() -> Self {
|
|
// avoid lowercasing single letters (I), or capitalized multiples (AThing ! to aThing, leave as AThing)
|
|
guard count > 1, !(String(prefix(2)) == prefix(2).lowercased()) else {
|
|
return self
|
|
}
|
|
return Self(prefix(1).lowercased() + dropFirst())!
|
|
}
|
|
|
|
mutating func lowercaseFirstLetter() {
|
|
self = lowercasingFirstLetter()
|
|
}
|
|
}
|
|
|
|
extension String {
|
|
func isAllWhitespace() -> Bool {
|
|
return unicodeScalars.allSatisfy(CharacterSet.whitespacesAndNewlines.contains)
|
|
}
|
|
}
|