diff options
| author | gitlabhq <m@gitlabhq.com> | 2011-10-20 22:00:00 +0300 | 
|---|---|---|
| committer | gitlabhq <m@gitlabhq.com> | 2011-10-20 22:00:00 +0300 | 
| commit | c463eeb0908e5c00008073c07e71e06434393342 (patch) | |
| tree | de9e958048e0d7e148d8e85bd5512339aca3ec1f | |
| parent | 48924dfeeafbe965ec06797b10010ebd8a5dcfcd (diff) | |
| download | gitlab-ce-c463eeb0908e5c00008073c07e71e06434393342.tar.gz | |
refactoring
| -rw-r--r-- | app/helpers/application_helper.rb | 21 | ||||
| -rw-r--r-- | app/models/snippet.rb | 7 | ||||
| -rw-r--r-- | app/views/commits/_diff.html.haml | 7 | ||||
| -rw-r--r-- | app/views/projects/_tree_file.html.haml | 10 | ||||
| -rw-r--r-- | app/views/snippets/show.html.haml | 3 | ||||
| -rw-r--r-- | config/initializers/grit_ext.rb | 8 | ||||
| -rw-r--r-- | lib/utils.rb | 47 | 
7 files changed, 66 insertions, 37 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c389fd4a904..0895eb0d1ba 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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 diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 0a54fee7e2f..119b69a4525 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -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  # diff --git a/app/views/commits/_diff.html.haml b/app/views/commits/_diff.html.haml index dff99bf12f0..73652aaf9f7 100644 --- a/app/views/commits/_diff.html.haml +++ b/app/views/commits/_diff.html.haml @@ -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 diff --git a/app/views/projects/_tree_file.html.haml b/app/views/projects/_tree_file.html.haml index 3463bfc543f..ae95d483175 100644 --- a/app/views/projects/_tree_file.html.haml +++ b/app/views/projects/_tree_file.html.haml @@ -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 diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml index bb444efec79..899950b7c36 100644 --- a/app/views/snippets/show.html.haml +++ b/app/views/snippets/show.html.haml @@ -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" diff --git a/config/initializers/grit_ext.rb b/config/initializers/grit_ext.rb new file mode 100644 index 00000000000..8f1329a660c --- /dev/null +++ b/config/initializers/grit_ext.rb @@ -0,0 +1,8 @@ +require 'grit' +require 'albino' +require "utils" + +Grit::Blob.class_eval do +  include Utils::FileHelper +  include Utils::Colorize +end diff --git a/lib/utils.rb b/lib/utils.rb index 6e7460ed99a..40bf26735c2 100644 --- a/lib/utils.rb +++ b/lib/utils.rb @@ -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  | 
