Skip to content

Instantly share code, notes, and snippets.

View aceontech's full-sized avatar

Alex Manarpies aceontech

View GitHub Profile
@aceontech
aceontech / StringsFileParser.swift
Last active August 1, 2020 19:17
Prototype implementation of a .strings file parser written in Swift, using Parser Combinators, as explained by PointFree.co. See https://www.pointfree.co/collections/parsing/parser-combinators for all videos on this topic.
public protocol FileParser {
func parse(string: String) -> [Entry]
}
public struct FileParserFactory {
public static func unordered() -> FileParser {
UnorderedFileParser()
}
public static func ordered() -> FileParser {
LineOrderedFileParser(unorderedParser: unordered())
@aceontech
aceontech / RetainCycleUnitTest.swift
Created March 3, 2017 08:14
Unit test for checking for retain cycles in Swift. Replace `CLASS_YOU_WANT_TO_TEST` with your class name.
func testCleanup() {
// Extend your class inline in order to add closure property `deinitCalled`,
// which indicates when/if your class's deinit() gets called
class ClassUnderTest: CLASS_YOU_WANT_TO_TEST {
var deinitCalled: (() -> Void)?
deinit { deinitCalled?() }
}
// Set up async expectation, which causes the test to wait for `deinitCalled`
@aceontech
aceontech / ImprovedBuilderPattern.swift
Created March 25, 2016 11:42
Improved builder pattern with anonymous closures
class SomeClass {
var someSubview:UIView = {
let v = UIView()
v.someProperty = "You want to initalize"
v.anotherProperty = "You may want to initialize"
return v
}()
}
@aceontech
aceontech / UILabel+AOTSizingUtilities.h
Created February 3, 2015 16:14
Category on UILabel for easily sizing a label to fit in a given width.
//
// Created by Alex Manarpies on 03/02/15.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface UILabel (AOTSizingUtilities)
- (void)aot_sizeToFitInWidth:(CGFloat)width;
@aceontech
aceontech / CGPointIntegral.h
Created January 9, 2015 12:34
Akin to CGRectIntegral, CGPointIntegral aligns a CGPoint to the screen's pixel boundaries by rounding its values appropriately. This avoids the blurry anti-aliasing seen when drawing fractional coordinates (e.g. 20.224).
//
// Created by Alex Manarpies on 09/01/15.
// www.aceontech.com
//
//
// Copyright (c) 2015 Alex Manarpies
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
@aceontech
aceontech / MovingAverage.h
Created December 17, 2014 10:47
Objective-C utility class for maintaining a moving average over a given time period.
//
// Created by Alex Manarpies on 12/17/14.
//
#import <Foundation/Foundation.h>
/**
* Utility class for maintaining a moving average over a given time period.
* Credits: http://stackoverflow.com/a/14740836/331283
@aceontech
aceontech / .bash_profile
Created September 17, 2014 09:26
Colors in y'r Mac Terminal
export CLICOLOR=1
# Courtesy of https://github.com/mathiasbynens/dotfiles/blob/master/.aliases
export LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:'
import UIKit
import MapKit
extension MKMapView {
/**
Closure passes itself in
*/
public typealias MKMapViewBuilderClosure = (MKMapView) -> Void
/**
class ViewController : UIViewController, MKMapViewDelegate {
/**
Create lazy property to the map view, initializing it with
the convenience init function described in the class
extension above
*/
lazy var mapView:MKMapView = MKMapView { m in
m.delegate = self
m.showsUserLocation = true
@interface NSCBinarySearchExample() <>
@end
@implementation NSCBinarySearchExample
/**
* Find the index of a filename.
*/
- (NSUInteger)findFilename:(NSString *)filename
{