Sha256: 56923606561c60b693d14359aa531b581bfd5e3840cf86aa5a1d5f7bd3deadb3

Contents?: true

Size: 998 Bytes

Versions: 1

Compression:

Stored size: 998 Bytes

Contents

module Aws::Cfn::Stacker
  module ConvertToClassName
    extend self

    def convert_to_class_name(str)
      str = str.dup
      str.gsub!(/[^A-Za-z0-9_]/,'_')
      rname = nil
      regexp = %r{^(.+?)(_(.+))?$}

      mn = str.match(regexp)
      if mn
        rname = mn[1].capitalize

        while mn && mn[3]
          mn = mn[3].match(regexp)
          rname << mn[1].capitalize if mn
        end
      end

      rname
    end

    def convert_to_snake_case(str, namespace=nil)
      str = str.dup
      str.sub!(/^#{namespace}(\:\:)?/, '') if namespace
      str.gsub!(/[A-Z]/) {|s| "_" + s}
      str.downcase!
      str.sub!(/^\_/, "")
      str
    end

    def snake_case_basename(str)
      with_namespace = convert_to_snake_case(str)
      with_namespace.split("::").last.sub(/^_/, '')
    end

    def filename_to_qualified_string(base, filename)
      file_base = File.basename(filename, ".rb")
      base.to_s + (file_base == 'default' ? '' : "_#{file_base}")
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aws-cfn-stacker-0.0.6 lib/aws/cfn/stacker/mixins/convert_to_class_name.rb