Popularity
6.7
Growing
Activity
0.0
Stable
9
4
6

Monthly Downloads: 25
Programming language: Haskell
License: MIT License
Tags: Text    
Latest version: v0.3.0

countable-inflections alternatives and similar packages

Based on the "Text" category.
Alternatively, view countable-inflections alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of countable-inflections or a related project?

Add another 'Text' Package

README

Countable Inflections

License MIT Hackage Stackage LTS Build Status

This library implements pluralization and singularization in a similar way to the rails inflectors

It uses regexes to define the non-standard transformations and therefore doesn't provide much safety. If you need to provide the same pluralization and singularization which rails does out of the box, this will work the same. If you want more you should be using inflections-hs which uses megaparsec to give you more guarantees

Usage

λ: pluralize "person"
"people"

λ: singularize "branches"
"branch"

These can also be given custom inflection matchers

λ: :t singularizeWith
[Inflection] -> Text -> Text

There are 3 different types of transformations:

Match

Takes a PCRE regex and a replacement string.

λ: :t makeMatchMapping
[(RegexPattern, RegexReplace)] -> [Inflection]

λ: let mapping = makeMatchMapping [("(octop)us", "\\1i")]
λ: pluralizeWith mapping "octopus"
"octopi"

Irregular

From singular to plural with no greater pattern.

λ: :t makeIrregularMapping
[(Singular, Plural)] -> [Inflection]

λ: let mapping = makeIrregularMapping [("zombie","zombies")]
λ: pluralizeWith mapping "zombie"
"zombies"

Uncountable

Doesn't have a mapping, word stays the same) so it has the type:

[Text] -> [Inflection]

Inflect

In general you can input a number and singularize or pluralize based on the count, for example:

setReport = do
  sets <- getSets
  n <- length sets
  print $ show n ++ " " ++ inflect "sets" n

This way it'll list as "1 set" or "5 sets" based on the input.

License

MIT - see [the LICENSE file](LICENSE.md).


*Note that all licence references and agreements mentioned in the countable-inflections README section above are relevant to that project's source code only.