public IDictionary <string, ValueType> GetKeys(ValueType?typeToGet = null)
        {
            bool IsCollection(JToken c) => c.Children().FirstOrDefault() is JArray && c.Children().FirstOrDefault().Any() == false ||
            c.Children().FirstOrDefault()?.FirstOrDefault()?.Type == JTokenType.Object;

            bool IsItem(JToken c) => c.Children().FirstOrDefault().GetType() != typeof(JArray) ||
            (c.Children().FirstOrDefault() is JArray &&
             c.Children().FirstOrDefault().Any() &&                       // Empty array is considered as a collection
             c.Children().FirstOrDefault()?.FirstOrDefault()?.Type != JTokenType.Object);

            lock (_jsonData)
            {
                switch (typeToGet)
                {
                case null:
                    return(_jsonData.Children()
                           .ToDictionary(c => c.Path, c => IsCollection(c) ? ValueType.Collection : ValueType.Item));

                case ValueType.Collection:
                    return(_jsonData.Children()
                           .Where(IsCollection)
                           .ToDictionary(c => c.Path, c => ValueType.Collection));

                case ValueType.Item:
                    return(_jsonData.Children()
                           .Where(IsItem)
                           .ToDictionary(c => c.Path, c => ValueType.Item));

                default:
                    throw new NotSupportedException();
                }
            }
        }
            protected override AnyValue ConsumeNext(ValueType?typeHint, ref JsonElement current)
            {
                var element = current;

                switch (element.ValueKind)
                {
                case JsonValueKind.True:
                    return(AnyValue.Bool(true));

                case JsonValueKind.False:
                    return(AnyValue.Bool(false));

                case JsonValueKind.Number:
                    return(AnyValue.Number(element.GetDouble()));

                case JsonValueKind.String:
                    return(AnyValue.String(element.GetString()));

                case JsonValueKind.Array:
                    PushContext(new ParentContext {
                        ArrayEnumerator = element.EnumerateArray()
                    });
                    return(AnyValue.Array(new ArrayReader(true)));

                case JsonValueKind.Object:
                    PushContext(new ParentContext {
                        ObjectEnumerator = element.EnumerateObject()
                    });
                    return(AnyValue.Object(new ObjectReader(true, null)));

                default:
                    return(AnyValue.Null());
                }
            }
Exemplo n.º 3
0
        public IDictionary <string, ValueType> GetKeys(ValueType?typeToGet = null)
        {
            lock (_jsonData)
            {
                switch (typeToGet)
                {
                case null:
                    return(_jsonData.Children()
                           .ToDictionary(c => c.Path, c => c.Children().FirstOrDefault() is JArray ? ValueType.Collection : ValueType.Item));

                case ValueType.Collection:
                    return(_jsonData.Children()
                           .Where(c => c.Children().FirstOrDefault() is JArray &&
                                  c.Children().FirstOrDefault()?.First()?.Type == JTokenType.Object)
                           .ToDictionary(c => c.Path, c => ValueType.Collection));

                case ValueType.Item:
                    return(_jsonData.Children()
                           .Where(c => c.Children().FirstOrDefault().GetType() != typeof(JArray) ||
                                  (c.Children().FirstOrDefault() is JArray &&
                                   c.Children().FirstOrDefault()?.First()?.Type != JTokenType.Object))
                           .ToDictionary(c => c.Path, c => ValueType.Item));

                default:
                    throw new NotSupportedException();
                }
            }
        }
Exemplo n.º 4
0
 public SqlFilter(string field, object value, ValueType? valueType = null, string oper = "=", bool isAnd = true)
 {
     Field = field;
     Value = value;
     Oper = oper;
     IsAnd = isAnd;
     ValueType = valueType;
 }
 internal MetricBoundaryCondition(double?lowerBound, double?upperBound, BoundaryDirection direction, ValueType?type, string companionMetricId, bool?triggerForMissing)
 {
     LowerBound        = lowerBound;
     UpperBound        = upperBound;
     Direction         = direction;
     Type              = type;
     CompanionMetricId = companionMetricId;
     TriggerForMissing = triggerForMissing;
 }
 private AnyValue FromBool(bool value, ValueType?typeHint)
 {
     switch (typeHint)
     {
     case ValueType.String:
         return(AnyValue.String(value ? "true" : "false"));
     }
     return(AnyValue.Bool(value));
 }
 private AnyValue FromNumber(double value, ValueType?typeHint)
 {
     switch (typeHint)
     {
     case ValueType.String:
         return(AnyValue.String(value.ToString()));
     }
     return(AnyValue.Number(value));
 }
