Sha256: f03c5cd8225ea29faec597b650b0aac1c8240024afd3115c8d19607e4b86a0d7

Contents?: true

Size: 1.84 KB

Versions: 41

Compression:

Stored size: 1.84 KB

Contents

#!/usr/bin/env ruby
require "rubygems"

require "thor"
require "thor/group"
require 'thor/rake_compat'

module IB
  class ControllerGenerator < Thor
    include Thor::Actions
    include Thor::RakeCompat
    
    map "c" => :controller

    def self.source_root
      File.dirname(__FILE__)
    end

    desc "controller", "generate controller"
    argument :name, :type => :string, :desc => "Name of the controller"
    argument :controller_type, :type => :string, :desc => "Type of the controller, default: UIViewController", :default => "UIViewController"
    class_option :outlets, :type => :hash, :default => {}, :required => false, :desc => "IBOutlets of the controller"
    class_option :actions, :type => :array, :default => [], :required => false, :desc => "IBAtions of the controller"
    class_option :accessors, :type => :array, :default => [], :required => false, :desc => "Accessors of the controller"
    def controller
      create_controller_file
      create_helper_file
      create_spec_file
    end

    private
    def create_controller_file
      template('../template/controller.erb', "app/controllers/#{underscore(name)}_controller.rb")
    end

    def create_helper_file
      template('../template/controller_helper.erb', "app/helpers/#{underscore(name)}_helper.rb")
    end

    def create_spec_file
      template('../template/controller_spec.erb', "spec/controllers/#{underscore(name)}_controller_spec.rb")
    end

    def controller_name
      camelize("#{name}Controller")
    end

    def underscore(string)
      string.gsub(/::/, '/').
      gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
      gsub(/([a-z\d])([A-Z])/,'\1_\2').
      tr("-", "_").
      downcase
    end

    def camelize(string)
      return string if string !~ /_/ && string =~ /[A-Z]+.*/
      string.split('_').map{|e| e.capitalize }.join
    end
  end
end

IB::ControllerGenerator.start

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
ib-1.0.1 bin/ib
ib-1.0 bin/ib
ib-0.8.0 bin/ib
ib-0.7.2 bin/ib
ib-0.7.1 bin/ib
ib-0.7.0 bin/ib
ib-0.6.0 bin/ib
ib-0.5.0 bin/ib
ib-0.4.9 bin/ib
ib-0.4.8 bin/ib
ib-0.4.7 bin/ib
ib-0.4.6 bin/ib
ib-0.4.5 bin/ib
ib-0.4.4 bin/ib
ib-0.4.3 bin/ib
ib-0.4.2 bin/ib
ib-0.4.1 bin/ib
ib-0.4.0 bin/ib
ib-0.3.5 bin/ib
ib-0.3.4 bin/ib