Method: Array#join_terms

Defined in:
lib/bblib/core/util/array.rb

#join_terms(seperator = :and, delimiter: ', ', encapsulate: nil) ⇒ Object

Conventient way to join an array into a comma seperated list with the last two elements seperated by a word like ‘and’ or ‘or’.

Parameters:

  • seperator (String) (defaults to: :and)

    The term or phrase to seperate the last two elements by

  • delimiter (String) (defaults to: ', ')

    The delimiter used in the join. This allows something other than ‘, ’ to be used

  • encapsulate (String) (defaults to: nil)

    This will optionally encapsulate each element with a character or string. Useful to wrap all elements in quotes.



81
82
83
84
85
86
# File 'lib/bblib/core/util/array.rb', line 81

def join_terms(seperator = :and, delimiter: ', ', encapsulate: nil)
  elements = (encapsulate ? map { |element| element.to_s.encapsulate(encapsulate) } : self)
  return elements.join(delimiter) if size <= 1
  return elements.join(" #{seperator} ") if size == 2
  [elements[0..-2].join(delimiter), elements.last].join(" #{seperator} ")
end