All files / validator/yupSource/util printValue.js

13.51% Statements 5/37
2.5% Branches 1/40
0% Functions 0/5
17.24% Lines 5/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 503x 3x 3x   3x   3x                                                                                      
const toString = Object.prototype.toString
const errorToString = Error.prototype.toString
const regExpToString = RegExp.prototype.toString
const symbolToString =
  typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => ''
 
const SYMBOL_REGEXP = /^Symbol\((.*)\)(.*)$/
 
function printNumber(val) {
  if (val != +val) return 'NaN'
  const isNegativeZero = val === 0 && 1 / val < 0
  return isNegativeZero ? '-0' : '' + val
}
 
function printSimpleValue(val, quoteStrings = false) {
  if (val == null || val === true || val === false) return '' + val
 
  const typeOf = typeof val
  if (typeOf === 'number') return printNumber(val)
  if (typeOf === 'string') return quoteStrings ? `"${val}"` : val
  if (typeOf === 'function')
    return '[Function ' + (val.name || 'anonymous') + ']'
  if (typeOf === 'symbol')
    return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)')
 
  const tag = toString.call(val).slice(8, -1)
  if (tag === 'Date')
    return isNaN(val.getTime()) ? '' + val : val.toISOString(val)
  if (tag === 'Error' || val instanceof Error)
    return '[' + errorToString.call(val) + ']'
  if (tag === 'RegExp') return regExpToString.call(val)
 
  return null
}
 
export default function printValue(value, quoteStrings) {
  let result = printSimpleValue(value, quoteStrings)
  if (result !== null) return result
 
  return JSON.stringify(
    value,
    function (key, value) {
      let result = printSimpleValue(this[key], quoteStrings)
      if (result !== null) return result
      return value
    },
    2,
  )
}