/usr/lib/ruby/2.3.0/xmlrpc/datetime.rb is in libruby2.3 2.3.0-5ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # frozen_string_literal: false
#
# xmlrpc/datetime.rb
# Copyright (C) 2001, 2002, 2003 by Michael Neumann (mneumann@ntecs.de)
#
# Released under the same term of license as Ruby.
#
require "date"
module XMLRPC # :nodoc:
# This class is important to handle XMLRPC +dateTime.iso8601+ values,
# correctly, because normal UNIX-dates, ie: Date, only handle dates
# from year 1970 on, and ruby's native Time class handles dates without the
# time component.
#
# XMLRPC::DateTime is able to store a XMLRPC +dateTime.iso8601+ value correctly.
class DateTime
# Return the value of the specified date/time component.
attr_reader :year, :month, :day, :hour, :min, :sec
# Set +value+ as the new date/time component.
#
# Raises ArgumentError if the given +value+ is out of range, or in the case
# of XMLRPC::DateTime#year= if +value+ is not of type Integer.
def year= (value)
raise ArgumentError, "date/time out of range" unless value.is_a? Integer
@year = value
end
# Set +value+ as the new date/time component.
#
# Raises an ArgumentError if the given +value+ isn't between 1 and 12.
def month= (value)
raise ArgumentError, "date/time out of range" unless (1..12).include? value
@month = value
end
# Set +value+ as the new date/time component.
#
# Raises an ArgumentError if the given +value+ isn't between 1 and 31.
def day= (value)
raise ArgumentError, "date/time out of range" unless (1..31).include? value
@day = value
end
# Set +value+ as the new date/time component.
#
# Raises an ArgumentError if the given +value+ isn't between 0 and 24.
def hour= (value)
raise ArgumentError, "date/time out of range" unless (0..24).include? value
@hour = value
end
# Set +value+ as the new date/time component.
#
# Raises an ArgumentError if the given +value+ isn't between 0 and 59.
def min= (value)
raise ArgumentError, "date/time out of range" unless (0..59).include? value
@min = value
end
# Set +value+ as the new date/time component.
#
# Raises an ArgumentError if the given +value+ isn't between 0 and 59.
def sec= (value)
raise ArgumentError, "date/time out of range" unless (0..59).include? value
@sec = value
end
# Alias for XMLRPC::DateTime#month.
alias mon month
# Alias for XMLRPC::DateTime#month=.
alias mon= month=
# Creates a new XMLRPC::DateTime instance with the
# parameters +year+, +month+, +day+ as date and
# +hour+, +min+, +sec+ as time.
#
# Raises an ArgumentError if a parameter is out of range,
# or if +year+ is not of the Integer type.
def initialize(year, month, day, hour, min, sec)
self.year, self.month, self.day = year, month, day
self.hour, self.min, self.sec = hour, min, sec
end
# Return a Time object of the date/time which represents +self+.
# If the <code>@year</code> is below 1970, this method returns +nil+,
# because Time cannot handle years below 1970.
#
# The timezone used is GMT.
def to_time
if @year >= 1970
Time.gm(*to_a)
else
nil
end
end
# Return a Date object of the date which represents +self+.
#
# The Date object do _not_ contain the time component (only date).
def to_date
Date.new(*to_a[0,3])
end
# Returns all date/time components in an array.
#
# Returns +[year, month, day, hour, min, sec]+.
def to_a
[@year, @month, @day, @hour, @min, @sec]
end
# Returns whether or not all date/time components are an array.
def ==(o)
self.to_a == Array(o) rescue false
end
end
end # module XMLRPC
=begin
= History
$Id$
=end
|