diff --git a/lib/foundation/rails.rb b/lib/foundation/rails.rb index b4355333..fb6b0ed6 100644 --- a/lib/foundation/rails.rb +++ b/lib/foundation/rails.rb @@ -1,3 +1,2 @@ require 'foundation/rails/engine' require 'foundation/rails/version' -require 'foundation/rails/generators/install_generator' diff --git a/lib/foundation/rails/generators/install_generator.rb b/lib/foundation/rails/generators/install_generator.rb deleted file mode 100644 index 470754af..00000000 --- a/lib/foundation/rails/generators/install_generator.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'rails/generators' - -module Foundation - # module Rails - module Generators - class InstallGenerator < ::Rails::Generators::Base - source_root File.join(File.dirname(__FILE__), '..', 'templates') - argument :layout_name, :type => :string, :default => 'application', :banner => 'layout_name' - - class_option :haml, :desc => 'Generate HAML layout instead of erb', :type => :boolean - class_option :slim, :desc => 'Generate Slim layout instead of erb', :type => :boolean - - def add_assets - # rails_ujs breaks, need to incorporate rails-behavior plugin for this to work seamlessly - # gsub_file "app/assets/javascripts/application#{detect_js_format[0]}", /\/\/= require jquery\n/, "" - insert_into_file "app/assets/javascripts/application#{detect_js_format[0]}", "#{detect_js_format[1]} require foundation\n", :after => "jquery_ujs\n" - append_to_file "app/assets/javascripts/application#{detect_js_format[0]}", "#{detect_js_format[2]}" - settings_file = File.join(File.dirname(__FILE__),"..", "..", "..", "..", "vendor", "assets", "stylesheets", "foundation", "_settings.scss") - create_file "app/assets/stylesheets/foundation_and_overrides.scss", File.read(settings_file) - append_to_file "app/assets/stylesheets/foundation_and_overrides.scss", "\n@import 'foundation';\n" - insert_into_file "app/assets/stylesheets/application#{detect_css_format[0]}", "\n#{detect_css_format[1]} require foundation_and_overrides\n", :after => "require_self" - end - - def detect_js_format - return ['.coffee', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?('app/assets/javascripts/application.coffee') - return ['.coffee.erb', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?('app/assets/javascripts/application.coffee.erb') - return ['.js.coffee', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?('app/assets/javascripts/application.js.coffee') - return ['.js.coffee.erb', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?('app/assets/javascripts/application.js.coffee.erb') - return ['.js', '//=', "\n$(function(){ $(document).foundation(); });\n"] if File.exist?('app/assets/javascripts/application.js') - return ['.js.erb', '//=', "\n$(function(){ $(document).foundation(); });\n"] if File.exist?('app/assets/javascripts/application.js.erb') - end - - def detect_css_format - return ['.css', ' *='] if File.exist?('app/assets/stylesheets/application.css') - return ['.css.sass', ' //='] if File.exist?('app/assets/stylesheets/application.css.sass') - return ['.sass', ' //='] if File.exist?('app/assets/stylesheets/application.sass') - return ['.css.scss', ' //='] if File.exist?('app/assets/stylesheets/application.css.scss') - return ['.scss', ' //='] if File.exist?('app/assets/stylesheets/application.scss') - end - - def create_layout - if options.haml?||(defined?(Haml) && options.haml?) - template 'application.html.haml', "app/views/layouts/#{file_name}.html.haml" - elsif options.slim?||(defined?(Slim) && options.slim?) - template 'application.html.slim', "app/views/layouts/#{file_name}.html.slim" - else - template 'application.html.erb', "app/views/layouts/#{file_name}.html.erb" - end - end - - private - - def file_name - layout_name.underscore.downcase - end - end - end - # end -end diff --git a/lib/generators/foundation/install_generator.rb b/lib/generators/foundation/install_generator.rb new file mode 100644 index 00000000..16bf66ea --- /dev/null +++ b/lib/generators/foundation/install_generator.rb @@ -0,0 +1,69 @@ +require 'rails/generators' + +module Foundation + module Generators + class InstallGenerator < ::Rails::Generators::Base + source_root File.join(File.dirname(__FILE__), 'templates') + argument :layout_name, :type => :string, :default => 'application', :banner => 'layout_name' + + class_option :haml, :desc => 'Generate HAML layout instead of erb', :type => :boolean + class_option :slim, :desc => 'Generate Slim layout instead of erb', :type => :boolean + + def add_assets + # rails_ujs breaks, need to incorporate rails-behavior plugin for this to work seamlessly + # gsub_file "app/assets/javascripts/application#{detect_js_format[0]}", /\/\/= require jquery\n/, "" + insert_into_file File.join(javascripts_base_dir, "application#{detect_js_format[0]}"), "#{detect_js_format[1]} require foundation\n", :after => "jquery_ujs\n" + append_to_file File.join(javascripts_base_dir, "application#{detect_js_format[0]}"), "#{detect_js_format[2]}" + settings_file = File.join(File.dirname(__FILE__),"..", "..", "..", "vendor", "assets", "stylesheets", "foundation", "_settings.scss") + create_file File.join(stylesheets_base_dir, 'foundation_and_overrides.scss'), File.read(settings_file) + append_to_file File.join(stylesheets_base_dir, 'foundation_and_overrides.scss'), "\n@import 'foundation';\n" + insert_into_file File.join(stylesheets_base_dir, "application#{detect_css_format[0]}"), "\n#{detect_css_format[1]} require foundation_and_overrides\n", :after => "require_self" + end + + def detect_js_format + return ['.coffee', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?(File.join(javascripts_base_dir, 'application.coffee')) + return ['.coffee.erb', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?(File.join(javascripts_base_dir, 'application.coffee.erb')) + return ['.js.coffee', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?(File.join(javascripts_base_dir, 'application.js.coffee')) + return ['.js.coffee.erb', '#=', "\n() ->\n $(document).foundation()\n"] if File.exist?(File.join(javascripts_base_dir, 'application.js.coffee.erb')) + return ['.js', '//=', "\n$(function(){ $(document).foundation(); });\n"] if File.exist?(File.join(javascripts_base_dir, 'application.js')) + return ['.js.erb', '//=', "\n$(function(){ $(document).foundation(); });\n"] if File.exist?(File.join(javascripts_base_dir, 'application.js.erb')) + end + + def detect_css_format + return ['.css', ' *='] if File.exist?(File.join(stylesheets_base_dir, 'application.css')) + return ['.css.sass', ' //='] if File.exist?(File.join(stylesheets_base_dir, 'application.css.sass')) + return ['.sass', ' //='] if File.exist?(File.join(stylesheets_base_dir, 'application.sass')) + return ['.css.scss', ' //='] if File.exist?(File.join(stylesheets_base_dir, 'application.css.scss')) + return ['.scss', ' //='] if File.exist?(File.join(stylesheets_base_dir, 'application.scss')) + end + + def create_layout + if options.haml?||(defined?(Haml) && options.haml?) + template 'application.html.haml', File.join(layouts_base_dir, "#{file_name}.html.haml") + elsif options.slim?||(defined?(Slim) && options.slim?) + template 'application.html.slim', File.join(layouts_base_dir, "#{file_name}.html.slim") + else + template 'application.html.erb', File.join(layouts_base_dir, "#{file_name}.html.erb") + end + end + + private + + def file_name + layout_name.underscore.downcase + end + + def javascripts_base_dir + File.join('app', 'assets', 'javascripts') + end + + def stylesheets_base_dir + File.join('app', 'assets', 'stylesheets') + end + + def layouts_base_dir + File.join('app', 'views', 'layouts') + end + end + end +end diff --git a/lib/foundation/rails/templates/application.html.erb b/lib/generators/foundation/templates/application.html.erb similarity index 100% rename from lib/foundation/rails/templates/application.html.erb rename to lib/generators/foundation/templates/application.html.erb diff --git a/lib/foundation/rails/templates/application.html.haml b/lib/generators/foundation/templates/application.html.haml similarity index 100% rename from lib/foundation/rails/templates/application.html.haml rename to lib/generators/foundation/templates/application.html.haml diff --git a/lib/foundation/rails/templates/application.html.slim b/lib/generators/foundation/templates/application.html.slim similarity index 100% rename from lib/foundation/rails/templates/application.html.slim rename to lib/generators/foundation/templates/application.html.slim