class Brainstem::DSL::Field
Attributes
conditionals[R]
name[R]
options[R]
type[R]
Public Class Methods
new(name, type, options)
click to toggle source
# File lib/brainstem/dsl/field.rb, line 10 def initialize(name, type, options) @name = name.to_s @type = type.to_s @conditionals = [options[:if]].flatten.compact @options = options end
Public Instance Methods
conditional?()
click to toggle source
# File lib/brainstem/dsl/field.rb, line 21 def conditional? conditionals.length > 0 end
conditionals_match?(model, presenter_conditionals, helper_instance = Object.new, conditional_cache = { model: {}, request: {} })
click to toggle source
# File lib/brainstem/dsl/field.rb, line 70 def conditionals_match?(model, presenter_conditionals, helper_instance = Object.new, conditional_cache = { model: {}, request: {} }) return true unless conditional? conditionals.all? { |conditional| presenter_conditionals[conditional].matches?(model, helper_instance, conditional_cache) } end
description()
click to toggle source
# File lib/brainstem/dsl/field.rb, line 17 def description options[:info].presence end
evaluate_value_on(model, context, helper_instance = Object.new)
click to toggle source
# File lib/brainstem/dsl/field.rb, line 46 def evaluate_value_on(model, context, helper_instance = Object.new) if options[:lookup] run_on_with_lookup(model, context, helper_instance) elsif options[:dynamic] proc = options[:dynamic] if proc.arity == 1 helper_instance.instance_exec(model, &proc) else helper_instance.instance_exec(&proc) end else model.send(method_name) end end
method_name()
click to toggle source
# File lib/brainstem/dsl/field.rb, line 25 def method_name if options[:dynamic] || options[:lookup] nil else (options[:via].presence || name).to_s end end
optional?()
click to toggle source
# File lib/brainstem/dsl/field.rb, line 37 def optional? options[:optional] end
optioned?(requested_optional_fields)
click to toggle source
# File lib/brainstem/dsl/field.rb, line 33 def optioned?(requested_optional_fields) !optional? || requested_optional_fields.include?(@name) end
presentable?(model, context)
click to toggle source
# File lib/brainstem/dsl/field.rb, line 61 def presentable?(model, context) optioned?(context[:optional_fields]) && conditionals_match?( model, context[:conditionals], context[:helper_instance], context[:conditional_cache] ) end
run_on(model, context, helper_instance = Object.new)
click to toggle source
Please override in sub classes to compute value of field with the given arguments.
# File lib/brainstem/dsl/field.rb, line 42 def run_on(model, context, helper_instance = Object.new) evaluate_value_on(model, context, helper_instance) end
Private Instance Methods
key_for_lookup()
click to toggle source
# File lib/brainstem/dsl/field.rb, line 80 def key_for_lookup :fields end