Skip to content

Instantly share code, notes, and snippets.

View achernoprudov's full-sized avatar
🏠
Working from home

Andrei Chernoprudov achernoprudov

🏠
Working from home
View GitHub Profile
@achernoprudov
achernoprudov / BubblesPlayground.swift
Created February 3, 2025 13:40
Playground with draggable and interactable bubbles view
import SwiftUI
import PlaygroundSupport
struct ContainerView: View {
var body: some View {
BubbleContainer()
}
}
struct BubbleContainer: View {
protocol BakendService {
func sum(first: Int, second: Int) -> Int
func someNumber() -> Int
}
class BakendServiceProxy: BakendService {
// lazy building function provided from DI
private let instanceBuilder: () -> BakendService
import os.log
// Example adds logging for specific opertaion which can be traced and analyzed
// later by Xcode Profile Instruments
let log = OSLog(subsystem: "com.yourapp.subsystem", category: "performance")
let signpostID = OSSignpostID(log: log)
func performOperation() {
os_signpost(.begin, log: log, name: "Perform Operation", signpostID: signpostID)
UIMenu {
UIAction(title: "Open", image: UIImage(systemName: "xmark.octagon")) { _ in
...
}
UIMenu(title: "Edit") {
if item.isHidden {
UIAction(title: "Show", image: UIImage(systemName: "eye")) { _ in
...
}
} else {
@achernoprudov
achernoprudov / MenuElementsBuilder.swift
Last active July 27, 2021 12:13
Final implementation of the MenuElementsBuilder result builder
@resultBuilder
enum MenuElementsBuilder {
static func buildBlock(_ elements: [UIMenuElement]...) -> [UIMenuElement] {
return elements.flatMap { $0 }
}
static func buildExpression(_ element: UIMenuElement) -> [UIMenuElement] {
return [element]
}
@resultBuilder
enum MenuElementsBuilder {
static func buildExpression(_ element: UIMenuElement) -> [UIMenuElement] {
return [element]
}
static func buildBlock(_ elements: [UIMenuElement]...) -> [UIMenuElement] {
return elements.flatMap { $0 }
}
@achernoprudov
achernoprudov / UIMenu+BuildOptional.swift
Created July 27, 2021 11:24
Build optional function for Menu result builder
static func buildOptional(_ elements: [UIMenuElement]?) -> [UIMenuElement] {
return elements ?? []
}
UIMenu {
UIAction(title: "Open", image: UIImage(systemName: "xmark.octagon")) { _ in
...
}
UIMenu(title: "Edit") {
item.isHidden
? UIAction(title: "Show", image: UIImage(systemName: "eye")) { _ in
...
}
: UIAction(title: "Hide", image: UIImage(systemName: "eye.slash")) { _ in
@achernoprudov
achernoprudov / UIMenu+Build.swift
Last active November 2, 2021 08:23
UIMenu extension with primitive result builder
@resultBuilder
enum MenuElementsBuilder {
static func buildBlock(_ elements: UIMenuElement...) -> [UIMenuElement] {
return elements
}
}
extension UIMenu {
convenience init(_ title: String = "", @MenuElementsBuilder builder: () -> [UIMenuElement]) {
self.init(title: title, children: builder())
@achernoprudov
achernoprudov / UIMenu-build-final.swift
Created July 27, 2021 11:02
Building UIMenu with DSL
UIMenu {
UIAction("Open", icon "xmark.octagon") { _ in
...
}
UIMenu(title: "Edit") {
if item.isHidden {
UIAction("Show", icon: "eye") { _ in
...
}
} else {