Skip to content

Instantly share code, notes, and snippets.

View martin-lalev's full-sized avatar

Martin Lalev martin-lalev

  • Varna, Bulgaria
View GitHub Profile
@martin-lalev
martin-lalev / UIViewHierarchy.swift
Last active March 28, 2023 09:25
DSL for building UIView hierarchies
precedencegroup HierarchyPrecedence {
lowerThan: AssignmentPrecedence
associativity: left
}
infix operator |--: HierarchyPrecedence
public protocol UIViewHierarchyProvider {
associatedtype View: UIView
var view: View { get }
@martin-lalev
martin-lalev / UIViewHierarchyBuilder.swift
Last active December 23, 2022 09:37
Lightweight DSL for defining UIView hierarchy using Swift 5.1's function builders.
protocol UIViewArrayConvertible {
func items() -> [UIView]
}
extension UIView: UIViewArrayConvertible {
func items() -> [UIView] { [self] }
}
extension Array: UIViewArrayConvertible where Element: UIView {
func items() -> [UIView] { self }
}
// Request descriptor
public struct Request {
public let methodName: String
public let path: String
public let query: [URLQueryItem]
public let body: RequestBody
public let contentType: String?
public let headers: [String: String]?