Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
4f2d6b3e
Commit
4f2d6b3e
authored
7 years ago
by
Douwe Maan
Committed by
Toon Claes
7 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactor MarkupHelper
parent
05e0f504
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
67 additions
and
99 deletions
+67
-99
app/helpers/markup_helper.rb
app/helpers/markup_helper.rb
+48
-68
app/models/repository.rb
app/models/repository.rb
+1
-1
app/views/projects/_readme.html.haml
app/views/projects/_readme.html.haml
+1
-1
app/views/projects/blob/_markup.html.haml
app/views/projects/blob/_markup.html.haml
+1
-1
app/views/projects/blob/preview.html.haml
app/views/projects/blob/preview.html.haml
+1
-1
app/views/projects/tree/_readme.html.haml
app/views/projects/tree/_readme.html.haml
+1
-1
app/views/search/results/_snippet_blob.html.haml
app/views/search/results/_snippet_blob.html.haml
+1
-1
app/views/shared/snippets/_blob.html.haml
app/views/shared/snippets/_blob.html.haml
+1
-1
lib/gitlab/asciidoc.rb
lib/gitlab/asciidoc.rb
+1
-7
lib/gitlab/other_markup.rb
lib/gitlab/other_markup.rb
+1
-7
spec/helpers/markup_helper_spec.rb
spec/helpers/markup_helper_spec.rb
+10
-10
No files found.
app/helpers/markup_helper.rb
View file @
4f2d6b3e
...
...
@@ -59,18 +59,22 @@ module MarkupHelper
fragment
.
to_html
.
html_safe
end
def
markdown
(
text
,
context
=
{})
html
=
markdown_render
(
text
,
context
)
# Return the first line of +text+, up to +max_chars+, after parsing the line
# as Markdown. HTML tags in the parsed output are not counted toward the
# +max_chars+ limit. If the length limit falls within a tag's contents, then
# the tag contents are truncated without removing the closing tag.
def
first_line_in_markdown
(
text
,
max_chars
=
nil
,
options
=
{})
md
=
markdown
(
text
,
options
).
strip
markup_postprocess
(
html
,
context
)
truncate_visible
(
md
,
max_chars
||
md
.
length
)
if
md
.
present?
end
def
markdown
_render
(
text
,
context
=
{})
def
markdown
(
text
,
context
=
{})
return
""
unless
text
.
present?
context
[
:project
]
||=
@project
Banzai
.
render
(
text
,
context
)
html
=
context
.
delete
(
:rendered
)
||
markdown_unsafe
(
text
,
context
)
banzai_postprocess
(
html
,
context
)
end
def
markdown_field
(
object
,
field
)
...
...
@@ -81,85 +85,59 @@ module MarkupHelper
banzai_postprocess
(
html
,
object
.
banzai_render_context
(
field
))
end
def
asciidoc_render
(
text
)
Gitlab
::
Asciidoc
.
render
(
text
,
project:
@project
,
current_user:
(
current_user
if
defined?
(
current_user
)),
# RelativeLinkFilter
project_wiki:
@project_wiki
,
requested_path:
@path
,
ref:
@ref
,
commit:
@commit
)
end
def
other_markup_render
(
file_name
,
text
)
Gitlab
::
OtherMarkup
.
render
(
file_name
,
text
,
project:
@project
,
current_user:
(
current_user
if
defined?
(
current_user
)),
# RelativeLinkFilter
project_wiki:
@project_wiki
,
requested_path:
@path
,
ref:
@ref
,
commit:
@commit
)
end
def
markup_postprocess
(
html
,
context
=
{})
return
""
unless
html
.
present?
def
markup
(
file_name
,
text
,
context
=
{})
context
[
:project
]
||=
@project
html
=
context
.
delete
(
:rendered
)
||
markup_unsafe
(
file_name
,
text
,
context
)
banzai_postprocess
(
html
,
context
)
end
# Return the first line of +text+, up to +max_chars+, after parsing the line
# as Markdown. HTML tags in the parsed output are not counted toward the
# +max_chars+ limit. If the length limit falls within a tag's contents, then
# the tag contents are truncated without removing the closing tag.
def
first_line_in_markdown
(
text
,
max_chars
=
nil
,
options
=
{})
md
=
markdown
(
text
,
options
).
strip
def
render_wiki_content
(
wiki_page
)
text
=
wiki_page
.
content
return
""
unless
text
.
present?
truncate_visible
(
md
,
max_chars
||
md
.
length
)
if
md
.
present?
end
context
=
{
pipeline: :wiki
,
project:
@project
,
project_wiki:
@project_wiki
,
page_slug:
wiki_page
.
slug
}
def
render_wiki_content
(
wiki_page
)
context
=
{
pipeline: :wiki
,
project_wiki:
@project_wiki
,
page_slug:
wiki_page
.
slug
}
case
wiki_page
.
format
when
:markdown
html
=
markdown_render
(
wiki_page
.
content
,
context
)
when
:asciidoc
html
=
asciidoc_render
(
wiki_page
.
content
)
else
return
wiki_page
.
formatted_content
.
html_safe
end
markup_postprocess
(
html
,
context
)
end
html
=
case
wiki_page
.
format
when
:markdown
markdown_unsafe
(
text
,
context
)
when
:asciidoc
asciidoc_unsafe
(
text
)
else
wiki_page
.
formatted_content
.
html_safe
end
def
render_markup
(
file_name
,
file_content
)
html
=
markup_render
(
file_name
,
file_content
)
markup_postprocess
(
html
)
banzai_postprocess
(
html
,
context
)
end
def
markup_render
(
file_name
,
file_content
)
def
markup_unsafe
(
file_name
,
text
,
context
=
{})
return
""
unless
text
.
present?
if
gitlab_markdown?
(
file_name
)
Hamlit
::
RailsHelpers
.
preserve
(
markdown_
render
(
file_conten
t
))
Hamlit
::
RailsHelpers
.
preserve
(
markdown_
unsafe
(
text
,
contex
t
))
elsif
asciidoc?
(
file_name
)
asciidoc_
render
(
file_conten
t
)
asciidoc_
unsafe
(
tex
t
)
elsif
plain?
(
file_name
)
content_tag
:pre
,
class:
'plain-readme'
do
file_conten
t
tex
t
end
else
other_markup_
render
(
file_name
,
file_conten
t
)
other_markup_
unsafe
(
file_name
,
tex
t
)
end
rescue
RuntimeError
simple_format
(
file_content
)
simple_format
(
text
)
end
def
markdown_unsafe
(
text
,
context
=
{})
Banzai
.
render
(
text
,
context
)
end
def
asciidoc_unsafe
(
text
)
Gitlab
::
Asciidoc
.
render
(
text
)
end
def
other_markup_unsafe
(
file_name
,
text
)
Gitlab
::
OtherMarkup
.
render
(
file_name
,
text
)
end
# Returns the text necessary to reference `entity` across projects
...
...
@@ -249,6 +227,8 @@ module MarkupHelper
# Calls Banzai.post_process with some common context options
def
banzai_postprocess
(
html
,
context
=
{})
return
""
unless
html
.
present?
context
.
merge!
(
current_user:
(
current_user
if
defined?
(
current_user
)),
...
...
This diff is collapsed.
Click to expand it.
app/models/repository.rb
View file @
4f2d6b3e
...
...
@@ -530,7 +530,7 @@ class Repository
end
def
rendered_readme
markup_
render
(
readme
.
name
,
readme
.
data
)
if
readme
markup_
unsafe
(
readme
.
name
,
readme
.
data
,
project:
project
)
if
readme
end
cache_method
:rendered_readme
...
...
This diff is collapsed.
Click to expand it.
app/views/projects/_readme.html.haml
View file @
4f2d6b3e
...
...
@@ -4,7 +4,7 @@
-
if
can?
(
current_user
,
:push_code
,
@project
)
=
link_to
icon
(
'pencil'
),
namespace_project_edit_blob_path
(
@project
.
namespace
,
@project
,
tree_join
(
@repository
.
root_ref
,
readme
.
name
)),
class:
'light edit-project-readme'
.file-content.wiki
=
markup
_postprocess
(
@repository
.
rendered_readme
)
=
markup
(
readme
.
name
,
readme
.
data
,
rendered:
@repository
.
rendered_readme
)
-
else
.row-content-block.second-block.center
%h3
.page-title
...
...
This diff is collapsed.
Click to expand it.
app/views/projects/blob/_markup.html.haml
View file @
4f2d6b3e
-
blob
.
load_all_data!
(
@repository
)
.file-content.wiki
=
render_
markup
(
blob
.
name
,
blob
.
data
)
=
markup
(
blob
.
name
,
blob
.
data
)
This diff is collapsed.
Click to expand it.
app/views/projects/blob/preview.html.haml
View file @
4f2d6b3e
...
...
@@ -6,7 +6,7 @@
=
markdown
(
@content
)
-
elsif
markup?
(
@blob
.
name
)
.file-content.wiki
=
raw
render_
markup
(
@blob
.
name
,
@content
)
=
raw
markup
(
@blob
.
name
,
@content
)
-
else
.file-content.code.js-syntax-highlight
-
unless
@diff_lines
.
empty?
...
...
This diff is collapsed.
Click to expand it.
app/views/projects/tree/_readme.html.haml
View file @
4f2d6b3e
...
...
@@ -5,4 +5,4 @@
%strong
=
readme
.
name
.file-content.wiki
=
render_
markup
(
readme
.
name
,
readme
.
data
)
=
markup
(
readme
.
name
,
readme
.
data
)
This diff is collapsed.
Click to expand it.
app/views/search/results/_snippet_blob.html.haml
View file @
4f2d6b3e
...
...
@@ -21,7 +21,7 @@
.file-content.wiki
-
snippet_chunks
.
each
do
|
chunk
|
-
unless
chunk
[
:data
].
empty?
=
render_
markup
(
snippet
.
file_name
,
chunk
[
:data
])
=
markup
(
snippet
.
file_name
,
chunk
[
:data
])
-
else
.file-content.code
.nothing-here-block
Empty file
...
...
This diff is collapsed.
Click to expand it.
app/views/shared/snippets/_blob.html.haml
View file @
4f2d6b3e
...
...
@@ -24,6 +24,6 @@
-
if
gitlab_markdown?
(
@snippet
.
file_name
)
=
preserve
(
markdown_field
(
@snippet
,
:content
))
-
else
=
render_
markup
(
@snippet
.
file_name
,
@snippet
.
content
)
=
markup
(
@snippet
.
file_name
,
@snippet
.
content
)
-
else
=
render
'shared/file_highlight'
,
blob:
@snippet
This diff is collapsed.
Click to expand it.
lib/gitlab/asciidoc.rb
View file @
4f2d6b3e
...
...
@@ -14,15 +14,9 @@ module Gitlab
# Public: Converts the provided Asciidoc markup into HTML.
#
# input - the source text in Asciidoc format
# context - a Hash with the template context:
# :commit
# :project
# :project_wiki
# :requested_path
# :ref
# asciidoc_opts - a Hash of options to pass to the Asciidoctor converter
#
def
self
.
render
(
input
,
context
,
asciidoc_opts
=
{})
def
self
.
render
(
input
,
asciidoc_opts
=
{})
asciidoc_opts
.
reverse_merge!
(
safe: :secure
,
backend: :gitlab_html5
,
...
...
This diff is collapsed.
Click to expand it.
lib/gitlab/other_markup.rb
View file @
4f2d6b3e
...
...
@@ -4,14 +4,8 @@ module Gitlab
# Public: Converts the provided markup into HTML.
#
# input - the source text in a markup format
# context - a Hash with the template context:
# :commit
# :project
# :project_wiki
# :requested_path
# :ref
#
def
self
.
render
(
file_name
,
input
,
context
)
def
self
.
render
(
file_name
,
input
)
html
=
GitHub
::
Markup
.
render
(
file_name
,
input
).
force_encoding
(
input
.
encoding
)
...
...
This diff is collapsed.
Click to expand it.
spec/helpers/markup_helper_spec.rb
View file @
4f2d6b3e
...
...
@@ -126,7 +126,7 @@ describe MarkupHelper do
it
"uses Wiki pipeline for markdown files"
do
allow
(
@wiki
).
to
receive
(
:format
).
and_return
(
:markdown
)
expect
(
helper
).
to
receive
(
:markdown_
render
).
with
(
'wiki content'
,
pipeline: :wiki
,
project_wiki:
@wiki
,
page_slug:
"nested/page"
)
expect
(
helper
).
to
receive
(
:markdown_
unsafe
).
with
(
'wiki content'
,
pipeline: :wiki
,
project_wiki:
@wiki
,
page_slug:
"nested/page"
)
helper
.
render_wiki_content
(
@wiki
)
end
...
...
@@ -135,7 +135,7 @@ describe MarkupHelper do
allow_any_instance_of
(
ApplicationSetting
).
to
receive
(
:current
).
and_return
(
::
ApplicationSetting
.
create_from_defaults
)
allow
(
@wiki
).
to
receive
(
:format
).
and_return
(
:asciidoc
)
expect
(
helper
).
to
receive
(
:asciidoc_
render
).
with
(
'wiki content'
)
expect
(
helper
).
to
receive
(
:asciidoc_
unsafe
).
with
(
'wiki content'
)
helper
.
render_wiki_content
(
@wiki
)
end
...
...
@@ -150,26 +150,26 @@ describe MarkupHelper do
end
end
describe
'
render_
markup'
do
describe
'markup'
do
let
(
:content
)
{
'Noël'
}
it
'preserves encoding'
do
expect
(
content
.
encoding
.
name
).
to
eq
(
'UTF-8'
)
expect
(
helper
.
render_
markup
(
'foo.rst'
,
content
).
encoding
.
name
).
to
eq
(
'UTF-8'
)
expect
(
helper
.
markup
(
'foo.rst'
,
content
).
encoding
.
name
).
to
eq
(
'UTF-8'
)
end
it
"delegates to #markdown_
render
when file name corresponds to Markdown"
do
it
"delegates to #markdown_
unsafe
when file name corresponds to Markdown"
do
expect
(
helper
).
to
receive
(
:gitlab_markdown?
).
with
(
'foo.md'
).
and_return
(
true
)
expect
(
helper
).
to
receive
(
:markdown_
render
).
and_return
(
'NOEL'
)
expect
(
helper
).
to
receive
(
:markdown_
unsafe
).
and_return
(
'NOEL'
)
expect
(
helper
.
render_
markup
(
'foo.md'
,
content
)).
to
eq
(
'NOEL'
)
expect
(
helper
.
markup
(
'foo.md'
,
content
)).
to
eq
(
'NOEL'
)
end
it
"delegates to #asciidoc_
render
when file name corresponds to AsciiDoc"
do
it
"delegates to #asciidoc_
unsafe
when file name corresponds to AsciiDoc"
do
expect
(
helper
).
to
receive
(
:asciidoc?
).
with
(
'foo.adoc'
).
and_return
(
true
)
expect
(
helper
).
to
receive
(
:asciidoc_
render
).
and_return
(
'NOEL'
)
expect
(
helper
).
to
receive
(
:asciidoc_
unsafe
).
and_return
(
'NOEL'
)
expect
(
helper
.
render_
markup
(
'foo.adoc'
,
content
)).
to
eq
(
'NOEL'
)
expect
(
helper
.
markup
(
'foo.adoc'
,
content
)).
to
eq
(
'NOEL'
)
end
end
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment