Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
plugins
/
better-wp-security
/
core
/
packages
/
components
/
src
/
print-r
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
/** * External dependencies */ import { isString, isBoolean, isNumber, isArray, isPlainObject, keys, forEach, toString, cloneDeep, size } from 'lodash'; /** * WordPress dependencies */ import { Fragment } from '@wordpress/element'; /** * Internal dependencies */ import './style.scss'; export default function PrintR( { json } ) { return ( <pre className="itsec-component-print-r"> { inspectDive( cloneDeep( json ) ) } </pre> ); } function inspectDive( data, maxDepth = 10, depth = 0, showArrayHeader = true ) { if ( isString( data ) ) { if ( data.length === 0 ) { return <strong>[empty string]</strong>; } return data; } if ( isNumber( data ) ) { return <strong>{ `[number] ${ data }` }</strong>; } if ( isBoolean( data ) ) { return <strong>{ data ? '[boolean] true' : '[boolean] false' }</strong>; } if ( data === null || data === undefined ) { return <strong>null</strong>; } if ( isArray( data ) || isPlainObject( data ) ) { const retval = []; if ( showArrayHeader ) { retval.push( <strong key="header">{ 'Array' }</strong> ); } if ( 0 === size( data ) ) { retval.push( '()' ); return retval; } if ( depth === maxDepth ) { retval.push( `(${ data.length })` ); return retval; } let maxLength = 0; for ( const key of keys( data ) ) { if ( key.length > maxLength ) { maxLength = key.length; } } const padding = pad( depth ); forEach( data, ( value, key ) => { retval.push( <Fragment key={ key }> { '\n' } { padding } { key } { pad( maxLength - toString( key ).length, ' ' ) } { ' ' } <strong>=></strong> { ' ' } { inspectDive( value, maxDepth, depth + 1 ) } </Fragment> ); } ); return retval; } return <strong>[*]</strong>; } function pad( depth, padding = ' ' ) { let ret = ''; for ( let i = 0; i <= depth; i++ ) { ret += padding; } return ret; }