lib/open_classes/kernel.rb in tbpgr_utils-0.0.9 vs lib/open_classes/kernel.rb in tbpgr_utils-0.0.10

- old
+ new

@@ -1,98 +1,98 @@ -# encoding: utf-8 - -# Kernel -module Kernel - # Print code + eval result - # - # print_eval 8/4, binding # => 8/4 # => 2 - # message = 'msg';print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg" - def print_eval(code, binding) - print exec_eval code, binding - end - - # Puts code + eval result - # - # puts_eval 8/4, binding # => 8/4 # => 2\n - # message = 'msg';puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"\n - def puts_eval(code, binding) - puts exec_eval code, binding - end - - # define methods to classes. methods have simple return value. - # - # bulk_define_methods [NilClass, FalseClass], :blank?, true - # bulk_define_methods [TrueClass, Numeric], "blank?", false - # - # puts nil.blank? # => true - # puts false.blank? # => true - # puts true.blank? # => false - # puts 1.blank? # => false - # - # bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false] - # bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true] - # - # puts nil.blank? # => true - # puts nil.present? # => false - # puts false.blank? # => true - # puts false.present? # => false - # puts true.blank? # => false - # puts true.present? # => true - # puts 1.blank? # => false - # puts 1.present? # => true - # - # bulk_define_methods NilClass, :blank?, true is same as following code - # - # class NilClass - # def blank? - # true - # end - # end - def bulk_define_methods(classes, methods, constants) - validate_bulk_define_classes!(classes) - validate_bulk_define_methods!(methods) - size = get_classes_size(classes) - tmp_classes = fill_same_values(classes, size) - tmp_methods = fill_same_values(methods, size) - tmp_constants = fill_same_values(constants, size) - tmp_classes.each do |klass| - define_method_constants(klass, tmp_methods, tmp_constants) - end - end - - private - def get_classes_size(classes) - size = classes.is_a?(Array) ? classes.size : 1 - end - - def fill_same_values(ary, size) - return ary if ary.is_a?(Array) - tmp = [] - size.times {tmp << ary} - tmp - end - - def validate_bulk_define_classes!(classes) - return if classes.class.any_of?(Array, Class) - fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol" - end - - def validate_bulk_define_methods!(methods) - return if methods.class.any_of?(Array, String, Symbol) - fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol" - end - - def define_method_constants(klass, methods, constants) - methods.each_with_index do |m, i| - klass.class_eval do - define_method m do |*args| - constants[i] - end - end - end - end - - def exec_eval(code, binding) - ret = eval code, binding - "#{code} # => #{ret.inspect}" - end -end +# encoding: utf-8 + +# Kernel +module Kernel + # Print code + eval result + # + # print_eval 8/4, binding # => 8/4 # => 2 + # message = 'msg';print_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg" + def print_eval(code, binding) + print exec_eval code, binding + end + + # Puts code + eval result + # + # puts_eval 8/4, binding # => 8/4 # => 2\n + # message = 'msg';puts_eval "hoge-#{message}", binding # => "hoge-#{message}" # => "hoge-msg"\n + def puts_eval(code, binding) + puts exec_eval code, binding + end + + # define methods to classes. methods have simple return value. + # + # bulk_define_methods [NilClass, FalseClass], :blank?, true + # bulk_define_methods [TrueClass, Numeric], "blank?", false + # + # puts nil.blank? # => true + # puts false.blank? # => true + # puts true.blank? # => false + # puts 1.blank? # => false + # + # bulk_define_methods [NilClass, FalseClass], [:blank?, :present?], [true, false] + # bulk_define_methods [TrueClass, Numeric], [:blank?, :present?], [false, true] + # + # puts nil.blank? # => true + # puts nil.present? # => false + # puts false.blank? # => true + # puts false.present? # => false + # puts true.blank? # => false + # puts true.present? # => true + # puts 1.blank? # => false + # puts 1.present? # => true + # + # bulk_define_methods NilClass, :blank?, true is same as following code + # + # class NilClass + # def blank? + # true + # end + # end + def bulk_define_methods(classes, methods, constants) + validate_bulk_define_classes!(classes) + validate_bulk_define_methods!(methods) + size = get_classes_size(classes) + tmp_classes = fill_same_values(classes, size) + tmp_methods = fill_same_values(methods, size) + tmp_constants = fill_same_values(constants, size) + tmp_classes.each do |klass| + define_method_constants(klass, tmp_methods, tmp_constants) + end + end + + private + def get_classes_size(classes) + size = classes.is_a?(Array) ? classes.size : 1 + end + + def fill_same_values(ary, size) + return ary if ary.is_a?(Array) + tmp = [] + size.times { tmp << ary } + tmp + end + + def validate_bulk_define_classes!(classes) + return if classes.class.any_of?(Array, Class) + fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol" + end + + def validate_bulk_define_methods!(methods) + return if methods.class.any_of?(Array, String, Symbol) + fail TypeError, "invalid type #{a.class}. you have to use Array or Class or String or Symbol" + end + + def define_method_constants(klass, methods, constants) + methods.each_with_index do |m, i| + klass.class_eval do + define_method m do |*args| + constants[i] + end + end + end + end + + def exec_eval(code, binding) + ret = eval code, binding + "#{code} # => #{ret.inspect}" + end +end