require "generators/html5/generator_helpers"
module Html5
module Generators
class PartialGenerator < ::Rails::Generators::NamedBase
include Html5::Generators::GeneratorHelpers
source_root File.expand_path('../templates', __FILE__)
argument :name, :type => :string,
:required => false,
:default => ""
class_option :all, :type => :boolean,
:default => false,
:desc => "Generate all partials"
class_option :minimal, :type => :boolean,
:default => false,
:desc => "Generate minimal partials (_head, _header, _footer)"
class_option :path, :type => :string,
:default => nil,
:required => false,
:desc => "resource path to generate partials in"
class_option :template_engine
# def validate_name
# if options[:all] || options[:minimal]
# if partials.include?(file_name)
# path = class_path.join("/")
# message = "Argument '#{ file_path }' not allowed with --all or --minimal options."
# message << " Try using '#{ path }' instead." if !path.blank?
# raise Error, message
# end
# end
# end
def generate_partials
if partials.any?
empty_directory File.join("app/views", partial_path)
end
partials.each do |partial|
generate_partial(partial)
end
end
protected
def partials
if options[:all]
%w(_flashes _footer _head _header _javascripts _stylesheets _chromeframe)
elsif options.minimal?
%w(_footer _head _header _chromeframe)
elsif file_name
[file_name]
else
[]
end
end
def partial_path
if !options.path.blank?
path = options.path
else
path = class_path.join("/")
end
path.blank? ? "application" : path
end
def generate_partial(partial_name)
template filename_with_extensions(partial_name), File.join("app/views", partial_path, filename_with_extensions(partial_name))
end
end
end
end