Sha256: 30c7805230fbeb06959c4e6454ab40fc3d895c6d7fc91077aa5185321dd87efa
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true require "versionaire" module Gemsmith module Gem # Defines a gem requirement. This is a partial, cleaner implementation of the RubyGems # `Gem::Requirement` object. # :reek:MissingSafeMethod class Requirement def self.operators [">", ">=", "=", "!=", "<", "<=", "~>"] end def self.version_segments version String(version).split(Versionaire::DELIMITER).map(&:to_i) end def self.for object case object when String operator, version = object.split new operator: operator, raw_version: version else fail Errors::RequirementConversion, %(Invalid string conversion. Use: "<operator> <version>".) end end attr_reader :operator, :raw_version, :version_segments, :version def initialize operator: ">=", raw_version: "0" @operator = operator @raw_version = raw_version @version_segments = self.class.version_segments raw_version @version = Versionaire::Version version_segments validate! end def to_s "#{operator} #{version}" end private def validate! operators = self.class.operators return true if operators.include? operator fail Errors::RequirementOperator, %(Invalid gem requirement operator. Use: #{operators.join ", "}.) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gemsmith-14.11.0 | lib/gemsmith/gem/requirement.rb |
gemsmith-14.10.1 | lib/gemsmith/gem/requirement.rb |
gemsmith-14.10.0 | lib/gemsmith/gem/requirement.rb |