Class: RDF::Literal::DayTimeDuration
- Inherits:
-
Duration
- Object
- RDF::Literal
- Duration
- RDF::Literal::DayTimeDuration
- Defined in:
- lib/rdf/xsd/duration.rb
Overview
A DayTimeDuration literal.
dayTimeDuration is a datatype ·derived· from duration by restricting its ·lexical representations· to instances of dayTimeDurationLexicalRep. The ·value space· of dayTimeDuration is therefore that of duration restricted to those whose ·months· property is 0. This results in a duration datatype which is totally ordered.
Constant Summary collapse
- DATATYPE =
RDF::XSD.dayTimeDuration
- GRAMMAR =
%r(\A (?<si>-)? P(?:(?:(?:(?<da>\d+)D) ) (?:T(?:(?:(?:(?<hr>\d+)H)(?:(?<mi>\d+)M)?(?<se>\d+(?:\.\d+)?S)?) | (?:(?:(?<mi>\d+)M)(?:(?<se>\d+(?:\.\d+)?)S)?) | (?:(?<se>\d+(?:\.\d+)?)S) ) )? |(?:T(?:(?:(?:(?<hr>\d+)H)(?:(?<mi>\d+)M)?(?<se>\d+(?:\.\d+)?S)?) | (?:(?:(?<mi>\d+)M)(?:(?<se>\d+(?:\.\d+)?)S)?) | (?:(?<se>\d+(?:\.\d+)?)S) ) ) ) \z)x.freeze
Instance Method Summary collapse
-
#*(other) ⇒ DayTimeDuration
Returns the result of multiplying the value of self by
other. -
#+(other) ⇒ DayTimeDuration
Returns the sum of two xs:dayTimeDuration values.
-
#-(other) ⇒ DayTimeDuration
Returns the result of subtracting one xs:dayTimeDuration value from another.
-
#/(other) ⇒ DayTimeDuration, Decimal
Returns the result of dividing the value of self by
other. -
#<=>(other) ⇒ Boolean
Compares this literal to
otherfor sorting purposes. -
#to_r ⇒ Rational
Converts the dayTimeDuration into rational seconds.
Methods inherited from Duration
#==, #canonicalize!, #days, #hours, #humanize, #initialize, #minutes, #months, #plural, #seconds, #to_h, #to_s, #valid?, #years
Constructor Details
This class inherits a constructor from RDF::Literal::Duration
Instance Method Details
#*(other) ⇒ DayTimeDuration
Returns the result of multiplying the value of self by other. The result is rounded to the nearest month.
From the XQuery function op:multiply-dayTimeDuration.
421 422 423 424 |
# File 'lib/rdf/xsd/duration.rb', line 421 def *(other) return type_error("#{other.inspect} is not a valid Numeric") unless (other.is_a?(::Numeric) || other.is_a?(Literal::Numeric)) self.class.new([0, object.last * other.to_f]) end |
#+(other) ⇒ DayTimeDuration
Returns the sum of two xs:dayTimeDuration values.
From the XQuery function op:add-dayTimeDurations.
395 396 397 398 |
# File 'lib/rdf/xsd/duration.rb', line 395 def +(other) return type_error("#{other.inspect} is not a valid DayTimeDuration") unless other.is_a?(Literal::DayTimeDuration) && other.valid? self.class.new([0, object.last + other.object.last]) end |
#-(other) ⇒ DayTimeDuration
Returns the result of subtracting one xs:dayTimeDuration value from another.
From the XQuery function op:subtract-dayTimeDurationss.
408 409 410 411 |
# File 'lib/rdf/xsd/duration.rb', line 408 def -(other) return type_error("#{other.inspect} is not a valid DayTimeDuration") unless other.is_a?(Literal::DayTimeDuration) && other.valid? self.class.new([0, object.last - other.object.last]) end |
#/(other) ⇒ DayTimeDuration, Decimal
Returns the result of dividing the value of self by other. The result is rounded to the nearest month.
From the XQuery functions op:divide-yearMonthDuration and op:divide-yearMonthDuration-by-yearMonthDuration.
435 436 437 438 439 440 441 442 443 444 445 |
# File 'lib/rdf/xsd/duration.rb', line 435 def /(other) case other when DayTimeDuration return type_error("#{other.inspect} is not a valid DayTimeDuration or Numeric") unless other.valid? Decimal.new(object.last / other.object.last.to_f) when Literal::Numeric, ::Numeric self.class.new([0, object.last / other.to_f]) else type_error("#{other.inspect} is not a valid DayTimeDuration or Numeric") end end |
#<=>(other) ⇒ Boolean
Compares this literal to other for sorting purposes.
From the XQuery function op:dayTimeDuration-less-than.
456 457 458 459 |
# File 'lib/rdf/xsd/duration.rb', line 456 def <=>(other) return type_error("#{other.inspect} is not a valid DayTimeDuration") unless other.is_a?(Literal::DayTimeDuration) && other.valid? @object.last <=> other.object.last end |
#to_r ⇒ Rational
Converts the dayTimeDuration into rational seconds.
465 466 467 |
# File 'lib/rdf/xsd/duration.rb', line 465 def to_r Rational(object.last) / (24 * 3600) end |