about summary refs log tree commit diff
path: root/users/aspen/xanthous/src/Xanthous/Util/Inflection.hs
blob: 724f2339dd21a48c096821862acb913772ce79c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

module Xanthous.Util.Inflection
  ( toSentence
  ) where

import Xanthous.Prelude

toSentence :: (MonoFoldable mono, Element mono ~ Text) => mono -> Text
toSentence xs = case reverse . toList $ xs of
  [] -> ""
  [x] -> x
  [b, a] -> a <> " and " <> b
  (final : butlast) ->
    intercalate ", " (reverse butlast) <> ", and " <> final