class String PUNCTUATION_MARKS = [".", "!", "?"] def titleize gsub(/\w+/i) do |match| ret = match.downcase ret[0] = ret[0].upcase ret end end def titleize! replace titleize end def punctuated? PUNCTUATION_MARKS.include?(self[-1]) end def unpunctuated? !punctuated? end end class Integer def to_dots "•" * self end end class Array def to_list(separator: nil) separator = "and" if separator.nil? if self.length == 0 nil elsif self.length == 1 self.first elsif self.length == 2 "#{self.first} #{separator} #{self.last}" else ret = clone ret[ret.length - 1] = "#{separator} #{ret[ret.length - 1]}" ret.join(", ") end end def to_arcanum_with_dots "#{self[0].to_s.titleize} #{self[1].to_dots}" end end