Sha256: c21ec0647dc101a30121d2a0d69669146e0992c169eb3bf6be15ca64bcfb20a0

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require "active_model" unless defined?(ActiveModel)

module Lite
  module Command
    class Base

      def self.inherited(base)
        super

        base.include ActiveModel::Validations

        base.include Lite::Command::Internals::Attributes
        base.include Lite::Command::Internals::Calls
        base.include Lite::Command::Internals::Executions
        base.include Lite::Command::Internals::Faults
        base.include Lite::Command::Internals::Results

        if Lite::Command.configuration.raise_dynamic_faults # rubocop:disable Style/GuardClause
          base.class_eval <<-RUBY, __FILE__, __LINE__ + 1
            #{base}::Fault   = Class.new(Lite::Command::Fault)
            #{base}::Noop    = Class.new(#{base}::Fault)
            #{base}::Invalid = Class.new(#{base}::Fault)
            #{base}::Failure = Class.new(#{base}::Fault)
            #{base}::Error   = Class.new(#{base}::Fault)
          RUBY
        end
      end

      attr_reader :context
      alias ctx context

      def initialize(context = {})
        @context = Lite::Command::Context.build(context)
        Utils.try(self, :on_pending)
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lite-command-3.1.2 lib/lite/command/base.rb
lite-command-3.1.1 lib/lite/command/base.rb
lite-command-3.1.0 lib/lite/command/base.rb
lite-command-3.0.1 lib/lite/command/base.rb
lite-command-3.0.0 lib/lite/command/base.rb