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

Version Path
dsu-3.0.5 lib/core/ruby/wrap_and_join.rb
dsu-3.0.4 lib/core/ruby/wrap_and_join.rb
doto-0.0.1.pre.alpha.1 lib/core/ruby/wrap_and_join.rb
dsu-3.0.3 lib/core/ruby/wrap_and_join.rb
dsu-3.0.1 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.beta.3 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.beta.2 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.beta.1 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.beta.0 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.12 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.11 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.10 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.9 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.8 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.7 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.6 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.5 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.4 lib/core/ruby/wrap_and_join.rb
dsu-3.0.0.alpha.3 lib/core/ruby/wrap_and_join.rb