AriaMinaei/pretty-error

How do I wrap style selector in parenthesis?

Closed this issue · 3 comments

reggi commented

@AriaMinaei how do I wrap pretty-error > trace > item > footer > addr in parens? I need :before and :after selectors. Are there any other default declarations I can use?

var _ = require('lodash')
var PrettyError = require('pretty-error')
var pe = new PrettyError()

var nullStyle = {
  display: 'inline',
  background: 'none',
  color: 'none',
  bullet: 'none',
  paddingLeft: 0,
  paddingRight: 0,
  paddingBottom: 0,
  paddingTop: 0,
  marginLeft: 0,
  marginRight: 0,
  marginBottom: 0,
  marginTop: 0
}

pe.appendStyle({
  'pretty-error': _.defaults({}, nullStyle),
  'pretty-error > header': nullStyle,
  'pretty-error > header > title > kind': nullStyle,
  'pretty-error > header > colon': _.defaults({
    marginRight: 1
  }, nullStyle),
  'pretty-error > header > message': nullStyle,
  'pretty-error > trace': _.defaults({
    display: 'block',
    marginLeft: 4
  }, nullStyle),
  'pretty-error > trace > item': _.defaults({
    display: 'block',
    bullet: '"at "'
  }, nullStyle),
  'pretty-error > trace > item > header': _.defaults({

  }, nullStyle),
  'pretty-error > trace > item > header > pointer > file': _.defaults({
    display: 'none'
  }, nullStyle),
  'pretty-error > trace > item > header > pointer > colon': _.defaults({
    display: 'none'
  }, nullStyle),
  'pretty-error > trace > item > header > pointer > line': _.defaults({
    display: 'none'
  }, nullStyle),
  'pretty-error > trace > item > header > what': _.defaults({

  }, nullStyle),
  'pretty-error > trace > item > footer': _.defaults({
  }, nullStyle),
  'pretty-error > trace > item > footer > addr': _.defaults({
    // bullet: '"("'
  }, nullStyle),
  'pretty-error > trace > item > footer > extra': nullStyle
})

var e = new Error('Some error message')

var renderedError = pe.render(e)
console.log("///// native error")
console.log(e.stack)
console.log("///// pretty error")
console.log(renderedError)

Is giving me this:

///// native error
Error: Some error message
    at Object.<anonymous> (/Users/thomas/Desktop/node-reggi/z-multi-line.js:78:9)
    at Module._compile (module.js:430:26)
    at Object.Module._extensions..js (module.js:448:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:471:10)
    at startup (node.js:117:18)
    at node.js:953:3
///// pretty error
Error: Some error message
    at Object.<anonymous>/Users/thomas/Desktop/node-reggi/z-multi-line.js:78:9
    at Module._compilemodule.js:430:26
    at Object.Module._extensions..jsmodule.js:448:10
    at Module.loadmodule.js:355:32
    at Function.Module._loadmodule.js:310:12
    at Function.Module.runMainmodule.js:471:10
    at startupnode.js:117:18
    at node.js:953:3

Yeah renderkid doesn't have :before/:after.

It should be easy to implement though. Let me know how important this feature is to you, and I'll find some time this week to try to implement it.

reggi commented

This solution works for both my issues #24 and #25

pe.filter(function (traceLine) {
  if (traceLine.what !== null) {
    traceLine.shortenedAddr = ' (' + traceLine.shortenedAddr + ')'
  }
})

Although it would be nice for renderKid to have support for

  1. :before / :after
  2. not applying styles on null inline elements.

Feel free to close them both.

Cool. Yeah, it would be nice for renderkid to support psuedoelements, but I think I'd postpone that until someone really needs it.

But the second issue (the inline elements thing) looks like a bug, so I'll look into it.