From 8b50f89ba7076a62595d040f1512859c287c2d5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sun, 21 Mar 2010 19:30:42 +0100 Subject: Make ERB generators more flexible and customizable. --- railties/lib/generators/erb.rb | 13 ++++++++ .../erb/controller/controller_generator.rb | 8 ++--- .../lib/generators/erb/mailer/mailer_generator.rb | 17 +++------- .../generators/erb/scaffold/scaffold_generator.rb | 38 ++++++++-------------- 4 files changed, 34 insertions(+), 42 deletions(-) (limited to 'railties/lib/generators') diff --git a/railties/lib/generators/erb.rb b/railties/lib/generators/erb.rb index d468d012dc..3e6371268f 100644 --- a/railties/lib/generators/erb.rb +++ b/railties/lib/generators/erb.rb @@ -3,6 +3,19 @@ require 'rails/generators/named_base' module Erb module Generators class Base < Rails::Generators::NamedBase #:nodoc: + protected + + def format + :html + end + + def handler + :erb + end + + def filename_with_extensions(name) + [name, format, handler].compact.join(".") + end end end end diff --git a/railties/lib/generators/erb/controller/controller_generator.rb b/railties/lib/generators/erb/controller/controller_generator.rb index ab7b273662..a8bbcf401c 100644 --- a/railties/lib/generators/erb/controller/controller_generator.rb +++ b/railties/lib/generators/erb/controller/controller_generator.rb @@ -5,15 +5,13 @@ module Erb class ControllerGenerator < Base argument :actions, :type => :array, :default => [], :banner => "action action" - def create_view_files + def copy_view_files base_path = File.join("app/views", class_path, file_name) empty_directory base_path actions.each do |action| - @action = action - @path = File.join(base_path, "#{action}.html.erb") - - template 'view.html.erb', @path + @action, @path = action, File.join(base_path, action) + template filename_with_extensions(:view), filename_with_extensions(@path) end end end diff --git a/railties/lib/generators/erb/mailer/mailer_generator.rb b/railties/lib/generators/erb/mailer/mailer_generator.rb index 408c942cef..65fa4a86c5 100644 --- a/railties/lib/generators/erb/mailer/mailer_generator.rb +++ b/railties/lib/generators/erb/mailer/mailer_generator.rb @@ -1,19 +1,12 @@ -require 'generators/erb' +require 'generators/erb/controller/controller_generator' module Erb module Generators - class MailerGenerator < Base - argument :actions, :type => :array, :default => [], :banner => "method method" + class MailerGenerator < ControllerGenerator + protected - def create_view_folder - empty_directory File.join("app/views", file_path) - end - - def create_view_files - actions.each do |action| - @action, @path = action, File.join(file_path, action) - template "view.text.erb", File.join("app/views", "#{@path}.text.erb") - end + def format + :text end end end diff --git a/railties/lib/generators/erb/scaffold/scaffold_generator.rb b/railties/lib/generators/erb/scaffold/scaffold_generator.rb index 846540476f..267c9c8063 100644 --- a/railties/lib/generators/erb/scaffold/scaffold_generator.rb +++ b/railties/lib/generators/erb/scaffold/scaffold_generator.rb @@ -15,39 +15,27 @@ module Erb empty_directory File.join("app/views", controller_file_path) end - def copy_index_file - return if options[:singleton] - copy_view :index - end - - def copy_edit_file - copy_view :edit - end + def copy_view_files + views = available_views + views.delete("index") if options[:singleton] - def copy_show_file - copy_view :show - end - - def copy_new_file - copy_view :new - end - - def copy_form_file - copy_view :_form + views.each do |view| + filename = filename_with_extensions(view) + template filename, File.join("app/views", controller_file_path, filename) + end end def copy_layout_file return unless options[:layout] - template "layout.html.erb", - File.join("app/views/layouts", controller_class_path, "#{controller_file_name}.html.erb") + template filename_with_extensions(:layout), + File.join("app/views/layouts", controller_class_path, filename_with_extensions(controller_file_name)) end - protected - - def copy_view(view) - template "#{view}.html.erb", File.join("app/views", controller_file_path, "#{view}.html.erb") - end + protected + def available_views + %w(index edit show new _form) + end end end end -- cgit v1.2.3