module IHP.NameSupport.Inflections.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"
    ]