Beispiel #1
0
        private static bool TryParseAsValue(WitEntity entity, DateTimeParserSettings settings, out DateTimeRange range)
        {
            if (entity != null && DateTimeOffset.TryParse(entity.Value, out DateTimeOffset date))
            {
                switch (entity.Grain)
                {
                case GrainHour:
                    range = new DateTimeRange(date, date.AddHours(1));
                    return(true);

                case GrainDay:
                    range = new DateTimeRange(date);
                    return(true);

                case GrainWeek:
                    range = new DateTimeRange(date, date.AddDays(settings.WeekDuration));
                    return(true);

                case GrainMonth:
                    range = new DateTimeRange(date, date.AddMonths(1));
                    return(true);

                case GrainYear:
                    range = new DateTimeRange(date, date.AddYears(1));
                    return(true);
                }
            }

            range = null;
            return(false);
        }
        public static bool TryFindEntity(this WitResult result, string entityName, out WitEntity witEntity)
        {
            var entity = result?.Entities?.FirstOrDefault(e => e.Key == entityName);

            witEntity = entity?.Value?.FirstOrDefault();
            return(witEntity != null);
        }
Beispiel #3
0
        private void DrawEntity(WitEntity entity)
        {
            InfoField("ID", entity.id);
            if (null != entity.roles && entity.roles.Length > 0)
            {
                EditorGUILayout.Popup("Roles", 0, entity.roles);
            }

            if (null != entity.lookups && entity.lookups.Length > 0)
            {
                EditorGUILayout.Popup("Lookups", 0, entity.lookups);
            }
        }
Beispiel #4
0
        public override void UpdateData(WitResponseNode intentWitResponse)
        {
            id   = intentWitResponse[Fields.ID].Value;
            name = intentWitResponse[Fields.NAME].Value;
            var entityArray = intentWitResponse[EditorFields.ENTITIES].AsArray;
            var n           = entityArray.Count;

            entities = new WitEntity[n];
            for (int i = 0; i < n; i++)
            {
                entities[i] = WitEntity.FromJson(entityArray[i]);
                entities[i].witConfiguration = witConfiguration;
            }
        }
Beispiel #5
0
        public override void UpdateData(WitResponseNode intentWitResponse)
        {
            id   = intentWitResponse["id"].Value;
            name = intentWitResponse["name"].Value;
            var entityArray = intentWitResponse["entities"].AsArray;
            var n           = entityArray.Count;

            entities = new WitEntity[n];
            for (int i = 0; i < n; i++)
            {
                entities[i] = WitEntity.FromJson(entityArray[i]);
                entities[i].witConfiguration = witConfiguration;
            }
        }
Beispiel #6
0
        private static void UpdateEntityList(this WitConfiguration configuration,
                                             WitResponseNode entityListWitResponse)
        {
            var entityList = entityListWitResponse.AsArray;
            var n          = entityList.Count;

            configuration.entities = new WitEntity[n];
            for (int i = 0; i < n; i++)
            {
                var entity = WitEntity.FromJson(entityList[i]);
                entity.witConfiguration   = configuration;
                configuration.entities[i] = entity;
                entity.UpdateData();
            }
        }
Beispiel #7
0
        // Apply entities
        private static void ApplyEntityList(WitConfiguration configuration, WitResponseNode witResponse, Action <string> onComplete)
        {
            // Generate entities list
            var entityList = witResponse.AsArray;
            var n          = entityList.Count;

            configuration.entities = new WitEntity[n];
            for (int i = 0; i < n; i++)
            {
                var entity = WitEntity.FromJson(entityList[i]);
                entity.witConfiguration   = configuration;
                configuration.entities[i] = entity;
            }
            EditorUtility.SetDirty(configuration);
            // Update entities
            UpdateConfigItem(0, configuration.entities, configuration, onComplete);
        }
Beispiel #8
0
        public static bool TryParse(WitEntity entity, out DateTimeRange range, DateTimeParserSettings settings = null)
        {
            settings = settings ?? DateTimeParserSettings.Default;

            if (IsDate(entity))
            {
                switch (entity.Type)
                {
                case TypeValue:
                    return(TryParseAsValue(entity, settings, out range));

                case TypeInterval:
                    return(TryParseAsInterval(entity, settings, out range));
                }
            }

            range = null;
            return(false);
        }
Beispiel #9
0
        private static bool TryParseAsInterval(WitEntity entity, DateTimeParserSettings settings, out DateTimeRange range)
        {
            TryParseAsValue(entity.From, settings, out DateTimeRange fromRange);
            TryParseAsValue(entity.To, settings, out DateTimeRange toRange);
            if (fromRange != null && toRange != null)
            {
                range = new DateTimeRange(fromRange.StartDate, toRange.EndDate);
                return(true);
            }
            else if (fromRange != null)
            {
                range = new DateTimeRange(fromRange.StartDate, DateTime.MaxValue);
                return(true);
            }
            else if (toRange != null)
            {
                range = new DateTimeRange(DateTime.Now, toRange.EndDate);
                return(true);
            }

            range = null;
            return(false);
        }
Beispiel #10
0
 private static bool IsDate(WitEntity entity)
 {
     return(entity.Type == TypeValue && (entity.Grain == GrainHour || entity.Grain == GrainDay || entity.Grain == GrainWeek || entity.Grain == GrainMonth || entity.Grain == GrainYear) ||
            entity.Type == TypeInterval);
 }