Skip to content

Instantly share code, notes, and snippets.

@PimCoumans
Last active July 6, 2022 19:36
Show Gist options
  • Save PimCoumans/ebaf2a9271b3cc489d7834ef69df42aa to your computer and use it in GitHub Desktop.
Save PimCoumans/ebaf2a9271b3cc489d7834ef69df42aa to your computer and use it in GitHub Desktop.
Swift String adding random skin tone modifier
import Foundation
public extension String {
private static let skinToneModifiers = ["🏻", "🏼", "🏽", "🏾", "🏿"]
private static var lastUsedModifier: String?
static var randomSkinToneModifier: String {
var randomModifier: String
repeat {
randomModifier = skinToneModifiers.randomElement()!
} while randomModifier == lastUsedModifier
lastUsedModifier = randomModifier
return randomModifier
}
private var endsInModifiableEmoji: Bool {
unicodeScalars.last?.properties.isEmojiModifierBase == true
}
/// Adds a skintone modifier to the last character if it’s an emoji and can be modified
///
/// Use this method with any string ending in an emoji and not already modified
/// ```
/// "👋".addingRandomSkintoneModifier()
/// ```
func addingRandomSkintoneModifier() -> Self {
guard endsInModifiableEmoji == true else {
return self
}
return appending(Self.randomSkinToneModifier)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment