class StaticSourceLoc::ModuleSource

Attributes

methods[R]
submodules[R]

Public Class Methods

new(name, parent, singleton=false) click to toggle source
Calls superclass method StaticSourceLoc::Source::new
# File lib/static_source_loc.rb, line 43
def initialize(name, parent, singleton=false)
        super name, parent
        @singleton = singleton
        @submodules, @methods = {}, {}
end

Public Instance Methods

new_method(name) click to toggle source
# File lib/static_source_loc.rb, line 57
def new_method(name)
        @methods[name] ||= MethodSource.new name, self
end
new_submodule(name) click to toggle source
# File lib/static_source_loc.rb, line 53
def new_submodule(name)
        @submodules[name] ||= ModuleSource.new name, self
end
process_code(sexpr) click to toggle source
# File lib/static_source_loc.rb, line 85
def process_code(sexpr)
        case sexpr.node_type
        when :block
                sexpr.values.each &method(:process_code)
        when :class, :module
                if sexpr[1].is_a? Symbol
                        new_submodule(sexpr[1]).
                                new_loc(sexpr.file, sexpr.line).
                                process_code(s(:block).concat sexpr.drop(3))
                end
        when :sclass
                if sexpr[1] == s(:self)
                        singleton_class.
                                new_loc(sexpr.file, sexpr.line).
                                process_code(s(:block).concat sexpr.drop(2))
                end
        when :defn
                new_method(sexpr[1]).
                        new_loc(sexpr.file, sexpr.line)
        when :defs
                if sexpr[1] == s(:self)
                        singleton_class.
                                new_method(sexpr[2]).
                                new_loc(sexpr.file, sexpr.line)
                end
        end
        self
end
qualname() click to toggle source
# File lib/static_source_loc.rb, line 66
def qualname
        unless singleton?
                "#{parent.qualname if parent}::#{name}"
        else
                "#{parent.qualname if parent}.#{name}"
        end
end
singleton?() click to toggle source
# File lib/static_source_loc.rb, line 49
def singleton?
        @singleton
end
singleton_class() click to toggle source
# File lib/static_source_loc.rb, line 61
def singleton_class
        @singleton_class ||=
                ModuleSource.new :singleton_class, self, true
end
to_hash() click to toggle source
# File lib/static_source_loc.rb, line 74
def to_hash
        children = []
        children.concat(submodules.values)
        children.concat(methods.values)
        children << @singleton_class if @singleton_class
        children.each_with_object({qualname => self}) do |child, hash|
                hash[child.qualname] = child
                hash.merge! child.to_hash if child.respond_to? :to_hash
        end
end