Sha256: 7fc947adf4118b7802034babbe6f700ec976337c8645e9977c6e31fbc1edb022

Contents?: true

Size: 941 Bytes

Versions: 20

Compression:

Stored size: 941 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 <=>(other)  # :nodoc:
      @name <=> other.to_s
    end

    alias eql? <=>

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

    def to_s
      @name
    end
  end
end

Version data entries

20 entries across 20 versions & 3 rubygems

Version Path
kevinrutherford-reek-1.1.2.1 lib/reek/name.rb
kevinrutherford-reek-1.1.2 lib/reek/name.rb
kevinrutherford-reek-1.1.3.1 lib/reek/name.rb
kevinrutherford-reek-1.1.3.10 lib/reek/name.rb
kevinrutherford-reek-1.1.3.11 lib/reek/name.rb
kevinrutherford-reek-1.1.3.12 lib/reek/name.rb
kevinrutherford-reek-1.1.3.13 lib/reek/name.rb
kevinrutherford-reek-1.1.3.14 lib/reek/name.rb
kevinrutherford-reek-1.1.3.2 lib/reek/name.rb
kevinrutherford-reek-1.1.3.3 lib/reek/name.rb
kevinrutherford-reek-1.1.3.4 lib/reek/name.rb
kevinrutherford-reek-1.1.3.5 lib/reek/name.rb
kevinrutherford-reek-1.1.3.6 lib/reek/name.rb
kevinrutherford-reek-1.1.3.7 lib/reek/name.rb
kevinrutherford-reek-1.1.3.8 lib/reek/name.rb
kevinrutherford-reek-1.1.3.9 lib/reek/name.rb
kevinrutherford-reek-1.1.3 lib/reek/name.rb
teksymmetry-reek-1.1.3.1 lib/reek/name.rb
teksymmetry-reek-1.1.3.2 lib/reek/name.rb
reek-1.1.3 lib/reek/name.rb