Skip to content

Instantly share code, notes, and snippets.

@husa
husa / SassMeister-input.scss
Created November 23, 2015 15:11
Generated by SassMeister.com.
// ----
// libsass (v3.2.5)
// ----
// from http://www.sitepoint.com/extra-map-functions-sass/
/// jQuery-style extend function
/// About `map-merge()`:
/// * only takes 2 arguments
/// * is not recursive
/// @param {Map} $map - first map
@husa
husa / pre-commit.sh
Created September 8, 2015 14:39
Git pre-commit hook to run JS Unit Test before every commit
#!/bin/sh
red="\033[0;31m"
yellow="\033[1;33m"
green="\033[1;32m"
reset="\033[0m"
read -a changed_files <<< $(git diff --cached --name-only --raw)
# check if there're any JS related files in commit
runTests=false
@husa
husa / .gitconfig
Last active February 18, 2016 12:44
Usefull git aliases
[alias]
pr = pull --rebase origin
po = push origin
poH = pugh origin HEAD
co = checkout
st = status --short
f = fetch
fa = fetch --all
k = !gitk
ka = !gitk --all
@husa
husa / extend.js
Last active August 29, 2015 14:25
extend. the one and only
function extend () {
return [].reduce.call(arguments, function (prev, current) {
for (var prop in current) {
if (!current.hasOwnProperty(prop)) continue;
if (/^(object|array)$/.test(type(current[prop])) && current[prop] !== current) {
if (!/^(object|array)$/.test(type(prev[prop]))) {
prev[prop] = type(current[prop]) === 'array' ? [] : {};
}
prev[prop] = extend(prev[prop], current[prop]);
} else {
@husa
husa / capitalize.js
Last active August 29, 2015 14:24
Capitalize every work in a string
function capitalize (str) {
return str.replace(/(?:^|\s)\S/g, a => a.toUpperCase());
}
@husa
husa / .eslintrc
Last active August 29, 2015 14:24
# which environments your script is designed to run in. Each environment brings with it a certain set of global variables and rules that are enabled by default.
env:
browser: true # - browser global variables.
#node: true # - Node.js global variables and Node.js-specific rules.
#worker: true # - web workers global variables.
# amd: true # - defines require() and define() as global variables as per the amd spec.
#mocha: true # - adds all of the Mocha testing global variables.
#jasmine: true # - adds all of the Jasmine testing global variables for version 1.3 and 2.0.
#phantomjs: true # - phantomjs global variables.
#jquery: true # - jquery global variables.
@husa
husa / decorator.coffee
Last active August 29, 2015 14:10
Simple Decorator
class Decorator
constructor: ({pre, post}) ->
return (func) ->
(args...) ->
args = pre?(args...) or args
ret = func(args...)
post?(ret) or ret
currency = new Decorator({post : (a) -> '$' + a})
@husa
husa / getURLParams.js
Last active August 29, 2015 14:07
get URL params from string
function getURLParams(url, includeEmptyValues) {
return decodeURIComponent(url || window.location.search.slice(1)).
replace(/.*\?/, '').split('&').
reduce((params, value) => {
value = value.split('=')
if (includeEmptyValues || typeof value[1] !== 'undefined')
params[value[0]] = value[1];
return params;
}, {});
}
@husa
husa / type.js
Last active August 29, 2015 13:56
get proper type of any value
var toString = Object.prototype.toString,
regexp = /\[object (.*?)\]/;
function type(o) {
var match = toString.call(o).match(regexp);
return match[1].toLowerCase();
}
@husa
husa / pointInPolygon.js
Created January 20, 2014 12:41
Point In Polygon Determine if some point is inside a polygon
/**
* Determine if point (x, y) is inside the polygon
* @param {Integer} - x coord
* @param {Integer} - y coord
* @param {Array} - Array of vertices - {x:*, y:*} objects
* @returns {Boolean} whether or not given point is inside the polygon
*/
function pointInPolygon(x, y, vertices) {
var v = vertices, // less typing
vx = v.map(function(vertice) { return vertice.x; }),