Skip to content

Instantly share code, notes, and snippets.

View hoodwink73's full-sized avatar

Arijit Bhattacharya hoodwink73

View GitHub Profile
@hoodwink73
hoodwink73 / Design Patterns
Last active September 21, 2022 18:36
Make a collection an iterator which can iterate over a model property
JavaScript Design Patterns by Stoyan Stefanov is one of the most recommended JavaScript book you would come across the Internet.
I have already gone through it once.
But I always come back to it, to revise, and sometimes plot if I could apply any of the pattern to my work.
Here is a collection of patterns I use or intend to use. Sometimes, they are just as it is in the book or sometimes, I try augment it and make it better.
@hoodwink73
hoodwink73 / codepenUtilies
Last active January 3, 2016 09:09
Often I found myself repeating a lot of 'sass' in my pens, so this is an attempt to save time to waste it back again.
// flatUI colors
$turquoise: #1abc9c
$emerland: #2ecc71
$peterRiver: #3498db
$amethyst: #9b59b6
$wetAsphalt: #34495e
$greenSea: #16a085
$nephritis: #27ae60
$belizeHole: #2980b9
$wisteria: #8e44ad
@hoodwink73
hoodwink73 / promise.js
Last active August 29, 2015 13:58
An abstraction of the general GET method using new Promises in JS
// An abstraction of the general GET method using
// new Promises in JS
var get = function (url) {
// returns a promise object
return new Promise(function (resolve, reject) {
// the callback to the Promise constructor
// gets two callbacks as parameters
// the first is meant to be invoked for succes
// and second one for failures
var request = new XMLHTTPRequest();
@hoodwink73
hoodwink73 / formatUnit.js
Last active August 29, 2015 14:00
A general method which splits a metric expressed in a single smaller unit into multiple higher units
// A general method which splits a metric
// expressed in a single smaller unit into multiple
// higher units
// 1689 minutes => 1 day 9 hours 9 minutes
// 1678 millimeter => 1 meter 67 centimeter 8 millimeter
// The method takes two parameters, the metric itself
// and an array which defines the conversion
@hoodwink73
hoodwink73 / FSM_Simulator.py
Created April 22, 2014 04:51
A finite state machine simulator.
# FSM Simulation
# edges are how an FSM is represented as a data unit
# Every edge is a key value pair
# A key is a tuple of (current_state, character)
# The value is the next state achieved after the previous
# state consumes a particular character
# r'a+1+'
edges = {(1, 'a') : 2,
@hoodwink73
hoodwink73 / pipeline.js
Created July 7, 2014 03:09
Using Array.reduce to pipeline functions
var Pipeline = function (series, initialInput) {
this.series = series;
this.initial = function () {
return initialInput;
};
this.hasPerformed = false;
};
Pipeline.prototype.addFunction = function (fn, index) {
if (index === undefined) {
1. Two space soft indents (fake tabs) OR tabs... BUT NEVER BOTH - DO NOT MIX
2. Whitespace, Parens, Braces, Linebreaks
if/else/for/while/try always have spaces, braces and multiple lines.
--------------------------------------------------------------------
@hoodwink73
hoodwink73 / jink.jade
Created July 20, 2014 03:13
Mixins for creating Ink modules
mixin container()
table.container(class!=attributes.class)
tr
td
if block
block
mixin row()
table.row(class!=attributes.class)
tr
@hoodwink73
hoodwink73 / modulePattern.js
Last active August 29, 2015 14:20
A quick revision of the infamous Module Pattern
// MAKING GLOBALS EXPLICIT
// -----------------------
// large projects may make finding globals
// inside a module confusing
// to spot globals easily, lets just
// pass it as arguments
(function ($, YAHOO) {
// now have access to globals jQuery (as $) and YAHOO in this code
}(jQuery, YAHOO));
@hoodwink73
hoodwink73 / truncateTextWithReadMore.js
Created January 23, 2016 14:07
Some common handlebars helpers
Handlebars.registerHelper('trimTextWithReadMoreLink', function (textToTrim) {
var link, textToShow, el;
var wordsAllowed = 30;
if ( textToTrim === undefined) {
return "";
}
var wordsTokenized = textToTrim.split(' ');
if (wordsTokenized.length > wordsAllowed) {