function Kint::export

Same name in other branches
  1. 4.x src/Plugin/Devel/Dumper/Kint.php \Drupal\devel\Plugin\Devel\Dumper\Kint::export()

Overrides DevelDumperInterface::export

File

src/Plugin/Devel/Dumper/Kint.php, line 53

Class

Kint
Provides a Kint dumper plugin.

Namespace

Drupal\devel\Plugin\Devel\Dumper

Code

public function export(mixed $input, ?string $name = NULL) : MarkupInterface|string {
    ob_start();
    if ($name == '__ARGS__') {
        call_user_func_array([
            'Kint',
            'dump',
        ], $input);
        $name = NULL;
    }
    elseif ($name !== NULL) {
        // In order to get the correct access path information returned from Kint
        // we have to give a second parameter here. This is due to a fault in
        // Kint::getSingleCall which returns no info when the number of arguments
        // passed to Kint::dump does not match the number in the original call
        // that invoked the export (such as dsm). However, this second parameter
        // is just treated as the next variable to dump, it is not used as the
        // label. So we give a placeholder value that we can remove below.
        // @see https://gitlab.com/drupalspoons/devel/-/issues/252
        \Kint::dump($input, '---temporary-fix-see-issue-252---');
    }
    else {
        \Kint::dump($input);
    }
    $dump = ob_get_clean();
    if ($name !== NULL && $name !== '') {
        // Kint no longer treats an additional parameter as a custom title, but we
        // can add the required $name as a label at the top of the output.
        $dump = str_replace('<div class="kint-rich">', '<div class="kint-rich">' . $name . ': ', $dump);
        // Remove the output from the second dummy parameter. The pattern in [ ]
        // matches the minimum to ensure we get just the string to be removed.
        $pattern = '/(<dl><dt>[\\w\\d\\s<>\\/()]*"---temporary-fix-see-issue-252---"<\\/dt><\\/dl>)/';
        preg_match($pattern, $dump, $matches);
        if (preg_last_error() === 0 && isset($matches[1])) {
            $dump = str_replace($matches[1], '', $dump);
        }
    }
    return $this->setSafeMarkup($dump);
}