Skip to content

Instantly share code, notes, and snippets.

View temptempest's full-sized avatar

Victor temptempest

View GitHub Profile
@temptempest
temptempest / DayPickerView.swift
Last active March 22, 2023 18:42
DayPicker UIControl
import UIKit
protocol DayPickerViewDataSource {
func dayPickerCount(_ dayPicker: DayPickerView) -> Int
func dayPickerTitle(_ dayPicker: DayPickerView, indexPath: IndexPath) -> String
}
final class DayPickerView: UIControl {
public var dataSource: DayPickerViewDataSource? {
didSet {
@temptempest
temptempest / KanaConverter.swift
Created January 14, 2023 23:16 — forked from WorldDownTown/KanaConverter.swift
Kanji to hiragana or katakana
import Foundation
private extension CFStringTokenizer {
var hiragana: String { string(to: kCFStringTransformLatinHiragana) }
var katakana: String { string(to: kCFStringTransformLatinKatakana) }
private func string(to transform: CFString) -> String {
var output: String = ""
while !CFStringTokenizerAdvanceToNextToken(self).isEmpty {
output.append(letter(to: transform))
@temptempest
temptempest / Preview+SwiftUI.swift
Created January 13, 2023 14:25
UIKit Preview
#if canImport(SwiftUI) && DEBUG
import SwiftUI
struct PreviewViewController: UIViewControllerRepresentable {
var viewController: UIViewController
init(_ viewController: UIViewController) {
self.viewController = viewController
}
func makeUIViewController(context: Context) -> UIViewController { viewController }
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
@temptempest
temptempest / Endpoint+Extensions.swift
Last active February 1, 2023 16:12
Assembled Endpoint for the Network layer
/// Assembled Endpoint for the Network layer
/// Usage: Endpoint(host: "https://www.host.com", path: "/path", method: .get)
/// .addQuery(key: "queryKey", value: "queryValue")
/// .addHeader(name: "headerKey", value: "headerValue")
/// .addBody(name: "bodyKey", value: "bodyValue")
/// .addBody(name: "bodyKey2", value: ["1","2","3"])
public struct Endpoint {
public enum Method: String {
case get = "GET"
case post = "POST"
@temptempest
temptempest / Skeleton+UIView.swift
Last active February 1, 2023 16:12 — forked from arturchabera/skeletonViewProtocol.md
Adding Skeleton Animation to a UIView
/// Adding Skeleton Animation to a UIView
/// Usage: view.showSkeleton(backgroundColor: UIColor.systemGray6, highlightColor: UIColor.systemGray3)
/// view.hideSkeleton()
extension UIView {
public enum SkeletonPosition {
case horizontal
case vertical
case horizontalWithAngle
}
extension String? {
var emptyStringIfEmpty: String {
if let self, self.isNotEmpty { return self }
return ""
}
}
extension Int? {
var zeroIfEmpty: Int {
if let self { return self }