Sha256: a0cfeabd5c2cd92b6bc33c97bdff730731797da361bd4fa4ae77ab8f96620b1c
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
require File.join( File.dirname( File.expand_path(__FILE__)), 'code_context') require File.join( File.dirname( File.expand_path(__FILE__)), 'code_parser') require File.join( File.dirname( File.expand_path(__FILE__)), 'sniffer') module Reek module Core # # A context wrapper for any module found in a syntax tree. # class ModuleContext < CodeContext class << self def create(outer, exp) res = resolve(exp[1], outer) new(res[0], res[1], exp) end def from_s(src) source = src.to_reek_source sniffer = Sniffer.new(source) CodeParser.new(sniffer).do_module_or_class(source.syntax_tree, self) end def resolve(exp, context) unless Array === exp return resolve_string(exp.to_s, context) end name = exp[1] case exp[0] when :colon2 return [resolve(name, context)[0], exp[2].to_s] when :const return [ModuleContext.create(context, exp), name.to_s] when :colon3 return [StopContext.new, name.to_s] else return [context, name.to_s] end end def resolve_string(str, context) return [context, str.to_s] unless str =~ /::/ resolve(RubyParser.new.parse(str), context) end end def initialize(outer, name, exp) super(outer, exp) @name = name @scope_connector = '::' @parsed_methods = [] end def parameterized_methods(min_clump_size) @parsed_methods.select {|meth| meth.parameters.length >= min_clump_size } end def record_method(meth) @parsed_methods << meth end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reek-1.2.7.1 | lib/reek/core/module_context.rb |
reek-1.2.7 | lib/reek/core/module_context.rb |