class RDG::Analysis::Registry

Public Class Methods

clear() click to toggle source
# File lib/rdg/analysis/registry.rb, line 12
def self.clear
  by_type.clear
end
register_by_type(analyser, *types) click to toggle source
# File lib/rdg/analysis/registry.rb, line 4
def self.register_by_type(analyser, *types)
  types.each { |type| by_type[type] = analyser }
end
register_default(analyser) click to toggle source
# File lib/rdg/analysis/registry.rb, line 8
def self.register_default(analyser)
  by_type.default = analyser
end

Private Class Methods

by_type() click to toggle source
# File lib/rdg/analysis/registry.rb, line 26
def self.by_type
  @by_type ||= {}
end

Public Instance Methods

analyser_for(ast_node, context) click to toggle source
# File lib/rdg/analysis/registry.rb, line 16
def analyser_for(ast_node, context)
  by_node[ast_node].new(ast_node, context)
end
prepend_for(ast_node, analyser) click to toggle source
# File lib/rdg/analysis/registry.rb, line 20
def prepend_for(ast_node, analyser)
  by_node[ast_node] = Composite.compose(analyser, by_node[ast_node])
end

Private Instance Methods

by_node() click to toggle source
# File lib/rdg/analysis/registry.rb, line 30
def by_node
  @by_node ||= Hash.new { |h, node| h[node] = Registry.by_type[node.type] }
end