Sha256: 606ccdb618ef3a019f2c832b70ae0b8f749c4d11415f29fa3950bc236c8f489b
Contents?: true
Size: 861 Bytes
Versions: 49
Compression:
Stored size: 861 Bytes
Contents
# frozen_string_literal: true module WrapAndJoin class << self def included(base) base.const_set(:WRAP_AND_JOIN_JOIN_TOKEN, ', ') end end def wrap_and_join(wrapper: %w["], join: Array::WRAP_AND_JOIN_JOIN_TOKEN) validate_wrapper!(wrapper) validate_join!(join) wrapper << wrapper.first if wrapper.count == 1 map { |element| "#{wrapper[0]}#{element}#{wrapper[1]}" }.join(join) end private def validate_wrapper!(wrapper) raise ArgumentError, 'wrapper is nil' if wrapper.nil? raise ArgumentError, 'wrapper must be an Array' unless wrapper.is_a?(Array) raise ArgumentError, 'wrapper must be an Array of 1 or 2 wrapper elements' unless wrapper.count.between?(1, 2) end def validate_join!(join) return if join.nil? raise ArgumentError, 'join must be a String' unless join.is_a?(String) end end
Version data entries
49 entries across 49 versions & 2 rubygems