Inflector.erl: Rails Style String Inflection For Erlang

Rails’ ActiveSupport package includes an inflector class. This lets you do things like singularize and pluralize strings, camel case text, etc.

I’m building a framework that lets Rails developers use erlang + mnesia to replace their ruby models and traditional relational DBs (using Hyperactive Resource + Mochiweb). But a key part of interoperating with rails is being able to infer that “Person” is the singular for “People”.

Inflector.erl brings this magic to erlang! Witness the awesome power:

1> inflector:singularize(”mice“).
mouse
2> inflector:titleize(”i_love_erlang“).
I Love Erlang
3> inflector:ordinalize(142).
142nd
5> inflector:pluralize(”quiz“).
quizzes
7> inflector:tableize(”MyModelModule“).
my_model_modules

Inflector.erl includes functions for pluralizing, singularizing, camelizing, titleizing,
capitalizing, humanizing, underscoring, dasherizing, tableizing, moduleizing,
foreign_key..isizing? and ordinalizing!

I found it very difficult to implement some functions without regular expressions, so it does require R12B4 of erlang due to the vastly improved regular expression support B4 offers. The majority of the inflections are just standard pattern matching and list manipulation, though.

It also has an eunit test suite embedded, so it requires eunit to compile.. But everyone has eunit, right?

Also, in order to minimize the impact of compiling the regular expressions, Inflector.erl caches all compiled regular expressions.. so I expect performance won’t be a problem but be aware that it does register a process named “re_cache”.

Download and enjoy!! Or via github ( git://github.com/lukegalea/inflector.git )

4 comments ↓

#1 Tim Watson on 09.09.08 at 2:52 am

No, not everyone has EUnit - I use common_test for almost all my testing. But using EUnit as well is fine as we’re using Erlware (Sinan + Faxien) and this automatically runs both kinds of tests! :)

Nice work btw.

Cheers,

Tim

#2 Zamous on 09.09.08 at 8:32 am

You should toss that up on git, really nice. Wonder if it can be improved by using more binaries?

#3 Luke Galea on 09.09.08 at 8:38 am

Good call Zamous.

It’s up on git now at http://github.com/lukegalea/inflector/tree/master

#4 Rails Style String Inflection for Erlang – Erlang Inside on 09.11.08 at 5:21 am

[...] But how does that relate to Erlang? Luke Galea at ideaforge recently released a library for rails style ‘inflection’ in erlang which replicates the ActiveSupport functionality. Support for pluralization, singularization, tableization, and more. [...]

You must log in to post a comment.