Sha256: f08bcb7a7d33d3a192452c19854e565773fa8f0072e1820e28b426b18f2ce967

Contents?: true

Size: 1.38 KB

Versions: 11

Compression:

Stored size: 1.38 KB

Contents

module Churn
  
  class LocationMapping < SexpProcessor
    
    attr_reader :klasses_collection, :methods_collection
    
    def initialize()
      super
      @klasses_collection  = {}
      @methods_collection  = {}
      @parser              = RubyParser.new
      self.auto_shift_type = true
    end
    
    def get_info(file)
      ast = @parser.process(File.read(file), file)
      process ast
    end
    
    def process_class(exp)
      name           = exp.shift
      start_line     = exp.line
      last_line      = exp.last.line
      name           = name if name.is_a?(Symbol)
      name           = name.values.value if name.is_a?(Sexp) #deals with cases like class Test::Unit::TestCase
      @current_class = name
      @klasses_collection[name.to_s] = [] unless @klasses_collection.include?(name)
      @klasses_collection[name.to_s] << (start_line..last_line)
      analyze_list exp
      s()
    end
    
    def analyze_list exp
      process exp.shift until exp.empty?
    end
    
    def process_defn(exp)
      name        = exp.shift
      start_line  = exp.line
      last_line   = exp.last.line
      full_name   = "#{@current_class}##{name}"
      @methods_collection[full_name] = [] unless @methods_collection.include?(full_name)
      @methods_collection[full_name] << (start_line..last_line)
      return s(:defn, name, process(exp.shift), process(exp.shift))
    end

  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
churn-0.0.12 lib/churn/location_mapping.rb
churn-0.0.11 lib/churn/location_mapping.rb
churn-0.0.10 lib/churn/location_mapping.rb
churn-0.0.9 lib/churn/location_mapping.rb
churn-0.0.8 lib/churn/location_mapping.rb
churn-0.0.7 lib/churn/location_mapping.rb
churn-0.0.6 lib/churn/location_mapping.rb
churn-0.0.5 lib/churn/location_mapping.rb
churn-0.0.4 lib/churn/location_mapping.rb
churn-0.0.3 lib/churn/location_mapping.rb
churn-0.0.2 lib/churn/location_mapping.rb