lib/gorillib/string/inflections.rb in gorillib-0.1.11 vs lib/gorillib/string/inflections.rb in gorillib-0.4.0pre
- old
+ new
@@ -1,78 +1,8 @@
-# String inflections define new methods on the String class to transform names for different purposes.
-#
-# "ScaleScore".underscore # => "scale_score"
-#
-# This doesn't define the full set of inflections -- only
-#
-# * camelize
-# * snakeize
-# * underscore
-# * demodulize
-#
-class String
+require 'gorillib/string/inflector'
- # By default, +camelize+ converts strings to UpperCamelCase. If the argument to +camelize+
- # is set to <tt>:lower</tt> then +camelize+ produces lowerCamelCase.
- #
- # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
- #
- # @example:
- # "active_record".camelize # => "ActiveRecord"
- # "active_record".camelize(:lower) # => "activeRecord"
- # "active_record/errors".camelize # => "ActiveRecord::Errors"
- # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
- #
- # As a rule of thumb you can think of +camelize+ as the inverse of +underscore+,
- # though there are cases where that does not hold:
- #
- # "SSLError".underscore.camelize # => "SslError"
- #
- def camelize(first_letter = :upper)
- camelized = self.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
- (first_letter == :lower) ? (self[0..0].downcase + camelized[1..-1]) : camelized
- end unless method_defined?(:camelize)
-
- # Converts strings to snakeCase, also known as lowerCamelCase.
- #
- # +snakeize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
- #
- # @example:
- # "active_record".snakeize # => "activeRecord"
- # "active_record/errors".snakeize # => "activeRecord::Errors"
- #
- def snakeize
- camelize :lower
- end unless method_defined?(:snakeize)
-
- # Makes an underscored, lowercase form from the expression in the string.
- #
- # +underscore+ will also change '::' to '/' to convert namespaces to paths.
- #
- # Examples:
- # "ActiveRecord".underscore # => "active_record"
- # "ActiveRecord::Errors".underscore # => active_record/errors
- #
- # As a rule of thumb you can think of +underscore+ as the inverse of +camelize+,
- # though there are cases where that does not hold:
- #
- # "SSLError".underscore.camelize # => "SslError"
- def underscore
- word = self.dup
- word.gsub!(/::/, '/')
- word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
- word.tr!("-", "_")
- word.downcase!
- word
- end unless method_defined?(:underscore)
-
- # Removes the module part from the expression in the string
- #
- # @example
- # "ActiveRecord::CoreExtensions::String::Inflections".demodulize #=> "Inflections"
- # "Inflections".demodulize #=> "Inflections"
- def demodulize
- self.gsub(/^.*::/, '')
- end unless method_defined?(:demodulize)
-
+class String
+ def camelize(*args) Gorillib::Inflector.camelize(self, *args) ; end
+ def snakeize(*args) Gorillib::Inflector.snakeize(self, *args) ; end
+ def underscore(*args) Gorillib::Inflector.underscore(self, *args) ; end
+ def demodulize(*args) Gorillib::Inflector.demodulize(self, *args) ; end
end