Sha256: aa8b2c7435b1ea94d0cabbea40063bd07d00ad5f4cd7523591aa7e757ee7a02f

Contents?: true

Size: 908 Bytes

Versions: 1

Compression:

Stored size: 908 Bytes

Contents

require 'cgi'
require 'time'
require 'money'
require 'structure'
require 'mws/orders/document'

module MWS
  module Orders
    class Entity < Document
      include Structure

      def float_at_xpath(path)
        text = text_at_xpath(path)
        text.to_f if text
      end

      def integer_at_xpath(path)
        text = text_at_xpath(path)
        text.to_i if text
      end

      def money_at_xpath(path)
        amount = float_at_xpath("#{path}/Amount")
        return unless amount

        currency_code = text_at_xpath("#{path}/CurrencyCode")
        amount *= 100 unless currency_code == 'JPY'

        Money.new(amount, currency_code)
      end

      def time_at_xpath(path)
        text = text_at_xpath(path)
        Time.parse(CGI.unescape(text)) if text
      end

      def text_at_xpath(path)
        node = xpath(path).first
        node.text.strip if node
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mws-orders-0.2.2 lib/mws/orders/entity.rb