Skip to content

Instantly share code, notes, and snippets.

View chemdemo's full-sized avatar
👨‍💻
Happy coding

衍良 chemdemo

👨‍💻
Happy coding
View GitHub Profile
@chemdemo
chemdemo / date_format.js
Created March 24, 2014 12:16
date format
function dateFormat(date, formatString) {
/*
* eg:formatString="YYYY-MM-DD hh:mm:ss";
*/
var o = {
'M+' : date.getMonth()+1, //month
'D+' : date.getDate(), //day
'h+' : date.getHours(), //hour
'm+' : date.getMinutes(), //minute
's+' : date.getSeconds(), //second
@chemdemo
chemdemo / str_replace
Created March 11, 2014 15:47
string replace
var s = '$0abc\\$1 $2 $3[$2]gr $4[x][1]'; // => $0, $2, $3[$2], $4[x][1]
s.replace(/((?!\\)\$\d+(\[[^\[\]]+\])*)/g, function(m, $1, $2, index) {
console.log(m, $1, $2, index);
});
@chemdemo
chemdemo / event_dispatcher.js
Created February 25, 2014 02:14
simple event dispatcher.
var dispatcher = function() {
var pools = {};
// {
// 'foo': [fn1, fn2],
// 'bar': [fn3, fn4]
// }
return {
on: function(action, handle) {
var actions = pools[action] || (pools[action] = []);
@chemdemo
chemdemo / queue.js
Last active August 29, 2015 13:56
async queue
/**
example:
function async(n, callback) {
setTimeout(function() {
callback(n);
}, n);
}
queue([100, 200], async, function(err, r) {console.log(r);}); // => [100, 200]
**/
@chemdemo
chemdemo / node_proxy.js
Last active August 29, 2015 13:56
simple proxy by Node.js
var http = require('http');
var fs = require('fs');
var cp = require('child_process');
var getSocketPath = function(cpu) {
return __dirname + '/' + cpu + '.sock';
};
var cpu = 0;
// node process was bound to the first cpu in this demo.
var socketPath = getSocketPath(cpu);
@chemdemo
chemdemo / js_this.js
Last active August 29, 2015 13:56
`this` in javascript
// `this` in javascript functions points to the object called it!!
function f() {
undefined !== this.x ? this.x ++ : (this.x = 1);
}
var o = {
f: f
};
@chemdemo
chemdemo / parse_tag.js
Created February 12, 2014 02:32
html tag filter
var parseHtmlTarg = (function(){
//解析页面html字符串
var _RegExp = /<(\/)*([a-zA-Z]+)([^>\w]+[^>]*)*>/ig;
var _attrRegExp = /[^>\w]+([a-zA-Z]+)=[\"\']?([^\"\']*)[\"\']?/ig;
var cssRegExp = /(expression)+/ig
var URL_EXP = new RegExp("((news|telnet|nttp|file|http|ftp|https)://)(([-A-Za-z0-9]+(\\.[-A-Za-z0-9]+)*(\\.[-A-Za-z]{2,5}))|([0-9]{1,3}(\\.[0-9]{1,3}){3}))(:[0-9]*)?(/[-A-Za-z0-9_\\$\\.\\+\\!\\*\\(\\),;:@&=\\?/~\\#\\%]*)*", "g");
//var IMG_EXP = /([^'"]+)[^>]*/ig
var filtterTags = {
'script' : true,
'iframe' : true,