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