module Rdoba::Log
Constants
- Initfunc
Public Class Methods
define_methods(obj, list)
click to toggle source
# File lib/rdoba/log.rb, line 322 def self.define_methods obj, list list.each do| f | evas = "def #{f} *args;__rdoba_log__.#{f} *args;end" if obj.class != Object obj.class_eval( evas ) ; end obj.instance_eval( evas ) ; end ; end
enabled?()
click to toggle source
# File lib/rdoba/log.rb, line 188 def self.enabled? @@enabled ; end
log(io_m, prefix, params)
click to toggle source
# File lib/rdoba/log.rb, line 401 def self.log io_m, prefix, params text = prefix text << params.map do |prm| case prm when Hash r = [] prm.each do |key, value| r << "#{key}: #{value.inspect}" end r.join(", ") when Array prm.join(', ') when String prm else prm.inspect end end.join(', ') # NOTE: the shell over text id requires to proper output # in multiprocess environment io_m.call "#{text}\n"; end
log_class_setup(obj)
click to toggle source
# File lib/rdoba/log.rb, line 298 def self.log_class_setup obj obj.class_eval "class RdobaLog;end" obj.class_eval "def __rdoba_log__;@__rdoba_log__||=RdobaLog.new;end" obj.class_eval "class << self; def self.__rdoba_log__; @__rdoba_log__||=RdobaLog.new;end;end" obj.class_eval "def self.__rdoba_log__; @__rdoba_log__||=#{obj}::RdobaLog.new;end" obj::RdobaLog.class_eval &Initfunc ; end
log_functions_get(obj)
click to toggle source
# File lib/rdoba/log.rb, line 341 def self.log_functions_get obj obj.class_variable_get :@@rdoba_log_functions rescue [] ; end
log_functions_set(obj, functions)
click to toggle source
# File lib/rdoba/log.rb, line 338 def self.log_functions_set obj, functions obj.class_variable_set :@@rdoba_log_functions, functions ; end
log_init_io_m(options = {})
click to toggle source
# File lib/rdoba/log.rb, line 292 def self.log_init_io_m options = {} options = Rdoba::Log.class_variable_get :@@options io = options[ :io ] || $stdout # TODO puts costomize io_m = io.method :puts ; end
log_init_prefix(obj, is_self = false)
click to toggle source
# File lib/rdoba/log.rb, line 273 def self.log_init_prefix obj, is_self = false options = Rdoba::Log.class_variable_get :@@options pfx = ';if Rdoba::Log.enabled?;(Rdoba::Log::log @@rdoba_log_io_method,"' if prefix = ( options[ :prefix ].is_a?( Array ) && options[ :prefix ] || [ options[ :prefix ] ] ) if prefix.include?( :timestamp ) pfx << '[#{Time.now.strftime( "%H:%M:%S.%N" )}]'; end if prefix.include?( :pid ) pfx << '{#{Process.pid}}'; end if prefix.include?( :function ) pfx << '(#{m,f,l=get_stack_function_data_at_level(2);m}:#{f}.#{l})' elsif prefix.include?( :function_name ) if prefix.include?( :function_line ) pfx << '(#{_,f,l=get_stack_function_data_at_level(2);f}.#{l})' else pfx << '(#{get_stack_function_data_at_level(2)[1]})' end ; end ; end pfx ; end
log_instance_setup(obj)
click to toggle source
# File lib/rdoba/log.rb, line 307 def self.log_instance_setup obj obj.instance_eval "class ::RdobaLog;end" obj.instance_eval "def __rdoba_log__;$__rdoba_log__||=::RdobaLog.new;end" obj.instance_eval "class << self; def self.__rdoba_log__; $__rdoba_log__||=::RdobaLog.new;end;end" obj.instance_eval "def self.__rdoba_log__; $__rdoba_log__||=::RdobaLog.new;end" ::RdobaLog.class_eval &Initfunc ; end
log_link_for(target, obj, funcname)
click to toggle source
# File lib/rdoba/log.rb, line 316 def self.log_link_for target, obj, funcname obj.send( "#{target}_eval", "def #{funcname};__rdoba_log__;end" ) obj.send( "#{target}_eval", "def self.#{funcname};__rdoba_log__;end" ) obj.send( "#{target}_eval", "class << self; def self.#{funcname}; __rdoba_log__;end;end" ) ; end
log_prefix_get(obj)
click to toggle source
# File lib/rdoba/log.rb, line 346 def self.log_prefix_get obj obj.class_variable_get :@@rdoba_log_prefix rescue ';if true;(File.join "' ; end
make_code(functions, pfx)
click to toggle source
# File lib/rdoba/log.rb, line 365 def self.make_code functions, pfx code = '' psfx = ' ",params);end;end;' if functions.include?( :enter ) code << 'def + *params' + pfx + '<<<' + psfx else code << 'def + *params;end;'; end if functions.include?( :leave ) code << 'def - ev' + pfx + '>>> ",[[ev.inspect]]);end;ev;end;' else code << 'def - ev;ev;end;'; end if functions.include?( :basic ) code << "def > *params#{pfx}>#{psfx}" else code << 'def > *params;end;'; end if functions.include?( :extended ) code << 'def >> *params' + pfx + '>>' + psfx else code << 'def >> *params;end;'; end if functions.include?( :warn ) code << "def % *params#{pfx}%%%#{psfx}" else code << 'def % *params;end;'; end if functions.include?( :info ) code << "def * *params#{pfx}***#{psfx}" else code << 'def * *params;end;'; end if functions.include?( :compat ) code << "$dbgl_#{self.class}=0;" (1..0xF).each do |x| (1..0xF).each do |y| idx = sprintf "%x%x", x, y code << "def dbp#{idx}(text); dbp(0x#{idx},text); end;" code << "def dbg#{idx}(text); dbg(0x#{idx},text); end;"; end; end; end code; end
try_define_compat(functions, target)
click to toggle source
# File lib/rdoba/log.rb, line 329 def self.try_define_compat functions, target if functions.include?( :compat ) list = [ :dbgl= ] (1..0xF).each do |x| (1..0xF).each do |y| idx = sprintf( "%x%x", x, y ) list << "dbp#{idx}".to_sym << "dbg#{idx}".to_sym ; end; end Rdoba::Log.define_methods( target, list ) ; end ; end
update_functions(functions, obj, method)
click to toggle source
# File lib/rdoba/log.rb, line 351 def self.update_functions functions, obj, method if functions.is_a?( Array ) && functions.include?( :* ) functions = [ :basic, :enter, :leave, :warn, :info, :extended, :compat ] ; end # TODO compat cf = self.log_functions_get obj functions = cf.send( method, functions.is_a?( Array ) && functions || functions.is_a?( NilClass) && [] || [ functions.to_s.to_sym ] ) self.log_functions_set obj, functions pfx = self.log_prefix_get obj code = Rdoba::Log::make_code functions, pfx obj.class_eval code ; end