<?php namespace PHPFUI\InstaDoc\Section; class File extends \PHPFUI\InstaDoc\Section { public function generate(\PHPFUI\InstaDoc\PageInterface $page, string $fullClassPath) : \PHPFUI\Container { $container = new \PHPFUI\Container(); $fullClassPath = \str_replace('\\', '/', $fullClassPath); if (! \file_exists($fullClassPath)) { $fullClassPath = $this->controller->getGitFileOffset() . '/' . $fullClassPath; } $ts = $this->controller->getParameter(\PHPFUI\InstaDoc\Controller::TAB_SIZE, '2'); $page->addCSS("code{tab-size:{$ts};-moz-tab-size:{$ts}}"); $php = @\file_get_contents($fullClassPath); $pre = new \PHPFUI\HTML5Element('pre'); $css = $this->controller->getParameter(\PHPFUI\InstaDoc\Controller::CSS_FILE, 'PHPFUI'); if ('PHP' != $css) { $page->addStyleSheet("highlighter/styles/{$css}.css"); $hl = new \Highlight\Highlighter(); $highlighted = $hl->highlight('php', $php); $code = new \PHPFUI\HTML5Element('code'); $code->addClass('hljs'); $code->addClass($highlighted->language); $code->add($highlighted->value); $pre->add($code); } else { $pre->add(\highlight_string($php, true)); } $container->add($pre); return $container; } }