{"id":21409843,"url":"https://github.com/stackbuilders/inflections-hs","last_synced_at":"2025-07-14T02:30:49.315Z","repository":{"id":14450261,"uuid":"17161901","full_name":"stackbuilders/inflections-hs","owner":"stackbuilders","description":"Rails-like inflections for Haskell","archived":false,"fork":false,"pushed_at":"2024-01-30T14:39:05.000Z","size":600,"stargazers_count":36,"open_issues_count":2,"forks_count":11,"subscribers_count":37,"default_branch":"main","last_synced_at":"2025-06-16T01:50:22.640Z","etag":null,"topics":["hacktoberfest","hacktoberfest-2023","haskell","string-manipulation"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"gatling/gatling-maven-plugin-demo","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stackbuilders.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-02-25T04:57:08.000Z","updated_at":"2023-10-24T13:27:31.000Z","dependencies_parsed_at":"2023-09-26T17:46:00.968Z","dependency_job_id":"4418873d-a071-4310-b737-7c6ce43dc495","html_url":"https://github.com/stackbuilders/inflections-hs","commit_stats":{"total_commits":115,"total_committers":22,"mean_commits":"5.2272727272727275","dds":0.6869565217391305,"last_synced_commit":"9e3fd0632fc59621977734960e67fd781ca22023"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/stackbuilders/inflections-hs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackbuilders%2Finflections-hs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackbuilders%2Finflections-hs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackbuilders%2Finflections-hs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackbuilders%2Finflections-hs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stackbuilders","download_url":"https://codeload.github.com/stackbuilders/inflections-hs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackbuilders%2Finflections-hs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265233753,"owners_count":23731825,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","hacktoberfest-2023","haskell","string-manipulation"],"created_at":"2024-11-22T17:34:34.996Z","updated_at":"2025-07-14T02:30:48.216Z","avatar_url":"https://github.com/stackbuilders.png","language":"Haskell","readme":"# String Inflections for Haskell\n\n[![License MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)\n[![Hackage](https://img.shields.io/hackage/v/inflections.svg)](http://hackage.haskell.org/package/inflections)\n[![Stackage Nightly](http://stackage.org/package/inflections/badge/nightly)](http://stackage.org/nightly/package/inflections)\n[![Stackage LTS](http://stackage.org/package/inflections/badge/lts)](http://stackage.org/lts/package/inflections)\n[![Build](https://github.com/stackbuilders/inflections-hs/actions/workflows/build.yml/badge.svg)](https://github.com/stackbuilders/inflections-hs/actions/workflows/build.yml)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nThis library is a partial port of the\n[String Inflector](http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html)\nfrom Ruby on Rails. It currently implements methods such as `parameterize`,\n`transliterate`, `camelize`, `underscore` and `dasherize`. Please see the\nhaddock documentation for a complete list of the functions implemented by this\nlibrary.\n\nUnlike the ActiveSupport (Rails) and Ember implementations of inflections, this\nlibrary uses a parser to verify the input to functions like `camelize`. This is\ndone to ensure that the output strings adhere to the syntax that they are\nsupposed to generate. You can read more about the philosophy behind this library\nin the\n[Haddock documentation](http://hackage.haskell.org/package/inflections/docs/Text-Inflections.html).\n\n## Usage\n\nThe following examples demonstrate usage of the `parameterize`, `transliterate`\nand `camelize` functions:\n\n```haskell\nλ: parameterize \"Hola. ¿Cómo estás?\"\n\"hola-como-estas\"\n\nλ: transliterate \"Hola. ¿Cómo estás?\"\n\"Hola. ?Como estas?\"\n\nλ: import Control.Monad (liftM)\nλ: liftM camelize $ parseSnakeCase \"hey_there\"\n\"HeyThere\"\n```\n\n## Customization\n\nPart of parameterizing strings is approximating all characters in the input\nencoding to ASCII characters. This library copies the character approximation\ntable from the Ruby i18n library. This data structure is provided as\n`defaultCharacterTransliterations`. You can provide your own transliteration map\nby passing a Map structure (from Data.Map) to the `parameterizeCustom` function.\n\nIf you want to specify a custom default replacement or approximation table for\nthe `transliterate` function, you should instead call the `transliterateCustom`\nfunction which accepts a String for replacements and a Map for substitution.\n\n## Future work\n\nIdeally, we want to implement other functions found in the Rails\ninflections library. If you need one of those functions, please submit a pull request!\n\n## Further documentation\n\nFor more information, please see the the\n[Haddock docs for this module](http://hackage.haskell.org/package/inflections/docs/Text-Inflections.html).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://cristhianmotoche.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/8370088?v=4?s=100\" width=\"100px;\" alt=\"Cristhian Motoche\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCristhian Motoche\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=CristhianMotoche\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://markkarpov.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/8165792?v=4?s=100\" width=\"100px;\" alt=\"Mark Karpov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMark Karpov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=mrkkrp\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=mrkkrp\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.stackbuilders.com/news/author/justin-leitgeb\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9977?v=4?s=100\" width=\"100px;\" alt=\"Justin S. Leitgeb\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJustin S. Leitgeb\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=jsl\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=jsl\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#ideas-jsl\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jpvillaisaza\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/584947?v=4?s=100\" width=\"100px;\" alt=\"Juan Pedro Villa Isaza\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJuan Pedro Villa Isaza\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=jpvillaisaza\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://caurea.org/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/34538?v=4?s=100\" width=\"100px;\" alt=\"Tomas Carnecky\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTomas Carnecky\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=wereHamster\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://twitter.com/4e6\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/357683?v=4?s=100\" width=\"100px;\" alt=\"Dmitry Bushev\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDmitry Bushev\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=4e6\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/nieled\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/20074796?v=4?s=100\" width=\"100px;\" alt=\"Daniel Calle\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Calle\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=nieled\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=nieled\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://blog.rcook.org/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/425396?v=4?s=100\" width=\"100px;\" alt=\"Richard Cook\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRichard Cook\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=rcook\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=rcook\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/philderbeast\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/633283?v=4?s=100\" width=\"100px;\" alt=\"Phil de Joux\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePhil de Joux\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=philderbeast\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Centeno448\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/40647387?v=4?s=100\" width=\"100px;\" alt=\"Diego Centeno\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDiego Centeno\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=Centeno448\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=Centeno448\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Jagl257\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/27145248?v=4?s=100\" width=\"100px;\" alt=\"Jorge Guerra Landázuri\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJorge Guerra Landázuri\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=Jagl257\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/elcuy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11718997?v=4?s=100\" width=\"100px;\" alt=\"Luis Fernando Alvarez\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLuis Fernando Alvarez\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=elcuy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/seuros\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2394703?v=4?s=100\" width=\"100px;\" alt=\"Abdelkader Boudih\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAbdelkader Boudih\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=seuros\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://juancarlos.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2164411?v=4?s=100\" width=\"100px;\" alt=\"Juan Paucar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJuan Paucar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-juanpaucar\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://s9gf4ult.blogspot.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/105054?v=4?s=100\" width=\"100px;\" alt=\"Alexey Uimanov\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlexey Uimanov\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=s9gf4ult\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/badosu\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/347552?v=4?s=100\" width=\"100px;\" alt=\"Amadeus Folego\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmadeus Folego\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=badosu\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/mecampbellsoup\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2043821?v=4?s=100\" width=\"100px;\" alt=\"Matt Campbell\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatt Campbell\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=mecampbellsoup\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jonap22\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/76792472?v=4?s=100\" width=\"100px;\" alt=\"Jonathan Puglla\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJonathan Puglla\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/stackbuilders/inflections-hs/commits?author=jonap22\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n  \u003ctfoot\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" size=\"13px\" colspan=\"7\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg\"\u003e\n          \u003ca href=\"https://all-contributors.js.org/docs/en/bot/usage\"\u003eAdd your contributions\u003c/a\u003e\n        \u003c/img\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tfoot\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n\n## License\n\nMIT, see [the LICENSE file](LICENSE).\n\n## Contributing\n\nDo you want to contribute to this project? Please take a look at our [contributing guideline](/docs/CONTRIBUTING.md) to know how you can help us build it.\n\n---\n\u003cimg src=\"https://cdn.stackbuilders.com/media/images/Sb-supports.original.png\" alt=\"Stack Builders\" width=\"50%\"\u003e\u003c/img\u003e\n[Check out our libraries](https://github.com/stackbuilders/) | [Join our team](https://www.stackbuilders.com/join-us/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackbuilders%2Finflections-hs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstackbuilders%2Finflections-hs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackbuilders%2Finflections-hs/lists"}