diff options
author | Aleksei Kvitinskii <aleksei.kvitinskii@active.by> | 2011-10-21 16:00:27 +0300 |
---|---|---|
committer | Aleksei Kvitinskii <aleksei.kvitinskii@active.by> | 2011-10-21 16:00:27 +0300 |
commit | dde2879589f8e86fdc614a64512cec971d8d8606 (patch) | |
tree | 4faf42d3d58de110f021e6ddb69d71f62edc15ab /lib | |
parent | cee932500caf2d903e08f063772c570db4158925 (diff) | |
parent | 1477a6c8aaecbde1f2b5903cccb267d632212ee4 (diff) | |
download | gitlab-ce-dde2879589f8e86fdc614a64512cec971d8d8606.tar.gz |
Merge branch 'master' of dev.gitlabhq.com:gitlabhq
Diffstat (limited to 'lib')
-rw-r--r-- | lib/utils.rb | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/lib/utils.rb b/lib/utils.rb index 6e7460ed99a..e57121a3e2a 100644 --- a/lib/utils.rb +++ b/lib/utils.rb @@ -1,8 +1,51 @@ module Utils - def self.binary?(string) - string.each_byte do |x| - x.nonzero? or return true + module FileHelper + def binary?(string) + string.each_byte do |x| + x.nonzero? or return true + end + false + end + + def image? + mime_type =~ /image/ + end + + def text? + mime_type =~ /application|text/ && !binary?(data) + end + end + + module Colorize + def colorize + system_colorize(data, name) + end + + def system_colorize(data, file_name) + ft = handle_file_type(file_name) + Pygments.highlight(data, :lexer => ft, :options => { :encoding => 'utf-8', :linenos => 'True' }) + end + + def handle_file_type(file_name, mime_type = nil) + if file_name =~ /(\.rb|\.ru|\.rake|Rakefile|\.gemspec|\.rbx|Gemfile)$/ + :ruby + elsif file_name =~ /\.py$/ + :python + elsif file_name =~ /(\.pl|\.scala|\.c|\.cpp|\.java|\.haml|\.html|\.sass|\.scss|\.xml|\.php|\.erb)$/ + $1[1..-1].to_sym + elsif file_name =~ /\.js$/ + :javascript + elsif file_name =~ /\.sh$/ + :bash + elsif file_name =~ /\.coffee$/ + :coffeescript + elsif file_name =~ /\.yml$/ + :yaml + elsif file_name =~ /\.md$/ + :minid + else + :text + end end - false end end |