class PactBroker::Client::Matrix::AbbreviateVersionNumber

Constants

SEMVER_REGEX

Official regex from semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string

SHA1_REGEX

Public Class Methods

call(version_number) click to toggle source
# File lib/pact_broker/client/matrix/abbreviate_version_number.rb, line 10
def call version_number
  return unless version_number

  return replace_all_git_sha(version_number) if [SEMVER_REGEX, SHA1_REGEX].all?{|r| regex_match?(r, version_number) }

  return replace_all_git_sha(version_number) if regex_match?(Regexp.new("\\A#{SHA1_REGEX.source}\\z"), version_number)

  # Trim to some meaningful value in case we couldn't match anything, just not to mess with the output
  return version_number[0...60] + '...' if version_number.length > 60

  version_number
end

Private Class Methods

regex_match?(regex, value) click to toggle source

To support ruby2.2

# File lib/pact_broker/client/matrix/abbreviate_version_number.rb, line 26
def regex_match?(regex, value)
  !regex.match(value).nil?
end
replace_all_git_sha(version) click to toggle source
# File lib/pact_broker/client/matrix/abbreviate_version_number.rb, line 30
def replace_all_git_sha(version)
  version.gsub(SHA1_REGEX) { |val| val[0...7] + '...' }
end