Example #1
0
        /// <summary>
        /// Executes the days away expresssion to get a date x days away.
        /// </summary>
        /// <param name="expr"></param>
        /// <returns></returns>
        public object VisitDuration(DurationExpr expr)
        {
            var name = expr.Duration;
            var num = 0.0;

            // Case 1: daysAhead days away
            if(this.Ctx.Symbols.Contains(name))
            {
                var variable = this.Ctx.Memory.Get<object>(name) as LObject;
                if(variable.Type != LTypes.Number)
                {
                    throw new LangException("TypeError", "Days away must of type of number", expr.Ref.ScriptName, expr.Ref.Line, expr.Ref.CharPos);
                }
                num = ((LNumber) variable).Value;
            }

            // Case 2: 3 days away
            else
            {
                num = Convert.ToInt32(name);
            }
            
            // Now convert to relative "days away".
            TimeSpan duration = TimeSpan.MinValue;
            var mode = expr.Mode.ToLower();
            if (mode == "days")
            {
                duration = new TimeSpan(Convert.ToInt32(num), 0, 0, 0);
            }
            if (mode == "hours")
            {
                duration = new TimeSpan(0, Convert.ToInt32(num), 0, 0);
            } 
            if (mode == "minutes")
            {
                duration = new TimeSpan(0, 0, Convert.ToInt32(num), 0);
            } 
            if (mode == "seconds")
            {
                duration = new TimeSpan(0, 0, 0, Convert.ToInt32(num));
            }
            return new LTime(duration);
        }
Example #2
0
 /// <summary>
 /// Creates a relative date expression with symbol scope, context, script refernce set.
 /// The date expression can handle relative dates: 3rd monday of january
 /// </summary>
 /// <param name="daysAway">The number of days away.</param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static Expr Duration(string duration, string mode, TokenData token)
 {
     var exp = new DurationExpr();
     exp.Duration = duration;
     exp.Mode = mode;
     SetupContext(exp, token);
     return exp;
 }
Example #3
0
 public object VisitDuration(DurationExpr expr)
 {
     return null;
 }