@private
Namespace for the example group subclasses generated by top-level `describe`.
# File lib/rspec/core/example_group.rb, line 656 def self.assign_const(group) base_name = base_name_for(group) const_scope = constant_scope_for(group) name = disambiguate(base_name, const_scope) const_scope.const_set(name, group) end
# File lib/rspec/core/example_group.rb, line 670 def self.base_name_for(group) return "Anonymous" if group.description.empty? # convert to CamelCase name = ' ' + group.description name.gsub!(/[^0-9a-zA-Z]+([0-9a-zA-Z])/) { $1.upcase } name.lstrip! # Remove leading whitespace name.gsub!(/\W/, '') # JRuby, RBX and others don't like non-ascii in const names # Ruby requires first const letter to be A-Z. Use `Nested` # as necessary to enforce that. name.gsub!(/\A([^A-Z]|\z)/, 'Nested\1') name end
# File lib/rspec/core/example_group.rb, line 664 def self.constant_scope_for(group) const_scope = group.superclass const_scope = self if const_scope == Core::ExampleGroup const_scope end
# File lib/rspec/core/example_group.rb, line 687 def self.disambiguate(name, const_scope) return name unless const_defined_on?(const_scope, name) # Add a trailing number if needed to disambiguate from an existing constant. name << "_2" name.next! while const_defined_on?(const_scope, name) name end
Generated with the Darkfish Rdoc Generator 2.