lib/pronto/formatter/github_status_formatter/sentence.rb



module Pronto
  module Formatter
    class GithubStatusFormatter
      class Sentence
        def initialize(words)
          @words = words
        end

        def to_s
          case words.size
          when 0
            ''
          when 1
            words[0].to_s.dup
          when 2
            "#{words[0]}#{WORD_CONNECTORS[:two_words_connector]}#{words[1]}"
          else
            to_oxford_comma_sentence
          end
        end

        private

        attr_reader :words

        WORD_CONNECTORS = {
          words_connector: ', ',
          two_words_connector: ' and ',
          last_word_connector: ', and '
        }.freeze

        private_constant :WORD_CONNECTORS

        def to_oxford_comma_sentence
          "#{words[0...-1].join(WORD_CONNECTORS[:words_connector])}"\
            "#{WORD_CONNECTORS[:last_word_connector]}"\
            "#{words[-1]}"
        end
      end
    end
  end
end