Ezra Zygmuntowicz
11/21/2006 11:45:00 PM
On Nov 21, 2006, at 6:54 AM, Hugh Sasse wrote:
> I'm doing some code generation and need to convert from CamelCase to
> whatever_this_is_called. Wikipedia has a page for CamelCase but not
> underscore separated words.
>
> I'm thinking that someone must have done this already, and got the
> edge cases sorted out, so rather than coming up with a wheel with an
> iron tyre I'd search... for what? Is there a single correct term
> for how we name methods in Ruby?
>
> Thank you,
> Hugh
class String
# "FooBar".snake_case #=> "foo_bar"
def snake_case
return self unless self =~ %r/[A-Z]/
self.reverse.scan(%r/[A-Z]+|[^A-Z]*[A-Z]+?/).reverse.map{|word|
word.reverse.downcase}.join '_'
end
# "foo_bar".camel_case #=> "FooBar"
def camel_case
return self if self =~ %r/[A-Z]/ and self !~ %r/_/
words = self.strip.split %r/\s*_+\s*/
words.map!{|w| w.downcase.sub(%r/^./){|c| c.upcase}}
words.join
end
end
Cheers-
-- Ezra Zygmuntowicz
-- Lead Rails Evangelist
-- ez@engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)