Skip to content

bernndr/swift-macros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Swift Macros

Contains a collection of useful macros for my personal projects.

Usage

Symbol

let symbol = #symbol("swift") // Macro expands to "swift"

In case the provided value is not a valid SF Symbol, Xcode will show a compile error.

URL

let url = #URL("https://www.swift.org") // Macro expands to URL(string: "https://www.swift.org")!

In case the provided value is not a valid URL, Xcode will show a compile error.

AssociatedValues

Add variables to retrieve the associated values.

@AssociatedValues
enum Barcode {
  case upc(Int, Int, Int, Int)
  case qrCode(String)
}

// Expands to
enum Barcode {
  ...

  var upcValue: (Int, Int, Int, Int)? {
    if case let .upc(v0, v1, v2, v3) = self {
        return (v0, v1, v2, v3)
    }
    return nil
  }

  var qrCodeValue: (String)? {
    if case let .qrCode(v0) = self {
        return v0
    }
    return nil
  }
}

Singleton

Generate singleton code for struct and class

@Singleton
struct UserStore {
}

// Expands to
struct UserStore {
  static let shared = UserStore()

  private init() {
  }
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages