Sha256: 710a86be7890feee24b1dc57b2f019c6b6281baf5cf56ff31cac00ae31f33d83

Contents?: true

Size: 918 Bytes

Versions: 1

Compression:

Stored size: 918 Bytes

Contents

require 'reek/code_context'

module Reek
  class ModuleContext < CodeContext

    def ModuleContext.create(outer, exp)
      res = Name.resolve(exp[1], outer)
      ModuleContext.new(res[0], res[1])
    end

    def ModuleContext.from_s(src)
      source = src.to_reek_source
      sniffer = Sniffer.new(source)
      CodeParser.new(sniffer).process_module(source.syntax_tree)
    end

    attr_reader :class_variables

    def initialize(outer, name)
      super(outer, nil)
      @name = name
      @class_variables = Set.new
    end

    def myself
      @myself ||= @outer.find_module(@name)
    end

    def find_module(modname)
      return nil unless myself
      @myself.const_or_nil(modname.to_s)
    end

    def outer_name
      "#{@outer.outer_name}#{@name}::"
    end

    def record_class_variable(cvar)
      @class_variables << Name.new(cvar)
    end

    def variable_names
      []
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reek-1.2.1 lib/reek/module_context.rb