lib/ext/string_ext.rb in tailor-1.0.0.alpha2 vs lib/ext/string_ext.rb in tailor-1.0.0
- old
+ new
@@ -1,5 +1,17 @@
require 'term/ansicolor'
class String
include Term::ANSIColor
+
+ # Borrowed from ActiveSupport, this converts camel-case Strings to
+ # snake-case.
+ #
+ # @return [String]
+ def underscore
+ self.gsub(/::/, '/').
+ gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
+ gsub(/([a-z\d])([A-Z])/, '\1_\2').
+ tr("-", "_").
+ downcase
+ end
end