inflector

Singularize, pluralize, camelize, etc (port from ActiveSupport)
0.1.6 released

Inflector (port of ActiveSupport::Inflector) Build Status

This is an attempt to bring ActiveSupport's Inflector to Crystal. It started as a test idea for another project (Native Ruby extensions in Crystal), but then worked well enough that I decided to turn it into its own project.

Installation

Add this to your application's shard.yml:

dependencies:
  inflector:
    github: phoffer/inflector.cr
    version: "~> 0.1.5"

Somewhere in your app initialization, require "inflector".

Additionally, there are core extensions to String and Int. If you want these, then require "inflector/core_ext instead of the standard require.

Usage

Some examples are probably best. There is a full set of examples in spec/inflector/readme_spec.cr

Inflector.camelize("active_model")                    # => "ActiveModel"
Inflector.underscore("ActiveModel")                   # => "active_model"
Inflector.humanize("employee_salary")                 # => "Employee salary"
Inflector.humanize("author_id")                       # => "Author"
Inflector.upcase_first("what a Lovely Day")           # => "What a Lovely Day"
Inflector.titleize("x-men: the last stand")           # => "X Men: The Last Stand"
Inflector.classify("ham_and_eggs")                    # => "HamAndEgg"
Inflector.demodulize("CoreExt::String::Inflections")  # => "Inflections"
Inflector.deconstantize("Net::HTTP")                  # => "Net"
Inflector.foreign_key("Message")                      # => "message_id"
Inflector.ordinalize(1)                               # => "1st"
Inflector.ordinal(1)                                  # => "st"
Inflector.dasherize("puni_puni")                      # => "puni-puni"

Additionally, these are available if you required the core extensions. Additional examples are in spec/inflector/core_ext_spec

1.ordinalize                                          # => "1st"
1.ordinal                                             # => "st"
"post".pluralize                                      # => "posts"
"octopus".pluralize                                   # => "octopi"
"posts".singularize                                   # => "post"
"active_record".camelize                              # => "ActiveRecord"
"man from the boondocks".titleize                     # => "Man From The Boondocks"
"CoreExt::String::Inflections".demodulize             # => "Inflections"
"Net::HTTP".deconstantize                             # => "Net"
"fancyCategory".tableize                              # => "fancy_categories"
"ham_and_eggs".classify                               # => "HamAndEgg"
"employee_salary".humanize                            # => "Employee salary"
"what a Lovely Day".upcase_first                      # => "What a Lovely Day"
"Message".foreign_key                                 # => "message_id"

TODO

  • [ ] Enable additional tests (tests have been mostly ported from ActiveSupport::Inflector)
  • [x] Hook up Travis CI

Contributing

  1. Fork it ( https://github.com/phoffer/inflector.cr/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • rails Rails Core Team is greatly appreciated for what they have built and extensive documentation
  • phoffer Paul Hoffer - creator, maintainer
inflector:
  github: phoffer/inflector.cr
  version: ~> 0.1.6
License MIT
Crystal none

Authors

Dependencies 0

Development Dependencies 0

Dependents 8

Last synced .
search fire star recently