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