refactoring

This commit is contained in:
gitlabhq 2011-10-20 22:00:00 +03:00
parent 48924dfeea
commit c463eeb090
7 changed files with 66 additions and 37 deletions

View file

@ -53,25 +53,4 @@ module ApplicationHelper
[projects, default_nav, project_nav].flatten.to_json
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

View file

@ -1,4 +1,6 @@
class Snippet < ActiveRecord::Base
include Utils::Colorize
belongs_to :project
belongs_to :author, :class_name => "User"
has_many :notes, :as => :noteable
@ -28,6 +30,11 @@ class Snippet < ActiveRecord::Base
".js", ".sh", ".coffee", ".yml", ".md"
]
end
def colorize
ft = handle_file_type(file_name)
Albino.colorize(content, ft, :html, 'utf-8', "linenos=True")
end
end
# == Schema Information
#

View file

@ -1,4 +1,3 @@
- require "utils"
.file_stats
- @commit.diffs.each do |diff|
- if diff.deleted_file
@ -35,7 +34,7 @@
%strong{:id => "#{diff.b_path}"}= diff.b_path
%br/
.diff_file_content
- if file.mime_type =~ /application|text/ && !Utils.binary?(file.data)
- if file.text?
- lines_arr = diff.diff.lines.to_a
- line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0
- line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0
@ -50,9 +49,9 @@
- else
- line_new += 1
- line_old += 1
- elsif file.mime_type =~ /image/
- elsif file.image?
.diff_file_content_image
%img{:src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"}
%img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
- else
%p
%center No preview for this file type

View file

@ -1,4 +1,3 @@
- require "utils"
.view_file
.view_file_header
%strong
@ -6,14 +5,13 @@
= link_to "raw", blob_project_path(@project, :commit_id => @commit.id, :path => params[:path] ), :class => "right", :target => "_blank"
= link_to "history", project_commits_path(@project, :path => params[:path]), :class => "right", :style => "margin-right:10px;"
%br/
- if file.mime_type =~ /application|text/ && !Utils.binary?(file.data)
- if file.text?
.view_file_content
- ft = handle_file_type(file.name, file.mime_type)
:erb
<%= raw Albino.colorize(content, ft, :html, 'utf-8', "linenos=True") %>
- elsif file.mime_type =~ /image/
<%= raw file.colorize %>
- elsif file.image?
.view_file_content_image
%img{ :src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"}
%img{ :src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"}
- else
%p
%center No preview for this file type

View file

@ -7,9 +7,8 @@
= @snippet.file_name
%br/
.view_file_content
- ft = handle_file_type(@snippet.file_name)
:erb
<%= raw Albino.colorize(@snippet.content, ft, :html, 'utf-8', "linenos=True") %>
<%= raw @snippet.colorize %>
- if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user
= link_to 'Edit', edit_project_snippet_path(@project, @snippet), :class => "lbutton positive"

View file

@ -0,0 +1,8 @@
require 'grit'
require 'albino'
require "utils"
Grit::Blob.class_eval do
include Utils::FileHelper
include Utils::Colorize
end

View file

@ -1,8 +1,47 @@
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
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
false
end
end