diff --git a/src/Console/Console.es6 b/src/Console/Console.es6 index 3a9b3e7..285f0fb 100644 --- a/src/Console/Console.es6 +++ b/src/Console/Console.es6 @@ -180,6 +180,7 @@ export default class Console extends Tool _initConfig(parent) { let cfg = this.config = config.create('eruda-console'), + sources = parent.get('sources'), logger = this._logger; cfg.set(util.defaults(cfg.get(), { @@ -201,7 +202,7 @@ export default class Console extends Tool logger.displayHeader(cfg.get('displayExtraInfo')); logger.displayUnenumerable(cfg.get('displayUnenumerable')); logger.displayGetterVal(cfg.get('displayGetterVal')); - logger.viewLogInSources(cfg.get('viewLogInSources')); + if (sources) logger.viewLogInSources(cfg.get('viewLogInSources')); logger.maxNum(maxLogNum); cfg.on('change', (key, val) => @@ -226,9 +227,11 @@ export default class Console extends Tool .switch(cfg, 'displayIfErr', 'Auto Display If Error Occurs') .switch(cfg, 'displayExtraInfo', 'Display Extra Information') .switch(cfg, 'displayUnenumerable', 'Display Unenumerable Properties') - .switch(cfg, 'displayGetterVal', 'Access Getter Value') - .switch(cfg, 'viewLogInSources', 'View Log In Sources Panel') - .select(cfg, 'maxLogNum', 'Max Log Number', ['infinite', '250', '125', '100', '50', '10']) + .switch(cfg, 'displayGetterVal', 'Access Getter Value'); + + if (sources) settings.switch(cfg, 'viewLogInSources', 'View Log In Sources Panel'); + + settings.select(cfg, 'maxLogNum', 'Max Log Number', ['infinite', '250', '125', '100', '50', '10']) .separator() } } diff --git a/src/Resources/Resources.es6 b/src/Resources/Resources.es6 index 6e23c40..8ffc039 100644 --- a/src/Resources/Resources.es6 +++ b/src/Resources/Resources.es6 @@ -350,15 +350,13 @@ var {hostname, pathname} = window.location; function delCookie(key) { - util.cookie.remove(key); - let hostNames = hostname.split('.'), pathNames = pathname.split('/'), domain = '', pathLen = pathNames.length, path; - let deleted = () => !util.cookie.get(key); + if (del()) return; for (let i = hostNames.length - 1; i >= 0; i--) { @@ -367,26 +365,27 @@ function delCookie(key) domain = (domain === '') ? hostName : hostName + '.' + domain ; path = '/'; - util.cookie.remove(key, {domain, path}); - if (deleted()) return; - util.cookie.remove(key, {domain}); - if (deleted()) return; + if (del({domain, path}) || del({domain})) return; + for (let j = 0; j < pathLen; j++) { let pathName = pathNames[j]; if (pathName === '') continue; + path += pathName; - util.cookie.remove(key, {domain, path}); - if (deleted()) return; - util.cookie.remove(key, {path}); - if (deleted()) return; + if (del({domain, path}) || del({path})) return; + path += '/'; - util.cookie.remove(key, {domain, path}); - if (deleted()) return; - util.cookie.remove(key, {path}); - if (deleted()) return; + if (del({domain, path}) || del({path})) return; } } + + function del(options = {}) + { + util.cookie.remove(key, options); + + return !util.cookie.get(key); + } } var sliceStr = (str, len) => str.length < len ? str : str.slice(0, len) + '...'; \ No newline at end of file diff --git a/src/lib/JsonViewer.es6 b/src/lib/JsonViewer.es6 index 394f731..c226405 100644 --- a/src/lib/JsonViewer.es6 +++ b/src/lib/JsonViewer.es6 @@ -19,26 +19,26 @@ export default class JsonViewer } _bindEvent() { - var map = this._map; + let map = this._map; this._$el.on('click', 'li', function (e) { - var $this = util.$(this), - circularId = $this.data('circular'), + let $this = util.$(this), + circularId = $this.data('object-id'), $firstSpan = util.$(this).find('span').eq(0); if ($this.data('first-level')) return; if (circularId) { $this.find('ul').html(jsonToHtml(map[circularId], map, false)); - $this.rmAttr('data-circular'); + $this.rmAttr('data-object-id'); } if (!$firstSpan.hasClass('eruda-expanded')) return; e.stopImmediatePropagation(); - var $ul = $this.find('ul').eq(0); + let $ul = $this.find('ul').eq(0); if ($firstSpan.hasClass('eruda-collapsed')) { $firstSpan.rmClass('eruda-collapsed'); @@ -54,7 +54,7 @@ export default class JsonViewer function jsonToHtml(data, map, firstLevel) { - var ret = ''; + let ret = ''; for (let key in data) { @@ -113,14 +113,16 @@ function createEl(key, val, map, firstLevel = false) if (val.erudaId) id = val.erudaId; let circularId = val.erudaCircular; if (id) map[id] = val; - var objAbstract = val['erudaObjAbstract'] || util.upperFirst(type); + let objAbstract = val['erudaObjAbstract'] || util.upperFirst(type); - var obj = `
  • + let obj = `
  • ${wrapKey(key)} ${firstLevel ? '' : objAbstract}
  • `; } diff --git a/src/lib/stringify.es6 b/src/lib/stringify.es6 index d96e2fa..5aafd47 100644 --- a/src/lib/stringify.es6 +++ b/src/lib/stringify.es6 @@ -83,7 +83,7 @@ export default function stringify(obj, { if (isFn) { // We don't need these properties to display for functions. - names = names.filter(val => ['arguments', 'caller', 'prototype'].indexOf(val) < 0); + names = names.filter(val => ['arguments', 'caller'].indexOf(val) < 0); } json = '{ '; objAbstract = isFn ? getFnAbstract(obj) : type.replace(/(\[object )|]/g, ''); @@ -99,10 +99,7 @@ export default function stringify(obj, { } else if (isNum) { json = obj + ''; - if (util.endWith(json, 'Infinity') || json === 'NaN') - { - json = `"${json}"`; - } + if (util.endWith(json, 'Infinity') || json === 'NaN') json = `"${json}"`; } else if (isBool) { json = obj ? 'true' : 'false'; @@ -180,14 +177,21 @@ export default function stringify(obj, { if (!getterVal && hasGetter) { - parts.push(`${getKey}: ${wrapStr(util.escapeJsonStr(extractFnHead(descriptor.get)))}`); + parts.push(`${getKey}: ${stringify(descriptor.get, passOpts)}`); } else { - parts.push(`${key}: ${stringify(topObj[name], passOpts)}`); + let val; + try { + val = topObj[name]; + } catch(e) + { + val = e.message; + } + parts.push(`${key}: ${stringify(val, passOpts)}`); } if (hasSetter) { - parts.push(`${setKey}: ${wrapStr(util.escapeJsonStr(extractFnHead(descriptor.set)))}`); + parts.push(`${setKey}: ${stringify(descriptor.set, passOpts)}`); } }