Skip to content

Instantly share code, notes, and snippets.

@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 / 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 / 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 / .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 / 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 / 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 / Gruntfile.js
Created December 25, 2015 10:42
FAST grunt + livereload + browserify + babelify
module.exports = grunt => {
const LIVERELOAD_PORT = 35729;
require('load-grunt-tasks')(grunt, {});
require('time-grunt')(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
@husa
husa / events.js
Created December 25, 2015 10:57
ES2015 observable model
class Events {
constructor () {
this._events = {};
}
on (name, listener, context) {
// support multiple event names
this._events[name] = this._events[name] || [];
// check if already present
this._events[name].push({listener, context});
const _state = Symbol('previous_state');
const _listeners = Symbol('listeners');
class Store {
constructor(state = {}) {
this[_state] = {};
this[_listeners] = [];
this.setState(state);
}
@husa
husa / .babelrc
Last active March 11, 2016 10:16
ES7 decorators
{
"presets": ["es2015"],
"plugins": ["transform-decorators-legacy"]
}