Commit c463eeb0908e5c00008073c07e71e06434393342
1 parent
48924dfe
Exists in
master
and in
4 other branches
refactoring
Showing
7 changed files
with
66 additions
and
37 deletions
Show diff stats
app/helpers/application_helper.rb
@@ -53,25 +53,4 @@ module ApplicationHelper | @@ -53,25 +53,4 @@ module ApplicationHelper | ||
53 | [projects, default_nav, project_nav].flatten.to_json | 53 | [projects, default_nav, project_nav].flatten.to_json |
54 | end | 54 | end |
55 | 55 | ||
56 | - def handle_file_type(file_name, mime_type = nil) | ||
57 | - if file_name =~ /(\.rb|\.ru|\.rake|Rakefile|\.gemspec|\.rbx|Gemfile)$/ | ||
58 | - :ruby | ||
59 | - elsif file_name =~ /\.py$/ | ||
60 | - :python | ||
61 | - elsif file_name =~ /(\.pl|\.scala|\.c|\.cpp|\.java|\.haml|\.html|\.sass|\.scss|\.xml|\.php|\.erb)$/ | ||
62 | - $1[1..-1].to_sym | ||
63 | - elsif file_name =~ /\.js$/ | ||
64 | - :javascript | ||
65 | - elsif file_name =~ /\.sh$/ | ||
66 | - :bash | ||
67 | - elsif file_name =~ /\.coffee$/ | ||
68 | - :coffeescript | ||
69 | - elsif file_name =~ /\.yml$/ | ||
70 | - :yaml | ||
71 | - elsif file_name =~ /\.md$/ | ||
72 | - :minid | ||
73 | - else | ||
74 | - :text | ||
75 | - end | ||
76 | - end | ||
77 | end | 56 | end |
app/models/snippet.rb
1 | class Snippet < ActiveRecord::Base | 1 | class Snippet < ActiveRecord::Base |
2 | + include Utils::Colorize | ||
3 | + | ||
2 | belongs_to :project | 4 | belongs_to :project |
3 | belongs_to :author, :class_name => "User" | 5 | belongs_to :author, :class_name => "User" |
4 | has_many :notes, :as => :noteable | 6 | has_many :notes, :as => :noteable |
@@ -28,6 +30,11 @@ class Snippet < ActiveRecord::Base | @@ -28,6 +30,11 @@ class Snippet < ActiveRecord::Base | ||
28 | ".js", ".sh", ".coffee", ".yml", ".md" | 30 | ".js", ".sh", ".coffee", ".yml", ".md" |
29 | ] | 31 | ] |
30 | end | 32 | end |
33 | + | ||
34 | + def colorize | ||
35 | + ft = handle_file_type(file_name) | ||
36 | + Albino.colorize(content, ft, :html, 'utf-8', "linenos=True") | ||
37 | + end | ||
31 | end | 38 | end |
32 | # == Schema Information | 39 | # == Schema Information |
33 | # | 40 | # |
app/views/commits/_diff.html.haml
1 | -- require "utils" | ||
2 | .file_stats | 1 | .file_stats |
3 | - @commit.diffs.each do |diff| | 2 | - @commit.diffs.each do |diff| |
4 | - if diff.deleted_file | 3 | - if diff.deleted_file |
@@ -35,7 +34,7 @@ | @@ -35,7 +34,7 @@ | ||
35 | %strong{:id => "#{diff.b_path}"}= diff.b_path | 34 | %strong{:id => "#{diff.b_path}"}= diff.b_path |
36 | %br/ | 35 | %br/ |
37 | .diff_file_content | 36 | .diff_file_content |
38 | - - if file.mime_type =~ /application|text/ && !Utils.binary?(file.data) | 37 | + - if file.text? |
39 | - lines_arr = diff.diff.lines.to_a | 38 | - lines_arr = diff.diff.lines.to_a |
40 | - line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0 | 39 | - line_old = lines_arr[2].match(/-(\d)/)[0].to_i.abs rescue 0 |
41 | - line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0 | 40 | - line_new = lines_arr[2].match(/\+(\d)/)[0].to_i.abs rescue 0 |
@@ -50,9 +49,9 @@ | @@ -50,9 +49,9 @@ | ||
50 | - else | 49 | - else |
51 | - line_new += 1 | 50 | - line_new += 1 |
52 | - line_old += 1 | 51 | - line_old += 1 |
53 | - - elsif file.mime_type =~ /image/ | 52 | + - elsif file.image? |
54 | .diff_file_content_image | 53 | .diff_file_content_image |
55 | - %img{:src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"} | 54 | + %img{:src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} |
56 | - else | 55 | - else |
57 | %p | 56 | %p |
58 | %center No preview for this file type | 57 | %center No preview for this file type |
app/views/projects/_tree_file.html.haml
1 | -- require "utils" | ||
2 | .view_file | 1 | .view_file |
3 | .view_file_header | 2 | .view_file_header |
4 | %strong | 3 | %strong |
@@ -6,14 +5,13 @@ | @@ -6,14 +5,13 @@ | ||
6 | = link_to "raw", blob_project_path(@project, :commit_id => @commit.id, :path => params[:path] ), :class => "right", :target => "_blank" | 5 | = link_to "raw", blob_project_path(@project, :commit_id => @commit.id, :path => params[:path] ), :class => "right", :target => "_blank" |
7 | = link_to "history", project_commits_path(@project, :path => params[:path]), :class => "right", :style => "margin-right:10px;" | 6 | = link_to "history", project_commits_path(@project, :path => params[:path]), :class => "right", :style => "margin-right:10px;" |
8 | %br/ | 7 | %br/ |
9 | - - if file.mime_type =~ /application|text/ && !Utils.binary?(file.data) | 8 | + - if file.text? |
10 | .view_file_content | 9 | .view_file_content |
11 | - - ft = handle_file_type(file.name, file.mime_type) | ||
12 | :erb | 10 | :erb |
13 | - <%= raw Albino.colorize(content, ft, :html, 'utf-8', "linenos=True") %> | ||
14 | - - elsif file.mime_type =~ /image/ | 11 | + <%= raw file.colorize %> |
12 | + - elsif file.image? | ||
15 | .view_file_content_image | 13 | .view_file_content_image |
16 | - %img{ :src => "data:image/jpeg;base64,#{Base64.encode64(file.data)}"} | 14 | + %img{ :src => "data:#{file.mime_type};base64,#{Base64.encode64(file.data)}"} |
17 | - else | 15 | - else |
18 | %p | 16 | %p |
19 | %center No preview for this file type | 17 | %center No preview for this file type |
app/views/snippets/show.html.haml
@@ -7,9 +7,8 @@ | @@ -7,9 +7,8 @@ | ||
7 | = @snippet.file_name | 7 | = @snippet.file_name |
8 | %br/ | 8 | %br/ |
9 | .view_file_content | 9 | .view_file_content |
10 | - - ft = handle_file_type(@snippet.file_name) | ||
11 | :erb | 10 | :erb |
12 | - <%= raw Albino.colorize(@snippet.content, ft, :html, 'utf-8', "linenos=True") %> | 11 | + <%= raw @snippet.colorize %> |
13 | 12 | ||
14 | - if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user | 13 | - if can?(current_user, :admin_snippet, @project) || @snippet.author == current_user |
15 | = link_to 'Edit', edit_project_snippet_path(@project, @snippet), :class => "lbutton positive" | 14 | = link_to 'Edit', edit_project_snippet_path(@project, @snippet), :class => "lbutton positive" |
lib/utils.rb
1 | module Utils | 1 | module Utils |
2 | - def self.binary?(string) | ||
3 | - string.each_byte do |x| | ||
4 | - x.nonzero? or return true | 2 | + module FileHelper |
3 | + def binary?(string) | ||
4 | + string.each_byte do |x| | ||
5 | + x.nonzero? or return true | ||
6 | + end | ||
7 | + false | ||
8 | + end | ||
9 | + | ||
10 | + def image? | ||
11 | + mime_type =~ /image/ | ||
12 | + end | ||
13 | + | ||
14 | + def text? | ||
15 | + mime_type =~ /application|text/ && !binary?(data) | ||
16 | + end | ||
17 | + end | ||
18 | + | ||
19 | + module Colorize | ||
20 | + def colorize | ||
21 | + ft = handle_file_type(name, mime_type) | ||
22 | + Albino.colorize(data, ft, :html, 'utf-8', "linenos=True") | ||
23 | + end | ||
24 | + | ||
25 | + def handle_file_type(file_name, mime_type = nil) | ||
26 | + if file_name =~ /(\.rb|\.ru|\.rake|Rakefile|\.gemspec|\.rbx|Gemfile)$/ | ||
27 | + :ruby | ||
28 | + elsif file_name =~ /\.py$/ | ||
29 | + :python | ||
30 | + elsif file_name =~ /(\.pl|\.scala|\.c|\.cpp|\.java|\.haml|\.html|\.sass|\.scss|\.xml|\.php|\.erb)$/ | ||
31 | + $1[1..-1].to_sym | ||
32 | + elsif file_name =~ /\.js$/ | ||
33 | + :javascript | ||
34 | + elsif file_name =~ /\.sh$/ | ||
35 | + :bash | ||
36 | + elsif file_name =~ /\.coffee$/ | ||
37 | + :coffeescript | ||
38 | + elsif file_name =~ /\.yml$/ | ||
39 | + :yaml | ||
40 | + elsif file_name =~ /\.md$/ | ||
41 | + :minid | ||
42 | + else | ||
43 | + :text | ||
44 | + end | ||
5 | end | 45 | end |
6 | - false | ||
7 | end | 46 | end |
8 | end | 47 | end |