Skip to content

Instantly share code, notes, and snippets.

View darrarski's full-sized avatar
:octocat:
🍏🦕

Dariusz Rybicki darrarski

:octocat:
🍏🦕
View GitHub Profile
@darrarski
darrarski / Swinject_NamedRegistration.swift
Created July 18, 2018 22:14
NamedRegistration helper for Swinject
import Swinject
struct NamedRegistration<Service> {
let service: Service.Type
let name: String
}
extension NamedRegistration {
static func named<Service>(_ name: String) -> NamedRegistration<Service> {
return NamedRegistration<Service>(service: Service.self, name: name)
@darrarski
darrarski / Creating.swift
Created July 19, 2018 21:53
Swift factory helper
protocol Creating {
associatedtype Arguments
associatedtype Service
func create(_ arguments: Arguments) -> Service
}
extension Creating where Arguments == Void {
func create() -> Service {
return create(())
}
@darrarski
darrarski / GradientView.swift
Created January 30, 2019 13:35
Simple UIKit gradient view
import UIKit
class GradientView: UIView {
init(style: GradientStyle) {
super.init(frame: .zero)
isUserInteractionEnabled = false
gradientLayer.colors = style.colors.map { $0.color.cgColor }
gradientLayer.locations = style.colors.map { NSNumber(value: $0.location) }
gradientLayer.startPoint = style.direction.startPoint
@darrarski
darrarski / UIScrollView+Viewport.swift
Created January 30, 2019 14:27
UIScrollView viewport frame getter
import UIKit
extension UIScrollView {
var viewport: CGRect {
return CGRect(
origin: CGPoint(
x: contentOffset.x + adjustedContentInset.left,
y: contentOffset.y + adjustedContentInset.top
),
size: CGSize(
import UIKit
struct SketchShadow {
let color: UIColor?
let x: CGFloat
let y: CGFloat
let blur: CGFloat
let spread: CGFloat
}
@darrarski
darrarski / ScrollPageController.swift
Last active February 4, 2019 21:28
ScrollPageController - custom pagination for UIScrollView
import UIKit
struct ScrollPageController {
func pageOffset(for offset: CGFloat, velocity: CGFloat, in pageOffsets: [CGFloat]) -> CGFloat? {
let pages = pageOffsets.enumerated().reduce([Int: CGFloat]()) {
var dict = $0
dict[$1.0] = $1.1
return dict
}
@darrarski
darrarski / FuncUtils.swift
Created February 13, 2019 02:13
Functional programming helpers for Swift
// swiftlint:disable identifier_name
// MARK: - ForwardApplication
precedencegroup ForwardApplication {
associativity: left
higherThan: AssignmentPrecedence
}
infix operator |>: ForwardApplication
@darrarski
darrarski / Driver+Unwrap.swift
Last active March 1, 2019 13:21
RxCocoa Driver Unwrap Operator
import RxCocoa
extension Driver {
func unwrap<T>() -> Driver<T> where E == T? {
// swiftlint:disable:next force_unwrapping
return filter { $0 != nil }.map { $0! }.asDriver(onErrorDriveWith: .empty())
}
}
@darrarski
darrarski / CodableDecimalSpec.swift
Last active November 26, 2021 14:23
Swift Codable, Decimal <~> String encoding
import Quick
import Nimble
class CodableDecimalSpec: QuickSpec {
override func spec() {
context("encode Model to JSON") {
var model: Model!
var json: [String: String]?
beforeEach {
opt_in_rules:
- file_name
- empty_count
- sorted_imports
- force_unwrapping
- operator_usage_whitespace
- number_separator
- switch_case_on_newline
- implicit_return
- overridden_super_call