Exemplo n.º 8
0
 internal MetricBoundaryCondition(double?lowerBound, double?upperBound, BoundaryDirection direction, ValueType?type, string companionMetricId, bool?shouldAlertIfDataPointMissing)
 {
     LowerBound                    = lowerBound;
     UpperBound                    = upperBound;
     Direction                     = direction;
     Type                          = type;
     CompanionMetricId             = companionMetricId;
     ShouldAlertIfDataPointMissing = shouldAlertIfDataPointMissing;
 }
            protected override AnyValue ConsumeNext(ValueType?typeHint, ref object current)
            {
                var element = current;

                if (!_allowTypeCoercion)
                {
                    typeHint = null;
                }
                switch (element)
                {
                case null:
                    return(AnyValue.Null());

                case bool value:
                    return(FromBool(value, typeHint));

                case int value:
                    return(FromNumber(value, typeHint));

                case long value:
                    return(FromNumber(value, typeHint));

                case float value:
                    return(FromNumber(value, typeHint));

                case double value:
                    return(FromNumber(value, typeHint));

                case string value:
                    return(FromString(value, typeHint));

                case IEnumerable <KeyValuePair <string, object> > dict:
                    PushContext(new ParentContext {
                        ObjectEnumerator = dict.GetEnumerator()
                    });
                    return(AnyValue.Object(new ObjectReader()));

                case IEnumerable <KeyValuePair <object, object> > dict:
                    var transformedDict = dict.Select(kv => new KeyValuePair <string, object>(kv.Key.ToString(), kv.Value));
                    PushContext(new ParentContext {
                        ObjectEnumerator = transformedDict.GetEnumerator()
                    });
                    return(AnyValue.Object(new ObjectReader()));

                case IEnumerable <object> enumerable:
                    PushContext(new ParentContext {
                        ArrayEnumerator = enumerable.GetEnumerator()
                    });
                    return(AnyValue.Array(new ArrayReader()));

                default:
                    throw new SyntaxException(string.Format("ReaderAdapters.FromSimpleTypes does not support type {0}",
                                                            element.GetType()), null);
                }
            }
Exemplo n.º 10
0
 private void CreateValidation(List <ValidationViewModel> validation, Guid formFieldId) //TODO
 {
     foreach (var v in validation)
     {
         var       ruleId    = validationRuleRepository.FindByName(v.Type).Id;
         Guid?     valueId   = null;
         ValueType?valueType = null;
         if (v.Value != null)
         {
             valueId = Guid.NewGuid();
         }
         var formFieldValidation = formFieldValidationRuleFactory.Create(formFieldId, ruleId, valueId, valueType);
     }
 }
Exemplo n.º 11
0
        public static TExport CreateInstance <TExport>(string name, ValueType? @return, IList <ValueType> parameters, params Instruction[] code)
            where TExport : class
        {
            Assert.IsNotNull(name);
            Assert.IsNotNull(parameters);
            Assert.IsNotNull(code);

            var module = new Module();

            module.Types.Add(new Type
            {
                Returns = @return.HasValue == false
                                ? new ValueType[0]
                                : new[]
                {
                    @return.GetValueOrDefault()
                },
                Parameters = parameters,
            });
            module.Functions.Add(new Function
            {
            });
            module.Exports.Add(new Export
            {
                Name = name
            });
            module.Codes.Add(new FunctionBody
            {
                Code = code
            });

            Instance <TExport> compiled;

            using (var memory = new MemoryStream())
            {
                module.WriteToBinary(memory);
                Assert.AreNotEqual(0, memory.Length);
                memory.Position = 0;

                var maker = Compile.FromBinary <TExport>(memory);
                Assert.IsNotNull(maker);
                compiled = maker();
            }

            Assert.IsNotNull(compiled);
            Assert.IsNotNull(compiled.Exports);

            return(compiled.Exports);
        }
Exemplo n.º 12
0
        /// <summary>Assigns all needed attributes to the tag</summary>
        /// <returns>This instance downcasted to base class</returns>
        public virtual IndexedTag attr(
            string id           = null,
            string name         = null,
            string value        = null,
            ValueType?valuetype = null,
            MimeType type       = null
            )
        {
            Id        = id;
            Name      = name;
            Value     = value;
            ValueType = valuetype;
            Type      = type;

            return(this);
        }
