# Underscoming a class

**URL:** <https://www.ruby-forum.com/t/underscoming-a-class/149813>\
**Category:** Ruby\
**Created:** [September 30, 2008, 5:23am UTC](https://www.ruby-forum.com/t/underscoming-a-class/149813 "2008-09-30T05:23:45Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hangingclowns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/b5e925/32.png) [@hangingclowns](https://www.ruby-forum.com/u/hangingclowns)\
**Post date:** [September 30, 2008, 5:23am UTC](https://www.ruby-forum.com/t/underscoming-a-class/149813/1 "2008-09-30T05:23:45Z")

</div>

If I have a String like “DistributionMethod” is there any helper out  
there that will turn it into “distribution\_method” ?

---

<div class="post-metadata">

**Author:** ![hangingclowns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/b5e925/32.png) [@hangingclowns](https://www.ruby-forum.com/u/hangingclowns)\
**Post date:** [September 30, 2008, 6:16am UTC](https://www.ruby-forum.com/t/underscoming-a-class/149813/2 "2008-09-30T06:16:09Z")

</div>

On Mon, Sep 29, 2008 at 10:22 PM, Allen W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> If I have a String like “DistributionMethod” is there any helper out  
> there that will turn it into “distribution\_method” ?

I’m sure there’s one out there, but for simple cases…

s = “SomeCamelCase”  
s.scan(/._?[A-Z]._?[^A-Z]\*?/).map {|w| w.downcase}.join(“\_”)

Todd

---

<div class="post-metadata">

**Author:** ![hangingclowns](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/b5e925/32.png) [@hangingclowns](https://www.ruby-forum.com/u/hangingclowns)\
**Post date:** [September 30, 2008, 6:23am UTC](https://www.ruby-forum.com/t/underscoming-a-class/149813/3 "2008-09-30T06:23:45Z")

</div>

On Sep 29, 11:22 pm, Allen W. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> If I have a String like “DistributionMethod” is there any helper out  
> there that will turn it into “distribution\_method” ?

Check out the English library (require ‘english/style’).

[http://english.rubyforge.org](http://english.rubyforge.org)

Also, Facets and ActiveSupport have such methods.

The method names to look for are #snakecase, #underscore, and  
#methodize.

T.
