Sha256: 57837101a9f1bd1b15ef930c15db7d93985c3504f8b957f2dbd1d24e961842e4

Contents?: true

Size: 1.98 KB

Versions: 3

Compression:

Stored size: 1.98 KB

Contents

require 'active_support/core_ext'

module Jax
  module Generators
    module Controller
      class ControllerGenerator < Jax::Generators::PluggableCommand
        argument :controller_name
        attr_reader :actions, :action_name
        class_option :root, :default => false, :type => :boolean

        def self.source_root
          File.expand_path("templates", File.dirname(__FILE__))
        end
        
        def initialize(args=[], options={}, config={})
          super
          @actions = args[1..-1].collect { |c| c.underscore }
          @actions = ['index'] if @actions.empty?
          @controller_name = controller_name.underscore
        end
        
        def source
          template 'controller_source.js.tt', File.join("app/controllers", "#{file_name}_controller.js")
        end
        
        def helper
          template 'helper.js.tt', File.join("app/helpers", "#{file_name}_helper.js")
        end
        
        def tests
          template 'controller_test.js.tt', File.join('spec/javascripts/controllers', "#{file_name}_controller_spec.js")
          template 'helper_test.js.tt', File.join('spec/javascripts/helpers', "#{file_name}_helper_spec.js")
        end

        def views
          actions.each do |action|
            @action_name = action
            template 'view.js.tt', File.join("app/views", file_name, "#{action}.js")
          end
        end
        
        def routes
          actions.each do |action|
            insert_into_file "config/routes.rb", "\n  map '#{controller_name}/#{action}'",
                             :after => /\.routes\.map do$/
          end
        end
        
        def root_route
          if options[:root]
            insert_into_file "config/routes.rb", "  root '#{controller_name}'\n", :before => /^end\s*\Z/
          end
        end

        protected
        def file_name
          controller_name.underscore
        end
        
        def class_name
          controller_name.camelize
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jax-1.1.1 lib/jax/generators/controller/controller_generator.rb
jax-1.1.0 lib/jax/generators/controller/controller_generator.rb
jax-1.1.0.rc1 lib/jax/generators/controller/controller_generator.rb