diff --git a/AppleLibs.xcodeproj/project.pbxproj b/AppleLibs.xcodeproj/project.pbxproj index 413f4a91de112a5b0773c3584109bddc99505ee6..23ff45a9ccd4bfa3187f9e08eb7585f4d18277b5 100644 --- a/AppleLibs.xcodeproj/project.pbxproj +++ b/AppleLibs.xcodeproj/project.pbxproj @@ -10,6 +10,8 @@ F6A251A0260B670000132DEC /* AppleLibs.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6A25196260B66FF00132DEC /* AppleLibs.framework */; }; F6A251A5260B670000132DEC /* AppleLibsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A251A4260B670000132DEC /* AppleLibsTests.swift */; }; F6A251A7260B670000132DEC /* AppleLibs.h in Headers */ = {isa = PBXBuildFile; fileRef = F6A25199260B66FF00132DEC /* AppleLibs.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A251BA260B697300132DEC /* Double+Rounded.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A251B9260B697300132DEC /* Double+Rounded.swift */; }; + F6A251BE260B699100132DEC /* String+Extended.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A251BD260B699100132DEC /* String+Extended.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -30,6 +32,8 @@ F6A251A4260B670000132DEC /* AppleLibsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppleLibsTests.swift; sourceTree = "<group>"; }; F6A251A6260B670000132DEC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; F6A251B2260B680F00132DEC /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = "<group>"; }; + F6A251B9260B697300132DEC /* Double+Rounded.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Double+Rounded.swift"; sourceTree = "<group>"; }; + F6A251BD260B699100132DEC /* String+Extended.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extended.swift"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -73,6 +77,8 @@ F6A25198260B66FF00132DEC /* AppleLibs */ = { isa = PBXGroup; children = ( + F6A251B8260B696200132DEC /* Numbers */, + F6A251BD260B699100132DEC /* String+Extended.swift */, F6A25199260B66FF00132DEC /* AppleLibs.h */, F6A2519A260B66FF00132DEC /* Info.plist */, ); @@ -88,6 +94,14 @@ path = AppleLibsTests; sourceTree = "<group>"; }; + F6A251B8260B696200132DEC /* Numbers */ = { + isa = PBXGroup; + children = ( + F6A251B9260B697300132DEC /* Double+Rounded.swift */, + ); + path = Numbers; + sourceTree = "<group>"; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -197,6 +211,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F6A251BA260B697300132DEC /* Double+Rounded.swift in Sources */, + F6A251BE260B699100132DEC /* String+Extended.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -353,6 +369,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppleLibs/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -379,6 +396,7 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = AppleLibs/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -395,6 +413,7 @@ F6A251AE260B670000132DEC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = GSS77QYM85; INFOPLIST_FILE = AppleLibsTests/Info.plist; @@ -413,6 +432,7 @@ F6A251AF260B670000132DEC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = GSS77QYM85; INFOPLIST_FILE = AppleLibsTests/Info.plist; diff --git a/AppleLibs/Numbers/Double+Rounded.swift b/AppleLibs/Numbers/Double+Rounded.swift new file mode 100644 index 0000000000000000000000000000000000000000..0f9e1c638afb9d6749ad1a6e5ad55dc63947177a --- /dev/null +++ b/AppleLibs/Numbers/Double+Rounded.swift @@ -0,0 +1,17 @@ +// +// Double+Rounded.swift +// AppleLibs +// +// Created by Tobias on 24.03.21. +// + +import Foundation + +public extension Double { + func rounded(rule: NSDecimalNumber.RoundingMode, scale: Int) -> Double { + var result: Decimal = 0 + var decimalSelf = NSNumber(value: self).decimalValue + NSDecimalRound(&result, &decimalSelf, scale, rule) + return (result as NSNumber).doubleValue + } +} diff --git a/AppleLibs/String+Extended.swift b/AppleLibs/String+Extended.swift new file mode 100644 index 0000000000000000000000000000000000000000..f867d3019ecf9401199c209f2f761142e8240a33 --- /dev/null +++ b/AppleLibs/String+Extended.swift @@ -0,0 +1,26 @@ +// +// String+Extended.swift +// AppleLibs +// +// Created by Tobias on 24.03.21. +// + +import UIKit + +public extension String { + var htmlToAttributedString: NSMutableAttributedString? { + guard let data = data(using: .utf8) else { return nil } + do { + let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [ + .documentType: NSAttributedString.DocumentType.html, + .characterEncoding: String.Encoding.utf8.rawValue + ] + return try NSMutableAttributedString(data: data, options: options, documentAttributes: nil) + } catch { + return nil + } + } + var htmlToString: String { + return htmlToAttributedString?.string ?? "" + } +}