Exemple #1
0
        public override object DoRun()
        {
            if (string.IsNullOrEmpty(Variable))
            {
                throw new ArgumentException("Variable name cannot be empty");
            }

            if (string.IsNullOrEmpty(What))
            {
                throw new ArgumentException("Value cannot be empty");
            }

            if (Variable.Contains("[") || Variable.Contains("]"))
            {
                throw new ArgumentException("Variable name must not contain [] brackets. Please use brackets to reference an existing variable later, not while decalaring it.");
            }

            var existingMemory = Data.GetAll <RememberedText>().FirstOrDefault(x => x.Variable.ToLower() == Variable.ToLower());

            if (existingMemory != null)
            {
                existingMemory.What = What;
                return(new SuccessAnswer($"Updated '{existingMemory.Variable}' to new value \'{existingMemory.What}\' to memory."));
            }
            else
            {
                var rememberedText = new RememberedText(Variable, What);
                Data.DataAccesses.OfType <SharedObjectDataAccess>().First().Add(rememberedText);

                return(new SuccessAnswer($"Saved \'{rememberedText.What}\' as variable '{rememberedText.Variable}'."));
            }
        }
Exemple #2
0
        public ObjectDataAccess CreateFromArguments(string[] arguments)
        {
            var objectDataAccess = new ObjectDataAccess();


            var nonparametricArguments = arguments.Where(x => !x.Contains("=")).ToList();
            var parametricArguments    = arguments.Where(x => x.Contains("=")).ToList();

            foreach (var parametricArgument in parametricArguments)
            {
                var name           = parametricArgument.Substring(1, parametricArgument.IndexOf('=') - 1);
                var value          = parametricArgument.Substring(parametricArgument.IndexOf('=') + 1);
                var rememberedText = new RememberedText(name, value);
                SharedObjectDataAccess.Instance.Value.Add(rememberedText);
            }

            foreach (var argument in nonparametricArguments)
            {
                var dtoTypes = (IEnumerable <Type>)_registry.Types;
                var type     =
                    dtoTypes.FirstOrDefault(registeredType => registeredType.Name.ToLower() == argument.Substring(1).ToLower());

                if (type == null)
                {
                    //throw new ArgumentException($"Argument {argument} is not recognized.");

                    objectDataAccess.Add(new CorruptObject()
                    {
                        Description = $"Argument {argument} is not recognized."
                    });

                    continue;
                }
                var instance = Activator.CreateInstance(type);

                objectDataAccess.Add(instance);
            }

            foreach (var obj in objectDataAccess.GetAll())
            {
                (obj as Keyword)?.Hydrate();
            }

            return(objectDataAccess);
        }