// // MastodonField.swift // Mastodon // // Created by MainasuK Cirno on 2021-3-30. // //import Foundation //import ActiveLabel // //enum MastodonField { // // @available(*, deprecated, message: "rely on server meta rendering") // public static func parse(field string: String, emojiDict: MastodonStatusContent.EmojiDict) -> ParseResult { // // use content parser get emoji entities // let value = string // // var string = string // var entities: [ActiveEntity] = [] // // do { // let contentParseresult = try MastodonStatusContent.parse(content: string, emojiDict: emojiDict) // string = contentParseresult.trimmed // entities.append(contentsOf: contentParseresult.activeEntities) // } catch { // // assertionFailure(error.localizedDescription) // } // // let mentionMatches = string.matches(pattern: "(?:@([a-zA-Z0-9_]+)(@[a-zA-Z0-9_.-]+)?)") // let hashtagMatches = string.matches(pattern: "(?:#([^\\s.]+))") // let urlMatches = string.matches(pattern: "(?i)https?://\\S+(?:/|\\b)") // // // for match in mentionMatches { // guard let text = string.substring(with: match, at: 0) else { continue } // let entity = ActiveEntity(range: match.range, type: .mention(text, userInfo: nil)) // entities.append(entity) // } // // for match in hashtagMatches { // guard let text = string.substring(with: match, at: 0) else { continue } // let entity = ActiveEntity(range: match.range, type: .hashtag(text, userInfo: nil)) // entities.append(entity) // } // // for match in urlMatches { // guard let text = string.substring(with: match, at: 0) else { continue } // let entity = ActiveEntity(range: match.range, type: .url(text, trimmed: text, url: text, userInfo: nil)) // entities.append(entity) // } // // return ParseResult(value: value, trimmed: string, activeEntities: entities) // } // //} // //extension MastodonField { // public struct ParseResult { // let value: String // let trimmed: String // let activeEntities: [ActiveEntity] // } //}