Class: CaseTransform::StringExt
- Inherits:
-
Object
- Object
- CaseTransform::StringExt
- Defined in:
- lib/case_transform/string_ext.rb
Overview
String class extension Stolen from ActiveSupport::Inflector.camelize
Instance Method Summary collapse
- #camelize(string, first_letter = :upper) ⇒ Object
- #dasherize(string) ⇒ Object
-
#underscore(string) ⇒ Object
Only support camel to underscore.
Instance Method Details
#camelize(string, first_letter = :upper) ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/case_transform/string_ext.rb', line 7 def camelize(string, first_letter = :upper) raise ArgumentError, "Argument can not be nil" unless i[upper lower].include?(first_letter) str = string.to_s str = str.gsub(/^[a-z\d]*/, &:capitalize) if first_letter == :upper str.gsub(/(?:_|(\/))([a-z\d]*)/i) do "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" end.gsub("/", "::") end |
#dasherize(string) ⇒ Object
16 17 18 |
# File 'lib/case_transform/string_ext.rb', line 16 def dasherize(string) string.tr("_", "-") end |
#underscore(string) ⇒ Object
Only support camel to underscore
21 22 23 24 25 26 27 28 29 |
# File 'lib/case_transform/string_ext.rb', line 21 def underscore(string) str = string.to_s return str unless str =~ /[A-Z-]|::/ str.gsub("::", "/") .gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .tr("-", "_") .downcase end |