class Nydp::Builtin::Time

Public Instance Methods

builtin_call(y=:unset, mo=:unset, d=:unset, h=nil, mi=nil, s=nil, ms=nil) click to toggle source

when 0 arguments:

return Time.now

when 1 argument:

either an offset in seconds from now, or a Date to convert to a time, or a Time to subtract and return offset in seconds from now
when Numeric : return now + offset in seconds from now
when Nydp::Date : convert date to time
when Time : calculate and return now - Time offset in seconds

when 2 arguments:

first arg is a Time
if second arg is numeric, add to first arg
if second arg is a Time, subtract from first arg
# File lib/nydp/builtin/time.rb, line 16
def builtin_call y=:unset, mo=:unset, d=:unset, h=nil, mi=nil, s=nil, ms=nil
  if y == :unset
    ::Time.now
  elsif mo == :unset
    case y
    when Numeric # relative time in seconds
      (Time.now + y)
    when ::Date
      y.to_time
    when ::Time
      ::Time.now - y
    else
      puts
      puts y.class
      raise Nydp::Error.new "time : expected a number or a date or a time, got #{y._nydp_inspect}"
    end
  elsif d == :unset
    # y is a date or time, mo is a number or time
    case mo
    when Numeric # relative time in seconds
      (y + mo)
    when ::Time
      y - mo
    else
      raise Nydp::Error.new "time : expected a number or a date, got #{mo._nydp_inspect}"
    end
  else
    Time.new(y,mo,d,h,mi,s,ms)
  end
end