Module: WsdlMapper::Naming::Inflector

Extended by:
Inflector
Included in:
Inflector, NamerBase
Defined in:
lib/wsdl_mapper/naming/inflector.rb

Overview

Module with inflection helper methods. As a permanent dependency on Rails' ActiveSupport library is not feasible, here are some quick re-implementations.

Constant Summary collapse

FIRST_CHAR =
/^./
NON_WORD =
/[^a-zA-Z]/
NON_AN =
/[^a-zA-Z0-9]/
NON_WORD_FOLLOWED_BY_WORD =
/[^a-zA-Z0-9]+([a-zA-Z0-9])/
CAPITALS =
/([A-Z])/
DOWN_FOLLOWED_BY_UP =
/([a-z0-9])([A-Z])/

Instance Method Summary collapse

Instance Method Details

#camelize(source) ⇒ String

Camelize a string.

Examples:

camelize('foo_bar baz ') #=> 'FooBarBaz'

Parameters:

  • source (String)

    String to camelize.

Returns:

  • (String)

    Camelized string.



20
21
22
23
24
25
# File 'lib/wsdl_mapper/naming/inflector.rb', line 20

def camelize(source)
  source.
    strip.
    gsub(NON_WORD_FOLLOWED_BY_WORD) { |_| $1.upcase }.
    sub(FIRST_CHAR) { |s| s.upcase }
end

#underscore(source) ⇒ String

Snake-cases a string.

Examples:

underscore('Foo Bar') #=> 'foo_bar'

Parameters:

  • source (String)

    String to underscore.

Returns:

  • (String)

    snake-cased string.



32
33
34
35
36
37
38
39
# File 'lib/wsdl_mapper/naming/inflector.rb', line 32

def underscore(source)
  source.
    strip.
    gsub(DOWN_FOLLOWED_BY_UP) { |_| "#{$1}_#{$2.downcase}" }.
    downcase.
    gsub(NON_AN, '_').
    gsub(/_+/, '_')
end