From 368f9bb6531fc3352cc118c6ae38654b99f1792c Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Mon, 5 Feb 2024 23:37:26 +0800 Subject: [PATCH] SwiftImpl // Add array builder and Bool.from(integer:). --- .../SwiftExtension/SwiftExtension.swift | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift index 38915159..d922df88 100644 --- a/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift +++ b/Packages/vChewing_SwiftExtension/Sources/SwiftExtension/SwiftExtension.swift @@ -127,6 +127,10 @@ public extension Bool { toggle() return self } + + static func from(integer: Int) -> Bool { + integer > 0 ? true : false + } } // MARK: - User Defaults Storage @@ -342,3 +346,36 @@ public extension String { .compare(otherVersionComponents.joined(separator: versionDelimiter), options: .numeric) // <6> } } + +// MARK: - Array Builder. + +@resultBuilder +public enum ArrayBuilder { + public static func buildEither(first component: [OutputModel]) -> [OutputModel] { + component + } + + public static func buildEither(second component: [OutputModel]) -> [OutputModel] { + component + } + + public static func buildOptional(_ component: [OutputModel]?) -> [OutputModel] { + component ?? [] + } + + public static func buildExpression(_ expression: OutputModel) -> [OutputModel] { + [expression] + } + + public static func buildExpression(_: ()) -> [OutputModel] { + [] + } + + public static func buildBlock(_ components: [OutputModel]...) -> [OutputModel] { + components.flatMap { $0 } + } + + public static func buildArray(_ components: [[OutputModel]]) -> [OutputModel] { + Array(components.joined()) + } +}