Skip to content

Instantly share code, notes, and snippets.

@cesarandreu
cesarandreu / const.fn.js
Last active August 29, 2015 14:21
const vs var
const limit = getLimit(query.limit)
const after = getAfter(query.after)
// after must be a unix timestamp number or Date string
function getAfter (after) {
after = new Date(/^([0-9]+)$/.test(after) ? Number(after) * 1000 : after)
return after.valueOf() ? after : new Date()
}
// limit must be a number between 0 and 100
@cesarandreu
cesarandreu / factories.js
Last active August 29, 2015 14:21
Example of factories in node.js
const fs = require('fs')
const _ = require('lodash')
const path = require('path')
const mmm = require('mmmagic')
const assert = require('assert')
const chance = require('chance').Chance()
const uploadBike = require('../../utils/upload-bike')
const fixtures = path.resolve(__dirname, '../fixtures')
const Magic = mmm.Magic
var fs = require('fs')
var Joi = require('joi')
var _ = require('lodash')
var Router = require('koa-router')
var middleware = require('../middleware')
var bodyParser = require('koa-better-body')
module.exports = BikeshedsController
function BikeshedsController () {
var auth = middleware.authenticate()
@cesarandreu
cesarandreu / Dialog.jsx
Created April 26, 2015 17:06
modal / dialog
var cn = require('classnames'),
React = require('react/addons'),
hotkey = require('react-hotkey'),
PureRenderMixin = React.addons.PureRenderMixin
var Dialog = React.createClass({
mixins: [
PureRenderMixin,
hotkey.Mixin('_handleHotkey')
],
@cesarandreu
cesarandreu / Html.jsx
Created April 20, 2015 19:44
Webpack render html
var React = require('react')
var Html = React.createClass({
propTypes: {
assets: React.PropTypes.object.isRequired
},
render () {
var {scripts, styles} = this.props.assets
return (
@cesarandreu
cesarandreu / request.client.js
Created March 26, 2015 06:02
fluxible request
var promises = require('./request.promisify'),
superagent = require('superagent'),
cookies = require('cookies-js'),
methods = require('methods'),
clientRequest = {}
methods.concat('del').forEach(method => {
if (superagent[method])
clientRequest[method] = (...args) => {
return superagent[method].apply(superagent, args).use(xsrfToken).use(promises)
(function(n,c){
if (c[n] === void 0) {
c[n] = function () {
c[n].clients.push(this);
this._init = [Array.prototype.slice.call(arguments)];
};
c[n].clients = [];
var action = function(method){
@cesarandreu
cesarandreu / create_database.js
Created November 23, 2014 23:53
create or drop PG database
'use strict';
var pg = require('co-pg')(require('pg')),
co = require('co');
var env = process.env.NODE_ENV || 'development',
config = require('../config/database')[env],
database = config.database;
delete config.database;
@cesarandreu
cesarandreu / Gemfile
Created November 15, 2014 00:25
FakeS3 automation for rspec
# Make sure you have the fakes3 gem installed
group :test do
gem 'fakes3'
end
@cesarandreu
cesarandreu / gulp_alias.sh
Last active August 29, 2015 14:03
Alias for running gulp with harmony flag
# Good reminder that sometimes we overthink things
# First I tried this, obviously it doesn't work because it gets evaluated when you run the command
# alias gulp='node --harmony $(which gulp)'
# Then I tried this, which works but is sorta long...
# alias gulp='node --harmony $(for x ($(which -a gulp)); do; if [ -e $x ]; then echo $x; break; fi; done)'
#
# Expanded:
# for x ($(which -a gulp))