From daa0925016a63dcde448643cbf1310aca359cf37 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Wed, 13 May 2015 01:40:11 +0200 Subject: [PATCH 1/2] Rename MarkdownHelper to MarkupHelper --- app/helpers/application_helper.rb | 6 +++--- app/helpers/blob_helper.rb | 2 +- app/models/tree.rb | 6 +++--- .../{markdown_helper.rb => markup_helper.rb} | 2 +- ...rkdown_helper_spec.rb => markup_helper_spec.rb} | 14 +++++++------- 5 files changed, 15 insertions(+), 15 deletions(-) rename lib/gitlab/{markdown_helper.rb => markup_helper.rb} (97%) rename spec/lib/gitlab/{gitlab_markdown_helper_spec.rb => markup_helper_spec.rb} (59%) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bc07c09cd4..5bcc002601 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -233,15 +233,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 diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb index 4ea838ca44..885ac5f85b 100644 --- a/app/helpers/blob_helper.rb +++ b/app/helpers/blob_helper.rb @@ -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' diff --git a/app/models/tree.rb b/app/models/tree.rb index f279e896cd..93b3246a66 100644 --- a/app/models/tree.rb +++ b/app/models/tree.rb @@ -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 diff --git a/lib/gitlab/markdown_helper.rb b/lib/gitlab/markup_helper.rb similarity index 97% rename from lib/gitlab/markdown_helper.rb rename to lib/gitlab/markup_helper.rb index 70384b1db2..fb037266d2 100644 --- a/lib/gitlab/markdown_helper.rb +++ b/lib/gitlab/markup_helper.rb @@ -1,5 +1,5 @@ module Gitlab - module MarkdownHelper + module MarkupHelper module_function # Public: Determines if a given filename is compatible with GitHub::Markup. diff --git a/spec/lib/gitlab/gitlab_markdown_helper_spec.rb b/spec/lib/gitlab/markup_helper_spec.rb similarity index 59% rename from spec/lib/gitlab/gitlab_markdown_helper_spec.rb rename to spec/lib/gitlab/markup_helper_spec.rb index beaafd5635..448beecf01 100644 --- a/spec/lib/gitlab/gitlab_markdown_helper_spec.rb +++ b/spec/lib/gitlab/markup_helper_spec.rb @@ -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| 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 From b0659c1b072267e0e1fa3066ca1a8cc17bc8f6c0 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Wed, 13 May 2015 01:54:13 +0200 Subject: [PATCH 2/2] Simplify and unify helpers for rendering markup --- app/helpers/application_helper.rb | 4 +++- app/helpers/tree_helper.rb | 10 +--------- app/views/projects/blob/_text.html.haml | 6 +----- app/views/search/results/_snippet_blob.html.haml | 11 +---------- app/views/shared/snippets/_blob.html.haml | 6 +----- lib/gitlab/markup_helper.rb | 8 +++++--- spec/helpers/application_helper_spec.rb | 7 +++++++ spec/lib/gitlab/markup_helper_spec.rb | 2 +- 8 files changed, 20 insertions(+), 34 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 5bcc002601..bcd400b7e7 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -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). diff --git a/app/helpers/tree_helper.rb b/app/helpers/tree_helper.rb index c03564a71a..03a49e119b 100644 --- a/app/helpers/tree_helper.rb +++ b/app/helpers/tree_helper.rb @@ -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 diff --git a/app/views/projects/blob/_text.html.haml b/app/views/projects/blob/_text.html.haml index f6bd62f239..4429c395ae 100644 --- a/app/views/projects/blob/_text.html.haml +++ b/app/views/projects/blob/_text.html.haml @@ -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 diff --git a/app/views/search/results/_snippet_blob.html.haml b/app/views/search/results/_snippet_blob.html.haml index 8af393777f..9509985391 100644 --- a/app/views/search/results/_snippet_blob.html.haml +++ b/app/views/search/results/_snippet_blob.html.haml @@ -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? diff --git a/app/views/shared/snippets/_blob.html.haml b/app/views/shared/snippets/_blob.html.haml index 30458793fd..d26a99bb14 100644 --- a/app/views/shared/snippets/_blob.html.haml +++ b/app/views/shared/snippets/_blob.html.haml @@ -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 diff --git a/lib/gitlab/markup_helper.rb b/lib/gitlab/markup_helper.rb index fb037266d2..f99be969d3 100644 --- a/lib/gitlab/markup_helper.rb +++ b/lib/gitlab/markup_helper.rb @@ -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 diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb index 59870dfb19..3307ac776f 100644 --- a/spec/helpers/application_helper_spec.rb +++ b/spec/helpers/application_helper_spec.rb @@ -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') diff --git a/spec/lib/gitlab/markup_helper_spec.rb b/spec/lib/gitlab/markup_helper_spec.rb index 448beecf01..7e716e866b 100644 --- a/spec/lib/gitlab/markup_helper_spec.rb +++ b/spec/lib/gitlab/markup_helper_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' 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::MarkupHelper.markup?("README.#{type}")).to be_truthy end