module Utils 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 ft = handle_file_type(name, mime_type) Albino.colorize(data, ft, :html, '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 end end