Module: DiscussionOnDiff
- Extended by:
- ActiveSupport::Concern
- Included in:
- DiffDiscussion, LegacyDiffDiscussion
- Defined in:
- app/models/concerns/discussion_on_diff.rb
Overview
Contains functionality shared between DiffDiscussion and LegacyDiffDiscussion.
Constant Summary collapse
- NUMBER_OF_TRUNCATED_DIFF_LINES =
16- TruncatedDiffLinesError =
Class.new(StandardError)
Instance Method Summary collapse
- #diff_discussion? ⇒ Boolean
- #diff_file ⇒ Object
- #file_new_path ⇒ Object
- #line_code_in_diffs(diff_refs) ⇒ Object
- #on_merge_request_commit? ⇒ Boolean
-
#truncated_diff_lines(highlight: true, diff_limit: nil) ⇒ Object
Returns an array of at most 16 highlighted lines above a diff note.
Instance Method Details
#diff_discussion? ⇒ Boolean
28 29 30 |
# File 'app/models/concerns/discussion_on_diff.rb', line 28 def diff_discussion? true end |
#diff_file ⇒ Object
67 68 69 70 71 72 |
# File 'app/models/concerns/discussion_on_diff.rb', line 67 def diff_file strong_memoize(:diff_file) do # Falling back here is important as `note_diff_files` are created async. fetch_preloaded_diff_file || first_note.diff_file end end |
#file_new_path ⇒ Object
32 33 34 |
# File 'app/models/concerns/discussion_on_diff.rb', line 32 def file_new_path first_note.position.new_path end |
#line_code_in_diffs(diff_refs) ⇒ Object
74 75 76 77 78 79 80 |
# File 'app/models/concerns/discussion_on_diff.rb', line 74 def line_code_in_diffs(diff_refs) if active?(diff_refs) line_code elsif diff_refs && created_at_diff?(diff_refs) original_line_code end end |
#on_merge_request_commit? ⇒ Boolean
36 37 38 |
# File 'app/models/concerns/discussion_on_diff.rb', line 36 def on_merge_request_commit? for_merge_request? && commit_id.present? end |
#truncated_diff_lines(highlight: true, diff_limit: nil) ⇒ Object
Returns an array of at most 16 highlighted lines above a diff note
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/models/concerns/discussion_on_diff.rb', line 41 def truncated_diff_lines(highlight: true, diff_limit: nil) return [] unless on_text? return [] if diff_line.nil? diff_limit = [diff_limit, NUMBER_OF_TRUNCATED_DIFF_LINES].compact.min lines = highlight ? highlighted_diff_lines : diff_lines initial_line_index = [diff_line.index - diff_limit + 1, 0].max prev_lines = [] lines = lines[initial_line_index..diff_line.index] return [] if lines.nil? lines.each do |line| if line. prev_lines.clear else prev_lines << line end end prev_lines end |