Skip to content

juliand665/ArrayBuilder

Repository files navigation

ArrayBuilder

A very simple function builder that lets you build arrays with conditional content. In the closure, you can incorporate single elements, arrays of elements, or even optionals.

Example

@ArrayBuilder<AssetProperties> var selectedAssets: [AssetProperties] { if includeMac {	stylizeMac ? .macMasked : .mac } if includeiPhone { .iPhone } if includeiPad { .iPad } if includeiOSMarketing { .iOSMarketing } }

Without function builders, this would get noisy, repetitive, and hard-to-read (albeit shorter with this formatting):

var selectedAssets: [AssetProperties] { (includeMac ? (stylizeMac ? .macMasked : .mac) : []) + (includeiPhone ? .iPhone : []) + (includeiPad ? .iPad : []) + (includeiOSMarketing ? .iOSMarketing : []) }

The package also includes an initializer for Array taking a function builder closure:

let text = Array { if let amount = amount { Self.formatter.string(from: amount as NSNumber)! } // unlike SwiftUI, this works with optionals too, no need to unwrap or nil-coalesce with []	unit.map(\.symbol) }.joined(separator: " ") // e.g. "250 mL", "3", "some"

About

Easily build arrays with conditional content.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages