class Ddp::Dumper

Attributes

objects[RW]

Public Class Methods

dump(*val) click to toggle source
# File lib/ddp/dumper.rb, line 3
def self.dump(*val)
  new(*val).dump
end
new(*val) click to toggle source
# File lib/ddp/dumper.rb, line 8
def initialize(*val)
  @objects = val
end

Public Instance Methods

dump() click to toggle source
# File lib/ddp/dumper.rb, line 12
    def dump
      objects.map do |obj|
        strip <<-EOF
        #{fetch_ancestors_without_included_modules_by(obj).join(" < ")} {
          included_modules:
            #{join_included_modules_for(obj, 12)}
          inspect:
            #{inspect_for(obj)}
          source_location:
            #{fetch_source_location(obj)}
        }
        EOF
      end.join()
    end

Private Instance Methods

fetch_ancestors_without_included_modules_by(obj) click to toggle source
# File lib/ddp/dumper.rb, line 28
def fetch_ancestors_without_included_modules_by(obj)
  obj.class.ancestors - obj.class.included_modules
end
fetch_source_location(obj) click to toggle source
# File lib/ddp/dumper.rb, line 40
def fetch_source_location(obj)
  return "There is no source_location." if !obj.respond_to?(:source_location)
  sl = obj.source_location
  if sl.nil?
    return "This is C method."
  end
  sl.inspect
end
inspect_for(obj) click to toggle source
# File lib/ddp/dumper.rb, line 36
def inspect_for(obj)
  obj.inspect
end
join_included_modules_for(obj, indent) click to toggle source
# File lib/ddp/dumper.rb, line 32
def join_included_modules_for(obj, indent)
  obj.class.included_modules.join($/ + " " * indent)
end
strip(text) click to toggle source
# File lib/ddp/dumper.rb, line 49
def strip(text)
  indent = text.scan(/^[ \t]*(?=\S)/).min
  size   = 0
  size   = indent.size if indent
  text.gsub(/^[ \t]{#{size}}/, '')
end