Module: SeriesJoiner
- Included in:
- Array
- Defined in:
- lib/series_joiner.rb
Instance Method Summary collapse
-
#join_as_series(options = {}) ⇒ Object
Joins items in an array together in a grammatically correct manner.
Instance Method Details
#join_as_series(options = {}) ⇒ Object
Joins items in an array together in a grammatically correct manner.
Options:
-
delimiter
- inserted between items, except for the final two (default: ‘, ’) -
final_delimiter
- inserted between the final two items (if > 2), but before the conjunction (default: ”) -
conjunction
- inserted between the final two items (default: ‘ and ’)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/series_joiner.rb', line 8 def join_as_series( = {}) if defined?(I18n) default_delimiter = I18n.translate(:'series_joiner.default_delimiter', :locale => [:locale]) default_final_delimiter = I18n.translate(:'series_joiner.default_final_delimiter', :locale => [:locale]) default_conjunction = I18n.translate(:'series_joiner.default_conjunction', :locale => [:locale]) else default_delimiter = ', ' default_final_delimiter = '' default_conjunction = ' and ' end delimiter = [:delimiter] || default_delimiter final_delimiter = [:final_delimiter] || default_final_delimiter conjunction = [:conjunction] || default_conjunction sz = self.size if sz > 0 r = self[0] if sz > 1 if sz > 2 for i in 1..(sz - 2) r += delimiter + self[i] end r += final_delimiter end r += conjunction + self[sz - 1] end end return r end |