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