Sha256: 63aa01c8631d9a48431752378434b2ffe7c07fffc55e789150df0d79e5a0cbb0

Contents?: true

Size: 736 Bytes

Versions: 3

Compression:

Stored size: 736 Bytes

Contents

module WirecardSepa
  module Utils
    class Template
      attr_reader :request

      def initialize(request)
        @request = request
      end

      def to_xml
        xml_template = File.open template_path, "r:UTF-8", &:read
        xml_template.gsub(/{{\w+}}/, request_params)
      end

      private

      def request_params
        request.params.each_with_object({}) do |(k,v), h|
          h["{{#{k.upcase}}}"] = v
        end
      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
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wirecard_sepa-0.0.4 lib/wirecard_sepa/utils/template.rb
wirecard_sepa-0.0.3 lib/wirecard_sepa/utils/template.rb
wirecard_sepa-0.0.2 lib/wirecard_sepa/utils/template.rb