bot18
Version:
A high-frequency cryptocurrency trading bot by Zenbot creator @carlos8f
61 lines (52 loc) • 1.62 kB
JavaScript
var fs = require('fs');
function stack (n) {
if (!n) n = 0;
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function (error, stack) { return stack };
var ret = new Error().stack;
Error.prepareStackTrace = orig;
return ret.slice(2 + n);
}
function here () {
var frame = stack()[0];
var body = fs.readFileSync(frame.getFileName(), 'utf-8');
var lines = body.split(/\n/);
var pos = frame.getColumnNumber() - 1;
for (var i = 0, len = frame.getLineNumber() - 1; i < len; i++) pos += lines[i].length + 1;
var paren = body.indexOf(')', pos);
var start = body.indexOf('/*', pos);
var end = body.indexOf('*/', pos);
if (paren < start || start == -1 || end == -1) {
body = '';
} else {
body = body.slice(start + 3, end - 1);
if (arguments[0] !== '') {
body = body.replace(/\\(.)/g, '$1');
}
}
var ret = new String(body); // no warnings
ret.unindent = function () {
var lines = this.valueOf().split(/\n/);
var indent = lines[0].match(/^\s*/);
for (var i = 0, len = lines.length; i < len; i++) {
lines[i] = lines[i].replace(new RegExp('^' + indent, 'g'), '');
}
return lines.join('\n');
};
return ret;
}
var cache = {};
function section (name) {
var filename = stack()[0].getFileName();
if (!cache[filename]) {
var body = fs.readFileSync(filename, 'utf-8');
var data = {};
body.replace(RegExp('\\s*//@(.+)\n((?:\\s*//(?:| .+)\n)+)', 'g'), function (_, name, body) {
data[name] = body.replace(/^\s*\/\/ ?/gm, '');
});
cache[filename] = data;
}
return name ? cache[filename][name] : cache[filename];
}
this.here = here;
this.section = section;