Skip to content

Instantly share code, notes, and snippets.

@danro
Last active Aug 29, 2015
Embed
What would you like to do?
requirebin sketch
var mash = require('mash-js');
var withSword = mash(function () {
this.slash = function (dmg) {
console.log('Sword slash for ' + dmg + ' damage!');
};
});
var withMagic = mash(function () {
this.fireball = function (dmg) {
console.log('Cast fireball for ' + dmg + ' damage!');
};
this.slash = function () {
console.log('Oops we slashed with magic');
};
});
function Hero() {}
mash(Hero, function () {
withSword.mash(this);
withMagic.mash(this);
// Make sure we always slash with swords
this.slash = withSword.slash;
this.attack = function (enemy) {
console.log('Hero attacks the ' + enemy);
this.slash(45);
this.fireball(200);
};
});
var hero = new Hero();
hero.attack('Goblin');
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({"yw/lAm":[function(require,module,exports){function mash(base,mixin){if(!mixin){mixin=base;base={}}var proto=base.prototype;if(proto==={}.prototype)proto=base;mixin.call(proto);base.create=function(){var ctor=base;if(typeof ctor!=="function"){ctor=function(){};ctor.prototype=base}var inst=new ctor;if(typeof inst.init==="function"){inst.init.apply(inst,arguments)}return inst};base.mash=function(obj){mixin.call(obj);return proto};return base}module.exports=mash},{}],"mash-js":[function(require,module,exports){module.exports=require("yw/lAm")},{}]},{},[]);var mash=require("mash-js");var withSword=mash(function(){this.slash=function(dmg){console.log("Sword slash for "+dmg+" damage!")}});var withMagic=mash(function(){this.fireball=function(dmg){console.log("Cast fireball for "+dmg+" damage!")};this.slash=function(){console.log("Oops we slashed with magic")}});function Hero(){}mash(Hero,function(){withSword.mash(this);withMagic.mash(this);this.slash=withSword.slash;this.attack=function(enemy){console.log("Hero attacks the "+enemy);this.slash(45);this.fireball(200)}});var hero=new Hero;hero.attack("Goblin");
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"mash-js": "0.9.0"
}
}
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment