to_sentence
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (0)
- 3.1.0 (0)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (38)
- 4.1.8 (0)
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (3)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
to_sentence(options = {})
public
Converts the array to a comma-separated sentence where the last element is joined by the connector word. Options:
-
:words_connector - The sign or word used to join the elements in arrays with two or more elements (default: “, ”)
-
:two_words_connector - The sign or word used to join the elements in arrays with two elements (default: “ and ”)
-
:last_word_connector - The sign or word used to join the last element in arrays with three or more elements (default: “, and ”)
example
[‘one’,‘two’,‘three’].to_sentence # => “one, two, and three”
Sometimes, you need the "Oxford comma"
Re: Gramatical error
We invited the strippers, JFK, and Stalin.
versus the appositive phrase:
We invited the strippers, JFK and Stalin.
(Really, you need to see the comic to appreciate the difference.)
Grammatical error
Hi - not sure where I would submit this so just putting here. My apologies if not in the right place.
default: “, and ” - this is grammatically wrong. There should be no comma with the last and.
Example:
[‘one’, ‘two’, ‘three’].to_sentence
should give: “one, two and three”
There is no ‘ .… , and ’ which is considered grammatically incorrect I feel. The ‘and’ does it’s job in the English language quite well by joining the two words it’s in between.
Thank you.
No grammatical error
rajivekjain:
“A, B, and C” is correct in English, and is preferred by most style manuals. “A, B and C” is also correct in English. See en.wikipedia.org/wiki/Serial_comma
to_sentence_exclusive
By default, to_sentence combines elements inclusively by using ", and ".
If you want to be exclusive and combine the elements using ", or ", you can either pass in lengthy options to to_sentence or use this handy extension I made to add to_sentence_exclusive to the Array class.
class Array # Adds a simple method that overloads `to_sentence` except it uses "or" instead of "and", which is the default. # The reason for this is because `to_sentence` is extremely flexible but that results in a lot of code to get # the simple result of using "or" instead of "and". This makes it simple. # def to_sentence_exclusive self.to_sentence( two_words_connector: " or ", last_word_connector: ", or " ) end end
Just drop this in config/initializers/to_sentence_exclusive.rb, restart your server or console and Bob’s your uncle.