Skip to content

Instantly share code, notes, and snippets.

View maximkrouk's full-sized avatar
🇺🇦

Maxim Krouk maximkrouk

🇺🇦
View GitHub Profile
@maximkrouk
maximkrouk / NeomorphicShape.swift
Last active June 24, 2021 12:13
Neomorphic view from shape for SwiftUI
import SwiftUI
public struct ShadowConfiguration {
public var color: Color
public var radius: CGFloat
public var offset: CGPoint
public init(color: Color, radius: CGFloat, offset: CGPoint) {
self.color = color
self.radius = radius
@maximkrouk
maximkrouk / Foreground.swift
Last active September 17, 2020 22:05
Custom SwiftUI foreground
import SwiftUI
// MARK: - API
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
extension View {
public func foreground<Overlay: View>(_ overlay: Overlay) -> some View {
_Foreground(overlay: overlay, for: self)
}
}
@maximkrouk
maximkrouk / REPL.swift
Last active May 30, 2020 14:32
Class for stdout redirection
import Foundation
import Combine
class REPL {
private static let shared = REPL()
public static var publisher: AnyPublisher<String, Never> {
shared.publisher.eraseToAnyPublisher()
}
import Fluent
private struct _Migration<T>: Migration {
var preparation: (Database) -> EventLoopFuture<Void>
var revertion: (Database) -> EventLoopFuture<Void>
func prepare(on database: Database) -> EventLoopFuture<Void> { preparation(database) }
func revert(on database: Database) -> EventLoopFuture<Void> { revertion(database) }
}
public protocol MigrationProvider {
@maximkrouk
maximkrouk / Authenticated.swift
Last active July 6, 2020 16:11
Property wrapper for system FaceID/TouchID/Password secured actions
import Foundation
import LocalAuthentication
@propertyWrapper
public class Authenticated {
public typealias Action = () -> Void
private var _action: Action = {}
private var _onStart: Action?
private var _onSuccess: Action?
@maximkrouk
maximkrouk / Weak.swift
Last active February 5, 2021 12:05
A mechanism for safe capturing & weakifying objects
import Foundation
/// Weakly captures an object
///
/// Actually the same as `weak` but initializable
///
/// Usage:
/// ```
/// Weak(object)
/// Weak(self)
@maximkrouk
maximkrouk / !Builder.swift
Last active May 15, 2022 08:36
Functional generic builder
// NOTE: Depends on Modifications.swift
// NOTE: Depends on BuildBlocks.swift
// NOTE: Depends on FunctionalKeyPath https://gist.github.com/maximkrouk/6287fb56321a21e8180d5fe044e642e4
import Foundation
@dynamicMemberLookup
public struct Builder<Object> {
private var _build: () -> Object
public func build() -> Object { _build() }
@maximkrouk
maximkrouk / Optional+Extension.swift
Last active June 7, 2020 11:25
Useful swift extension for optionals
@inlinable
func wrap<T>(_ value: T) -> T? { .some(value) }
extension Optional {
@inlinable
var isNotNil: Bool { !isNil }
@inlinable
var isNil: Bool {
switch self {
@maximkrouk
maximkrouk / _ViewModifier.swift
Created March 30, 2020 07:10
Functional view modifier
import SwiftUI
struct _ViewModifier<Input: View, Output: View>: ViewModifier {
typealias Body = Output
typealias Content = _ViewModifier_Content<_ViewModifier<Input, Output>>
var modification: (Content) -> Output
func body(content: Content) -> Output {
modification(content)
}
@maximkrouk
maximkrouk / Index.md
Last active December 15, 2023 03:43
Index of all gists