lib/alfa/support.rb in alfa-0.0.5.pre vs lib/alfa/support.rb in alfa-0.0.6.pre

- old
+ new

@@ -1,135 +1,3 @@ -module Alfa - - # Thanks to John - # http://railstips.org/blog/archives/2006/11/18/class-and-instance-variables-in-ruby/ - module ClassInheritance - def self.included(base) - base.extend(ClassMethods) - end - - module ClassMethods - def inheritable_attributes(*args) - @inheritable_attributes ||= [:inheritable_attributes] - @inheritable_attributes += args - args.each do |arg| - class_eval %( - class << self; attr_accessor :#{arg} end - ) - end - @inheritable_attributes - end - - def inherited(subclass) # ruby hook - @inheritable_attributes.each do |inheritable_attribute| - instance_var = "@#{inheritable_attribute}" - subclass.instance_variable_set(instance_var, instance_variable_get(instance_var)) - end - end - end - end - - module Support - extend self - - def camelcase_name(arg) - arg.to_s.split('/').last.split('_').map(&:capitalize).join - end - - def underscore_name(arg) - arg.to_s.split('/').last.scan(/[A-Z][a-z]*|[a-z]+/).map(&:downcase).join('_') - end - - def args_kwargs(*args) - return args[0..-2], args.last if args.last.is_a?(Hash) - return args, {} - end - end - -end - - -class Module - def load_in_module_context file - module_eval file, file - end - - def load_in_class_context file - class_eval file, file - end -end - - -class BasicObject - def load_in_instance_context file - instance_eval file, file - end -end - -# Borrowed from active_support/core_ext/hash/keys.rb -class Hash - # Return a new hash with all keys converted to strings. - # - # { :name => 'Rob', :years => '28' }.stringify_keys - # #=> { "name" => "Rob", "years" => "28" } - def stringify_keys - dup.stringify_keys! - end - - # Destructively convert all keys to strings. Same as - # +stringify_keys+, but modifies +self+. - def stringify_keys! - keys.each do |key| - self[key.to_s] = delete(key) - end - self - end - - # Return a new hash with all keys converted to symbols, as long as - # they respond to +to_sym+. - # - # { 'name' => 'Rob', 'years' => '28' }.symbolize_keys - # #=> { :name => "Rob", :years => "28" } - def symbolize_keys - dup.symbolize_keys! - end - - # Destructively convert all keys to symbols, as long as they respond - # to +to_sym+. Same as +symbolize_keys+, but modifies +self+. - def symbolize_keys! - keys.each do |key| - self[(key.to_sym rescue key) || key] = delete(key) - end - self - end - - - def delete!(*keys) - keys.each{|key| self.delete(key)} - self - end - - - def except(*keys) - self.dup.delete!(*keys) - end -end - - -class String - # PHP's two argument version of strtr - def strtr(replace_pairs) - keys = replace_pairs.map {|a, b| a } - values = replace_pairs.map {|a, b| b } - self.gsub( - /(#{keys.map{|a| Regexp.quote(a) }.join( ')|(' )})/ - ) { |match| values[keys.index(match)] } - end - - def strtr!(replace_pairs) - keys = replace_pairs.map {|a, b| a } - values = replace_pairs.map {|a, b| b } - self.gsub!( - /(#{keys.map{|a| Regexp.quote(a) }.join( ')|(' )})/ - ) { |match| values[keys.index(match)] } - end -end +require 'alfa/support/common' +require 'alfa/support/time' +require 'alfa/support/nil_operations' \ No newline at end of file