{-# LANGUAGE OverloadedStrings #-}
-- |
-- Module      :  Text.Countable
-- Copyright   :  © 2016 Brady Ouren
-- License     :  MIT
--
-- Maintainer  :  Brady Ouren <brady@andand.co>
-- Stability   :  experimental
-- Portability :  portable
--
-- default seed data for transformations

module Text.Countable.Data where

import Data.Text (Text)

-- |These default inflections stolen from the Ruby inflection library - see
-- https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb
defaultPlurals' :: [(Text, Text)]
defaultPlurals' :: [(Text, Text)]
defaultPlurals' =
  [ (Text
"$", Text
"s")
  , (Text
"s$", Text
"s")
  , (Text
"^(ax|test)is$", Text
"\\1es")
  , (Text
"(octop|vir)us$", Text
"\\1i")
  , (Text
"(octop|vir)i$", Text
"\\1i")
  , (Text
"(alias|status)$", Text
"\\1es")
  , (Text
"(bu)s$", Text
"\\1ses")
  , (Text
"(buffal|tomat)o$", Text
"\\1oes")
  , (Text
"([ti])um$", Text
"\\1a")
  , (Text
"([ti])a$", Text
"\\1a")
  , (Text
"sis$", Text
"ses")
  , (Text
"(?:([^f])fe|([lr])f)$", Text
"\\1\2ves")
  , (Text
"(hive)$", Text
"\\1s")
  , (Text
"([^aeiouy]|qu)y$", Text
"\\1ies")
  , (Text
"(x|ch|ss|sh)$", Text
"\\1es")
  , (Text
"(matr|vert|ind)(?:ix|ex)$", Text
"\\1ices")
  , (Text
"^(m|l)ouse$", Text
"\\1ice")
  , (Text
"^(m|l)ice$", Text
"\\1ice")
  , (Text
"^(ox)$", Text
"\\1en")
  , (Text
"^(oxen)$", Text
"\\1")
  , (Text
"(quiz)$", Text
"\\1zes")
  ]

-- |These default inflections stolen from the Ruby inflection library - see
-- https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb
defaultSingulars' :: [(Text, Text)]
defaultSingulars' :: [(Text, Text)]
defaultSingulars' =
  [ (Text
"s$", Text
"")
  , (Text
"(ss)$", Text
"\\1")
  , (Text
"(n)ews$", Text
"\\1ews")
  , (Text
"([ti])a$", Text
"\\1um")
  , (Text
"((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$", Text
"\\1sis")
  , (Text
"(^analy)(sis|ses)$", Text
"\\1sis")
  , (Text
"([^f])ves$", Text
"\\1fe")
  , (Text
"(hive)s$", Text
"\\1")
  , (Text
"(tive)s$", Text
"\\1")
  , (Text
"([lr])ves$", Text
"\\1f")
  , (Text
"([^aeiouy]|qu)ies$", Text
"\\1y")
  , (Text
"(s)eries$", Text
"\\1eries")
  , (Text
"(m)ovies$", Text
"\\1ovie")
  , (Text
"(x|ch|ss|sh)es$", Text
"\\1")
  , (Text
"^(m|l)ice$", Text
"\\1ouse")
  , (Text
"(bus)(es)?$", Text
"\\1")
  , (Text
"(o)es$", Text
"\\1")
  , (Text
"(shoe)s$", Text
"\\1")
  , (Text
"(cris|test)(is|es)$", Text
"\\1is")
  , (Text
"^(a)x[ie]s$", Text
"\\1xis")
  , (Text
"(octop|vir)(us|i)$", Text
"\\1us")
  , (Text
"(alias|status)(es)?$", Text
"\\1")
  , (Text
"^(ox)en", Text
"\\1")
  , (Text
"(vert|ind)ices$", Text
"\\1ex")
  , (Text
"(matr)ices$", Text
"\\1ix")
  , (Text
"(quiz)zes$", Text
"\\1")
  , (Text
"(database)s$", Text
"\\1")
  ]

-- |These default irregular inflections stolen from the Ruby inflection library - see
-- https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb
defaultIrregulars' :: [(Text, Text)]
defaultIrregulars' :: [(Text, Text)]
defaultIrregulars' =
  -- from singular to plural
  [ (Text
"person", Text
"people")
  , (Text
"man", Text
"men")
  , (Text
"child", Text
"children")
  , (Text
"sex", Text
"sexes")
  , (Text
"move", Text
"moves")
  , (Text
"zombie", Text
"zombies")
  ]

-- |These default uncountable inflections stolen from the Ruby inflection library - see
-- https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb
defaultUncountables' :: [Text]
defaultUncountables' :: [Text]
defaultUncountables' =
  [ Text
"equipment"
  , Text
"information"
  , Text
"rice"
  , Text
"money"
  , Text
"species"
  , Text
"series"
  , Text
"fish"
  , Text
"sheep"
  , Text
"jeans"
  , Text
"police"
  ]