Skip to content

Instantly share code, notes, and snippets.

@pnc
pnc / NSDictionary+Inflector.h
Created November 5, 2012 16:00
(Possibly broken) camel-case / underscore inflection in Objective-C
#import <Foundation/Foundation.h>
@interface NSDictionary (Inflector)
- (NSDictionary *)underscoredDictionaryWithPrefix:(NSString *)prefix andSuffix:(NSString *)suffix;
@end
@pnc
pnc / PCPropertyObserver.c
Created August 31, 2012 14:36
PCPropertyObserver
// © 2011 Phillip N. Calvin
// For use in a setter.
// Signs up self to receive KVO notifications about given properties
// on any new value and removes self as an observer from the old value.
// For example, to observe properties of a property called customer
// (backed by ivar _customer):
// PCPropertyObserver(customer, @"allowSubscriptionPurchase", @"availableProducts");
// You'd need to write this selector yourself:
@pnc
pnc / AppDelegate.m.patch
Created April 6, 2012 18:05
Fix to Marcus Zarra's consecutive migration code
--- 1.txt 2012-04-06 14:09:33.000000000 -0400
+++ 2.txt 2012-04-06 14:09:45.000000000 -0400
@@ -119,28 +119,35 @@
}
//END:progressivelyMigrateURLFindModels
//See if we can find a matching destination model
//START:progressivelyMigrateURLFindMap
NSMappingModel *mappingModel = nil;
@pnc
pnc / AppDelegate.m
Created January 10, 2012 18:17
Core Data -willSave example
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSError *error = nil;
// Load the data model
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
// Set up the SQLite store
NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [documentsDirectory URLByAppendingPathComponent:@"Example.sqlite"];
@pnc
pnc / troll.js.coffee
Created August 4, 2011 14:00
This is what happens when you work with Emacs users.
(for own key, value of assignable_attributes
attribute_scope = $('#reservation_' + key)
attribute_scope.val(value)
attribute_scope.change()
)
(for own key, value of ui.item.attribute_labels
$(".reservation-label-#{key}").html(value)
)
@pnc
pnc / deprecation.rb
Created July 26, 2011 01:18
Moar deprecation warnings
set_trace_func(Proc.new do |event, file, line, id, binding, classname|
if rand > 0.999
puts "warning: #{classname} is deprecated and will be removed in a future release"
puts " (called from: #{file}:#{line})"
end
end)
@pnc
pnc / ruby_block.rb
Created June 28, 2011 15:50
Ruby blocks and required parentheses
def group(symbol, &block)
block.call
end
symbol = :cheese
# Simple argument-and-block form:
group symbol do
puts "hello"
end # => "hello"
Nebula:mailcatcher(master) $ rake --trace
(in /Users/phil/Development/ruby/mailcatcher)
** Invoke default (first_time)
** Invoke build (first_time)
** Invoke build:sass (first_time)
** Execute build:sass
** Invoke build:coffee (first_time)
** Execute build:coffee
** Invoke build:rdoc (first_time)
** Invoke rdoc (first_time)
@pnc
pnc / gist:645582
Created October 25, 2010 19:42
Job scheduler using greedy algorithm
(require racket/pretty)
(define (job start end) (list start end))
(define (job-with-duration start duration)
(job start
(+ start duration)))
(define (job-end job)
(second job))
@pnc
pnc / delegate_proc.rb
Created October 23, 2010 16:15
Groovy's delegate method, implemented for Ruby Procs
# The idea here is to emulate Groovy's delegate= pattern for closures.
# We define a builder module. This will receive method calls
# from our builder. It could be an instance of an object if we wanted.
module FamilyBuilder
def self.parent(name)
puts "Parent: #{name}"
end
def self.child(name)