Skip to content

Instantly share code, notes, and snippets.

View bitmage's full-sized avatar

Brandon Mason bitmage

View GitHub Profile
".vimrc
syntax on
set autoindent
set smartindent
"filetype plugin indent on
"set iskeyword+=_,$,@,%,#
set noerrorbells
set incsearch
set list
@bitmage
bitmage / have_json.rb
Created November 17, 2010 03:57
Assertion class for testing JSON content.
class HaveJson
def initialize(selector)
@selector = selector
end
def matches?(json)
@json = json
return traverse(@json, @selector)
end
@bitmage
bitmage / have_json.rb
Created June 14, 2011 04:31
Assertion Class for Parsing JSON
class HaveJson
def initialize(selector)
@actual = []
@depths = []
@selector = selector
@path, @test = selector.split('=')
@path = @path.split('/')
end
def matches?(json)
@bitmage
bitmage / module_callbacks.rb
Created December 2, 2011 20:27
Attach Callbacks to Methods In a Module
#http://stackoverflow.com/questions/5513558/executing-code-for-every-method-call-in-a-ruby-module
module M
def self.before(*names)
names.each do |name|
m = instance_method(name)
define_method(name) do |*args, &block|
yield
m.bind(self).(*args, &block)
end
@bitmage
bitmage / compilation process.txt
Created January 7, 2012 02:01
Compilation for RZR load macro
================================================================
# Key
<- indicates a dependency
-> indicates a result
================================================================
# pre-build (all settings default to user dotfile, then factory settings)
<- find project root
@bitmage
bitmage / projectRoot.coffee
Created January 9, 2012 04:19
functions for finding rzr project root
exports.findParent = findParent = (dir, pred) ->
return null if dir == '/'
if pred(dir)
return dir
else
upDir = normalize(dir + '/..')
return findParent(upDir, pred)
end
@bitmage
bitmage / compile.dot
Created January 9, 2012 21:45
compilation diagram
digraph G {
//end [shape=Msquare];
subgraph cluster_0 {
style=filled;
color=lightgrey;
node [style=filled,color=white];
label = "compiler";
@bitmage
bitmage / macros.coffee
Created January 30, 2012 23:14
macro definition for yerbascript
exports.macros =
load: (o) ->
throw SyntaxError 'load takes one argument' unless @args.length == 1
{join} = require 'path'
getModulePath = require join(projectRoot(), 'node_modules/modulate/domain/services/getModulePath')
domainRoot = join projectRoot(), 'domain'
moduleSpec = eval (@args[0].compile o)
path = getModulePath(domainRoot, moduleSpec)
"require('#{ path }.js');"
@bitmage
bitmage / macros.coffee
Created February 6, 2012 23:04
sample load macro
exports.macros =
load: (args, context) ->
throw SyntaxError 'load takes one argument' unless args.length == 1
{join} = require 'path'
getModulePath = require join(context.projectRoot, 'node_modules/modulate/domain/services/getModulePath')
domainRoot = join context.projectRoot, 'domain'
moduleSpec = eval (args[0].compile context.compileContext)
path = getModulePath(domainRoot, moduleSpec)
Macro file: /Users/brandon/Projects/Code/js/macros.coffee
Project root: /Users/brandon/Projects/Code/js
Macros loaded: load
SyntaxError: In src/nodes.coffee, assignment to a reserved word: {
from: from,
to: to,
exclusive: exclusive
} = this.variable.properties.pop().range
at Assign.compilePatternMatch (/Users/brandon/Projects/Code/js/yerbascript/lib/coffee-script/nodes.js:1395:17)
at Assign.compileNode (/Users/brandon/Projects/Code/js/yerbascript/lib/coffee-script/nodes.js:1333:23)