Sha256: 17478b37f3fa06c1f81ea06baa474a3afb16cf182c73f0c3280b71546dc73a20

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

module Jsus
  module Util
    # Various inflection helpers
    module Inflection
      class <<self
        # Converts strings with various punctuation to pascal case
        #     hello_world  => HelloWorld
        #     Oh.My.God    => OhMyGod
        #     iAmCamelCase => IAmCamelCase
        #     some_Weird_._punctuation => SomeWeirdPunctuation
        def random_case_to_mixed_case(string)
          string.split(/[^a-zA-Z]+/).map {|chunk| capitalize(chunk) }.join
        end # random_case_to_mixed_case

        # Same as #random_case_to_mixed_case, but preserves dots
        # color.fx => Color.Fx
        def random_case_to_mixed_case_preserve_dots(string)
          string.split(".").map {|c| random_case_to_mixed_case(c) }.join(".")
        end # random_case_to_mixed_case

        # Capitalizes first letter (doesn't do anything else to other letters, unlike String#capitalize)
        def capitalize(string)
          string[0,1].capitalize + string[1..-1].to_s
        end # capitalize

        # Downcases first letter
        def decapitalize(string)
          string[0,1].downcase + string[1..-1].to_s
        end # decapitalize

        # Translates MixedCase string to camel-case
        def snake_case(string)
          decapitalize(string.gsub(/(.)([A-Z])([a-z]+)/) {|_| "#{$1}_#{$2.downcase}#{$3}"}.
                              gsub(/[^A-Za-z_]+/, "_"))
        end # snake_case
      end # class <<self
    end # module Inflection
  end # module Util
end # module Jsus

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jsus-0.3.1 lib/jsus/util/inflection.rb
jsus-0.3.0 lib/jsus/util/inflection.rb