Sha256: 35f497ca700aa9e11aaa5390e717eb4425a8c2a4ad5f992b82986f2408a8faca

Contents?: true

Size: 974 Bytes

Versions: 1

Compression:

Stored size: 974 Bytes

Contents

require "string_plus/version"

module StringPlus
  module_function
  def camelcase(str=self, capitalize_first_char=true)
    res = ""
    flag = capitalize_first_char
    str.each_char {|w|
      (flag = true ; next) if w == "_" || w == " "
      res << if flag
               flag = false
               w.upcase
             else
               w
             end
    }
    res
  end

  def lcamelcase(str=self)
    camelcase(str, false)
  end

  def underscore(str=self)
    return str.downcase if str.each_char.all? { |c| c == c.upcase && c =~ /[a-zA-Z0-9]/}
    res = ""
    [nil, *str.each_char].each_cons(2) do |last, current|
      res << "_" if last !=nil && current == current.upcase && !("0".."9").include?(current) 
      res << current.downcase unless current == " "
    end
    res
  end
  alias :snakecase :underscore
  
  def constantize(str=self)
    c = str.split("-").map {|segment| camelcase(segment)}.join("::")
    Object.send(:const_get, c)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
string_plus-0.5.3 lib/string_plus.rb