Sha256: a3d5ffa4a2adc3dc41de0c9653e3c08bd1f740d23da48d082950d699fd3fded3

Contents?: true

Size: 1015 Bytes

Versions: 6

Compression:

Stored size: 1015 Bytes

Contents

module Reek
  class Name
    include Comparable

    def self.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], new(exp[2])]
      when :const
        return [ModuleContext.create(context, exp), new(name)]
      when :colon3
        return [StopContext.new, new(name)]
      else
        return [context, new(name)]
      end
    end

    def self.resolve_string(str, context)
      return [context, new(str)] unless str =~ /::/
      resolve(RubyParser.new.parse(str), context)
    end

    def initialize(sym)
      @name = sym.to_s
    end

    def hash  # :nodoc:
      @name.hash
    end

    def eql?(other)
      self == other
    end

    def <=>(other)  # :nodoc:
      @name <=> other.to_s
    end

    def effective_name
      @name.gsub(/^@*/, '')
    end

    def inspect
      @name.inspect
    end

    def to_s
      @name
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
kevinrutherford-reek-1.1.3.15 lib/reek/name.rb
kevinrutherford-reek-1.1.3.16 lib/reek/name.rb
kevinrutherford-reek-1.2.0 lib/reek/name.rb
reek-1.2.2 lib/reek/name.rb
reek-1.2.1 lib/reek/name.rb
reek-1.2.0 lib/reek/name.rb