Sha256: 350d2e7a24b31e68b6fa190d94322ac6e4e3942add11d34036891d7e38b69668

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Plutonium
  module Resource
    class Presenter
      include Plutonium::Core::Definers::FieldDefiner
      include Plutonium::Core::Definers::ActionDefiner

      def initialize(context, resource_record)
        @context = context
        @resource_record = resource_record

        define_standard_actions
        define_actions
        define_fields
      end

      private

      attr_reader :context, :resource_record

      def define_fields
        # override this in child presenters for custom field definitions
      end

      def define_actions
        # override this in child presenters for custom action definitions
      end

      def define_standard_actions
        define_action Plutonium::Core::Actions::NewAction.new(:new)
        define_action Plutonium::Core::Actions::ShowAction.new(:show)
        define_action Plutonium::Core::Actions::EditAction.new(:edit)
        define_action Plutonium::Core::Actions::DestroyAction.new(:destroy)
      end

      # TODO: move this to its own definer
      def define_interactive_action(name, interaction:, **)
        define_action Plutonium::Core::Actions::InteractiveAction.new(name, interaction:, **)
      end

      def resource_class = context.resource_class
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
plutonium-0.8.0 lib/plutonium/resource/presenter.rb