/** Copyright 2014-2017 Stewart Allen -- All Rights Reserved */ "use strict"; var gs_base_debug = exports; (function() { if (!self.base) self.base = {}; if (self.base.debug) return; var base = self.base, enabled = false, flags = {}, stash = [], size = 20, next_debug_color = 0, debug_colors = [0xff0000, 0x00ff00, 0x0000ff, 0x00ffff, 0xff00ff, 0xffff00]; /** ****************************************************************** * Debug Functions ******************************************************************* */ function log(o) { console.log(o); if (enabled) { stash.push(o); while (stash.length > size) stash.shift(); } } function enable(history) { enabled = true; if (history) size = Math.abs(history); } function disable() { enabled = false; } function on() { return enabled; } function history() { return stash; } function last() { return stash[stash.length-1]; } function trace(msg) { if (msg && typeof msg != 'string') msg = JSON.stringify(msg); log(new Error(msg).stack); } function view() { return base.debug.view; } function setView(view) { base.debug.view = view; } function get(f) { return flags[f]; } function set(f, value) { if (Array.isArray(f)) { for (var i=0; i