lib/cutter/inspection.rb in cutter-0.8.1 vs lib/cutter/inspection.rb in cutter-0.8.2

- old
+ new

@@ -22,94 +22,99 @@ # Binding is a Ruby class: http://www.ruby-doc.org/core/classes/Binding.html def inspect! *options, &block return true if Cutter::Inspection.quiet? - def __colors - Cutter::ColoredOutputs.colors_config - end - - def to_cs obj - color = __colors[obj] || :default - color != :default ? to_s.send(color) : to_s - end - # Getting binding _binding = options.first if options.first.class == Binding raise ArgumentError, "Try inspect(binding) or inspect! {}", caller if (!block_given? && !_binding) _binding ||= block.binding - # Want caller methods chain to be traced? - pass option :level to inspect! options = options.extract_options! max = options[:max] options.maximize_options! if max - + + # Want caller methods chain to be traced? - pass option :level to inspect! level = options[:level] _caller = caller self_inspection = eval('self.inspect', _binding) if options[:inspect] # Basic info method_name = eval('__method__', _binding) class_name = eval('self.class', _binding) - puts "\n%s `%s' %s" % ['method:'.to_cs(:method), method_name.to_cs(:method_name), ('(maximal tracing)' if max)] - puts " %s %s" % ['called from class:'.to_cs(:called_from), class_name.to_cs(:class_name)] + puts "\n%s `%s' %s" % ['method:'.__cs(:method), method_name.__cs(:method_name), ('(maximal tracing)' if max)] + puts " %s %s" % ['called from class:'.__cs(:called_from), class_name.__cs(:class_name)] # Local Variables lvb = eval('local_variables',_binding) - puts " %s %s" % ['local_variables:'.to_cs(:lv), ("[]" if lvb.empty?)] + puts " %s %s" % ['local_variables:'.__cs(:lv), ("[]" if lvb.empty?)] lvb.map do |lv| local_variable = eval(lv.to_s, _binding) - local_variable = (max ? local_variable.inspect : local_variable.to_real_string) + local_variable = (max ? local_variable.inspect : local_variable.__rs) - puts " %s: %s" % [lv.to_cs(:lv_names), local_variable.to_cs(:lv_values)] + puts " %s: %s" % [lv.__cs(:lv_names), local_variable.__cs(:lv_values)] end if lvb + # Instance Variables ivb = eval('instance_variables',_binding) - puts " %s %s" % ["instance_variables:".to_cs(:iv), ("[]" if ivb.empty?)] + puts " %s %s" % ["instance_variables:".__cs(:iv), ("[]" if ivb.empty?)] ivb.map do |iv| instance_variable = eval(iv.to_s, _binding) - instance_variable = (max ? instance_variable.inspect : instance_variable.to_real_string) + instance_variable = (max ? instance_variable.inspect : instance_variable.__rs) - puts " %s: %s" % [iv.to_cs(:iv_names), instance_variable.to_cs(:iv_values)] + puts " %s: %s" % [iv.__cs(:iv_names), instance_variable.__cs(:iv_values)] end if ivb # Self inspection begin - puts " self inspection:".to_cs(:self_inspection) - puts " %s" % self_inspection.to_cs(:self_inspection_trace) + puts " self inspection:".__cs(:self_inspection) + puts " %s" % self_inspection.__cs(:self_inspection_trace) end if self_inspection # Caller methods chain begin - puts " caller methods: ".to_cs(:caller_methods) + puts " caller methods: ".__cs(:caller_methods) 0.upto(level).each {|index| - puts " %s" % _caller[index].to_cs(:caller_method) + puts " %s" % _caller[index].__cs(:caller_method) } end if level puts "\n" # Yield mysterious things if they exist in block. yield if block_given? end + protected + def caller_method_name(level = 1) caller[level][/`([^']*)'/,1].to_sym end - protected - def maximize_options! self.merge!({:max => true, :inspect => true, :level => 2}) end - def to_real_string + # ("real string") Now used to print Symbols with colons + def __rs return ":#{self.to_s}" if self.class == Symbol self end + + def __cs obj + color = __colors[obj] || :default + color != :default ? to_s.send(color) : to_s + end + + private + + def __colors + Cutter::ColoredOutputs.colors_config + end + end