module StaticSourceLoc
Constants
- Parser
- SourceLoc
- VERSION
Public Class Methods
analyze(dir, file_test=nil, dir_test=nil, ignore_errors=true)
click to toggle source
# File lib/static_source_loc.rb, line 128 def analyze(dir, file_test=nil, dir_test=nil, ignore_errors=true) file_test ||= /\.rb\Z/ dir_test ||= proc {true} sexprs = load_sexprs(dir, file_test, dir_test, ignore_errors) toplevel = ModuleSource.new :Object, nil sexprs.each &toplevel.method(:process_code) submodules = toplevel.submodules submodules.values.each {|ms| ms.instance_variable_set :@parent, nil} submodules.merge toplevel.methods end
Private Class Methods
load_sexprs(dir, file_test, dir_test, ignore_errors)
click to toggle source
# File lib/static_source_loc.rb, line 141 def load_sexprs(dir, file_test, dir_test, ignore_errors) files = Find.to_enum(:find, dir).each_with_object([]) do |path, files| if File.file? path next unless file_test === path files << path else Find.prune unless dir_test === path end end sexprs = files.map do |fn| File.open fn do |file| begin Parser.reset Parser.parse file.read, fn rescue RubyParser::SyntaxError, Racc::ParseError raise unless ignore_errors end end end sexprs.compact! sexprs end