From c0faf91ff23815404a95cf4510b43dcf5e331c4f Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Sat, 2 May 2015 23:11:21 -0400 Subject: Add `to_reference` for models that support references Now there is a single source of information for which attribute a model uses to be referenced, and its special character. --- app/models/commit_range.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app/models/commit_range.rb') diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index e6456198264..b98f939a115 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -19,6 +19,7 @@ # class CommitRange include ActiveModel::Conversion + include Referable attr_reader :sha_from, :notation, :sha_to @@ -59,6 +60,14 @@ class CommitRange "#{sha_from[0..7]}#{notation}#{sha_to[0..7]}" end + def to_reference(from_project = nil) + if cross_project_reference?(from_project) + "#{project.to_reference}@#{to_s}" + else + to_s + end + end + # Returns a String for use in a link's title attribute def reference_title "Commits #{suffixed_sha_from} through #{sha_to}" -- cgit v1.2.1 From 136ab73803850c10588b369862b1e5524849d31c Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 12 May 2015 17:58:29 -0400 Subject: Update CommitRange#to_reference to use full SHAs We only want them shortened by the filter, which calls to_s --- app/models/commit_range.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'app/models/commit_range.rb') diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index b98f939a115..fb1f6d09be6 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -61,11 +61,14 @@ class CommitRange end def to_reference(from_project = nil) + # Not using to_s because we want the full SHAs + reference = sha_from + notation + sha_to + if cross_project_reference?(from_project) - "#{project.to_reference}@#{to_s}" - else - to_s + reference = project.to_reference + '@' + reference end + + reference end # Returns a String for use in a link's title attribute -- cgit v1.2.1 From b88da58cb6272a86b6df2e4efe392f10e689a6b2 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 14 May 2015 16:59:39 -0400 Subject: Add `reference_pattern` to Referable models --- app/models/commit_range.rb | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'app/models/commit_range.rb') diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index fb1f6d09be6..86fc9eb01a3 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -29,10 +29,24 @@ class CommitRange # See `exclude_start?` attr_reader :exclude_start - # The beginning and ending SHA sums can be between 6 and 40 hex characters, - # and the range selection can be double- or triple-dot. + # The beginning and ending SHAs can be between 6 and 40 hex characters, and + # the range notation can be double- or triple-dot. PATTERN = /\h{6,40}\.{2,3}\h{6,40}/ + def self.reference_prefix + '@' + end + + # Pattern used to extract commit range references from text + # + # This pattern supports cross-project references. + def self.reference_pattern + %r{ + (?:#{Project.reference_pattern}#{reference_prefix})? + (?#{PATTERN}) + }x + end + # Initialize a CommitRange # # range_string - The String commit range. -- cgit v1.2.1