Sha256: d4d272b5d2614c36967bc954baae5c5c19be3530d27abe4859d85719bea991b1

Contents?: true

Size: 1.84 KB

Versions: 1

Compression:

Stored size: 1.84 KB

Contents

module Quarry

module Documentation

  class RubyCollector

    def initialize(*paths)
      @classes = []
      @modules = []
    end

    def collect
      ObjectSpace.each_object(Class) do |reference|
        @classes << ClassSpecification.new(reference)
      end

      ObjectSpace.each_object(Module) do |reference|
        @modules << ModuleSpecification.new(reference)
      end
    end

    def to_xml
      inner = []
      inner << to_xml_for_modules
      inner << to_xml_for_classes
      inner = inner.join("\n")

      xml = %{<ruby-program>\n#{inner}\n</ruby-program>}
    end

    def to_xml_for_classes
      template = <<-END
        <class name="%s">
        </class>
      END
      inner = []
      @classes.each do
        inner << template % [ reference.name ]
      end
      inner = inner.join("\n")
      classes_xml = %{<classes>\n#{inner}\n</classes>}
    end

    def to_xml_for_modules
      template = <<-END
        <module name="%s">
        </module>
      END
      inner = []
      @modules.each do
        inner << template % [ reference.name ]
      end
      inner = inner.join("\n")
      classes_xml = %{<modules>\n#{inner}\n</modules>}
    end

  end

  #

  class ModuleSpecification
    attr :reference

    def initialize(reference)
      @reference = reference
    end

    def public_instance_methods
      reference.public_instance_methods(false)
    end

    def private_instance_methods
      reference.private_instance_methods(false)
    end

    def protected_instance_methods
      reference.protected_instance_methods(false)
    end

    def public_methods
      reference.public_methods(false)
    end

    def private_methods
      reference.private_methods(false)
    end

    def protected_methods
      reference.protected_methods(false)
    end

  end

  #

  class ClassSpecification < ModuleSpecification
  end

end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
quarry-0.4.0 work/sandbox/iface_scanner.rb