Beispiel #1
0
        /// <summary>
        /// Renders a constant
        /// </summary>
        /// <param name="builder"></param>
        /// <param name="expr"></param>
        protected virtual void Constant(StringBuilder builder, OmConstant expr)
        {
            DataType type = expr.Type;

            if (type == DataType.Number)
            {
                builder.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0}", expr.Value);
            }
            else if (type == DataType.String)
            {
                if (expr.Value == null)
                {
                    builder.Append("null");
                }
                else
                {
                    builder.AppendFormat("'{0}'", expr.Value.ToString());
                }
            }
            else if (type == DataType.Date)
            {
                DateTime val = (DateTime)expr.Value;
                //строка закомментарена т.к. не правильно форматируются ровные даты
                //например: 2000-01-31 00:00:00 (реальное значение константы)
                //форматируется как 2000-01-31 - что приводит к неправильным результатом при сравнении
                //например Sqlite сравнивает строки и "2000-01-31 00:00:00" != "2000-01-31"
                //хотя времена равны
                //bool dateOnly = (val.Hour == 0 && val.Minute == 0 && val.Second == 0 && val.Millisecond == 0);
                bool   dateOnly = false;
                string format   = (dateOnly) ? dateFormat : dateTimeFormat;
                builder.AppendFormat("'{0}'", val.ToString(format));
            }
        }
Beispiel #2
0
 /// <summary>
 /// Renders a list of values
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="values"></param>
 /// <returns></returns>
 protected virtual void ConstantList(StringBuilder builder, OmConstantCollection values)
 {
     for (int i = 0; i < values.Count; i++)
     {
         OmConstant val = values[i];
         Constant(builder, val);
         if (i != values.Count - 1)
         {
             Coma(builder);
         }
     }
 }