class NameMap

Constants

EXCLUDED
MAP

Public Class Methods

new(filter=false) click to toggle source
# File lib/mspec/utils/name_map.rb, line 74
def initialize(filter=false)
  @seen = {}
  @filter = filter
end

Public Instance Methods

class_or_module(c) click to toggle source
# File lib/mspec/utils/name_map.rb, line 84
def class_or_module(c)
  const = const_lookup(c)
  filtered = @filter && EXCLUDED.include?(const.name)
  return const if Module === const and not filtered
rescue NameError
end
dir_name(c, base) click to toggle source
# File lib/mspec/utils/name_map.rb, line 119
def dir_name(c, base)
  return File.join(base, 'exception') if exception? c

  c.split('::').inject(base) do |dir, name|
    name.gsub!(/Class/, '') unless name == 'Class'
    File.join dir, name.downcase
  end
end
exception?(name) click to toggle source
# File lib/mspec/utils/name_map.rb, line 79
def exception?(name)
  return false unless c = class_or_module(name)
  c == Errno or c.ancestors.include? Exception
end
file_name(m, c) click to toggle source
# File lib/mspec/utils/name_map.rb, line 128
def file_name(m, c)
  if MAP.key?(m)
    name = MAP[m].is_a?(Hash) ? MAP[m][c.split('::').last] || MAP[m][:default] : MAP[m]
  else
    name = m.gsub(/[?!=]/, '')
  end
  "#{name}_spec.rb"
end
map(hash, constants, mod=nil) click to toggle source
# File lib/mspec/utils/name_map.rb, line 96
def map(hash, constants, mod=nil)
  @seen = {} unless mod

  constants.each do |const|
    name = namespace mod, const
    m = class_or_module name
    next unless m and not @seen[m]
    @seen[m] = true

    ms = m.methods(false).map { |x| x.to_s }
    hash["#{name}."] = ms.sort unless ms.empty?

    ms = m.public_instance_methods(false) +
         m.protected_instance_methods(false)
    ms.map! { |x| x.to_s }
    hash["#{name}#"] = ms.sort unless ms.empty?

    map hash, m.constants, name
  end

  hash
end
namespace(mod, const) click to toggle source
# File lib/mspec/utils/name_map.rb, line 91
def namespace(mod, const)
  return const.to_s if mod.nil? or %w[Object Class Module].include? mod
  "#{mod}::#{const}"
end