module Pragma::Macro

Private Class Methods

Classes() click to toggle source
# File lib/pragma/macro/classes.rb, line 5
def self.Classes
  step = ->(input, options) { Classes.for(input, options) }
  [step, name: 'classes']
end
Decorator(name: :instance) click to toggle source
# File lib/pragma/macro/decorator.rb, line 5
def self.Decorator(name: :instance)
  step = ->(input, options) { Decorator.for(input, name, options) }
  [step, name: "decorator.#{name}"]
end
Filtering() click to toggle source
# File lib/pragma/macro/filtering.rb, line 5
def self.Filtering
  step = ->(input, options) { Filtering.for(input, options) }
  [step, name: 'filtering']
end
Model(action = nil) click to toggle source
# File lib/pragma/macro/model.rb, line 7
def self.Model(action = nil)
  step = lambda do |input, options|
    klass = Macro.require_skill('Model', 'model.class', options)

    Trailblazer::Operation::Pipetree::Step.new(
      Trailblazer::Operation::Model.for(klass, action),
      'model.class' => klass,
      'model.action' => action
    ).call(input, options).tap do |result|
      unless result
        options['result.response'] = Pragma::Operation::Response::NotFound.new.decorate_with(
          Pragma::Decorator::Error
        )
      end
    end
  end

  [step, name: "model.#{action || 'build'}"]
end
Ordering() click to toggle source
# File lib/pragma/macro/ordering.rb, line 5
def self.Ordering
  step = ->(input, options) { Ordering.for(input, options) }
  [step, name: 'ordering']
end
Pagination() click to toggle source
# File lib/pragma/macro/pagination.rb, line 5
def self.Pagination
  step = ->(input, options) { Pagination.for(input, options) }
  [step, name: 'pagination']
end
Policy(name: :default, action: nil) click to toggle source
# File lib/pragma/macro/policy.rb, line 5
def self.Policy(name: :default, action: nil)
  step = ->(input, options) { Policy.for(input, name, options, action) }
  [step, name: "policy.#{name}"]
end
require_skill(macro, skill, options) click to toggle source

Returns a skill or raises a {#MissingSkillError}.

@param macro [String] the name of the macro requiring the skill @param skill [String] the name of the string @param options [Hash] the options hash of the operation

@return [Object] the value of the skill

@raise [MissingSkillError] if the skill is undefined or nil

@private

# File lib/pragma/macro.rb, line 17
def require_skill(macro, skill, options)
  options[skill] || fail(MissingSkillError.new(macro, skill))
end