Skip to content

Instantly share code, notes, and snippets.

View davemo's full-sized avatar
😀

David Mosher davemo

😀
View GitHub Profile
@davemo
davemo / readme.md
Last active December 14, 2015 23:08
Imagine if we could write Angular code like this (http://angularjs.org/#components-js), in coffeescript, like this...

I'm intrigued by the ideas presented in AngularJS and the idea of WebComponents but I've grown fond of CoffeeScript and the idea of building DSL's that utilize the power of convention in ways that make sense and simplify code.

The Angular code as it is now, is often unreadable and it isn't as clear to me the relationship between things. This gist is a sample of the Angular Components Example but reimagined with the ability to use the following:

  1. CoffeeScript
  2. Templates precompiled, available on a namespace, perhaps inferred from the module name
  3. Use underscore.js instead of angulars support methods
  4. Separate concerns into small files, and have an intelligent way to wire everything up
@davemo
davemo / add_page_changed_event_to.coffee
Created December 19, 2012 16:47
Page Changed Event
def 'cep.mixins.addPageChangedEventTo', (target, rerouteFunc) ->
_(target).extend(Backbone.Events)
_(target.routes).each (handler, route) ->
target[handler] = _(target[handler]).wrap (originalFunc, args...) ->
if rerouteFunc && newRoute = rerouteFunc(handler)
target[newRoute].apply(target, args)
else
originalFunc.apply(target, args)
@davemo
davemo / mixins.coffee
Created December 4, 2012 18:30
Pages vs Widgets
def 'mixins.makeWidgetComposer', (view) ->
view.render = _(view.render).wrap (originalRender) ->
_(view.widgets).each (namespace, selector) ->
[root, location, widget] = namespace.split(".")
new window[root]?[location]?[widget](el: view.$(selector))
originalRender()
@davemo
davemo / Administrative Report No. 16-2012.md
Created November 26, 2012 04:00
Questions for City Council Regarding - Administrative Report No 16-2012 (G2) City Website Phase 1 Report

Administrative Report No 16-2012

Section G - City MANAGER

Monday, November 26, 2012

(G2) City Website Phase 1 Report

(Files CK. 261-20, CC. 365-6 and CB.365-4l)

RECOMMENDATION

@davemo
davemo / ios5webdebug.sh
Created November 13, 2012 23:22 — forked from sergiolopes/ios5webdebug.sh
Runs iOS 5 simulator with MobileSafari remote debug
#!/bin/bash
# Open iPhone Simulator on default location for XCode 4.3
open /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app
# Open mobile safari
echo Open mobile safari on emulator and press return
read
# Plug debug to MobileSafari.app
@davemo
davemo / api.proxy.server.js
Created November 6, 2012 21:56
A simple express.js server with a proxy that intercepts all requests with /api/ and proxies them to localhost:3000
var express = require('express'),
httpProxy = require('http-proxy'),
app = express();
var proxy = new httpProxy.RoutingProxy();
function apiProxy(host, port) {
return function(req, res, next) {
if(req.url.match(new RegExp('^\/api\/'))) {
proxy.proxyRequest(req, res, {host: host, port: port});
@davemo
davemo / stuff.diff
Created October 22, 2012 21:36
Diff
diff --git a/app/js/app.coffee b/app/js/app.coffee
index 7beb9d2..0f3df37 100644
--- a/app/js/app.coffee
+++ b/app/js/app.coffee
@@ -12,9 +12,6 @@ def 'cep.App', class App
if @currentUser.isLoggedIn()
@logoutView.render()
- @navigateToDashboard()
- else
@davemo
davemo / responsive.less
Created October 22, 2012 19:49
responsive styles for elimchristmas.com
/* Responsive
-------------------------------------------------- */
@media only screen and (min-width: 974px) {
#page {
margin-top: 15px;
}
body {
padding-top: 20px;
@davemo
davemo / backbone_session_storage_spec.coffee
Created October 13, 2012 06:12
Backbone.SessionStorage Specs
describe "Backbone.SessionStorage (Bypass Modifications)", ->
Given -> @user = new cep.models.User
Given -> @sessionSync = spyOn(Backbone, 'sessionSync')
Given -> @ajaxSync = spyOn(Backbone, 'ajaxSync')
describe "CRUD methods that pass through to the right sync method", ->
sharedExamplesFor "the backbone CRUD method", (method) ->
Given -> @storageEnabled = Backbone.sessionStorageEnabled
When -> @user[method]()
@davemo
davemo / backbone.sessionStorage.js
Last active April 15, 2016 22:53
Backbone sessionStorage Adapter
/**
* Backbone sessionStorage Adapter
* Based on https://github.com/jeromegn/Backbone.localStorage
*/
(function() {
// A simple module to replace `Backbone.sync` with *sessionStorage*-based
// persistence. Models are given GUIDS, and saved into a JSON object. Simple
// as that.