1234567891011121314151617181920212223242526272829303132333435 |
- //
- // NSAttributedString+Sweeter.swift
- //
- // Created by Yonat Sharon on 2019-02-08.
- //
- import Foundation
- public extension NSAttributedString {
- /// Sweeter: Create attributed string from HTML
- convenience init?(htmlString: String, defaultAttributes: [NSAttributedString.Key: Any]? = nil) {
- guard let data = htmlString.data(using: .utf8) else { return nil }
- let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
- .documentType: NSAttributedString.DocumentType.html,
- .characterEncoding: String.Encoding.utf8.rawValue,
- .defaultAttributes: defaultAttributes ?? [:],
- ]
- try? self.init(data: data, options: options, documentAttributes: nil)
- }
- }
- public extension NSMutableAttributedString {
- /// Sweeter: Make part of the string into a link.
- ///
- /// - Parameters:
- /// - url: link address.
- /// - anchorText: substring to make into a link.
- func link(anchorText: String, url: String) {
- guard let urlObject = URL(string: url) else { return }
- let anchorRange = mutableString.range(of: anchorText, options: [.caseInsensitive, .diacriticInsensitive, .widthInsensitive])
- guard NSNotFound != anchorRange.location else { return }
- addAttribute(.link, value: urlObject, range: anchorRange)
- }
- }
|