class Brainstem::DSL::Conditional

Attributes

action[R]
name[R]
options[R]
type[R]

Public Class Methods

new(name, type, action, options = {}) click to toggle source
# File lib/brainstem/dsl/conditional.rb, line 6
def initialize(name, type, action, options = {})
  @name = name
  @type = type
  @action = action
  @options = options
end

Public Instance Methods

description() click to toggle source
# File lib/brainstem/dsl/conditional.rb, line 13
def description
  options[:info].presence
end
matches?(model, helper_instance = Object.new, conditional_cache = { model: {}, request: {} }) click to toggle source
# File lib/brainstem/dsl/conditional.rb, line 17
def matches?(model, helper_instance = Object.new, conditional_cache = { model: {}, request: {} })
  case type
    when :model
      conditional_cache[:model].fetch(name) { conditional_cache[:model][name] = helper_instance.instance_exec(model, &action) }
    when :request
      conditional_cache[:request].fetch(name) { conditional_cache[:request][name] = helper_instance.instance_exec(&action) }
    else
      raise "Unknown Brainstem Conditional type #{type}"
  end
end