Beam/ElementX/Sources/Other/EmojiDetection.swift
Stefan Ceriu 664e87fe87
Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00

33 lines
916 B
Swift

//
// Copyright 2023, 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only
// Please see LICENSE in the repository root for full details.
//
import Foundation
// Taken from https://gist.github.com/krummler/879e1ce942893db3104783d1d0e67b34
extension Character {
/// A simple emoji is one scalar and presented to the user as an Emoji
var isSimpleEmoji: Bool {
unicodeScalars.count == 1 && unicodeScalars.first?.properties.isEmojiPresentation ?? false
}
/// Checks if the scalars will be merged into and emoji
var isCombinedIntoEmoji: Bool {
unicodeScalars.count > 1 &&
unicodeScalars.contains { $0.properties.isJoinControl || $0.properties.isVariationSelector }
}
var isEmoji: Bool {
isSimpleEmoji || isCombinedIntoEmoji
}
}
extension String {
var containsOnlyEmoji: Bool {
!isEmpty && !contains { !$0.isEmoji }
}
}