string.js 790 B

1234567891011121314151617181920212223242526272829
  1. import { truncate } from './helpers'
  2. const stringEscapeChars = new RegExp(
  3. "['\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5" +
  4. '\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]',
  5. 'g'
  6. )
  7. const escapeCharacters = {
  8. '\b': '\\b',
  9. '\t': '\\t',
  10. '\n': '\\n',
  11. '\f': '\\f',
  12. '\r': '\\r',
  13. "'": "\\'",
  14. '\\': '\\\\',
  15. }
  16. const hex = 16
  17. const unicodeLength = 4
  18. function escape(char) {
  19. return escapeCharacters[char] || `\\u${`0000${char.charCodeAt(0).toString(hex)}`.slice(-unicodeLength)}`
  20. }
  21. export default function inspectString(string, options) {
  22. if (stringEscapeChars.test(string)) {
  23. string = string.replace(stringEscapeChars, escape)
  24. }
  25. return options.stylize(`'${truncate(string, options.truncate - 2)}'`, 'string')
  26. }