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