A bit of refactoring. #3945
This commit is contained in:
parent
d83275620a
commit
8b079315d9
4 changed files with 12 additions and 10 deletions
|
@ -16,7 +16,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def highlighted_diff_lines
|
||||
Gitlab::Diff::Highlight.process_diff_lines(self)
|
||||
Gitlab::Diff::Highlight.process_diff_lines(new_path, diff_lines)
|
||||
end
|
||||
|
||||
def mode_changed?
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
module Gitlab
|
||||
module Diff
|
||||
class Highlight
|
||||
def self.process_diff_lines(diff_file)
|
||||
processor = new(diff_file)
|
||||
def self.process_diff_lines(file_name, diff_lines)
|
||||
processor = new(file_name, diff_lines)
|
||||
processor.highlight
|
||||
end
|
||||
|
||||
def initialize(diff_file)
|
||||
text_lines = diff_file.diff_lines.map(&:text)
|
||||
@diff_file = diff_file
|
||||
@diff_lines = diff_file.diff_lines
|
||||
def initialize(file_name, diff_lines)
|
||||
text_lines = diff_lines.map(&:text)
|
||||
@file_name = file_name
|
||||
@diff_lines = diff_lines
|
||||
@diff_line_prefixes = text_lines.map { |line| line.sub!(/\A((\+|\-)\s*)/, '');$1 }
|
||||
@raw_lines = text_lines.join("\n")
|
||||
end
|
||||
|
@ -32,7 +32,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def lexer
|
||||
parent = Rouge::Lexer.guess(filename: @diff_file.new_path, source: @code).new rescue Rouge::Lexers::PlainText.new
|
||||
parent = Rouge::Lexer.guess(filename: @file_name, source: @code).new rescue Rouge::Lexers::PlainText.new
|
||||
Rouge::Lexers::GitlabDiff.new(parent_lexer: parent)
|
||||
end
|
||||
|
||||
|
@ -43,7 +43,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def formatter
|
||||
@formatter ||= Rouge::Formatters::HTMLGitlab.new(
|
||||
Rouge::Formatters::HTMLGitlab.new(
|
||||
nowrap: true,
|
||||
cssclass: 'code highlight',
|
||||
lineanchors: true,
|
||||
|
|
|
@ -2,6 +2,8 @@ Rouge::Token::Tokens.token(:InlineDiff, 'idiff')
|
|||
|
||||
module Rouge
|
||||
module Lexers
|
||||
# This new Lexer is required in order to avoid the inline diff markup
|
||||
# to be tokenized, it will be rendered as raw HTML code if that happens.
|
||||
class GitlabDiff < RegexLexer
|
||||
title "GitLab Diff"
|
||||
tag 'gitlab_diff'
|
||||
|
|
|
@ -9,7 +9,7 @@ describe Gitlab::Diff::Highlight, lib: true do
|
|||
let(:diff_file) { Gitlab::Diff::File.new(diff) }
|
||||
|
||||
describe '.process_diff_lines' do
|
||||
let(:diff_lines) { Gitlab::Diff::Highlight.process_diff_lines(diff_file) }
|
||||
let(:diff_lines) { Gitlab::Diff::Highlight.process_diff_lines(diff_file.new_path, diff_file.diff_lines) }
|
||||
|
||||
it 'should return Gitlab::Diff::Line elements' do
|
||||
expect(diff_lines.first).to be_an_instance_of(Gitlab::Diff::Line)
|
||||
|
|
Loading…
Reference in a new issue