Commit 2e8b5ebefd2918bde011206f97b68e5ee3d0d05f

Authored by Dmitriy Zaporozhets
2 parents ebd2a5d0 1814ee0c

Merge pull request #1386 from tsigo/github_markup

Use GitHub::Markup to parse markup files
@@ -44,7 +44,8 @@ gem "ffaker" @@ -44,7 +44,8 @@ gem "ffaker"
44 gem "seed-fu" 44 gem "seed-fu"
45 45
46 # Markdown to HTML 46 # Markdown to HTML
47 -gem "redcarpet", "~> 2.1.1" 47 +gem "redcarpet", "~> 2.1.1"
  48 +gem "github-markup", "~> 0.7.4"
48 49
49 # Servers 50 # Servers
50 gem "thin" 51 gem "thin"
@@ -178,6 +178,7 @@ GEM @@ -178,6 +178,7 @@ GEM
178 gherkin (2.11.0) 178 gherkin (2.11.0)
179 json (>= 1.4.6) 179 json (>= 1.4.6)
180 git (1.2.5) 180 git (1.2.5)
  181 + github-markup (0.7.4)
181 gitlab_meta (2.9) 182 gitlab_meta (2.9)
182 grape (0.2.1) 183 grape (0.2.1)
183 hashie (~> 1.2) 184 hashie (~> 1.2)
@@ -396,6 +397,7 @@ DEPENDENCIES @@ -396,6 +397,7 @@ DEPENDENCIES
396 ffaker 397 ffaker
397 foreman 398 foreman
398 git 399 git
  400 + github-markup (~> 0.7.4)
399 gitlab_meta (= 2.9) 401 gitlab_meta (= 2.9)
400 gitolite! 402 gitolite!
401 grack! 403 grack!
app/controllers/refs_controller.rb
  1 +require 'github/markup'
  2 +
1 class RefsController < ApplicationController 3 class RefsController < ApplicationController
2 include Gitlab::Encode 4 include Gitlab::Encode
3 before_filter :project 5 before_filter :project
app/helpers/tree_helper.rb
@@ -24,4 +24,14 @@ module TreeHelper @@ -24,4 +24,14 @@ module TreeHelper
24 content.name 24 content.name
25 end 25 end
26 end 26 end
  27 +
  28 + # Public: Determines if a given filename is compatible with GitHub::Markup.
  29 + #
  30 + # filename - Filename string to check
  31 + #
  32 + # Returns boolean
  33 + def markup?(filename)
  34 + filename.end_with?(*%w(.mdown .md .markdown .textile .rdoc .org .creole
  35 + .mediawiki .rst .asciidoc .pod))
  36 + end
27 end 37 end
app/views/refs/_tree.html.haml
@@ -43,11 +43,7 @@ @@ -43,11 +43,7 @@
43 %i.icon-file 43 %i.icon-file
44 = content.name 44 = content.name
45 .file_content.wiki 45 .file_content.wiki
46 - - if content.name =~ /\.(md|markdown)$/i  
47 - = preserve do  
48 - = markdown(content.data)  
49 - - else  
50 - = simple_format(content.data) 46 + = raw GitHub::Markup.render(content.name, content.data)
51 47
52 :javascript 48 :javascript
53 $(function(){ 49 $(function(){
app/views/refs/_tree_file.html.haml
@@ -9,10 +9,9 @@ @@ -9,10 +9,9 @@
9 = link_to "history", project_commits_path(@project, path: params[:path], ref: @ref), class: "btn very_small" 9 = link_to "history", project_commits_path(@project, path: params[:path], ref: @ref), class: "btn very_small"
10 = link_to "blame", blame_file_project_ref_path(@project, @ref, path: params[:path]), class: "btn very_small" 10 = link_to "blame", blame_file_project_ref_path(@project, @ref, path: params[:path]), class: "btn very_small"
11 - if file.text? 11 - if file.text?
12 - - if name =~ /\.(md|markdown)$/i 12 + - if markup?(name)
13 .file_content.wiki 13 .file_content.wiki
14 - = preserve do  
15 - = markdown(file.data) 14 + = raw GitHub::Markup.render(name, file.data)
16 - else 15 - else
17 .file_content.code 16 .file_content.code
18 - unless file.empty? 17 - unless file.empty?
spec/helpers/tree_helper_spec.rb 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +require 'spec_helper'
  2 +
  3 +describe TreeHelper do
  4 + describe '#markup?' do
  5 + %w(mdown md markdown textile rdoc org creole mediawiki rst asciidoc pod).each do |type|
  6 + it "returns true for #{type} files" do
  7 + markup?("README.#{type}").should be_true
  8 + end
  9 + end
  10 +
  11 + it "returns false when given a non-markup filename" do
  12 + markup?('README.rb').should_not be_true
  13 + end
  14 + end
  15 +end