diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-04-23 20:43:21 +0300 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-04-25 21:41:06 +0300 |
commit | 81a21e57961356a0924b7b1529696f79eded4630 (patch) | |
tree | eecd1f4c2c26902d3c5bca837918c751925b04b6 /app | |
parent | 6bac823ad4e7de25d478a96097386ecde3b1dc3b (diff) |
CommitRange improvements
Diffstat (limited to 'app')
-rw-r--r-- | app/models/commit_range.rb | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/app/models/commit_range.rb b/app/models/commit_range.rb index b3712aed056..19b1a218e45 100644 --- a/app/models/commit_range.rb +++ b/app/models/commit_range.rb @@ -45,12 +45,10 @@ class CommitRange raise ArgumentError, "invalid CommitRange string format: #{range_string}" end - @inclusive = range_string !~ /\.{3}/ + @inclusive = !range_string.include?('...') @sha_from, @notation, @sha_to = range_string.split(/(\.{2,3})/, 2) @project = project - - @_commit_map = {} end def inspect @@ -63,7 +61,7 @@ class CommitRange # Returns `[nil, nil]` if `valid_commits?` is falsey def to_a if valid_commits? - [commit(sha_from), commit(sha_to)] + [commit_from, commit_to] else [nil, nil] end @@ -104,25 +102,24 @@ class CommitRange return nil unless project.present? return false unless project.valid_repo? - commit(sha_from).present? && commit(sha_to).present? + commit_from.present? && commit_to.present? end def persisted? true end - private + def commit_from + @commit_from ||= project.repository.commit(sha_from_as_param) + end - def sha_from_as_param - sha_from + (inclusive? ? '^' : '') + def commit_to + @commit_to ||= project.repository.commit(sha_to) end - def commit(sha) - unless @_commit_map[sha] - # FIXME (rspeicher): Law of Demeter - @_commit_map[sha] = project.repository.commit(sha) - end + private - @_commit_map[sha] + def sha_from_as_param + sha_from + (inclusive? ? '^' : '') end end |