module YAVDB::Utils::SemVer

Constants

SEMANTIC_INTERVAL_REGEX

Public Class Methods

clean_versions(versions) click to toggle source
# File lib/yavdb/utils/semver.rb, line 23
def self.clean_versions(versions)
  return if versions.nil? || (!versions.is_a?(String) && !versions.is_a?(Array))

  versions = to_array(versions).map do |version|
    if semantic_interval?(version)
      convert_to_semver(version)
    else
      split_versions(version)
    end
  end

  versions
    .flatten
    .map(&:strip)
    .select { |str| str != '-' && !str.empty? }
end

Private Class Methods

convert_to_semver(version) click to toggle source
# File lib/yavdb/utils/semver.rb, line 56
def convert_to_semver(version)
  ver_tmp = version
              .scan(SEMANTIC_INTERVAL_REGEX)
              .flatten
              .map { |v| SemanticInterval.parse(v) }

  if ver_tmp.any?
    ver_tmp
  else
    version
  end
end
semantic_interval?(version) click to toggle source
# File lib/yavdb/utils/semver.rb, line 52
def semantic_interval?(version)
  version =~ SEMANTIC_INTERVAL_REGEX
end
split_versions(version) click to toggle source
# File lib/yavdb/utils/semver.rb, line 69
def split_versions(version)
  version
    .strip
    .split(%r{,|\|\|})
end
to_array(versions) click to toggle source
# File lib/yavdb/utils/semver.rb, line 44
def to_array(versions)
  versions = [versions] if versions.is_a?(String)

  versions
    .flatten
    .reject { |str| str.strip.empty? }
end