Sha256: bb79fc9c567b8247eaa1fcd100aa73f5e9e88644a281a58964eb6fa0622ca985
Contents?: true
Size: 840 Bytes
Versions: 4
Compression:
Stored size: 840 Bytes
Contents
# frozen_string_literal: true module SolidusVolumePricing class RangeFromString attr_reader :range_string RANGE_FORMAT = /\A\(?(\d+)(\.{2,3})(\d+)\)?\z/.freeze OPEN_ENDED = /\(?[0-9]+\+\)?/.freeze def initialize(range_string) @range_string = range_string end def to_range ::Range.new(*options_from_string) end private def options_from_string case range_string when OPEN_ENDED [range_string.tr("^0-9", '').to_i, Float::INFINITY] when RANGE_FORMAT [ Regexp.last_match[1].to_i, Regexp.last_match[3].to_i, Regexp.last_match[2].length == 3 ] else raise ArgumentError, I18n.t(:could_not_convert_to_range, scope: 'activerecord.errors.messages', string: range_string) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems