From 377f01ece6ecd5c88cacc90c42b1e85e9586c660 Mon Sep 17 00:00:00 2001 From: Sergey Linnik Date: Sat, 14 Jul 2012 12:46:00 +0400 Subject: [PATCH] simplify file type detection, fix phpdoc --- lib/Application/Utils.php | 265 ++++++++++++++------------------------ 1 file changed, 97 insertions(+), 168 deletions(-) diff --git a/lib/Application/Utils.php b/lib/Application/Utils.php index 9660c2e..6dc7893 100644 --- a/lib/Application/Utils.php +++ b/lib/Application/Utils.php @@ -11,6 +11,88 @@ class Utils { protected $app; + protected $defaultFileTypes = array( + 'php' => 'php', + 'c' => 'clike', + 'h' => 'clike', + 'cpp' => 'clike', + 'm' => 'clike', + 'mm' => 'clike', + 'cs' => 'csharp', + 'java' => 'java', + 'clj' => 'clojure', + 'coffee' => 'coffeescript', + 'css' => 'css', + 'diff' => 'diff', + 'ecl' => 'ecl', + 'el' => 'erlang', + 'go' => 'go', + 'groovy' => 'groovy', + 'hs' => 'haskell', + 'lhs' => 'haskell', + 'jsp' => 'htmlembedded', + 'asp' => 'htmlembedded', + 'aspx' => 'htmlembedded', + 'html' => 'htmlmixed', + 'tpl' => 'htmlmixed', + 'js' => 'javascript', + 'json' => 'javascript', + 'less' => 'less', + 'lua' => 'lua', + 'md' => 'markdown', + 'markdown' => 'markdown', + 'sql' => 'mysql', + 'pl' => 'perl', + 'pm' => 'perl', + 'pas' => 'pascal', + 'ini' => 'properties', + 'cfg' => 'properties', + 'nt' => 'ntriples', + 'py' => 'python', + 'rb' => 'ruby', + 'rst' => 'rst', + 'r' => 'r', + 'sh' => 'shell', + 'ss' => 'scheme', + 'scm' => 'scheme', + 'sls' => 'scheme', + 'sps' => 'scheme', + 'rs' => 'rust', + 'st' => 'smalltalk', + 'tex' => 'stex', + 'vbs' => 'vbscript', + 'v' => 'verilog', + 'xml' => 'xml', + 'xsd' => 'xml', + 'xsl' => 'xml', + 'xul' => 'xml', + 'xlf' => 'xml', + 'xliff' => 'xml', + 'xaml' => 'xml', + 'wxs' => 'xml', + 'wxl' => 'xml', + 'wxi' => 'xml', + 'wsdl' => 'xml', + 'svg' => 'xml', + 'rss' => 'xml', + 'rdf' => 'xml', + 'plist' => 'xml', + 'mxml' => 'xml', + 'kml' => 'xml', + 'glade' => 'xml', + 'xq' => 'xquery', + 'xqm' => 'xquery', + 'xquery' => 'xquery', + 'xqy' => 'xquery', + 'yml' => 'yaml', + 'yaml' => 'yaml', + 'png' => 'image', + 'jpg' => 'image', + 'gif' => 'image', + 'jpeg' => 'image', + 'bmp' => 'image', + ); + public function __construct(Application $app) { $this->app = $app; @@ -18,7 +100,7 @@ class Utils /** * Builds a breadcrumb array based on a path spec - * + * * @param string $spec Path spec * @return array Array with parts of the breadcrumb */ @@ -45,9 +127,10 @@ class Utils * * The file type is used by CodeMirror, a Javascript-based IDE implemented in * GitList, to properly highlight the blob syntax (if it's a source-code) - * - * @param string $spec File name - * @return string File type + * + * @param string $file File name + * + * @return null|string File type */ public function getFileType($file) { @@ -57,174 +140,17 @@ class Utils return 'text'; } - switch ($fileType) { - case 'php': - return 'php'; - case 'c': - return 'clike'; - case 'h': - return 'clike'; - case 'cpp': - return 'clike'; - case 'cs': - return 'csharp'; - case 'm': - return 'clike'; - case 'mm': - return 'clike'; - case 'java': - return 'java'; - case 'clj': - return 'clojure'; - case 'coffee': - return 'coffeescript'; - case 'css': - return 'css'; - case 'diff': - return 'diff'; - case 'ecl': - return 'ecl'; - case 'el': - return 'erlang'; - case 'go': - return 'go'; - case 'groovy': - return 'groovy'; - case 'hs': - return 'haskell'; - case 'lhs': - return 'haskell'; - case 'jsp': - return 'htmlembedded'; - case 'asp': - return 'htmlembedded'; - case 'aspx': - return 'htmlembedded'; - case 'html': - return 'htmlmixed'; - case 'tpl': - return 'htmlmixed'; - case 'js': - return 'javascript'; - case 'json': - return 'javascript'; - case 'less': - return 'less'; - case 'lua': - return 'lua'; - case 'md': - return 'markdown'; - case 'markdown': - return 'markdown'; - case 'sql': - return 'mysql'; - case 'pl': - return 'perl'; - case 'pm': - return 'perl'; - case 'pas': - return 'pascal'; - case 'ini': - return 'properties'; - case 'cfg': - return 'properties'; - case 'nt': - return 'ntriples'; - case 'py': - return 'python'; - case 'rb': - return 'ruby'; - case 'rst': - return 'rst'; - case 'r': - return 'r'; - case 'sh': - return 'shell'; - case 'ss': - return 'scheme'; - case 'scm': - return 'scheme'; - case 'sls': - return 'scheme'; - case 'sps': - return 'scheme'; - case 'rs': - return 'rust'; - case 'st': - return 'smalltalk'; - case 'tex': - return 'stex'; - case 'vbs': - return 'vbscript'; - case 'v': - return 'verilog'; - case 'xml': - return 'xml'; - case 'xsd': - return 'xml'; - case 'xsl': - return 'xml'; - case 'xul': - return 'xml'; - case 'xlf': - return 'xml'; - case 'xliff': - return 'xml'; - case 'xaml': - return 'xml'; - case 'wxs': - return 'xml'; - case 'wxl': - return 'xml'; - case 'wxi': - return 'xml'; - case 'wsdl': - return 'xml'; - case 'svg': - return 'xml'; - case 'rss': - return 'xml'; - case 'rdf': - return 'xml'; - case 'plist': - return 'xml'; - case 'mxml': - return 'xml'; - case 'kml': - return 'xml'; - case 'glade': - return 'xml'; - case 'xq': - return 'xquery'; - case 'xqm': - return 'xquery'; - case 'xquery': - return 'xquery'; - case 'xqy': - return 'xquery'; - case 'yml': - return 'yaml'; - case 'yaml': - return 'yaml'; - case 'png': - return 'image'; - case 'jpg': - return 'image'; - case 'gif': - return 'image'; - case 'jpeg': - return 'image'; - case 'bmp': - return 'image'; + if (isset($this->defaultFileTypes[$fileType])) { + return $this->defaultFileTypes[$fileType]; } if (!empty($this->app['filetypes'])) { - foreach ($this->app['filetypes'] as $ext => $type) { - if ($fileType == $ext) { - return $type; - } + if (isset($this->app['filetypes'][$fileType])) { + return $this->app['filetypes'][$fileType]; } } + + return null; } public function getPager($pageNumber, $totalCommits) @@ -251,7 +177,10 @@ class Utils foreach ($files as $fileInfo) if (preg_match('/^readme*/i', $fileInfo['name'])) { - return array('filename' => $fileInfo['name'], 'content' => $repository->getBlob("$branch:'".$fileInfo['name']."'")->output()); + return array( + 'filename' => $fileInfo['name'], + 'content' => $repository->getBlob("$branch:'".$fileInfo['name']."'")->output() + ); } return array(); }