module Arsenicum::Util
Public Class Methods
included(base)
click to toggle source
# File lib/arsenicum/util.rb, line 3 def self.included(base) mod = self base.module_eval{extend mod} end
Public Instance Methods
camelcase(stringlike, upcase_first = true)
click to toggle source
# File lib/arsenicum/util.rb, line 16 def camelcase(stringlike, upcase_first = true) stringlike.to_s.dup.tap do |s| s.gsub!(/_([a-z])/){$1.upcase} s.gsub!(/^([a-z])/){$1.upcase} if upcase_first end.to_sym end
classify(stringlike)
click to toggle source
# File lib/arsenicum/util.rb, line 23 def classify(stringlike) stringlike.to_s.split(/\/+/).map do |s| camelcase(s) end.join('::') end
constantize(klass, inside: Kernel)
click to toggle source
# File lib/arsenicum/util.rb, line 36 def constantize(klass, inside: Kernel) if klass.to_s.start_with?('::') klass = klass.to_s[2..-1].to_sym inside = Kernel end klass.to_s.split('::').inject(inside) do |parent, const| parent.const_get const.to_sym end end
normalize_hash(values)
click to toggle source
# File lib/arsenicum/util.rb, line 8 def normalize_hash(values) values.inject({}) do |h, kv| (key, value) = kv value = normalize_hash(value) if value.is_a? Hash h.tap{|i|i.merge!(key.to_sym => value)} end end
underscore(stringlike)
click to toggle source
# File lib/arsenicum/util.rb, line 29 def underscore(stringlike) stringlike.to_s.dup.tap do |s| s.gsub!(/^([A-Z])/){$1.tap(&:downcase!)} s.gsub!(/([A-Z])/){'_' << $1.tap(&:downcase!)} end end