Skip to content

Instantly share code, notes, and snippets.

Avatar

Marcelo Perretta bubudrc

View GitHub Profile
@bubudrc
bubudrc / Image+Data.swift
Created January 30, 2023 15:00 — forked from BrentMifsud/Image+Data.swift
SwiftUI Image from data
View Image+Data.swift
import Foundation
import SwiftUI
#if canImport(UIKit)
import UIKit
#elseif canImport(AppKit)
import AppKit
#endif
extension Image {
/// Initializes a SwiftUI `Image` from data.
@bubudrc
bubudrc / FourColumns.swift
Created January 1, 2023 22:47 — forked from douglashill/FourColumns.swift
A sample UIKit app that sets up a four column layout with new iOS 14 API on UISplitViewController.
View FourColumns.swift
import UIKit
class FourColumnsContainerViewController: UIViewController {
let outerSplitViewController = UISplitViewController(style: .tripleColumn)
let innerSplitViewController = UISplitViewController(style: .doubleColumn)
let primary = makeContentViewController("App")
let secondary = makeContentViewController("Files")
let mainContent = makeContentViewController("File Content")
let inspector = makeContentViewController("Inspector")
@bubudrc
bubudrc / Optional+Extensions.swift
Created May 20, 2022 19:16 — forked from scribblecat/Optional+Extensions.swift
Get Array from Optional NSSet. Especially useful for getting an Array of objects in a Core Data many relationship.
View Optional+Extensions.swift
/*
* Returns Array from optional NSSet. Returns empty array if NSSet is nil.
* It's useful for when you want an Array of objects from a Core Data many relationship.
*
* Example usage with managed object `game` with 1-to-many relationship to `Goal` entity:
* let goalArray = game.goals.array(of: Goal.self)
*/
extension Optional where Wrapped == NSSet {
func array<T: Hashable>(of: T.Type) -> [T] {
@bubudrc
bubudrc / UISearchBar+Ext.swift
Created March 5, 2022 20:02 — forked from maysamsh/UISearchBar+Ext.swift
A small extension for UISearchBar which shows an UIActivityIndicator while searching
View UISearchBar+Ext.swift
//
// UISearchBar+Ext.swift
// frazeit
//
// Created by Maysam Shahsavari on 7/30/18.
// Updated on 9/26/19.
// Copyright © 2018 Maysam Shahsavari. All rights reserved.
// Updated: 10/02/2020.
import Foundation
@bubudrc
bubudrc / HTTPStatusCode.swift
Created February 2, 2022 14:32 — forked from ollieatkinson/HTTPStatusCode.swift
HTTP status codes as a Swift enum.
View HTTPStatusCode.swift
/// This is a list of Hypertext Transfer Protocol (HTTP) response status codes.
/// It includes codes from IETF internet standards, other IETF RFCs, other specifications, and some additional commonly used codes.
/// The first digit of the status code specifies one of five classes of response; an HTTP client must recognise these five classes at a minimum.
enum HTTPStatusCode: Int, Error {
/// The response class representation of status codes, these get grouped by their first digit.
enum ResponseType {
/// - informational: This class of status code indicates a provisional response, consisting only of the Status-Line and optional headers, and is terminated by an empty line.
case informational
View NSSecureCodingValueTransformer.swift
import Foundation
public protocol ValueTransforming: NSSecureCoding {
static var valueTransformerName: NSValueTransformerName { get }
}
public class NSSecureCodingValueTransformer<T: NSObject & ValueTransforming>: ValueTransformer {
public override class func transformedValueClass() -> AnyClass { T.self }
public override class func allowsReverseTransformation() -> Bool { true }
@bubudrc
bubudrc / 1_AppleAppLookup.swift
Created December 10, 2021 14:54 — forked from vzsg/1_AppleAppLookup.swift
App Store Rating Lookup for Vapor 3
View 1_AppleAppLookup.swift
import Foundation
import Vapor
struct AppInfo: Codable {
let averageUserRating: Double
let userRatingCount: Int
}
enum AppleAppLookupError: Error {
case notFound
@bubudrc
bubudrc / IkigaJSON+Content.swift
Created December 10, 2021 14:54 — forked from vzsg/IkigaJSON+Content.swift
Example on how to integrate IkigaJSON with Vapor 4
View IkigaJSON+Content.swift
import Vapor
import IkigaJSON
extension IkigaJSONEncoder: ContentEncoder {
public func encode<E: Encodable>(
_ encodable: E,
to body: inout ByteBuffer,
headers: inout HTTPHeaders
) throws {
headers.contentType = .json
@bubudrc
bubudrc / 1_DynamicQuery.swift
Created December 10, 2021 14:51 — forked from vzsg/1_DynamicQuery.swift
Dynamic Query Support for Vapor 3
View 1_DynamicQuery.swift
import Foundation
import Fluent
protocol DynamicQueryable {
static func dynamicMapping<DB: Database, QB: QueryBuilder<DB, Self>>() -> [String: (DynamicFilter, QB) throws -> QB]
}
protocol DynamicSortable {
static var dynamicFieldMapping: [String: FluentProperty] { get }
}
@bubudrc
bubudrc / 1_JSONifyTag.swift
Created December 10, 2021 14:49 — forked from vzsg/1_JSONifyTag.swift
Custom Leaf tag for printing anything in the context as JSON (Vapor 4)
View 1_JSONifyTag.swift
import LeafKit
final class JSONifyTag: UnsafeUnescapedLeafTag {
func render(_ ctx: LeafContext) throws -> LeafData {
guard let param = ctx.parameters.first else {
throw "no parameter provided to JSONify"
}
return LeafData.string(param.jsonString)
}