class Steep::Names::Base

def self.parse(string)

def self.parse(string)
  namespace = AST::Namespace.parse(string.to_s)
  *_, name = namespace.path
  new(namespace: namespace.parent, name: name)
end

def ==(other)

def ==(other)
  other.is_a?(self.class) && other.name == name && other.namespace == namespace
end

def absolute!

def absolute!
  self.class.new(namespace: namespace.absolute!,
                 name: name)
end

def absolute?

def absolute?
  namespace.absolute?
end

def hash

def hash
  self.class.hash ^ name.hash ^ namespace.hash
end

def in_namespace(namespace)

def in_namespace(namespace)
  if absolute?
    self
  else
    self.class.new(namespace: namespace + self.namespace, name: name)
  end
end

def initialize(namespace:, name:, location: nil)

def initialize(namespace:, name:, location: nil)
  @namespace = namespace
  @name = name
  @location = location
end

def relative?

def relative?
  !absolute?
end

def to_s

def to_s
  "#{namespace}#{name}"
end