lib/wirecard_sepa/utils/template.rb in wirecard_sepa-0.0.4 vs lib/wirecard_sepa/utils/template.rb in wirecard_sepa-0.0.5

- old
+ new

@@ -7,29 +7,45 @@ @request = request end def to_xml xml_template = File.open template_path, "r:UTF-8", &:read - xml_template.gsub(/{{\w+}}/, request_params) + xml_template.gsub(/{{\w+}}/, request_params)#.tap { byebug } end private def request_params - request.params.each_with_object({}) do |(k,v), h| + params_without_custom_fields.each_with_object({}) do |(k,v), h| h["{{#{k.upcase}}}"] = v - end + end.merge('{{CUSTOM_FIELDS}}' => custom_fields_xml) end + def params_without_custom_fields + request.params.reject { |k,_| k == :custom_fields } + end + def template_path File.expand_path "../../../templates/#{template_file}", __FILE__ end def template_file request.class.name. gsub(/(.)([A-Z])/, '\1_\2'). gsub('::_', '/'). downcase + '.xml' + end + + def custom_fields_xml + # TODO: Refactor me :> + custom_fields = request.params[:custom_fields] || Hash.new + return '' if custom_fields.empty? + fields_xml = custom_fields.map do |k,v| + " <custom-field field-name=\"#{k}\" field-value=\"#{v}\"/>\n" + end.join.to_s + '<custom-fields>' "\n" + + " #{fields_xml}" + + ' </custom-fields>' end end end end