module Bumbleworks::Support

Support methods for utility functionality such as string modification - could also be accomplished by monkey-patching String class.

Public Instance Methods

all_files(directory, options = {}) click to toggle source
# File lib/bumbleworks/support.rb, line 13
def all_files(directory, options = {})
  Dir["#{directory}/**/*.rb"].inject({}) do |memo, path|
    name = File.basename(path, '.rb')
    name = camelize(name) if options[:camelize] == true
    memo[path] = name
    memo
  end
end
camelize(string) click to toggle source
# File lib/bumbleworks/support.rb, line 8
def camelize(string)
  string = string.sub(/^[a-z\d]*/) { $&.capitalize }
  string = string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$1}#{$2.capitalize}" }.gsub('/', '::')
end
constantize(name) click to toggle source
# File lib/bumbleworks/support.rb, line 22
def constantize(name)
  name_parts = name.split('::')
  name_parts.shift if name_parts.first.empty?
  constant = Object

  name_parts.each do |name_part|
    const_defined_args = [name_part]
    const_defined_args << false unless Module.method(:const_defined?).arity == 1
    constant_defined = constant.const_defined?(*const_defined_args)
    constant = constant_defined ? constant.const_get(name_part) : constant.const_missing(name_part)
  end
  constant
end
humanize(string) click to toggle source
# File lib/bumbleworks/support.rb, line 44
def humanize(string)
  return nil if string.nil?
  tokenize(string).gsub(/_/, ' ').
    gsub(/^\w/) { $&.upcase }
end
titleize(string) click to toggle source
# File lib/bumbleworks/support.rb, line 50
def titleize(string)
  return nil if string.nil?
  humanize(string).gsub(/\b('?[a-z])/) { $1.capitalize }
end
tokenize(string) click to toggle source
# File lib/bumbleworks/support.rb, line 36
def tokenize(string)
  return nil if string.nil?
  string = string.to_s.gsub(/&/, ' and ').
    gsub(/[ \/]+/, '_').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    downcase
end
wait_until(options = {}, &block) click to toggle source
# File lib/bumbleworks/support.rb, line 55
def wait_until(options = {}, &block)
  options[:timeout] ||= Bumbleworks.timeout
  start_time = Time.now
  until block.call
    if (Time.now - start_time) > options[:timeout]
      raise WaitTimeout
    end
    sleep 0.1
  end
end