class Rails::Generators::NamedBase

def self.check_class_collision(options={})


the presence of "AdminDecorator".
If the generator is invoked with class name Admin, it will check for

check_class_collision suffix: "Decorator"

==== Examples

can supply a hash with a :prefix or :suffix to be tested.
Add a class collisions name to be checked on class initialization. You
def self.check_class_collision(options={})
  define_method :check_class_collision do
    name = if self.respond_to?(:controller_class_name) # for ScaffoldBase
      controller_class_name
    else
      class_name
    end
    class_collisions "#{options[:prefix]}#{name}#{options[:suffix]}"
  end
end

def application_name

Tries to retrieve the application name or simply return application.
def application_name
  if defined?(Rails) && Rails.application
    Rails.application.class.name.split('::').first.underscore
  else
    "application"
  end
end

def assign_names!(name) #:nodoc:

:nodoc:
def assign_names!(name) #:nodoc:
  @class_path = name.include?('/') ? name.split('/') : name.split('::')
  @class_path.map!(&:underscore)
  @file_name = @class_path.pop
end

def attributes_names

def attributes_names
  @attributes_names ||= attributes.each_with_object([]) do |a, names|
    names << a.column_name
    names << 'password_confirmation' if a.password_digest?
    names << "#{a.name}_type" if a.polymorphic?
  end
end

def class_name

def class_name
  (class_path + [file_name]).map!(&:camelize).join('::')
end

def class_path

def class_path
  inside_template? || !namespaced? ? regular_class_path : namespaced_class_path
end

def edit_helper

def edit_helper
  "edit_#{show_helper}"
end

def file_path

def file_path
  @file_path ||= (class_path + [file_name]).join('/')
end

def fixture_file_name

def fixture_file_name
  @fixture_file_name ||= (pluralize_table_names? ? plural_file_name : file_name)
end

def human_name

def human_name
  @human_name ||= singular_name.humanize
end

def i18n_scope

def i18n_scope
  @i18n_scope ||= file_path.tr('/', '.')
end

def indent(content, multiplier = 2)

def indent(content, multiplier = 2)
  spaces = " " * multiplier
  content.each_line.map {|line| line.blank? ? line : "#{spaces}#{line}" }.join
end

def index_helper

def index_helper
  uncountable? ? "#{plural_table_name}_index" : plural_table_name
end

def initialize(args, *options) #:nodoc:

:nodoc:
def initialize(args, *options) #:nodoc:
  @inside_template = nil
  # Unfreeze name in case it's given as a frozen string
  args[0] = args[0].dup if args[0].is_a?(String) && args[0].frozen?
  super
  assign_names!(self.name)
  parse_attributes! if respond_to?(:attributes)
end

def inside_template

def inside_template
  @inside_template = true
  yield
ensure
  @inside_template = false
end

def inside_template?

def inside_template?
  @inside_template
end

def module_namespacing(&block)

if namespace exists and is not skipped
Wrap block with namespace of current application
def module_namespacing(&block)
  content = capture(&block)
  content = wrap_with_namespace(content) if namespaced?
  concat(content)
end

def mountable_engine?

def mountable_engine?
  defined?(ENGINE_ROOT) && namespaced?
end

def namespace

def namespace
  Rails::Generators.namespace
end

def namespaced?

def namespaced?
  !options[:skip_namespace] && namespace
end

def namespaced_class_path

def namespaced_class_path
  @namespaced_class_path ||= [namespaced_path] + @class_path
end

def namespaced_file_path

def namespaced_file_path
  @namespaced_file_path ||= namespaced_class_path.join("/")
end

def namespaced_path

def namespaced_path
  @namespaced_path ||= namespace.name.split("::").first.underscore
end

def new_helper

def new_helper
  "new_#{singular_table_name}_url"
end

def parse_attributes! #:nodoc:

:nodoc:
Convert attributes array into GeneratedAttribute objects.
def parse_attributes! #:nodoc:
  self.attributes = (attributes || []).map do |attr|
    Rails::Generators::GeneratedAttribute.parse(attr)
  end
end

def plural_file_name

def plural_file_name
  @plural_file_name ||= file_name.pluralize
end

def plural_name

def plural_name
  @plural_name ||= singular_name.pluralize
end

def plural_table_name

def plural_table_name
  @plural_table_name ||= (pluralize_table_names? ? table_name : table_name.pluralize)
end

def pluralize_table_names?

def pluralize_table_names?
  !defined?(ActiveRecord::Base) || ActiveRecord::Base.pluralize_table_names
end

def regular_class_path

def regular_class_path
  @class_path
end

def route_url

def route_url
  @route_url ||= class_path.collect {|dname| "/" + dname }.join + "/" + plural_file_name
end

def show_helper

def show_helper
  "#{singular_table_name}_url(@#{singular_table_name})"
end

def singular_name

this method public and add it to the task list.
FIXME: We are avoiding to use alias because a bug on thor that make
def singular_name
  file_name
end

def singular_table_name

def singular_table_name
  @singular_table_name ||= (pluralize_table_names? ? table_name.singularize : table_name)
end

def table_name

def table_name
  @table_name ||= begin
    base = pluralize_table_names? ? plural_name : singular_name
    (class_path + [base]).join('_')
  end
end

def template(source, *args, &block)

def template(source, *args, &block)
  inside_template do
    super
  end
end

def uncountable?

def uncountable?
  singular_name == plural_name
end

def url_helper_prefix

def url_helper_prefix
  @url_helper_prefix ||= (class_path + [file_name]).join('_')
end

def wrap_with_namespace(content)

def wrap_with_namespace(content)
  content = indent(content).chomp
  "module #{namespace.name}\n#{content}\nend\n"
end