Sha256: 79cb5178e7d36d06352c8bdad12b1caf1c60f11992d6842be5c6f76f57265e11

Contents?: true

Size: 1.59 KB

Versions: 10

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module PublifyPlugins
  # Deprecated?
  def plugin_public_action(action)
    @@plugin_public_actions ||= []
    @@plugin_public_actions.push action
  end

  # Deprecated?
  def plugin_public_actions
    @@plugin_public_actions
  end

  # Deprecated?
  def plugin_description(description)
    eval "def self.description; '#{description}'; end"
  end

  # Deprecated?
  def plugin_display_name(name)
    eval "def self.display_name; '#{name}'; end"
  end

  # FIXME: Something in rails double require this module. Prevent that to keep
  # @@registered integrity
  unless defined?(Keeper)
    class Keeper
      KINDS = [:avatar, :textfilter].freeze
      @@registered = {}

      class << self
        def available_plugins(kind = nil)
          return @@registered.inspect unless kind

          check_kind(kind)
          @@registered[kind] || []
        end

        def register(klass)
          kind = klass.kind
          check_kind(kind)
          @@registered[kind] ||= []
          @@registered[kind] << klass
          @@registered[kind]
        end

        private

        def check_kind(kind)
          unless KINDS.include?(kind)
            raise ArgumentError,
                  "#{kind} is not part of available plugin targets (#{KINDS.join(",")})"
          end
        end
      end

      private

      def initialize
        raise "No instance allowed."
      end
    end
  end # Defined

  class Base
    class << self
      attr_accessor :name
      attr_accessor :description
      attr_reader :registered

      def kind
        :void
      end
    end # << self
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
HornsAndHooves-publify_core-10.5.0 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.4.0 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.3.0 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.2.0 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.1.1 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.1.0 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.0.3 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.0.2 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.0.1 lib/publify_plugins.rb
HornsAndHooves-publify_core-10.0.0 lib/publify_plugins.rb