提交 5c418af9 编写于 作者: R Rafael França 提交者: GitHub

Merge pull request #29853 from lugray/move_generator_namespacing_to_base

Move generator namespacing to Base
......@@ -16,6 +16,9 @@ class Base < Thor::Group
include Thor::Actions
include Rails::Generators::Actions
class_option :skip_namespace, type: :boolean, default: false,
desc: "Skip namespace (affects only isolated applications)"
add_runtime_options!
strict_args_position!
......@@ -271,6 +274,40 @@ def extract_last_module(nesting) # :doc:
end
end
# Wrap block with namespace of current application
# if namespace exists and is not skipped
def module_namespacing(&block) # :doc:
content = capture(&block)
content = wrap_with_namespace(content) if namespaced?
concat(content)
end
def indent(content, multiplier = 2) # :doc:
spaces = " " * multiplier
content.each_line.map { |line| line.blank? ? line : "#{spaces}#{line}" }.join
end
def wrap_with_namespace(content) # :doc:
content = indent(content).chomp
"module #{namespace.name}\n#{content}\nend\n"
end
def namespace # :doc:
Rails::Generators.namespace
end
def namespaced? # :doc:
!options[:skip_namespace] && namespace
end
def namespace_dirs
@namespace_dirs ||= namespace.name.split("::").map(&:underscore)
end
def namespaced_path # :doc:
@namespaced_path ||= namespace_dirs.join("/")
end
# Use Rails default banner.
def self.banner # :doc:
"rails generate #{namespace.sub(/^rails:/, '')} #{arguments.map(&:usage).join(' ')} [options]".gsub(/\s+/, " ")
......
......@@ -6,8 +6,6 @@ module Rails
module Generators
class NamedBase < Base
argument :name, type: :string
class_option :skip_namespace, type: :boolean, default: false,
desc: "Skip namespace (affects only isolated applications)"
def initialize(args, *options) #:nodoc:
@inside_template = nil
......@@ -45,24 +43,6 @@ def singular_name # :doc:
file_name
end
# Wrap block with namespace of current application
# if namespace exists and is not skipped
def module_namespacing(&block) # :doc:
content = capture(&block)
content = wrap_with_namespace(content) if namespaced?
concat(content)
end
def indent(content, multiplier = 2) # :doc:
spaces = " " * multiplier
content.each_line.map { |line| line.blank? ? line : "#{spaces}#{line}" }.join
end
def wrap_with_namespace(content) # :doc:
content = indent(content).chomp
"module #{namespace.name}\n#{content}\nend\n"
end
def inside_template # :doc:
@inside_template = true
yield
......@@ -74,18 +54,6 @@ def inside_template? # :doc:
@inside_template
end
def namespace # :doc:
Rails::Generators.namespace
end
def namespaced? # :doc:
!options[:skip_namespace] && namespace
end
def namespace_dirs
@namespace_dirs ||= namespace.name.split("::").map(&:underscore)
end
def file_path # :doc:
@file_path ||= (class_path + [file_name]).join("/")
end
......@@ -102,10 +70,6 @@ def namespaced_class_path # :doc:
@namespaced_class_path ||= namespace_dirs + @class_path
end
def namespaced_path # :doc:
@namespaced_path ||= namespace_dirs.join("/")
end
def class_name # :doc:
(class_path + [file_name]).map!(&:camelize).join("::")
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册