mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-20 01:56:06 +10:00
Merge pull request #9289 from jirutka/asciidoc-2
Refactor, simplify and unify helpers for rendering markup
This commit is contained in:
@@ -222,7 +222,9 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def render_markup(file_name, file_content)
|
||||
if asciidoc?(file_name)
|
||||
if gitlab_markdown?(file_name)
|
||||
Haml::Helpers.preserve(markdown(file_content))
|
||||
elsif asciidoc?(file_name)
|
||||
asciidoc(file_content)
|
||||
else
|
||||
GitHub::Markup.render(file_name, file_content).
|
||||
@@ -233,15 +235,15 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def markup?(filename)
|
||||
Gitlab::MarkdownHelper.markup?(filename)
|
||||
Gitlab::MarkupHelper.markup?(filename)
|
||||
end
|
||||
|
||||
def gitlab_markdown?(filename)
|
||||
Gitlab::MarkdownHelper.gitlab_markdown?(filename)
|
||||
Gitlab::MarkupHelper.gitlab_markdown?(filename)
|
||||
end
|
||||
|
||||
def asciidoc?(filename)
|
||||
Gitlab::MarkdownHelper.asciidoc?(filename)
|
||||
Gitlab::MarkupHelper.asciidoc?(filename)
|
||||
end
|
||||
|
||||
# Overrides ActionView::Helpers::UrlHelper#link_to to add `rel="nofollow"` to
|
||||
|
||||
@@ -55,7 +55,7 @@ module BlobHelper
|
||||
end
|
||||
|
||||
def editing_preview_title(filename)
|
||||
if Gitlab::MarkdownHelper.previewable?(filename)
|
||||
if Gitlab::MarkupHelper.previewable?(filename)
|
||||
'Preview'
|
||||
else
|
||||
'Preview changes'
|
||||
|
||||
@@ -25,15 +25,7 @@ module TreeHelper
|
||||
end
|
||||
|
||||
def render_readme(readme)
|
||||
if gitlab_markdown?(readme.name)
|
||||
preserve(markdown(readme.data))
|
||||
elsif asciidoc?(readme.name)
|
||||
asciidoc(readme.data)
|
||||
elsif markup?(readme.name)
|
||||
render_markup(readme.name, readme.data)
|
||||
else
|
||||
simple_format(readme.data)
|
||||
end
|
||||
render_markup(readme.name, readme.data)
|
||||
end
|
||||
|
||||
# Return an image icon depending on the file type and mode
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
class Tree
|
||||
include Gitlab::MarkdownHelper
|
||||
include Gitlab::MarkupHelper
|
||||
|
||||
attr_accessor :repository, :sha, :path, :entries
|
||||
|
||||
def initialize(repository, sha, path = '/')
|
||||
path = '/' if path.blank?
|
||||
|
||||
|
||||
@repository = repository
|
||||
@sha = sha
|
||||
@path = path
|
||||
@@ -20,7 +20,7 @@ class Tree
|
||||
available_readmes = blobs.select(&:readme?)
|
||||
|
||||
if available_readmes.count == 0
|
||||
return @readme = nil
|
||||
return @readme = nil
|
||||
end
|
||||
|
||||
# Take the first previewable readme, or the first available readme, if we
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
- if gitlab_markdown?(blob.name)
|
||||
.file-content.wiki
|
||||
= preserve do
|
||||
= markdown(blob.data)
|
||||
- elsif markup?(blob.name)
|
||||
- if markup?(blob.name)
|
||||
.file-content.wiki
|
||||
= render_markup(blob.name, blob.data)
|
||||
- else
|
||||
|
||||
@@ -13,16 +13,7 @@
|
||||
.file-title
|
||||
%i.fa.fa-file
|
||||
%strong= snippet_blob[:snippet_object].file_name
|
||||
- if gitlab_markdown?(snippet_blob[:snippet_object].file_name)
|
||||
.file-content.wiki
|
||||
- snippet_blob[:snippet_chunks].each do |snippet|
|
||||
- unless snippet[:data].empty?
|
||||
= preserve do
|
||||
= markdown(snippet[:data])
|
||||
- else
|
||||
.file-content.code
|
||||
.nothing-here-block Empty file
|
||||
- elsif markup?(snippet_blob[:snippet_object].file_name)
|
||||
- if markup?(snippet_blob[:snippet_object].file_name)
|
||||
.file-content.wiki
|
||||
- snippet_blob[:snippet_chunks].each do |snippet|
|
||||
- unless snippet[:data].empty?
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
- unless @snippet.content.empty?
|
||||
- if gitlab_markdown?(@snippet.file_name)
|
||||
.file-content.wiki
|
||||
= preserve do
|
||||
= markdown(@snippet.data)
|
||||
- elsif markup?(@snippet.file_name)
|
||||
- if markup?(@snippet.file_name)
|
||||
.file-content.wiki
|
||||
= render_markup(@snippet.file_name, @snippet.data)
|
||||
- else
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module Gitlab
|
||||
module MarkdownHelper
|
||||
module MarkupHelper
|
||||
module_function
|
||||
|
||||
# Public: Determines if a given filename is compatible with GitHub::Markup.
|
||||
@@ -8,8 +8,10 @@ module Gitlab
|
||||
#
|
||||
# Returns boolean
|
||||
def markup?(filename)
|
||||
filename.downcase.end_with?(*%w(.textile .rdoc .org .creole .wiki
|
||||
.mediawiki .rst .adoc .ad .asciidoc))
|
||||
gitlab_markdown?(filename) ||
|
||||
asciidoc?(filename) ||
|
||||
filename.downcase.end_with?(*%w(.textile .rdoc .org .creole .wiki
|
||||
.mediawiki .rst))
|
||||
end
|
||||
|
||||
# Public: Determines if a given filename is compatible with
|
||||
@@ -32,7 +34,7 @@ module Gitlab
|
||||
end
|
||||
|
||||
def previewable?(filename)
|
||||
gitlab_markdown?(filename) || markup?(filename)
|
||||
markup?(filename)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -269,6 +269,13 @@ describe ApplicationHelper do
|
||||
expect(render_markup('foo.rst', content).encoding.name).to eq('UTF-8')
|
||||
end
|
||||
|
||||
it "should delegate to #markdown when file name corresponds to Markdown" do
|
||||
expect(self).to receive(:gitlab_markdown?).with('foo.md').and_return(true)
|
||||
expect(self).to receive(:markdown).and_return('NOEL')
|
||||
|
||||
expect(render_markup('foo.md', content)).to eq('NOEL')
|
||||
end
|
||||
|
||||
it "should delegate to #asciidoc when file name corresponds to AsciiDoc" do
|
||||
expect(self).to receive(:asciidoc?).with('foo.adoc').and_return(true)
|
||||
expect(self).to receive(:asciidoc).and_return('NOEL')
|
||||
|
||||
+8
-8
@@ -1,40 +1,40 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::MarkdownHelper do
|
||||
describe Gitlab::MarkupHelper do
|
||||
describe '#markup?' do
|
||||
%w(textile rdoc org creole wiki
|
||||
mediawiki rst adoc ad asciidoc).each do |type|
|
||||
mediawiki rst adoc ad asciidoc mdown md markdown).each do |type|
|
||||
it "returns true for #{type} files" do
|
||||
expect(Gitlab::MarkdownHelper.markup?("README.#{type}")).to be_truthy
|
||||
expect(Gitlab::MarkupHelper.markup?("README.#{type}")).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns false when given a non-markup filename' do
|
||||
expect(Gitlab::MarkdownHelper.markup?('README.rb')).not_to be_truthy
|
||||
expect(Gitlab::MarkupHelper.markup?('README.rb')).not_to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe '#gitlab_markdown?' do
|
||||
%w(mdown md markdown).each do |type|
|
||||
it "returns true for #{type} files" do
|
||||
expect(Gitlab::MarkdownHelper.gitlab_markdown?("README.#{type}")).to be_truthy
|
||||
expect(Gitlab::MarkupHelper.gitlab_markdown?("README.#{type}")).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns false when given a non-markdown filename' do
|
||||
expect(Gitlab::MarkdownHelper.gitlab_markdown?('README.rb')).not_to be_truthy
|
||||
expect(Gitlab::MarkupHelper.gitlab_markdown?('README.rb')).not_to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
describe '#asciidoc?' do
|
||||
%w(adoc ad asciidoc ADOC).each do |type|
|
||||
it "returns true for #{type} files" do
|
||||
expect(Gitlab::MarkdownHelper.asciidoc?("README.#{type}")).to be_truthy
|
||||
expect(Gitlab::MarkupHelper.asciidoc?("README.#{type}")).to be_truthy
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns false when given a non-asciidoc filename' do
|
||||
expect(Gitlab::MarkdownHelper.asciidoc?('README.rb')).not_to be_truthy
|
||||
expect(Gitlab::MarkupHelper.asciidoc?('README.rb')).not_to be_truthy
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user