mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-29 04:35:36 +08:00
[React Native] Bring back console.error redboxes with disable flag
This commit is contained in:
42
Libraries/Utilities/stringifySafe.js
Normal file
42
Libraries/Utilities/stringifySafe.js
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Copyright (c) 2015-present, Facebook, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* LICENSE file in the root directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the PATENTS file in the same directory.
|
||||
*
|
||||
* @providesModule stringifySafe
|
||||
* @flow
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Tries to stringify with JSON.stringify and toString, but catches exceptions
|
||||
* (e.g. from circular objects) and always returns a string and never throws.
|
||||
*/
|
||||
function stringifySafe(arg: any): string {
|
||||
var ret;
|
||||
if (arg === undefined) {
|
||||
ret = 'undefined';
|
||||
} else if (arg === null) {
|
||||
ret = 'null';
|
||||
} else if (typeof arg === 'string') {
|
||||
ret = '"' + arg + '"';
|
||||
} else {
|
||||
// Perform a try catch, just in case the object has a circular
|
||||
// reference or stringify throws for some other reason.
|
||||
try {
|
||||
ret = JSON.stringify(arg);
|
||||
} catch (e) {
|
||||
if (typeof arg.toString === 'function') {
|
||||
try {
|
||||
ret = arg.toString();
|
||||
} catch (E) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret || '["' + typeof arg + '" failed to stringify]';
|
||||
}
|
||||
|
||||
module.exports = stringifySafe;
|
||||
Reference in New Issue
Block a user