inflections
Inflections library for Haskell
https://github.com/stackbuilders/inflections-hs
| LTS Haskell 22.44: | 0.4.0.7 |
| Stackage Nightly 2023-12-26: | 0.4.0.7 |
| Latest on Hackage: | 0.4.0.7 |
inflections-0.4.0.7@sha256:1fd4a14864f24d643c0f19d5c47ad022c8c9748d5842ebb2ec892ba98394de53,3551Module documentation for 0.4.0.7
- Text
String Inflections for Haskell
This library is a partial port of the
String Inflector
from Ruby on Rails. It currently implements methods such as parameterize,
transliterate, camelize, underscore and dasherize. Please see the
haddock documentation for a complete list of the functions implemented by this
library.
Unlike the ActiveSupport (Rails) and Ember implementations of inflections, this
library uses a parser to verify the input to functions like camelize. This is
done to ensure that the output strings adhere to the syntax that they are
supposed to generate. You can read more about the philosophy behind this library
in the
Haddock documentation.
Usage
The following examples demonstrate usage of the parameterize, transliterate
and camelize functions:
λ: parameterize "Hola. ¿Cómo estás?"
"hola-como-estas"
λ: transliterate "Hola. ¿Cómo estás?"
"Hola. ?Como estas?"
λ: import Control.Monad (liftM)
λ: liftM camelize $ parseSnakeCase "hey_there"
"HeyThere"
Customization
Part of parameterizing strings is approximating all characters in the input
encoding to ASCII characters. This library copies the character approximation
table from the Ruby i18n library. This data structure is provided as
defaultCharacterTransliterations. You can provide your own transliteration map
by passing a Map structure (from Data.Map) to the parameterizeCustom function.
If you want to specify a custom default replacement or approximation table for
the transliterate function, you should instead call the transliterateCustom
function which accepts a String for replacements and a Map for substitution.
Future work
Ideally, we want to implement other functions found in the Rails inflections library. If you need one of those functions, please submit a pull request!
Further documentation
For more information, please see the the Haddock docs for this module.
Author
Justin Leitgeb [email protected]
License
MIT, see the LICENSE file.
Contributing
Do you want to contribute to this project? Please take a look at our contributing guideline to know how you can help us build it.
Check out our libraries | Join our team
Changes
Inflections 0.4.0.7
- Bump bounds for
textin order to support ghc-9.6.1
Inflections 0.4.0.6
- Support
megaparsec== 9.0
Inflections 0.4.0.5
- Support
megaparsec== 8.0
Inflections 0.4.0.3
- Support
megaparsec== 7.0*. - Drop support for
GHC 7.8.4.
Inflections 0.4.0.3
- Support
exceptions== 0.10.*
Inflections 0.4.0.2
- Support
exceptions== 0.9.*
Inflections 0.4.0.1
- Support
megaparsec>= 6.4.0
Inflections 0.4.0.0
- Update megaparsec to version 6.
Inflections 0.3.0.0
-
A more type-safe API forbidding creation of invalid words.
-
Made the API use
Textinstead ofString(which significally improved speed). -
Switched to Megaparsec 5 for parsing.
-
Renamed
defaultMaptodefaultTransliterations. -
Words now can contain digits (recognized by all parsers).
-
parseSnakeCasenow is not confused when a word happens to have prefix coinciding with an acronym. This is harder to fix forparseCamelCasebecause acronym may contain capital letters, so old behavior is preserved forparseCamelCasefor now. -
parseCamelCaseandparseSnakeCasetake any instance ofFoldableas a collection of acronyms, not just lists. -
Added the
CHANGELOG.mdfile. -
Switched test suite to Hspec.
-
The
toUnderscore,toDashed, andtoCamelCasedare not partial anymore. They return parse error inLeftjust like parsing functions, but this result can be lifted into any instance ofMonadThrowwithbetterThrowhelper. -
Improved documentation.
Inflections 0.2.0.1
- Support for GHC 8.0.
Inflections 0.2.0.0
- Added
other-modulesto test suite.
Inflections 0.1.0.10
- Support for GHC 7.10.
Inflections 0.1.0.9
- Support for GHC 7.8.
Inflections 0.1.0.8
-
Fixed a typo in docs of
humanize. -
Added
toUnderscore,toDashed, andtoCamelCased.
Inflections 0.1.0.7
-
Support for
base-4.7. -
Improved documentation.
Inflections 0.1.0.6
-
Added
titleizeandhumanize. -
Improved documentation.
Inflections 0.1.0.5
- Added module documentation for
Text.Inflections.
Inflections 0.1.0.4
-
Reduced number of public modules to one:
Text.Inflections. -
Added
ordinalandordinalize. -
Improved documentation.
Inflections 0.1.0.3
-
Added
camelize,camelizeCustom,underscore, andunderscoreCustom. -
Made the word parser accept empty input.
-
Improved documentation.
Inflections 0.1.0.2
- Added the
transliterateandtransliterateCustomfunctions.
Inflections 0.1.0.1
- No changes.
Inflections 0.1.0.0
- Initial release.