Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
6e3358a5
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6e3358a5
编写于
1月 12, 2016
作者:
R
Rubén Dávila
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove no longer required code. #3945
上级
c0385488
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
42 deletion
+9
-42
lib/gitlab/diff/highlight.rb
lib/gitlab/diff/highlight.rb
+9
-42
未找到文件。
lib/gitlab/diff/highlight.rb
浏览文件 @
6e3358a5
...
...
@@ -44,74 +44,41 @@ module Gitlab
return
[]
if
@lines
.
empty?
extract_line_prefixes
@code
=
unescape_html
(
raw_content
)
@highlighted_code
=
formatter
.
format
(
lexer
.
lex
(
@code
))
is_diff_line?
?
update_diff_lines
:
@highlighted_code
.
lines
update_diff_lines
end
private
def
is_diff_line?
@lines
.
first
.
is_a?
(
Gitlab
::
Diff
::
Line
)
end
def
text_lines
@text_lines
||=
(
is_diff_line?
?
@lines
.
map
(
&
:text
)
:
@lines
)
end
def
raw_content
@raw_content
||=
text_lines
.
join
(
is_diff_line?
?
"
\n
"
:
nil
)
@text_lines
||=
@lines
.
map
(
&
:text
)
end
def
extract_line_prefixes
@diff_line_prefixes
||=
begin
if
is_diff_line?
text_lines
.
map
{
|
line
|
line
.
sub!
(
/\A((\+|\-))/
,
''
);
$1
}
else
[]
end
end
@diff_line_prefixes
||=
text_lines
.
map
{
|
line
|
line
.
sub!
(
/\A((\+|\-))/
,
''
);
$1
}
end
def
update_diff_lines
@highlighted_code
.
lines
.
each_with_index
do
|
line
,
i
|
diff_line
=
@lines
[
i
]
@lines
.
each_with_index
do
|
line
,
i
|
line_prefix
=
@diff_line_prefixes
[
i
]
||
' '
# ignore highlighting for "match" lines
next
if
diff_
line
.
type
==
'match'
next
if
line
.
type
==
'match'
case
diff_
line
.
type
case
line
.
type
when
'new'
,
nil
line
=
new_lines
[
diff_
line
.
new_pos
-
1
]
highlighted_line
=
new_lines
[
line
.
new_pos
-
1
]
when
'old'
line
=
old_lines
[
diff_
line
.
old_pos
-
1
]
highlighted_line
=
old_lines
[
line
.
old_pos
-
1
]
end
# Only update text if line is found. This will prevent
# issues with submodules given the line only exists in diff content.
diff_line
.
text
=
line
.
gsub!
(
/\A\s/
,
line_prefix
)
if
line
line
.
text
=
highlighted_
line
.
gsub!
(
/\A\s/
,
line_prefix
)
if
line
end
@lines
end
def
lexer
Rouge
::
Lexer
.
guess
(
filename:
@file_name
,
source:
@code
).
new
rescue
Rouge
::
Lexers
::
PlainText
.
new
end
def
unescape_html
(
content
)
text
=
CGI
.
unescapeHTML
(
content
)
text
.
gsub!
(
' '
,
' '
)
text
end
def
formatter
self
.
class
.
formatter
end
def
old_lines
@old_lines
||=
begin
lines
=
self
.
class
.
process_file
(
diff_repository
,
diff_old_ref
,
diff_old_path
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录