module Toolhound::Util

Public Instance Methods

acronym_regex() click to toggle source
# File lib/toolhound-ruby/util.rb, line 8
def acronym_regex
  /#{acronyms.values.join("|")}/
end
acronyms() click to toggle source

class << self

# File lib/toolhound-ruby/util.rb, line 5
def acronyms
  {"rest" => "REST", "html" =>"HTML", "id" => "ID", "url" => "URL"}
end
camelize(term, uppercase_first_letter = true) click to toggle source
# File lib/toolhound-ruby/util.rb, line 32
def camelize(term, uppercase_first_letter = true)
  string = term.to_s
  if uppercase_first_letter
    string = string.sub(/^[a-z\d]*/) { |match| match.capitalize }
  else
    string = string.sub(/^(?:#{acronym_regex}(?=\b|[A-Z_])|\w)/) { |match| match.downcase }
  end
  string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{acronyms[$2] || $2.capitalize}" }
  string.gsub!('/'.freeze, '::'.freeze)
  string
end
demodulize(path) click to toggle source
# File lib/toolhound-ruby/util.rb, line 12
def demodulize(path)
  path = path.to_s
  if i = path.rindex('::')
    path[(i+2)..-1]
  else
    path
  end
end
underscore(camel_cased_word) click to toggle source
# File lib/toolhound-ruby/util.rb, line 21
def underscore(camel_cased_word)
  return camel_cased_word unless camel_cased_word =~ /[A-Z-]|::/
  word = camel_cased_word.to_s.gsub('::'.freeze, '/'.freeze)
  word.gsub!(/(?:(?<=([A-Za-z\d]))|\b)(#{acronym_regex})(?=\b|[^a-z])/) { "#{$1 && '_'.freeze }#{$2.downcase}" }
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2'.freeze)
  word.gsub!(/([a-z\d])([A-Z])/, '\1_\2'.freeze)
  word.tr!("-".freeze, "_".freeze)
  word.downcase!
  word
end