Skip to content

Instantly share code, notes, and snippets.

View topliceanu's full-sized avatar
💭
🚀

Alexandru Topliceanu topliceanu

💭
🚀
View GitHub Profile
@topliceanu
topliceanu / host.html
Created May 28, 2011 16:56
xPubSub.js allows for cross-frame custom DOM events synchronization. Requires jquery and postmessage.js
<!doctype html>
<title> host </title>
<meta charset="utf-8">
<div id="container">host.html</div>
<script src="jquery-1.6.1.js"></script>
<script src="jquery.tinypubsub.js"></script>
<script src="postmessage.js"></script>
<script src="xPubSub.js"></script>
<script>
@topliceanu
topliceanu / barrier.js
Created May 28, 2011 16:57
posix barrier-like functionality for events
// js barrier, waits for all events to be fired before executing the callback
// dependencies:
// 1. jquery 1.4.2+ - jquery.com
// 2. ben alman's tiny jquery pub/sub - https://gist.github.com/661855
(function($){
$.barrier = function( evs , callback ){
var events = evs.split(' ') ;
var flags = {} ;
var collector = {} ;
$.each( events , function( i, ev ){
@topliceanu
topliceanu / deferred.js
Created July 9, 2011 12:53
simple deferred object implementation, library & platform agnostic
var newDefered = function(){
var state = 0 ; // 0 - unresolved, 1 - resolved, 2 - rejected
var resolveCallbacks = [] ;
var resolveArgs = [] ;
var rejectCallbacks = [] ;
var rejectArgs = [] ;
var execute = function( callbacks, args ){
while( callbacks.length !== 0 ){
callbacks.shift().call( {}, args ) ;
@topliceanu
topliceanu / learn.js
Created October 14, 2011 16:55
mongoose problems
//deps
var mongoose = require( 'mongoose' );
var Schema = mongoose.Schema;
var ObjectId = mongoose.Schema.ObjectId;
//config
var mongo = require( './../conf.js' ).mongo ;
mongo.database = 'learn';
//connect to mongo
@topliceanu
topliceanu / html.js
Created November 9, 2011 14:16
a simple html renderer for express.js, no need for ejs or jade
//register a *simple* html renderer
app.register( '.html', {
compile: function( str, options ){
return function( locals ){
return str;
}
}
});
@topliceanu
topliceanu / micro-mustache.js
Created December 30, 2011 04:22
John Resig's Micro Template with changed tags from <%=, %> into more mustache-esque {{= and }}
// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function(){
var cache = {};
this.tmpl = function tmpl(str, data){
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(str) ?
cache[str] = cache[str] ||
@topliceanu
topliceanu / requestGzip.js
Created February 19, 2012 16:22
Stream downloader of web resources, based on mikeal's request, but processed first through zlib if necessary
var request = require('request');
var zlib = require('zlib');
// A two-way passthrough Stream, made by @felixge
// https://github.com/felixge/node-passthrough-stream/blob/master/lib/passthrough_stream.js
var PassthroughStream = function () {
this.writable = true;
this.readable = true;
}
util.inherits(PassthroughStream, streams.Stream);
@topliceanu
topliceanu / documentLocalStorage.js
Created March 3, 2012 11:05
store data in localstorage, api similar to document databases
// stores arrays binded to keys in localstorage
(function (win) {
var isStorage = function (obj) {
return (Object.prototype.toString.call(obj) === '[object Storage]');
};
var decode = function (str) {
try {
var arr = JSON.parse(str);
if (!Array.isArray(arr)) return false;
return arr;
@topliceanu
topliceanu / extend.es5.js
Created March 6, 2012 11:43
extends objects, similar in functionality to $.extend or _.extend
// jquery style `extend` work in ES5 compatible envs
var extend = function (obj) {
var args = Array.prototype.slice.call(arguments, 1);
args.forEach( function (source) {
for (var prop in source)
if (source.hasOwnProperty(prop)) obj[prop] = source[prop];
});
return obj;
};
@topliceanu
topliceanu / node-csv-parser-pipeable.js
Created April 19, 2012 13:16
script for adapting node-csv to allow .pipe()
var streams = require('stream');
var events = require('events');
var util = require('util');
var csv = require('csv');
var InputStream = function () {};
util.inherits(InputStream, streams.Stream);
var OutputStream = function () {};
util.inherits(OutputStream, events.EventEmitter);