Commit 80ddd2c09d9017f49976436982e2b9be5084fc4c
1 parent
3706a974
Exists in
master
and in
4 other branches
Better encoding handling. Updated grit
Showing
3 changed files
with
29 additions
and
6 deletions
Show diff stats
Gemfile.lock
@@ -14,7 +14,7 @@ GIT | @@ -14,7 +14,7 @@ GIT | ||
14 | 14 | ||
15 | GIT | 15 | GIT |
16 | remote: https://github.com/gitlabhq/grit.git | 16 | remote: https://github.com/gitlabhq/grit.git |
17 | - revision: ff015074ef35bd94cba943f9c0f98e161ab5851c | 17 | + revision: 3fc864f3c637e06e2fa7a81f6b48a5df58a9bc5b |
18 | specs: | 18 | specs: |
19 | grit (2.4.1) | 19 | grit (2.4.1) |
20 | diff-lcs (~> 1.1) | 20 | diff-lcs (~> 1.1) |
@@ -148,7 +148,7 @@ GEM | @@ -148,7 +148,7 @@ GEM | ||
148 | mime-types (~> 1.16) | 148 | mime-types (~> 1.16) |
149 | treetop (~> 1.4.8) | 149 | treetop (~> 1.4.8) |
150 | method_source (0.7.0) | 150 | method_source (0.7.0) |
151 | - mime-types (1.17.2) | 151 | + mime-types (1.18) |
152 | modularity (0.6.1) | 152 | modularity (0.6.1) |
153 | multi_json (1.0.4) | 153 | multi_json (1.0.4) |
154 | multi_xml (0.4.1) | 154 | multi_xml (0.4.1) |
app/controllers/commits_controller.rb
config/initializers/gitlabhq/20_grit_ext.rb
@@ -17,13 +17,35 @@ Grit::GitRuby::Internal::RawObject.class_eval do | @@ -17,13 +17,35 @@ Grit::GitRuby::Internal::RawObject.class_eval do | ||
17 | end | 17 | end |
18 | 18 | ||
19 | private | 19 | private |
20 | + | ||
20 | def transcoding(content) | 21 | def transcoding(content) |
21 | content ||= "" | 22 | content ||= "" |
22 | - detection = CharlockHolmes::EncodingDetector.detect(content) | ||
23 | - if hash = detection | ||
24 | - content = CharlockHolmes::Converter.convert(content, hash[:encoding], 'UTF-8') if hash[:encoding] | 23 | + hash = CharlockHolmes::EncodingDetector.detect(content) |
24 | + | ||
25 | + if hash | ||
26 | + return content if hash[:type] == :binary | ||
27 | + | ||
28 | + if hash[:encoding] == "UTF-8" | ||
29 | + content = if hash[:confidence] < 100 | ||
30 | + content | ||
31 | + else | ||
32 | + content.force_encoding("UTF-8") | ||
33 | + end | ||
34 | + | ||
35 | + return content | ||
36 | + end | ||
37 | + | ||
38 | + CharlockHolmes::Converter.convert(content, hash[:encoding], 'UTF-8') if hash[:encoding] | ||
39 | + else | ||
40 | + content.force_encoding("UTF-8") | ||
41 | + end | ||
42 | + end | ||
43 | + | ||
44 | + def z_binary?(string) | ||
45 | + string.each_byte do |x| | ||
46 | + x.nonzero? or return true | ||
25 | end | 47 | end |
26 | - content | 48 | + false |
27 | end | 49 | end |
28 | end | 50 | end |
29 | 51 |