示例#1
0
        public void AssignStrict(string exp, string value, bool throwsifnotexists, int update)
        {
            if (string.IsNullOrEmpty(exp))
            {
                return;
            }

            try
            {
                var envTemp = PublicFunctions.EvalAssignWithFrameStrict(new AssignValue(exp, value), update, _env);

                _env = envTemp;
                CommitAssign();
            }
            catch (Exception err)
            {
                var msg = err.Message;
                if (throwsifnotexists && err.Message.Contains("parse error"))
                {
                    throw new WarewolfExecutionEnvironmentException(msg + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }");
                }
                if (throwsifnotexists && err.Message.Contains("invalid variable assigned to"))
                {
                    throw new WarewolfExecutionEnvironmentException(msg);
                }
                //NOTE:This have a possibility to duplicate error add if caller is also catching exceptions and adding error, use with caution
                Errors.Add(msg + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }");
            }
        }
示例#2
0
        public void Assign(string exp, string value, bool throwsifnotexists, int update)
        {
            if (string.IsNullOrEmpty(exp))
            {
                return;
            }

            try
            {
                var envTemp = PublicFunctions.EvalAssignWithFrame(new AssignValue(exp, value), update, _env);

                _env = envTemp;
                CommitAssign();
            }
            catch (Exception err)
            {
                var msg = err.Message;
                var msgWithVariableName = msg + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }";
                if (err is NullValueInVariableException variableException && err.Message.Contains("Scalar value "))
                {
                    throw new WarewolfExecutionEnvironmentException(err.Message);
                }
                if (throwsifnotexists)
                {
                    throw new WarewolfExecutionEnvironmentException(msgWithVariableName);
                }

                Errors.Add(msgWithVariableName);
            }
        }
示例#3
0
        public void AssignString(string exp, string value, bool throwsifnotexists, int update)
        {
            if (string.IsNullOrEmpty(exp))
            {
                return;
            }

            try
            {
                var envTemp = PublicFunctions.EvalAssignWithFrameTypeCast(new AssignValue(exp, value), update, _env, ShouldTypeCast.No);

                _env = envTemp;
                CommitAssign();
            }
            catch (Exception err)
            {
                var msg = err.Message;
                if (throwsifnotexists)
                {
                    throw new WarewolfExecutionEnvironmentException(msg + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }");
                }

                Errors.Add(msg + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }");
            }
        }
示例#4
0
        public bool Invoke(string[] cols)
        {
            var data  = DataListUtilBase.AdjustForEncodingIssues(cols[0]);
            var isXml = DataListUtilBase.IsXml(data, out bool isFragment);

            return(!(isXml || isFragment));
        }
示例#5
0
        private string BuildPostBody(byte[] body)
        {
            var returnedQueueMessage = Encoding.UTF8.GetString(body);
            var inputs     = _valueKeys.Select(v => (v.Name, v.Value)).ToList();
            var mappedData = _messageToInputsMapper.Map(returnedQueueMessage, inputs, returnedQueueMessage.IsJSON(),
                                                        DataListUtilBase.IsXml(returnedQueueMessage), _mapEntireMessage);

            return(mappedData);
        }
示例#6
0
        public void AssignJson(IAssignValue value, int update)
        {
            try
            {
                if (string.IsNullOrEmpty(value.Name))
                {
                    return;
                }

                var envTemp = AssignEvaluation.evalJsonAssign(value, update, _env, ShouldTypeCast.Yes);
                _env = envTemp;
            }
            catch (Exception err)
            {
                var res = err.Message + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(value.Name) + " }";
                Errors.Add(res);
                throw new WarewolfExecutionEnvironmentException(res);
            }
        }
示例#7
0
        public CommonFunctions.WarewolfEvalResult Eval(string exp, int update, bool throwsifnotexists, bool shouldEscape)
        {
            try
            {
                return(PublicFunctions.EvalEnvExpression(exp, update, shouldEscape, _env));
            }
            catch (IndexOutOfRangeException)
            {
                throw;
            }
            catch (Exception e)
            {
                if (throwsifnotexists)
                {
                    if (e is NullValueInVariableException variableException && e.Message.Contains("variable not found"))
                    {
                        throw new WarewolfExecutionEnvironmentException("variable { " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(variableException.VariableName) + " } not found");
                    }

                    if (e is IndexOutOfRangeException || e.Message.Contains(@"index was not an int"))
                    {
                        throw;
                    }

                    throw new WarewolfExecutionEnvironmentException(e.Message + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(exp) + " }");
                }

                return(CommonFunctions.WarewolfEvalResult.NewWarewolfAtomResult(DataStorage.WarewolfAtom.Nothing));
            }
        }
示例#8
0
        public IList <string> EvalAsListOfStrings(string expression, int update)
        {
            var result = Eval(expression, update);

            if (result.IsWarewolfAtomResult && result is CommonFunctions.WarewolfEvalResult.WarewolfAtomResult x)
            {
                return(new List <string> {
                    WarewolfAtomToString(x.Item)
                });
            }

            if (result.IsWarewolfRecordSetResult && result is CommonFunctions.WarewolfEvalResult.WarewolfRecordSetResult recSetResult)
            {
                var recSetData = recSetResult.Item;
                if (recSetData != null)
                {
                    return(EvalListOfStringsHelper(recSetData));
                }
            }

            if (result is CommonFunctions.WarewolfEvalResult.WarewolfAtomListresult warewolfAtomListresult)
            {
                var item = warewolfAtomListresult.Item;
                return(item.Select(WarewolfAtomToString).ToList());
            }

            throw new WarewolfExecutionEnvironmentException(string.Format(ErrorResource.CouldNotRetrieveStringsFromExpression, "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(expression) + " }"));
        }
示例#9
0
 public void AssignWithFrame(IAssignValue values, int update)
 {
     try
     {
         var envTemp = PublicFunctions.EvalAssignWithFrame(values, update, _env);
         _env = envTemp;
     }
     catch (Exception err)
     {
         throw new WarewolfExecutionEnvironmentException(err.Message + ": " + "{ " + DataListUtilBase.StripLeadingAndTrailingBracketsFromValue(values.Name) + " }");
     }
 }
        public void DataListUtilBase_StripLeadingAndTrailingBracketsFromValue_GivenVarialbleName_ShouldReturnName()
        {
            var result = DataListUtilBase.StripLeadingAndTrailingBracketsFromValue("[[name]]");

            Assert.AreEqual("name", result);
        }
示例#11
0
 public static string AdjustForEncodingIssues(string payload) => DataListUtilBase.AdjustForEncodingIssues(payload);
示例#12
0
 public static bool IsXml(string data, out bool isFragment) => DataListUtilBase.IsXml(data, out isFragment);
示例#13
0
        //used in the replace node method

        public static bool IsXml(string data) => DataListUtilBase.IsXml(data);