Ejemplo n.º 1
0
        void ValidateText(string text)
        {
            if (!HasError)
            {
                _originalToolTip = ToolTip;
            }
            var error = IntellisenseStringProvider.parseLanguageExpressionAndValidate(text);

            if (FilterType != enIntellisensePartType.JsonObject)
            {
                HandleNonJsonFilterType(error);
            }
            else
            {
                if (error.Item2 != string.Empty)
                {
                    ToolTip  = error.Item2;
                    HasError = true;
                }
                else
                {
                    ToolTip  = _originalToolTip;
                    HasError = false;
                }
            }
        }
Ejemplo n.º 2
0
        public void ThenTheResultHasTheError(string errorMessage)
        {
            var inputText = ScenarioContext.Current.Get <string>("inputText");
            var error     = IntellisenseStringProvider.parseLanguageExpressionAndValidate(inputText);

            Assert.AreEqual(errorMessage.TrimEnd(' '), error.Item2.TrimEnd(' '));
        }
        private void ValidateText(string text)
        {
            if (!HasError)
            {
                _originalToolTip = ToolTip;
            }
            var error = IntellisenseStringProvider.parseLanguageExpressionAndValidate(text);

            if (FilterType != enIntellisensePartType.JsonObject)
            {
                if (FilterType == enIntellisensePartType.RecordsetsOnly && !error.Item1.IsRecordSetNameExpression)
                {
                    ToolTip  = error.Item2 != string.Empty ? error.Item2 : "Invalid recordset";
                    HasError = true;
                }
                else if (FilterType == enIntellisensePartType.ScalarsOnly && !error.Item1.IsScalarExpression)
                {
                    ToolTip  = error.Item2 != string.Empty ? error.Item2 : "Invalid scalar";
                    HasError = true;
                }
                else if (FilterType == enIntellisensePartType.RecordsetFields && !error.Item1.IsRecordSetExpression)
                {
                    ToolTip  = error.Item2 != string.Empty ? error.Item2 : "Invalid recordset name";
                    HasError = true;
                }
                else
                {
                    if (error.Item2 != string.Empty)
                    {
                        ToolTip  = error.Item2;
                        HasError = true;
                    }
                    else
                    {
                        ToolTip  = _originalToolTip;
                        HasError = false;
                    }
                }
            }
            else
            {
                if (error.Item2 != string.Empty)
                {
                    ToolTip  = error.Item2;
                    HasError = true;
                }
                else
                {
                    ToolTip  = _originalToolTip;
                    HasError = false;
                }
            }
        }
        public IIntellisenseStringResult Build(string selectedOption, int originalCaret, string originalText, string editorText)
        {
            if (originalText == String.Empty || selectedOption.StartsWith(originalText))
            {
                return(new IntellisenseStringResult(selectedOption, selectedOption.Length));
            }
            try
            {
#pragma warning disable 618
                var rep = IntellisenseStringProvider.doReplace(originalText, originalCaret, selectedOption);
#pragma warning restore 618
                return(new IntellisenseStringResult(rep.Item1, rep.Item2));
            }
            catch (Exception)
            {
                string diff           = originalCaret >= editorText.Length - 1 ? editorText : editorText.Substring(0, originalCaret + 1);
                int    ignore         = originalCaret - Math.Max(diff.LastIndexOf("[[", StringComparison.Ordinal), diff.LastIndexOf("]]", StringComparison.Ordinal) + 1);
                var    len            = originalCaret - ignore;
                var    delimchar      = "";
                var    lastIndexOfAny = diff.LastIndexOfAny(_tokenisers);
                if (len < 0)
                {
                    if (lastIndexOfAny > 0 && !"[]".Contains(diff[lastIndexOfAny].ToString()))
                    {
                        delimchar = diff[lastIndexOfAny].ToString();
                    }
                    ignore = originalCaret - lastIndexOfAny;
                }
                //var x =lastIndexOfAny < 0 && diff.LastIndexOf("[[") < 0 ? 0 : originalCaret - ignore;
                //var y = lastIndexOfAny < 0 && diff.LastIndexOf("]]") < 0 ? 0 : originalCaret - ignore;
                //len = Math.Max(x, y);
                //if(len<=0)
                len = lastIndexOfAny < 0 && diff.LastIndexOfAny("[]".ToCharArray()) < 0 ? 0 : originalCaret - ignore;
                var suffix = originalText.Substring(originalCaret);
                if (suffix.StartsWith("]]"))
                {
                    suffix = suffix.Substring(2);
                }
                var text = originalText.Substring(0, len) + delimchar + selectedOption + suffix;
                var car  = (originalText.Substring(0, len) + selectedOption).Length + delimchar.Length;

                return(new IntellisenseStringResult(text, car));
            }
        }