class Versionaire::Converter
Aids with converting objects into valid versions.
Attributes
Public Class Methods
Source
# File lib/versionaire/function.rb, line 26 def initialize object, model: Version @object = object @model = model end
Public Instance Methods
Source
# File lib/versionaire/function.rb, line 38 def from_array body = "Use: [<major>, <minor>, <patch>], [<major>, <minor>], [<major>], or []." fail Error, error_message(object, body) unless (0..3).cover? object.size model.new(**attributes_for(object.pad(0, 3))) end
Source
# File lib/versionaire/function.rb, line 45 def from_hash body = "Use: {major: <major>, minor: <minor>, patch: <patch>}, " \ "{major: <major>, minor: <minor>}, {major: <major>}, or {}." fail Error, error_message(object, body) unless required_keys? Version[**object] end
Source
# File lib/versionaire/function.rb, line 53 def from_object fail Error, error_message(object, "Use: String, Array, Hash, or Version.") end
Source
# File lib/versionaire/function.rb, line 31 def from_string body = "Use: <major>.<minor>.<patch>, <major>.<minor>, <major>, or empty string." fail Error, error_message(object, body) unless PATTERN.match? object string_to_version end
Private Instance Methods
Source
# File lib/versionaire/function.rb, line 68 def attributes_for(values) = model.members.zip(values).to_h def required_keys? = object.keys.all? { |key| model.members.include? key } def error_message(object, body) = "Invalid version conversion: #{object}. #{body}" end private_constant :Converter
Source
# File lib/versionaire/function.rb, line 72 def error_message(object, body) = "Invalid version conversion: #{object}. #{body}" end
Source
# File lib/versionaire/function.rb, line 70 def required_keys? = object.keys.all? { |key| model.members.include? key } def error_message(object, body) = "Invalid version conversion: #{object}. #{body}" end private_constant :Converter end
Source
# File lib/versionaire/function.rb, line 61 def string_to_version object.split(DELIMITER) .map(&:to_i) .then { |numbers| numbers.pad 0, 3 } .then { |values| model.new(**attributes_for(values)) } end