module KirguduBase module DynamicPages class Builder def initialize(&block) instance_eval(&block) if block_given? end def build_element(element) self.builder_options.each_pair do |key, value| element.send("#{key}=", value) end element.fix_parent_entry(nil) self.validate_generated_element(element) end def builder_options @options = {} unless @options @options end def validate_empty_parameter(name, value) raise "Parameter \"#{name}\" cannot be empty. If you dont want to assign specific value to this parameter, just delete it from code" unless value end def valiadte_interger_parameter(name, value) raise "Parameter \"#{name}\" accepts only integer values" unless value.is_a?(Integer) end def valiadte_interger_positive_parameter(name, value) raise "Parameter \"#{name}\" accepts only integer values" unless value.is_a?(Integer) raise "Parameter \"#{name}\" accepts only positive values (>=0)" unless value.is_a?(Integer) if value < 0 end def validate_string_parameter(name, value) raise "Parameter \"#{name}\" must be a \"String\"." unless value && value.is_a?(String) end def validate_symbol_parameter(name, value) raise "Parameter \"#{name}\"must be a :Symbol." unless value && value.is_a?(Symbol) end def validate_string_or_symbol_parameter(name, value) raise "Parameter \"#{name}\" must be a \"String\" or a :Symbol." unless value && (value.is_a?(String) || value.is_a?(Symbol)) end def validate_generated_element(element) errors = [] unless element.valid? #raise "ERRORS FOR ELEMENT: #{element.errors.methods.to_json}" element.errors.each do |key, element_errors| errors << "'#{key}' #{element_errors}" #raise "ERROR KEY: #{key}; ERROR MESSAGES: #{element_errors}" #element_errors.each do |element_error| # errors << "'#{key}' #{element_error}" #end end end if errors.length > 0 raise "ERRORS
Class: #{element.class} Name: #{element.name if element.respond_to?(:name)}
#{errors.join('
')}".html_safe end end end end end