public function codeblock($object, $lang = 'markup')
{
$langs = ['css' => 'css', 'php' => 'php', 'js' => 'js', 'scss' => 'sass', 'md' => 'markdown', 'mdown' => 'markdown'];
try {
if (is_a($object, 'Media')) {
$code = $object->read();
$lang = a::get($langs, $object->extension(), 'markup');
} else {
if (is_a($object, 'Kirby\\Patterns\\Pattern')) {
$code = htmlawed($object->render(), ['tidy' => 1]);
$lang = 'php';
} else {
if (is_string($object)) {
$code = $object;
} else {
$code = '';
}
}
}
} catch (Exception $e) {
return $this->error($e);
}
if (strlen($code) > 20000) {
$lang = 'none';
}
return '<pre><code class="language-' . $lang . '">' . htmlspecialchars(trim($code)) . '</code></pre>';
}