Module: Xqsr3::ArrayUtilities::JoinWithOr
- Extended by:
- JoinWithOr
- Included in:
- JoinWithOr
- Defined in:
- lib/xqsr3/array_utilities/join_with_or.rb
Instance Method Summary collapse
-
#join_with_or(ar, **options) ⇒ Object
Joins an array with grammatical appropriateness (with an ‘or’).
Instance Method Details
#join_with_or(ar, **options) ⇒ Object
Joins an array with grammatical appropriateness (with an ‘or’)
Parameters
-
*Required parameters*:
ar
- Array
-
The array whose contents are to be joined
-
*Options parameters*:
options
- Hash
-
Options that control the behaviour of the
method
-
Options:
:or
- String
-
A string that is used instead of ‘or’
:oxford_comma
- boolean
-
Determines whether an Oxford comma
will be used. Default is +true+
-
:quote_char
[String] The quote character. Default is emptystring
-
:separator
[String] The separator character. Default is ‘,’
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/xqsr3/array_utilities/join_with_or.rb', line 82 def join_with_or ar, ** ::Xqsr3::Quality::ParameterChecking.check_parameter ar, 'ar', type: ::Array, allow_nil: true ::Xqsr3::Quality::ParameterChecking.check_parameter , 'options', type: ::Hash, allow_nil: false ::Xqsr3::Quality::ParameterChecking.check_parameter [:or], ':or', type: ::String, option: true, allow_nil: true ::Xqsr3::Quality::ParameterChecking.check_parameter [:oxford_comma], ':oxford_comma', types: [ ::FalseClass, ::TrueClass ], option: true, allow_nil: true ::Xqsr3::Quality::ParameterChecking.check_parameter [:quote_char], ':quote_char', type: ::String, option: true, allow_nil: true ::Xqsr3::Quality::ParameterChecking.check_parameter [:separator], ':separator', type: ::String, option: true, allow_nil: true return '' if ar.nil? return '' if ar.empty? separator = [:separator] || ',' or_word = [:or] || 'or' ox_comma = (.has_key?(:oxford_comma) && ![:oxford_comma]) ? '' : separator quote_char = [:quote_char] ar = ar.map { |v| "#{quote_char}#{v}#{quote_char}" } if quote_char case ar.size when 1 ar[0] when 2 "#{ar[0]} #{or_word} #{ar[1]}" else "#{ar[0...-1].join(separator + ' ')}#{ox_comma} #{or_word} #{ar[-1]}" end end |