From: Ezra Zygmuntowicz Date: 2006-11-22T08:45:09+09:00 Subject: Re: name conversion: search terms? 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)