Skip to content

Instantly share code, notes, and snippets.

View cwagdev's full-sized avatar

Chris Wagner cwagdev

View GitHub Profile
@cwagdev
cwagdev / Luhn.swift
Created July 17, 2015 19:40
Luhn Algorithm in Swift
func luhnCheck(number: String) -> Bool {
var sum = 0
let digitStrings = reverse(number).map { String($0) }
for tuple in enumerate(digitStrings) {
if let digit = tuple.element.toInt() {
let odd = tuple.index % 2 == 1
switch (odd, digit) {
case (true, 9):
@cwagdev
cwagdev / Scrydget.js
Last active June 1, 2021 21:06
Scrydget - Random MTG Card Widget for Scriptable
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: brown; icon-glyph: magic;
// Show a random MTG Card
const { transparent } = importModule('no-background')
let card = await randomCard()
let widget = await createWidget(card)
@cwagdev
cwagdev / CreditCard.swift
Last active June 27, 2019 10:04
Credit Cards represented in Swift
/// Describes a type of credit card for a subset of known types.
enum CreditCardType: Printable {
case Amex, DinersClub, Discover, JCB, MasterCard, Visa, Unknown
var description: String {
switch self {
case .Amex:
return "Amex"
case .DinersClub:
return "Diners Club"
import UIKit
import CoreData
class BasicFetchedResultsControllerDelegate: NSObject, NSFetchedResultsControllerDelegate {
let tableView: UITableView
var controllerDidChangeContentCallback: (() -> Void)?
/// The threshold for the number of inserts, deletes, and reloads to peform using animations. If the threshold is exceeded, the table will be reloaded using `reloadData()`. The default value is `50`.
var numberOfRowOperationsThresholdBeforeFullReloadOccurs = 50
@cwagdev
cwagdev / UIImageExt.swift
Created August 17, 2015 23:18
UIImage?(color: UIColor) initializer
extension UIImage {
convenience init!(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor)
CGContextFillRect(context, rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
@cwagdev
cwagdev / UIColor+Grayscale.h
Created August 2, 2013 09:11
Convert a UIColor color to its grayscale equivalent
#import <UIKit/UIKit.h>
@interface UIColor (Grayscale)
- (UIColor *)grayscale;
@end
// Swift 2.2
let queue = dispatch_queue_create("myqueue", nil)
dispatch_async(queue) {
// do stuff
}
// Swift 3
let queue = DispatchQueue(label: "myqueue")
queue.async {
// do stuff
@cwagdev
cwagdev / gist:7759777
Last active December 30, 2015 01:59
iOS Version Macros
#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)
#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)
@cwagdev
cwagdev / gist:7549537
Last active December 28, 2015 19:19
Handle keyboard presentation and dismissal with scroll views
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardShowNotification:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleKeyboardHideNotification:) name:UIKeyboardWillHideNotification object:nil];
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
@cwagdev
cwagdev / gist:5103091
Last active December 14, 2015 14:48
Detect UINavigation back button press
- (void)viewWillDisappear:(BOOL)animated {
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
// back button was pressed. We know this is true because self is no longer
// in the navigation stack.
}
[super viewWillDisappear:animated];
}