Skip to content

Instantly share code, notes, and snippets.

Avatar
💿

Michael Jackson mjackson

💿
View GitHub Profile
@mjackson
mjackson / Dispatcher.js
Created Aug 21, 2014
An async version of Facebook's flux dispatcher
View Dispatcher.js
var d = require('d');
var warning = require('react/lib/warning');
var Promise = require('es6-promise').Promise;
function isNotNull(object) {
return object != null;
}
function Dispatcher() {
this._currentActionName = null;
@mjackson
mjackson / example.js
Last active Aug 29, 2015
A proposal for <Route didTransitionTo>
View example.js
var App = React.createClass({
render: function () {
return (
<this.props.activeRouteHandler/>
);
}
});
View User.js
var User = React.createClass({
statics: {
willTransitionTo: function (transition, params, query) {
// possibly cancel the transition to a page
},
willTransitionFrom: function (transition, component) {
// possibly cancel the transition away from a page
View getRouteProps.js
var App = React.createClass({
statics: {
getRouteProps: function (params, query) {
return {
currentUser: getCurrentUser()
};
}
},
render: function () {
return <this.activeRouteHandler/>;
View abortable-promise.js
var promise = new AbortablePromise(function (resolve, reject, onAbort) {
// Use resolve & reject as you normally would.
var request = makeRequest( ... , function (error, response) {
if (error) {
reject(error);
} else {
resolve(response);
}
});
View partial-solution.js
var React = require('react');
var escapeRegExp = require('./utils/escapeRegExp');
var CATALOG = [
{
category: 'Sporting Goods',
products: [
{ name: 'Basketball', price: 4000 },
{ name: 'Boxing Gloves', price: 3500, inStock: true },
{ name: 'Baseball', price: 1000 }
@mjackson
mjackson / AutoBindingComponent.js
Created May 6, 2015
A React.Component subclass that mimics 0.12's auto-binding behavior
View AutoBindingComponent.js
var React = require('react');
class AutoBindingComponent extends React.Component {
constructor(props) {
super(props);
for (var property in this) {
if (this.hasOwnProperty(property) && typeof this[property] === 'function') {
this[property] = this[property].bind(this);
}
View string.rb
require 'citrus'
Citrus.eval(<<'CODE')
grammar RubyString
rule string
single_quoted_string | double_quoted_string
end
# This should be expanded to account for escaped single quotes.
rule single_quoted_string
View fixed-position.html
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#wrapper {
width: 800px;
margin: 0 auto;
background: green;
@mjackson
mjackson / days.rb
Created Oct 30, 2010
A small demonstration of how to use string interpolation in a Citrus grammar.
View days.rb
require 'citrus'
Citrus.eval(<<'CODE')
grammar Days
rule every_n_days
('every ' number ' days') {
"INTERVAL=#{number}"
}
end