View Mutated.swift
protocol Mutatable {}
extension Mutatable {
func mutated(f: (inout Self) -> Void) -> Self {
var copy = self
f(&copy)
return copy
}
}
View NSTextStorageSubclass.swift
import Cocoa
@objc
class SomeTextStorage: NSTextStorage {
private var storage: NSMutableAttributedString
override init() {
storage = NSMutableAttributedString(string: "", attributes: nil)
super.init()
View Completion.swift
final class Completion<R> {
private let closure: (R) -> Void
private var cancelled = false
/// `closure` is called upon completion, if not cancelled.
init(closure: (R) -> Void) {
self.closure = closure
}
View PivotalTrackerMarkdownLink.js
View KeyValueObserver.swift
import Foundation
/// Helper object for more Swift-like KVO. To create, call NSObject.addObserverForKeyPath(_:handler:).
class KeyValueObserver: NSObject {
private weak var observing: NSObject?
private var keyPath: String
private var handler: () -> Void
private init(observing: NSObject, keyPath: String, handler: () -> Void) {
View ErrorType+LocalizedDescription.swift
extension ErrorType {
var myLocalizedDescription: String {
if self.dynamicType == NSError.self {
return ((self as Any) as! NSError).localizedDescription
}
else {
return "\(self)"
}
}
View DispatchSyncThrows.swift
import Foundation
/// Call a throwing block synchronously.
func dispatch_sync(queue: dispatch_queue_t, block: () throws -> ()) throws {
var error: ErrorType?
dispatch_sync(queue) {
do {
try block()
} catch let caughtError {
error = caughtError
View demo_foreign.c
#include <assert.h>
#include <string.h>
#include <stdio.h>
#include "wren.h"
void logFromWren(WrenVM *vm) {
//double x = wrenGetArgumentDouble(vm, 0); // returns 0 in this setting
const char *message = wrenGetArgumentString(vm, 1);
printf("logFromWren: %s\n", message);
}
View WeakSet.swift
//
// Created by Adam Preble on 2/19/15.
//
/// Weak, unordered collection of objects.
public struct WeakSet<T where T: AnyObject, T: Hashable> {
typealias Element = T
/// Maps Element hashValues to arrays of Entry objects.
/// Invalid Entry instances are culled as a side effect of add() and remove()
View IdentifierGenerator.swift
public class IdentifierGenerator {
private let characters = Array("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
private let separator = "-"
public func generateIdentifier() -> String {
let numCharacters = UInt32(characters.count)
func randomCharacter() -> Character {
let index = Int(arc4random_uniform(numCharacters))
return characters[index]