From: Christian Weiske Date: Tue, 3 Apr 2012 05:46:11 +0000 (+0200) Subject: file type and language definition happens in config.default.php now X-Git-Tag: v0.1.0~66 X-Git-Url: https://git.cweiske.de/phorkie.git/commitdiff_plain/a39bd415faa45403247e6af89a32df4dd3560b3e?ds=sidebyside file type and language definition happens in config.default.php now --- diff --git a/data/config.default.php b/data/config.default.php index ab5c474..24a133c 100644 --- a/data/config.default.php +++ b/data/config.default.php @@ -4,4 +4,66 @@ $GLOBALS['phorkie']['cfg'] = array( 'tpl' => __DIR__ . '/templates/', 'css' => 'http://twitter.github.com/bootstrap/assets/css/bootstrap.css', ); +/** + * Array of supported file types / languages. + * Key is the file extension + */ +$GLOBALS['phorkie']['languages'] = array( + 'css' => array( + 'title' => 'CSS', + 'mime' => 'text/css', + 'geshi' => 'css' + ), + 'diff' => array( + 'title' => 'Diff', + 'mime' => 'text/diff', + 'geshi' => 'diff' + ), + 'htm' => array( + 'title' => 'HTML', + 'mime' => 'text/html', + 'geshi' => 'xml' + ), + 'html' => array( + 'title' => 'HTML', + 'mime' => 'text/html', + 'geshi' => 'xml', + 'show' => false + ), + 'js' => array( + 'title' => 'Javascript', + 'mime' => 'application/javascript', + 'geshi' => 'javascript' + ), + 'ini' => array( + 'title' => 'Ini', + 'mime' => 'text/ini', + 'geshi' => 'ini' + ), + 'php' => array( + 'title' => 'PHP', + 'mime' => 'text/x-php', + 'geshi' => 'php' + ), + 'sh' => array( + 'title' => 'Shell script (Bash)', + 'mime' => 'text/x-shellscript', + 'geshi' => 'bash' + ), + 'ts' => array( + 'title' => 'TypoScript', + 'mime' => 'text/plain',/* TODO: correct type */ + 'geshi' => 'typoscript' + ), + 'txt' => array( + 'title' => 'Text (plain)', + 'mime' => 'text/plain', + 'geshi' => 'txt' + ), + 'xml' => array( + 'title' => 'XML', + 'mime' => 'text/xml', + 'geshi' => 'xml' + ), +); ?> \ No newline at end of file diff --git a/src/Phorkie/File.php b/src/Phorkie/File.php index 44970ed..34a759a 100644 --- a/src/Phorkie/File.php +++ b/src/Phorkie/File.php @@ -17,31 +17,6 @@ class File */ public $repo; - /** - * Maps file extensions to MIME Types - * - * @var array - */ - public static $arMimeTypeMap = array( - 'css' => 'text/css', - 'htm' => 'text/html', - 'html' => 'text/html', - 'js' => 'application/javascript', - 'php' => 'text/x-php', - 'txt' => 'text/plain', - 'xml' => 'text/xml', - ); - - /** - * Maps file extensions to geshi types - * - * @var array - */ - public static $arTypeMap = array( - 'htm' => 'xml', - 'html' => 'xml', - ); - public function __construct($path, Repository $repo = null) { $this->path = $path; @@ -78,21 +53,6 @@ class File return substr($this->path, strrpos($this->path, '.') + 1); } - /** - * Returns the type of the file, as used by Geshi - * - * @return string - */ - public function getType() - { - $ext = $this->getExt(); - if (isset(static::$arTypeMap[$ext])) { - $ext = static::$arTypeMap[$ext]; - } - - return $ext; - } - public function getContent() { return file_get_contents($this->path); @@ -105,21 +65,12 @@ class File * We use the mediawiki geshi extension package. */ require_once 'MediaWiki/geshi/geshi/geshi.php'; - $geshi = new \GeSHi($this->getContent(), $this->getType()); + $geshi = new \GeSHi($this->getContent(), $this->getGeshiType()); $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS); $geshi->set_header_type(GESHI_HEADER_DIV); return $geshi->parse_code(); } - public function getMimeType() - { - $ext = $this->getExt(); - if (!isset(static::$arMimeTypeMap[$ext])) { - return null; - } - return static::$arMimeTypeMap[$ext]; - } - /** * Get a link to the file * @@ -136,6 +87,30 @@ class File } throw new Exception('Unknown type'); } + + /** + * Returns the type of the file, as used by Geshi + * + * @return string + */ + public function getGeshiType() + { + $ext = $this->getExt(); + if (isset($GLOBALS['phorkie']['languages'][$ext]['geshi'])) { + $ext = $GLOBALS['phorkie']['languages'][$ext]['geshi']; + } + + return $ext; + } + + public function getMimeType() + { + $ext = $this->getExt(); + if (!isset($GLOBALS['phorkie']['languages'][$ext])) { + return null; + } + return $GLOBALS['phorkie']['languages'][$ext]['mime']; + } } ?> \ No newline at end of file