Skip to content

Instantly share code, notes, and snippets.

View sscovil's full-sized avatar

Shaun Scovil sscovil

View GitHub Profile
@sscovil
sscovil / all.js
Created May 12, 2016 16:11
Use multiple JS files as defaults for nconf: https://github.com/indexzero/nconf/issues/96
module.exports = {
ENV: 'set by development.js',
ARG: 'set by development.js',
DEV: 'set by development.js'
};
@sscovil
sscovil / renameProperty.js
Created March 10, 2016 16:52
A JavaScript function for renaming an object property.
function renameProperty(object, oldKey, newKey) {
if (object instanceof Object && object.hasOwnProperty(oldKey) && oldKey !== newKey) {
Object.defineProperty(object, newKey,
Object.getOwnPropertyDescriptor(object, oldKey));
delete object[oldKey];
}
}
angular.module('behaviour', [])
.factory('behaviours', behavioursFactory)
;
behavioursFactory.$inject = ['$http'];
function behavioursFactory($http) {
var behaviours;
$http.get('data.json').then(function(res) {
behaviours = res.data;
@sscovil
sscovil / delay.js
Last active January 14, 2016 19:18
Function for creating a synchronous delay, apposed to using setTimeout which invokes a callback function asynchronously
function delay(millis) {
var start = new Date().getTime();
var end = start + millis;
var current;
do {
current = new Date().getTime();
} while(current < end);
}
@sscovil
sscovil / better.js
Last active February 28, 2016 07:09
AngularJS: Preserve Content-Type header with Restangular
(function () {
'use strict';
angular.module('myApp', ['restangular'])
.config(httpConfig)
;
function httpConfig($httpProvider) {
$httpProvider.interceptors.unshift(interceptor); // use unshift to run before Restangular's interceptor
@sscovil
sscovil / DSL Examples
Last active August 29, 2015 14:27 — forked from egaumer/DSL Examples
Some example queries using elastic.js
# simple match all query with term facet
ejs.Request()
.indices("myindex")
.types("mytype")
.query(ejs.MatchAllQuery())
.facet(
ejs.TermsFacet('url')
.field('url')
.size(20))
@sscovil
sscovil / gist:d1927f8fd0a1da53e62e
Last active December 25, 2015 01:19
Sass drop shadow mixin for PNG images with transparent backgrounds
@mixin dropShadow($offX: 2, $offY: 2, $blur: 2, $rgba: rgba(0, 0, 0, 0.3), $hex: #B2B2B2) {
-webkit-filter: drop-shadow(#{$offX}px #{$offY}px #{$blur}px $rgba);
filter : url("data:image/svg+xml;utf8,<svg height='0' xmlns='http://www.w3.org/2000/svg'><filter id='drop-shadow'><feGaussianBlur in='SourceAlpha' stdDeviation='" + $blur +"'/><feOffset dx='" + $offX + "' dy='" + $offY + "' result='offsetblur'/><feFlood flood-color='#{$rgba}'/><feComposite in2='offsetblur' operator='in'/><feMerge><feMergeNode/><feMergeNode in='SourceGraphic'/></feMerge></filter></svg>#drop-shadow");
-ms-filter : "progid:DXImageTransform.Microsoft.Dropshadow(OffX=" + $offX + ", OffY=" + $offY + ", Color='" + $hex + "')";
filter : "progid:DXImageTransform.Microsoft.Dropshadow(OffX=" + $offX + ", OffY=" + $offY + ", Color='" + $hex + "')";
}
@sscovil
sscovil / gulpfile.js
Last active August 29, 2015 14:23
Gulp task that analyzes source code complexity, generates a report, then opens an HTML visualization of the data in your default browser
var gulp = require('gulp'); // https://www.npmjs.com/package/gulp
var plato = require('plato'); // https://www.npmjs.com/package/plato
var open = require('open'); // https://www.npmjs.com/package/open
// Override defaults by setting node environment variables: $ SRC='./js/**/*.*' DEST='./info' gulp report
var src = process.env.SRC || './src/**/*.*';
var dest = process.env.DEST || './report';
gulp.task('report', function() {
plato.inspect(src, dest, {}, callback);
@sscovil
sscovil / parallax-background.js
Last active August 29, 2015 14:21
AngularJS Parallax Background Directive
(function(angular) {
'use strict';
var module = angular.module('sscovil.parallax', []);
// Requires jQuery for retreiving computed background-position from angular.element objects
// Alternative would be to use: window.getComputedStyle(scrollElem, null).backgroundPosition
module.directive('parallaxBackground', function($window) {
return {
restrict: 'A',
@sscovil
sscovil / prime-numbers.js
Last active August 29, 2015 14:20
JavaScript algorithms, math functions, etc.
function isPrime(n) {
// Eliminate any non-numeric values
if (typeof(n) === 'boolean' || n === null || isNaN(n))
return false;
// Handle first two prime numbers
if (n === 2 || n === 3)
return true;
// Handle numbers that are definitely not prime