Sha256: 74558894c7d5675806811637161c136423763c1c98d2223a777041cece895c7e

Contents?: true

Size: 1.18 KB

Versions: 15

Compression:

Stored size: 1.18 KB

Contents

module ExpressAdmin
  module Commands
    def self.included(base)
      base.class_eval do
        include InstanceMethods
        extend ClassMethods

        class_attribute :commands
        self.commands = []
      end
    end

    module ClassMethods

      def exposes_command(command)
        command = { name: command } if command.is_a?(Symbol)

        exposes_commands command
      end

      def exposes_commands(*commands)
        self.commands += commands
      end

    end

    module InstanceMethods
      # If not using, AASM, override this for disallowing commands
      def unavailable_commands
        []
      end

      def available_commands
        if respond_to?(:aasm)
          command_names & aasm_event_triggers
        else
          command_names - unavailable_commands
        end
      end

      protected
        def aasm_event_triggers
          aasm.events.map(&:name).map(&:to_s).map {|s| "#{s}!"}.map(&:to_sym)
        end

      private
        def command_names
          commands.map { |command| command[:name] }
        end
    end
  end
end

ActiveRecord::Base.include(ExpressAdmin::Commands)

class Symbol
  def debang
    to_s.gsub(/\!\Z/, '').to_sym
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
express_admin-2.0.0.b lib/express_admin/commands.rb
express_admin-2.0.0.a lib/express_admin/commands.rb
express_admin-1.8.1 lib/express_admin/commands.rb
express_admin-1.8.0 lib/express_admin/commands.rb
express_admin-1.7.32 lib/express_admin/commands.rb
express_admin-1.7.31 lib/express_admin/commands.rb
express_admin-1.7.30 lib/express_admin/commands.rb
express_admin-1.7.29 lib/express_admin/commands.rb
express_admin-1.7.28 lib/express_admin/commands.rb
express_admin-1.7.27 lib/express_admin/commands.rb
express_admin-1.7.26 lib/express_admin/commands.rb
express_admin-1.7.25 lib/express_admin/commands.rb
express_admin-1.7.24 lib/express_admin/commands.rb
express_admin-1.7.23 lib/express_admin/commands.rb
express_admin-1.7.22 lib/express_admin/commands.rb