Exemplo n.º 13
0
        private object GetSourceValue(object columnValue, ValueType?outputType, bool isRequired)
        {
            if (string.IsNullOrWhiteSpace(columnValue?.ToString()))
            {
                return(null);
            }

            var doCast = outputType.HasValue && (isRequired || !string.IsNullOrWhiteSpace(columnValue.ToString()));

            if (doCast)
            {
                columnValue = CastSchemaItemType(columnValue, outputType.Value);
            }

            return(columnValue);
        }
            public AnyValue NextValue(ValueType?desiredType, bool allowNull)
            {
                if (_eof)
                {
                    throw new SyntaxException("unexpected end of input", null);
                }
                var value = ConsumeNext(desiredType, ref _current);

                _eof = _parentContextStack is null || _parentContextStack.Count == 0;
                if (desiredType.HasValue)
                {
                    if (value.Type != desiredType.Value && !(allowNull && value.Type == ValueType.Null))
                    {
                        throw new TypeException(desiredType.Value, value.Type, null);
                    }
                }
                return(value);
            }
Exemplo n.º 15
0
        public static TExport CreateInstance <TExport>(string name, ValueType? @return, IList <ValueType> parameters, params Instruction[] code)
            where TExport : class
        {
            Assert.IsNotNull(name);
            Assert.IsNotNull(parameters);
            Assert.IsNotNull(code);

            var module = new Module();

            module.Types.Add(new Type
            {
                Returns = @return.HasValue == false
                                ? new ValueType[0]
                                : new[]
                {
                    @return.GetValueOrDefault()
                },
                Parameters = parameters,
            });
            module.Functions.Add(new Function
            {
            });
            module.Exports.Add(new Export
            {
                Name = name
            });
            module.Codes.Add(new FunctionBody
            {
                Code = code
            });

            var compiled = module.ToInstance <TExport>();

            Assert.IsNotNull(compiled);
            Assert.IsNotNull(compiled.Exports);

            return(compiled.Exports);
        }
            private AnyValue FromString(string value, ValueType?typeHint)
            {
                switch (typeHint)
                {
                case ValueType.Bool:
                    if (value == "true" || value == "on")
                    {
                        return(AnyValue.Bool(true));
                    }
                    if (value == "false" || value == "off")
                    {
                        return(AnyValue.Bool(false));
                    }
                    break;

                case ValueType.Number:
                    if (double.TryParse(value, out var n))
                    {
                        return(AnyValue.Number(n));
                    }
                    break;
                }
                return(AnyValue.String(value));
            }
Exemplo n.º 17
0
 internal Node(KeyType?key, ValueType?value, Node <KeyType, ValueType>?next = null)
 {
     this.Key   = key;
     this.Value = value;
     this.Next  = next;
 }
 /// <inheritdoc cref="IWeightedAverageAggregation.ValueType" />
 public WeightedAverageAggregationDescriptor <T> ValueType(ValueType?valueType) => Assign(a => a.ValueType = valueType);
 protected abstract AnyValue ConsumeNext(ValueType?typeHint, ref TNode current);
Exemplo n.º 20
0
        private DerivedAttribute CreateDerivedAttribute(string name, AggregationType[] aggregations, ValueType?typeInfo)
        {
            var result = Model.New <DerivedAttribute>(_currentSchema, a =>
            {
                a.Name = name;
                a.Line = Scanner.yylloc.StartLine;
            });

            if (typeInfo == null)
            {
                throw new NotSupportedException();
            }

            switch (typeInfo.Value.tokVal)
            {
            case Tokens.TYPE:
                if (aggregations.Any())
                {
                    aggregations.Last().ElementType = typeInfo.Value.val as BaseType;
                }
                else
                {
                    result.Domain = typeInfo.Value.val as BaseType;
                }
                break;

            case Tokens.IDENTIFIER:
                ToDoActions.Add(() =>
                {
                    var type = Model.Get <NamedType>(t => t.Name == typeInfo.Value.strVal).FirstOrDefault();
                    if (type == null)
                    {
                        type = Model.Get <NamedType>(t => string.Equals(t.Name, typeInfo.Value.strVal, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                    }
                    if (type == null)
                    {
                        throw new InstanceNotFoundException();
                    }

                    if (aggregations.Any())
                    {
                        aggregations.Last().ElementType = type;
                    }
                    else
                    {
                        result.Domain = type;
                    }
                });
                break;

            default:
                throw new Exception("Unexpected value");
            }


            //nest aggregations
            for (var i = 0; i < aggregations.Length - 1; i++)
            {
                aggregations[i].ElementType = aggregations[i + 1];
            }

            if (aggregations.Any())
            {
                result.Domain = aggregations.First();
            }

            return(result);
        }