module Timespan::Span
Attributes
duration[R]
Public Instance Methods
duration=(duration)
click to toggle source
# File lib/timespan/extensions/time_lord.rb, line 55 def duration= duration @duration = if duration.kind_of? Numeric Duration.new duration else case duration when Timespan duration.duration when Duration duration when TimeLord::Period Duration.new start_date: duration.beginning, end_date: duration.ending when Hash Duration.new duration when String Duration.new parse_duration(duration) else raise ArgumentError, "Unsupported duration type: #{duration.inspect} of class #{duration.class}" end end unless is_new? add_dirty :duration refresh! calculate! end end
Protected Instance Methods
chronic_parse(text)
click to toggle source
# File lib/timespan/span.rb, line 45 def chronic_parse text ChronicDuration.parse text end
parse_duration(text)
click to toggle source
# File lib/timespan/span.rb, line 33 def parse_duration text spanner_parse text rescue Spanner::ParseError => e chronic_parse text rescue ChronicDuration::DurationParseError => e raise Timespan::DurationParseError, "Internal error: neither Spanner or ChronicDuration could parse '#{duration}'" end
spanner_parse(text)
click to toggle source
# File lib/timespan/span.rb, line 41 def spanner_parse text Spanner.parse(text.gsub /and/, '') end