| // Generated by CoffeeScript 1.12.7 |
| (function() { |
| var array_intersection, crypto, escapable, lookup, unroll_lookup; |
| |
| crypto = require('crypto'); |
| |
| exports.array_intersection = array_intersection = function(arr_a, arr_b) { |
| var a, j, len, r; |
| r = []; |
| for (j = 0, len = arr_a.length; j < len; j++) { |
| a = arr_a[j]; |
| if (arr_b.indexOf(a) !== -1) { |
| r.push(a); |
| } |
| } |
| return r; |
| }; |
| |
| exports.escape_selected = function(str, chars) { |
| var c, i, j, l, len, map, parts, r, ref, v; |
| map = {}; |
| chars = '%' + chars; |
| for (j = 0, len = chars.length; j < len; j++) { |
| c = chars[j]; |
| map[c] = escape(c); |
| } |
| r = new RegExp('([' + chars + '])'); |
| parts = str.split(r); |
| for (i = l = 0, ref = parts.length; 0 <= ref ? l < ref : l > ref; i = 0 <= ref ? ++l : --l) { |
| v = parts[i]; |
| if (v.length === 1 && v in map) { |
| parts[i] = map[v]; |
| } |
| } |
| return parts.join(''); |
| }; |
| |
| exports.buffer_concat = function(buf_a, buf_b) { |
| var dst; |
| dst = new Buffer(buf_a.length + buf_b.length); |
| buf_a.copy(dst); |
| buf_b.copy(dst, buf_a.length); |
| return dst; |
| }; |
| |
| exports.md5_hex = function(data) { |
| return crypto.createHash('md5').update(data).digest('hex'); |
| }; |
| |
| exports.sha1_base64 = function(data) { |
| return crypto.createHash('sha1').update(data).digest('base64'); |
| }; |
| |
| exports.timeout_chain = function(arr) { |
| var fun, ref, timeout, user_fun; |
| arr = arr.slice(0); |
| if (!arr.length) { |
| return; |
| } |
| ref = arr.shift(), timeout = ref[0], user_fun = ref[1]; |
| fun = (function(_this) { |
| return function() { |
| user_fun(); |
| return exports.timeout_chain(arr); |
| }; |
| })(this); |
| return setTimeout(fun, timeout); |
| }; |
| |
| exports.objectExtend = function(dst, src) { |
| var k; |
| for (k in src) { |
| if (src.hasOwnProperty(k)) { |
| dst[k] = src[k]; |
| } |
| } |
| return dst; |
| }; |
| |
| exports.overshadowListeners = function(ee, event, handler) { |
| var new_handler, old_listeners; |
| old_listeners = ee.listeners(event).slice(0); |
| ee.removeAllListeners(event); |
| new_handler = function() { |
| var j, len, listener; |
| if (handler.apply(this, arguments) !== true) { |
| for (j = 0, len = old_listeners.length; j < len; j++) { |
| listener = old_listeners[j]; |
| listener.apply(this, arguments); |
| } |
| return false; |
| } |
| return true; |
| }; |
| return ee.addListener(event, new_handler); |
| }; |
| |
| escapable = /[\x00-\x1f\ud800-\udfff\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufff0-\uffff]/g; |
| |
| unroll_lookup = function(escapable) { |
| var c, i, unrolled; |
| unrolled = {}; |
| c = (function() { |
| var j, results; |
| results = []; |
| for (i = j = 0; j < 65536; i = ++j) { |
| results.push(String.fromCharCode(i)); |
| } |
| return results; |
| })(); |
| escapable.lastIndex = 0; |
| c.join('').replace(escapable, function(a) { |
| return unrolled[a] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); |
| }); |
| return unrolled; |
| }; |
| |
| lookup = unroll_lookup(escapable); |
| |
| exports.quote = function(string) { |
| var quoted; |
| quoted = JSON.stringify(string); |
| escapable.lastIndex = 0; |
| if (!escapable.test(quoted)) { |
| return quoted; |
| } |
| return quoted.replace(escapable, function(a) { |
| return lookup[a]; |
| }); |
| }; |
| |
| exports.parseCookie = function(cookie_header) { |
| var cookie, cookies, j, len, parts, ref; |
| cookies = {}; |
| if (cookie_header) { |
| ref = cookie_header.split(';'); |
| for (j = 0, len = ref.length; j < len; j++) { |
| cookie = ref[j]; |
| parts = cookie.split('='); |
| cookies[parts[0].trim()] = (parts[1] || '').trim(); |
| } |
| } |
| return cookies; |
| }; |
| |
| exports.random32 = function() { |
| var foo, v; |
| foo = crypto.randomBytes(4); |
| v = [foo[0], foo[1], foo[2], foo[3]]; |
| return v[0] + (v[1] * 256) + (v[2] * 256 * 256) + (v[3] * 256 * 256 * 256); |
| }; |
| |
| }).call(this); |