Skip to content

Instantly share code, notes, and snippets.

@sharplet
sharplet / NSArray+indexPathKeyedSubscript.m
Last active December 17, 2015 18:39
Category on NSArray to allow subscripting via an NSIndexPath.
//
// Category on NSArray to allow subscripting via an NSIndexPath.
//
// Adam Sharp
// May 27, 2013
//
// Given this array:
//
// NSArray *matrix = @[
// @[ @1, @2 ],
#!/bin/sh
#
# Adam Sharp
# Aug 21, 2013
#
# Usage: Add it to your PATH and `git remove-submodule path/to/submodule`.
#
# Does the inverse of `git submodule add`:
# 1) `deinit` the submodule
# 2) Remove the submodule from the index and working directory
@sharplet
sharplet / README.md
Last active June 8, 2018 22:10
Unearned Stack Overflow badges Dashing widget

Badge Overflow

An exceptionally handsome way to track your Stack Overflow badges.

Created by Adam & Stephanie Sharp.

Unearned Badges widget

A Dashing widget that tracks your progress toward unearned badges on Stack Overflow.

@sharplet
sharplet / composite_task.rb
Last active August 29, 2015 14:03
Normally a rake task won't complete if one of its prerequisites fails. Define a composite task to allow them all to run, capturing exceptions and reporting them only after all have completed.
# Take for example a convenience task, all_tests, that runs our app's
# test suite for multiple architectures:
#
# task :all_tests => [:test_64_bit, :test_32_bit]
#
# Defined as a regular task, Rake will bail out early if
# test_64_bit failed, never getting to the 32 bit tests.
#
# A composite task is almost identical in declaration:
#
@sharplet
sharplet / method.swift
Created January 13, 2015 07:15
Mapping with methods
/// Convert a free method into a regular funcion accepting an instance as the first parameter.
func method<A, B>(m: A -> () -> B) -> A -> B {
return { m($0)() }
}
let strings = ["1", "2", "3", "foo"]
strings.map(method(String.toInt))
// => [{Some 1}, {Some 2}, {Some 3}, nil]
@sharplet
sharplet / ConcatenateSequence.swift
Created February 9, 2015 10:25
Generic concatenation of sequences in Swift
func + <S: SequenceType, E where S.Generator.Element == E> (lhs: S, rhs: S) -> GeneratorOf<E> {
var (g, h) = (lhs.generate(), rhs.generate())
return GeneratorOf {
g.next() ?? h.next()
}
}
@sharplet
sharplet / .clang-format
Created April 13, 2015 03:36
clang-format file for Objective-C projects
AlignTrailingComments: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: true
BasedOnStyle: LLVM
BreakBeforeBraces: Attach
ColumnLimit: 120
IndentWidth: 2
KeepEmptyLinesAtTheStartOfBlocks: false
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
@sharplet
sharplet / rake.log
Created April 15, 2015 01:55
Rake output building a framework and XCTest bundle from the command line
$ rake
mkdir -p Build
mkdir -p Build/Switch.framework
mkdir -p Build/Switch.framework/Versions/A/Modules/Switch.swiftmodule
ln -sf A Build/Switch.framework/Versions/Current
ln -sf Versions/Current/Modules Build/Switch.framework/Modules
ln -sf Versions/Current/Switch Build/Switch.framework/Switch
xcrun -sdk macosx swiftc -module-name Switch -emit-library -o Build/Switch.framework/Versions/Current/Switch -- Source/Switch.swift
xcrun -sdk macosx swiftc -module-name Switch -emit-module-path Build/Switch.framework/Versions/A/Modules/Switch.swiftmodule/x86_64.swiftmodule -- Source/Switch.swift
touch Build/Switch.framework
@sharplet
sharplet / rake.log
Last active September 12, 2022 12:24
Building a Swift framework, then building and running Quick specs, *without Xcode*
# View on GitHub: https://github.com/sharplet/Switch
# Try it yourself: git clone https://github.com/sharplet/Switch.git && cd Switch && rake
$ rake
mkdir -p Build
mkdir -p Build/Switch.framework
mkdir -p Build/Switch.framework/Versions/A/Modules/Switch.swiftmodule
ln -sf A Build/Switch.framework/Versions/Current
ln -sf Versions/Current/Modules Build/Switch.framework/Modules
ln -sf Versions/Current/Switch Build/Switch.framework/Switch
xcrun -sdk macosx swiftc -module-name Switch -emit-library -o Build/Switch.framework/Versions/Current/Switch -- Source/Array+Ext.swift Source/Option.swift Source/ParseResult.swift Source/Parser.swift Source/String+Ext.swift
@sharplet
sharplet / Kiwi.swift
Created April 30, 2015 13:24
Kiwi in Swift
import Kiwi
import XCTest
class KiwiSpec: KWSpec {
override class func buildExampleGroups() {
it("has a test") {
XCTAssert(1 + 1 == 2)
}
}
}