File: xml_value.rb

package info (click to toggle)
ruby-gyoku 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 200 kB
  • sloc: ruby: 914; makefile: 2
file content (40 lines) | stat: -rw-r--r-- 993 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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, options = {})
        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
        elsif ::Hash === object
          Gyoku::Hash.to_xml(object, options)
        else
          object.to_s
        end
      end

    end
  end
end