Skip to content

Instantly share code, notes, and snippets.

@justinobney
justinobney / function_composition_example.js
Last active August 26, 2015 15:35
Simple eample showing the usefulness of function composition in javascript
function stringStartsWith(search, coll, prop, transform){
return coll.filter(function(item){
var key = transform ? transform(item[prop]) : item[prop];
return key.indexOf(search) === 0
});
}
function reverse(str){
return str.split('').reverse().join('')
}
@justinobney
justinobney / withOverflowingChildren.jQuery.js
Created June 4, 2014 20:31
jQuery plugin to find overflowing direct children of an element.
jQuery.fn.withOverflowingChildren = function (cb) {
var parent = jQuery(this);
var p = parent.get(0);
var children = parent.find('> *');
var len = children.length
var parentCoords = p.getBoundingClientRect();
var called = false
while(len){
if(!isInParent(children.get(len -1))){
@justinobney
justinobney / wbr.js
Last active August 29, 2015 14:02
Adding "Word Break Opportunity" to content.
/*
-- EXAMPLE USES
<div wbr>long.html?var=one$20two</div>
-- With optional regex to override default
<div wbr regex="/(\&|-|\=|(the)|(20))/gi">
long.html?var=one$20two
</div>
@justinobney
justinobney / Index.cshtml
Last active August 29, 2015 14:03
Blog post example
@model Jobney.Casm.Web.Models.ManageDataBootstrapper
<div data-ng-app="Jobney.Casm.ManageApp" data-ng-controller="ManageAppCtrl">
<ul class="tab-bar grey-tab">
<!-- content here -->
</ul>
<div data-ui-view></div>
</div>
@section scripts
var cache = {};
function checkCache(key){
if(cache[key]){
return cache[key];
} else {
// do some long/expensive action
// ex: calculation, ajax, etc...
cache[key] = Math.random();
return cache[key];
}
var data = [{
id: 1,
children: [{
id: 2,
children: [{
id: 3,
children: [{
id: 4,
children: []
}]
@justinobney
justinobney / Rx_throttledPromiseObserver.js
Last active August 29, 2015 14:13
Create an observable that accepts a list of callbacks(returning promises) to execute keeping only an optional number in flight at one time
function throttledPromiseObserver(callbacks, maxPending, checkInterval) {
var remainingCalls = callbacks.length;
var pendingCalls = 0;
var callIdx = 0;
var _checkInterval = checkInterval || 100;
var _maxPending = maxPending || 0;
return Rx.Observable.create(bufferedPromiseCalls);
function bufferedPromiseCalls(observer) {
var Game = {
init: init,
draw: draw
}
function init(name){
this.name = name;
}
function draw() {
JSON.stringify((function(){
return Object.keys(window).filter(function(key) {
try {
var versionInfo = getVersionInfo(key)
return versionInfo.version
} catch (e) {
return false
}
}).map(getVersionInfo)
$provide.decorator('$exceptionHandler', [
'$delegate', '$window', '$log', '$stateParams',
function($delegate, $window, $log, $stateParams) {
return function(exception, cause) {
if ($window.trackJs) {
$log.debug('$exceptionHandler ::: $stateParams => ', angular.toJson($stateParams));
$window.trackJs.track(exception);
}
$delegate(exception, cause);
};