Skip to content

Instantly share code, notes, and snippets.

View linus-amg's full-sized avatar

Linus Gubenis linus-amg

  • Mexico, Berlin
  • 21:47 (UTC -06:00)
View GitHub Profile
<!DOCTYPE html>
<html lang="en">
<head>
<title>Front-end Boilerplate</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="icon" href="favicon.ico">
</head>
<body>
<script id="list-item-template" type="text/x-handlebars-template">
@linus-amg
linus-amg / ajaxError.js
Created April 23, 2015 02:50
ajaxError
$(document).ajaxError(function(evt, xhr, options) {
var responseText = xhr.responseText || 'The server did not respond on time.';
var status = xhr.status || 408;
var statusText = xhr.statusText || 'Request Timeout';
var message = {
text: responseText,
code: status,
url: xhr.url,
status: statusText
@linus-amg
linus-amg / ensuremodules.coffee
Created April 26, 2015 17:10
ensure modules 2 coffee
ensureModules = (app, modules) ->
_.each app.submodules, (module) ->
if (modules.indexOf(module.moduleName) == -1 && module.started)
console.log 'stopping module:', module.moduleName
module.stop()
_.each(app.submodules, (module) ->
if (modules.indexOf(module.moduleName) > -1 && !module.started)
console.log 'starting module:', module.moduleName
Handlebars.registerHelper('sum', function() {
var args = _.flatten(arguments);
var sum = 0;
var i = args.length - 1;
while (i--) {
sum += _.parseInt(args[i]) || 0;
}
return Number(sum);
});
var render = function render(tplEl, htmlEl, context) {
var template = Handlebars.compile($(tplEl).text());
context = context || {};
return $(htmlEl).html(template(context));
};
render('#tpl-demo', '#doc', { name: 'John Doe' });
@linus-amg
linus-amg / deepSum.js
Last active August 29, 2015 14:20
Deepsum.js
Handlebars.registerHelper('deepSum', function(source, key) {
var result;
if (typeof key === 'string') {
if (key.split('.').length > 1) {
source = _.pluckDeep(source, key);
} else {
source = _.pluck(source, key);
}
}
@linus-amg
linus-amg / gruntfile.coffee
Created May 19, 2015 20:42
grunt browserify
files:
'dist/assets/js/plugins.js': 'src/plugins.coffee'
options:
transform: ['caching-coffeeify']
browserifyOptions:
extensions: '.coffee'
paths: ['./src', './src/app']
@linus-amg
linus-amg / plugins.coffee
Created May 19, 2015 20:45
plugins.coffee
# import dependencies
dependencies = {}
dependencies.Debugger = require 'lib/debugger'
# include vendors
$ = require 'jquery'
_ = require 'underscore'
Backbone = require('backbone').$ = $
Marionette = require 'backbone.marionette'
class Collection extends Backbone.Collection
model: User
query: (query) ->
query = new RegExp query, 'gi'
filtered = @filter (item) ->
state = !!item.attributes.details.firstName.match(query)
return state
return new Collection filtered
module.exports = (options) ->
#
# <- i want to do something like app.use here
# when im mounting this middleware
#
return (req, res, next) ->
# req.app is available here, but thats too late, i dont
# want the app instance in every request, i only want
# it when i mount the middleware
res.send('OK')