Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-10-20 23:00:00 +0400
committerDmitriy Zaporozhets <dzaporozhets@sphereconsultinginc.com>2011-10-20 23:00:00 +0400
commita79b5517d92a2ca3d659b5defac3cd0990ebdb6c (patch)
treede9e958048e0d7e148d8e85bd5512339aca3ec1f
parent3f91cf4562dc59e9f13c979880c1b549458ece68 (diff)
refactoring
-rw-r--r--app/helpers/application_helper.rb21
-rw-r--r--app/models/snippet.rb7
-rw-r--r--app/views/commits/_diff.html.haml7
-rw-r--r--app/views/projects/_tree_file.html.haml10
-rw-r--r--app/views/snippets/show.html.haml3
-rw-r--r--config/initializers/grit_ext.rb8
-rw-r--r--lib/utils.rb47
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