Sha256: db918ba4e875dbbbe375540f1006533a6e07309369b04488ce8125f0c0a417dc

Contents?: true

Size: 959 Bytes

Versions: 1

Compression:

Stored size: 959 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(ParseTree.new.parse_tree_for_string(str)[0], 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

1 entries across 1 versions & 1 rubygems

Version Path
kevinrutherford-reek-1.1.1 lib/reek/name.rb