Sha256: 4a663b5dd2b91432db45ef6ab9574a53631cdbfac3f76b357d6260051a280771

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'rails/generators/base'
require 'sugar-high/array'
require 'active_support/inflector'
require 'rails_artifactor'

module CanTango
  module Generators
    class Base < ::Rails::Generators::Base
      def self.inherited(subclass)
        subclass.extend ClassMethods
      end

      module ClassMethods
        def can_actions
          [:create, :update, :manage, :read, :access]
        end
      end
      extend ClassMethods

      can_actions.each do |action|
        class_eval %{
          class_option :#{action},      :type => :array,     :default => [],  :desc => "Models allowed to #{action}"
        }
      end

      protected

      can_actions.each do |action|
        class_eval %{
          def #{action}
            options[:#{action}]
          end
        }
      end

      def rules_logic
        self.class.can_actions.map do |action|
          send(action).map do |c|
            "can(:#{action}, #{act_model(c)})"
          end.join("\n    ")
        end.join("\n    ")
      end

      def act_model name
        return ':all' if name == 'all'
        name.camelize
      end
    end
  end
end


Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cantango-0.8.0 lib/generators/cantango/base.rb