Skip to content

Instantly share code, notes, and snippets.

@jparise
jparise / NSArray+Predicates.h
Created January 4, 2012 00:17
NSArray Predicates
#import <Foundation/NSArray.h>
@interface NSArray (Predicates)
- (NSArray *)arrayOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate;
- (NSArray *)arrayOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate;
@end
@jparise
jparise / gist:893690
Created March 30, 2011 01:18
Class attributes can only be accessed via class type objects
class ClassAttribute(object):
"""Class attributes can only be accessed via class type objects.
Attempting to access the attribute via an instance of the class will
result in an AttributeError.
"""
__slots__ = ('attr',)
def __init__(self, attr):
@jparise
jparise / gist:760661
Created December 31, 2010 02:57
merge_dicts(d1,d2) - safely merges the contents of d2 into d1
def merge_dicts(d1, d2):
"""Safely merges the contents of the dictionary d2 into dictionary d1.
Unlike dict.update(), this is a non-destructive operation: a KeyError is
raised if one of d2's keys already exists in d1.
"""
# Based on timing tests, it's faster to scan for conflicts upfront and
# then perform a bulk update. This presumes that, generally speaking,
# the destination dictionary d1 will be larger (in item count) than d2.
for key in d2.iterkeys():