Skip to content

Instantly share code, notes, and snippets.

View bryanforbes's full-sized avatar

Bryan Forbes bryanforbes

View GitHub Profile
@bryanforbes
bryanforbes / cmd.js
Created October 22, 2012 18:11
Dojo node command line
#!/usr/bin/env node
var repl = require('repl'),
vm = require('vm'),
useGlobal = true;
function evalWithHistory(code, context, file, callback){
// TOOD: write history saving routines
var err, result;
try{
if(useGlobal){
@bryanforbes
bryanforbes / hostit.sh
Created October 15, 2012 14:56
hostit
# vim: set filetype=zsh:
if [[ $# -eq 0 ]]; then
echo "Usage: hostit [-l] [[-d -f] hostname]"
return
fi
REMOVE_HOST=0
FORCE_HOST=0
LIST_HOSTS=0
@bryanforbes
bryanforbes / data.js
Created October 3, 2012 16:51
data-* bindings for Dojo
define([
'exports',
'dojo/has',
'dojo/dom'
], function(exports, has, dom){
has.add('dom-dataset', function(global, document, element){
return typeof element.dataset === 'object' && !!element.dataset;
});
var ccRE = /(-+)([^-])/g;
@bryanforbes
bryanforbes / module.js
Created August 29, 2012 23:59
DOM Ready module
define(["dojo/domReady!"], function(domReady){
function init(){
// do something on domReady
}
(domReady||init)(init);
});
@bryanforbes
bryanforbes / _OnDijitClickMixin.js
Created July 12, 2012 14:47
_OnDijitClickMixin fix for touch devices
// Implemented as a monkey-patch for dijit/_OnDijitClickMixin
define([
"dijit/_OnDijitClickMixin",
"dojo/on",
"dojo/_base/window",
"dojo/dom-geometry",
"dijit/registry",
"dojo/domReady!"
], function(_OnDijitClickMixin, on, win, domGeometry, registry){
@bryanforbes
bryanforbes / notify.js
Created July 9, 2012 19:30
dojo/request/notify
define(['../Evented', '../_base/lang', './util'], function(Evented, lang, util){
// module:
// dojo/request/notify
// summary:
// Global notification API for dojo/request
//
// | require('dojo/request', 'dojo/request/notify',
// | function(request, notify){
// | notify('load', function(response){
// | if(response.url === 'someUrl.html'){
@bryanforbes
bryanforbes / rmtree.js
Created June 20, 2012 19:35
Recursive rmdir in Node
define([
"dojo/Deferred",
"dojo/promise/all",
"dojo/node!fs",
"dojo/node!path"
], function(Deferred, all, fs, path){
var slice = Array.prototype.slice;
function adapt(func){
var args = slice.call(arguments, 1),
def = new Deferred;
@bryanforbes
bryanforbes / adapt.js
Created June 20, 2012 18:19
Deferred adapter for node
define([
"dojo/Deferred"
], function(Deferred){
var slice = Array.prototype.slice;
return function adapt(func){
var args = slice.call(arguments, 1),
def = new Deferred;
args.push(function(err, value){
if(err){
@bryanforbes
bryanforbes / cross-site.html
Created June 18, 2012 18:44
Cross-site test
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test</title>
<script>
var dojoConfig = {
async: true
};
function makeError(name, ctor, base, props){
base = base || Error;
var ErrorCtor = function(message){
if(base === Error){
Error.captureStackTrace && Error.captureStackTrace(this, ErrorCtor);
base.call(this, message);
}else{
base.apply(this, arguments);
}
ctor && ctor.apply(this, arguments);