diff options
Diffstat (limited to 'app/presenters')
-rw-r--r-- | app/presenters/blob_presenter.rb | 19 | ||||
-rw-r--r-- | app/presenters/blobs/unfold_presenter.rb | 23 |
2 files changed, 19 insertions, 23 deletions
diff --git a/app/presenters/blob_presenter.rb b/app/presenters/blob_presenter.rb index f85c1a237a6..2cf3278d240 100644 --- a/app/presenters/blob_presenter.rb +++ b/app/presenters/blob_presenter.rb @@ -3,13 +3,12 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated presents :blob - def highlight(since: nil, to: nil, plain: nil) + def highlight(plain: nil) load_all_blob_data Gitlab::Highlight.highlight( blob.path, - limited_blob_data(since: since, to: to), - since: since, + blob.data, language: blob.language_from_gitattributes, plain: plain ) @@ -24,18 +23,4 @@ class BlobPresenter < Gitlab::View::Presenter::Delegated def load_all_blob_data blob.load_all_data! if blob.respond_to?(:load_all_data!) end - - def limited_blob_data(since: nil, to: nil) - return blob.data if since.blank? || to.blank? - - limited_blob_lines(since, to).join - end - - def limited_blob_lines(since, to) - all_lines[since - 1..to - 1] - end - - def all_lines - @all_lines ||= blob.data.lines - end end diff --git a/app/presenters/blobs/unfold_presenter.rb b/app/presenters/blobs/unfold_presenter.rb index f4672d22fc9..21a1e1309e0 100644 --- a/app/presenters/blobs/unfold_presenter.rb +++ b/app/presenters/blobs/unfold_presenter.rb @@ -21,19 +21,20 @@ module Blobs load_all_blob_data @subject = blob + @all_lines = blob.data.lines super(params) if full? - self.attributes = { since: 1, to: all_lines.size, bottom: false, unfold: false, offset: 0, indent: 0 } + self.attributes = { since: 1, to: @all_lines.size, bottom: false, unfold: false, offset: 0, indent: 0 } end end # Returns an array of Gitlab::Diff::Line with match line added def diff_lines - diff_lines = limited_blob_lines(since, to).map.with_index do |line, index| - full_line = line.delete("\n") + diff_lines = lines.map.with_index do |line, index| + full_line = limited_blob_lines[index].delete("\n") - Gitlab::Diff::Line.new(full_line, nil, nil, nil, nil, rich_text: lines[index]) + Gitlab::Diff::Line.new(full_line, nil, nil, nil, nil, rich_text: line) end add_match_line(diff_lines) @@ -42,7 +43,7 @@ module Blobs end def lines - @lines ||= highlight(since: since, to: to).lines.map(&:html_safe) + @lines ||= limit(highlight.lines).map(&:html_safe) end def match_line_text @@ -58,7 +59,7 @@ module Blobs def add_match_line(diff_lines) return unless unfold? - if bottom? && to < all_lines.size + if bottom? && to < @all_lines.size old_pos = to - offset new_pos = to elsif since != 1 @@ -72,5 +73,15 @@ module Blobs bottom? ? diff_lines.push(match_line) : diff_lines.unshift(match_line) end + + def limited_blob_lines + @limited_blob_lines ||= limit(@all_lines) + end + + def limit(lines) + return lines if full? + + lines[since - 1..to - 1] + end end end |