Sha256: 2ea9befaf45d5c271981eecce4b813822c63d5847193df9556c4ac975f9ece37

Contents?: true

Size: 901 Bytes

Versions: 10

Compression:

Stored size: 901 Bytes

Contents

require "cgi"
require "date"

module Gyoku
  module XMLValue
    class << self

      # xs:date format
      XS_DATE_FORMAT = "%Y-%m-%d"

      # xs:time format
      XS_TIME_FORMAT = "%H:%M:%S"

      # xs:dateTime format
      XS_DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S%Z"

      # Converts a given +object+ to an XML value.
      def create(object, escape_xml = true)
        if Time === object
          object.strftime XS_TIME_FORMAT
        elsif DateTime === object
          object.strftime XS_DATETIME_FORMAT
        elsif Date === object
          object.strftime XS_DATE_FORMAT
        elsif String === object
          escape_xml ? CGI.escapeHTML(object) : object
        elsif object.respond_to?(:to_datetime)
          create object.to_datetime
        elsif object.respond_to?(:call)
          create object.call
        else
          object.to_s
        end
      end

    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
gyoku-1.3.0 lib/gyoku/xml_value.rb
gyoku-1.2.3 lib/gyoku/xml_value.rb
gyoku-1.2.2 lib/gyoku/xml_value.rb
gyoku-1.2.0 lib/gyoku/xml_value.rb
vagrant-tiktalik-0.0.3 vendor/bundle/ruby/2.0.0/gems/gyoku-1.1.1/lib/gyoku/xml_value.rb
gyoku-1.1.1 lib/gyoku/xml_value.rb
gyoku-1.1.0 lib/gyoku/xml_value.rb
gyoku-1.0.0 lib/gyoku/xml_value.rb
gyoku-0.5.0 lib/gyoku/xml_value.rb
gyoku-0.4.6 lib/gyoku/xml_value.rb