2006年 12月 31日

THAL like

	html = html.replace(/>([^<]+)/g, function () {
		var ret = arguments[1];
		ret = ret.replace(/¥[?(https?:¥/¥/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)¥]?/g, '<a href="$1">$1</a>');
		ret = ret.replace(/¥[?(d:id:([A-Za-z][a-zA-Z0-9_¥-]{2,14}))(¥:(¥d{8}))?(?:(¥#|:)([a-zA-Z0-9_]+))?¥]?/ig, function () {
			if (arguments[5]) {
				var delim = arguments[5] == ':' ? '/' : '#';
				return [
					'<a href="http://d.hatena.ne.jp/',
					arguments[2],
					'/',
					arguments[4],
					delim,
					arguments[6],
					'">',
					arguments[1],
					arguments[3],
					arguments[5],
					arguments[6],
					'</a>'
				].join('');
			} else {
				return [
					'<a href="http://d.hatena.ne.jp/',
					arguments[2],
					'/',
					arguments[4],
					'">',
					arguments[1],
					arguments[3],
					'</a>'
				].join('');
			}
		});
		return '>'+ret;
	});