Skip to content

Instantly share code, notes, and snippets.

@wiky
wiky / event-target.js
Created June 6, 2012 11:22
Custom Event
/**
* Custom Event
*
* @example
* <pre>
* function Foo() {}
* Foo.prototype.render = function() {
* this.fire('rendered');
* };
* EventTarget.mixin(Foo);
@wiky
wiky / checkType.js
Created June 28, 2012 04:25
check the js variable type
(function(global) {
var type = (function() {
var cache = {};
return function(obj) {
var key;
return obj === null ? 'null' // null
: obj === global ? 'global' // global
: (key = typeof obj) !== 'object' ? key // array, boolean, function, number, undefined
: obj.nodeType ? 'object' // DOM element
: cache[key = ({}).toString.call(obj)] // cached [object XXXX]
@wiky
wiky / api.md
Created July 25, 2012 18:53
json api

#api

##JSON Reference

var family = {
	father: {
		name: 'Jim',
		son: {
			'$ref': '$.son'

},

@wiky
wiky / design.md
Created July 26, 2012 17:53
NanoDB Design (draft)

#NanoDB Design (draft)

定位:跨应用,跨平台

##Creating Database

####Memory Database

创建内存数据库,只需要提供库名(此名字用于标识数据库在内存中的名字)和数据源(数据源为空则是一个空数据库)。数据源的来源不关心,只要是完整的JSON数据对象即可。

@wiky
wiky / db-v01.md
Created July 29, 2012 13:21
NanoDB Design 0.1 (draft)

#NanoDB Design (draft)

定位:跨应用,跨平台

##Creating Database

####Memory Database

创建内存数据库,只需要提供库名(此名字用于标识数据库在内存中的名字)和数据源(数据源为空则是一个空数据库)。数据源的来源不关心,只要是完整的JSON数据对象即可。

@wiky
wiky / event.js
Created August 29, 2012 04:37
Serial Event Listener
function addEvent(el, type, handler) {
if (el.attachEvent) { // IE
// 为元素的事件类型创建一个哈希表
el._events = el._events || {};
if (!handler) {
return;
}
// 取得事件处理函数的数组的引用
var handlers = el._events[type];
if (handlers) {
@wiky
wiky / substitute.js
Created March 25, 2013 02:29
simple template, data substitute
function substitute(str, obj) {
if (typeof str === 'string' && typeof obj === 'object') {
str = str.replace(/\{(\w+)\}/gi, function(s, k) {
return (typeof obj[k] === 'undefined') ? s : obj[k];
}).replace(/(\\\{)|\\\}/g, function(s, k) {
return k ? '{' : '}';
});
}
return str;
}
@wiky
wiky / list.md
Last active December 15, 2015 12:39
My Favorite st2 plugins

Package Control

Sublime Package Control

import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print('Please restart Sublime Text to finish installation')

Sublime Text 3

import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
@wiky
wiky / tmpl.js
Last active December 17, 2015 04:28
a simple javascript templating
(function (exports) {
var settings = {
open: '<%',
close: '%>',
evaluate: '',
interpolate: '='
};
var matcher = new RegExp([
settings.open,
@wiky
wiky / event.js
Last active December 17, 2015 12:29
(function(exports) {
var idCounter = 0,
PREFIX = '_',
PREFIX_REG_EXP = new RegExp('^' + PREFIX + '+');
var uniqueId = function(prefix) {
var id = ++idCounter + '';
return prefix ? prefix + id : id;
};