Sha256: ea39e6c712362e29e43157bbaa941348ee10c9a8a8c591c28ef2b6ccbe1cf8fb
Contents?: true
Size: 1.48 KB
Versions: 55
Compression:
Stored size: 1.48 KB
Contents
require_relative '../../dsl/intrinsic_functions' module Convection module Model class Template class Condition include DSL::Helpers CONDITIONAL_FUNCTION_SYNTAX_MAP = { fn_and: 'Fn::And', fn_equals: 'Fn::Equals', fn_if: 'Fn::If', fn_not: 'Fn::Not', fn_or: 'Fn::Or' }.freeze attr_reader :condition attr_reader :template CONDITIONAL_FUNCTION_SYNTAX_MAP.keys.each do |conditional_function| define_method(conditional_function) do |*args| @condition = ConditionalFunction.new conditional_function, args end end def initialize(name, parent) @name = name @template = parent.template end def render condition.render end class ConditionalFunction def initialize(function_name, arg_array) @function_name = function_name @function_arguments = arg_array end def render rendered_values = [] @function_arguments.each do |function_arg| if function_arg.respond_to? :render # the argument is another conditional function rendered_values << function_arg.render else rendered_values << function_arg end end { CONDITIONAL_FUNCTION_SYNTAX_MAP[@function_name] => rendered_values } end end end end end end
Version data entries
55 entries across 55 versions & 1 rubygems