summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Schreiber <schreiber.arthur@gmail.com>2012-04-20 23:21:12 +0200
committerArthur Schreiber <schreiber.arthur@gmail.com>2012-04-20 23:21:12 +0200
commit5b6019f357d01d7871068da15549d19be1a0cf4f (patch)
tree894d260eacf605e9c979c19b30bfbd10de56b78b
parent9ee345750ca43f4e4b0c429ebc913caba9684dcf (diff)
downloadgitlab-ce-5b6019f357d01d7871068da15549d19be1a0cf4f.tar.gz
Using github's linguist to better detect filetypes and to do syntax highlighting.
-rw-r--r--Gemfile1
-rw-r--r--Gemfile.lock12
-rw-r--r--app/views/refs/_tree_file.html.haml8
-rw-r--r--app/views/snippets/show.html.haml5
-rw-r--r--config/initializers/gitlabhq/20_grit_ext.rb7
-rw-r--r--lib/utils.rb44
6 files changed, 21 insertions, 56 deletions
diff --git a/Gemfile b/Gemfile
index 24bc650274a..8bf737ac4ff 100644
--- a/Gemfile
+++ b/Gemfile
@@ -18,6 +18,7 @@ gem "six"
gem "therubyracer"
gem "faker"
gem "seed-fu"
+gem "linguist", "~> 1.0.0", :git => "https://github.com/github/linguist.git"
gem "pygments.rb", "0.2.7"
gem "thin"
gem "unicorn"
diff --git a/Gemfile.lock b/Gemfile.lock
index 30dc519dd9d..221e81474ba 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -5,6 +5,16 @@ GIT
annotate (2.4.1.beta1)
GIT
+ remote: https://github.com/github/linguist.git
+ revision: c444c25b27131cd2aca6017f2a9ce5eae60dfcd3
+ specs:
+ linguist (1.0.0)
+ charlock_holmes (~> 0.6.6)
+ escape_utils (~> 0.2.3)
+ mime-types (~> 1.18)
+ pygments.rb (~> 0.2.11)
+
+GIT
remote: https://github.com/gitlabhq/gitolite-client.git
revision: 36dabd226caa40ff052677719adaacbfe667b36c
specs:
@@ -104,6 +114,7 @@ GEM
diff-lcs (1.1.3)
drapper (0.8.4)
erubis (2.7.0)
+ escape_utils (0.2.4)
eventmachine (0.12.10)
execjs (1.3.0)
multi_json (~> 1.0)
@@ -326,6 +337,7 @@ DEPENDENCIES
kaminari
launchy
letter_opener
+ linguist (~> 1.0.0)!
modularity
mysql2
omniauth-ldap
diff --git a/app/views/refs/_tree_file.html.haml b/app/views/refs/_tree_file.html.haml
index 738dad9bd59..c5512f69b51 100644
--- a/app/views/refs/_tree_file.html.haml
+++ b/app/views/refs/_tree_file.html.haml
@@ -11,10 +11,10 @@
- if file.text?
.view_file_content
- unless file.empty?
- %div{:class => current_user.dark_scheme ? "black" : "white"}
- = preserve do
- = raw file.colorize
- - else
+ %div{:class => current_user.dark_scheme ? "black" : "white"}
+ = preserve do
+ = raw file.colorize(options: { linenos: 'True'})
+ - else
%h3
%center Empty file
- elsif file.image?
diff --git a/app/views/snippets/show.html.haml b/app/views/snippets/show.html.haml
index a7ccd44cc79..7af4d2498fd 100644
--- a/app/views/snippets/show.html.haml
+++ b/app/views/snippets/show.html.haml
@@ -13,8 +13,7 @@
.view_file_header
%strong= @snippet.file_name
.view_file_content
- %div{:class => current_user.dark_scheme ? "black" : ""}
- :erb
- <%= raw @snippet.colorize %>
+ %div{:class => current_user.dark_scheme ? "black" : ""}
+ = raw @snippet.colorize(options: { linenos: 'True'})
= render "notes/notes", :tid => @snippet.id, :tt => "snippet"
diff --git a/config/initializers/gitlabhq/20_grit_ext.rb b/config/initializers/gitlabhq/20_grit_ext.rb
index 50b57d5e888..4c6be1e489f 100644
--- a/config/initializers/gitlabhq/20_grit_ext.rb
+++ b/config/initializers/gitlabhq/20_grit_ext.rb
@@ -1,10 +1,7 @@
require 'grit'
-require 'pygments'
-require "utils"
Grit::Blob.class_eval do
- include Utils::FileHelper
- include Utils::Colorize
+ include Linguist::BlobHelper
end
#monkey patch raw_object from string
@@ -15,7 +12,7 @@ Grit::GitRuby::Internal::RawObject.class_eval do
end
-Grit::Diff.class_eval do
+Grit::Diff.class_eval do
def old_path
Gitlabhq::Encode.utf8 a_path
end
diff --git a/lib/utils.rb b/lib/utils.rb
deleted file mode 100644
index 52f3ee2e195..00000000000
--- a/lib/utils.rb
+++ /dev/null
@@ -1,44 +0,0 @@
-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
- system_colorize(data, name)
- end
-
- def system_colorize(data, file_name)
- options = { :encoding => 'utf-8', :linenos => 'True' }
-
- # Try detect language with pygments
- Pygments.highlight data, :filename => file_name, :options => options
- rescue
- # if it fails use manual detection
- ft = handle_file_type(file_name)
- Pygments.highlight(data, :lexer => ft, :options => options)
- end
-
- def handle_file_type(file_name)
- case file_name
- when /(\.ru|Gemfile)$/
- :ruby
- else
- :text
- end
- end
- end
-end