コード例 #1
0
        private void RemoveLazyValues(IDictionary <string, object> data, out IDictionary <string, object> lazyValues, out IDictionary <string, object> nonLazyValues)
        {
            lazyValues    = new Dictionary <string, object>(StringComparer.InvariantCultureIgnoreCase);
            nonLazyValues = new Dictionary <string, object>(StringComparer.InvariantCultureIgnoreCase);

            foreach (var key in data.Keys)
            {
                if (_lazyExpressionResolver.CanResolve(data[key]))
                {
                    lazyValues.Add(key, data[key]);
                }
                //else
                //{
                nonLazyValues.Add(key, data[key]);
                //}
            }
        }
コード例 #2
0
        public IKeyword ParseKeyword(string command)
        {
            var option = FollowupOptions.FirstOrDefault(x => x.Matches(command));

            if (option != null)
            {
                return(option);
            }

            command = command.Trim();
            var template = Keywords.First(x => x.Matches(command));

            if (ServiceLocator.IsInitialised())
            {
                ServiceLocator.Instance.Resolve(template);
            }

            var parts = new string[]
            {
                command.Split(' ').First(),
                string.Join(" ", command.Split(' ').Skip(1))
            };

            if (parts.Length == 2 && _lazyExpressionResolver.CanResolve(parts.Last()))
            {
                var resolvedParameter = _lazyExpressionResolver.Resolve(parts.Last()) as string;

                var newInstance = CreateNewInstanceViaReflection(parts.First());

                newInstance.Instruction = /*parts.First() + ' ' +*/ resolvedParameter;

                return(newInstance);
            }

            //command = Normalize(command);

            var instance = CreateNewInstanceViaReflection(parts.First());

            if (!string.IsNullOrEmpty(parts.Last()))
            {
                instance.Instruction = parts.Last();
            }

            return(instance);
        }