Exemplo n.º 1
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            if (value is IRegexPattern regexPattern)
            {
                PatternUst patternUst = (PatternUst)value;
                JObject    jObject    = CreateJObject(patternUst);

                if (!ExcludeDefaults || !patternUst.Any)
                {
                    jObject.Add(nameof(IRegexPattern.Regex), regexPattern.RegexString);
                }

                AddTextSpanAndWrite(writer, jObject, patternUst, serializer);
            }
            else if (value is PatternIntRangeLiteral patternIntRangeLiteral)
            {
                JObject jObject = CreateJObject(patternIntRangeLiteral);

                if (!ExcludeDefaults || !patternIntRangeLiteral.Any)
                {
                    string str = patternIntRangeLiteral.ToString();
                    jObject.Add(nameof(PatternIntLiteral.Value), str.Substring(2, str.Length - 4));
                }

                AddTextSpanAndWrite(writer, jObject, patternIntRangeLiteral, serializer);
            }
            else
            {
                base.WriteJson(writer, value, serializer);
            }
        }
Exemplo n.º 2
0
        private static JObject CreateJObject(PatternUst patternUst)
        {
            var jObject = new JObject();

            jObject.Add(nameof(PatternUst.Kind), patternUst.Kind);
            return(jObject);
        }
Exemplo n.º 3
0
 private static void ReadTextSpan(JObject jObject, PatternUst patternUst)
 {
     if ((string)jObject[nameof(PatternUst.TextSpan)] is string textSpan)
     {
         patternUst.TextSpan = TextUtils.ParseTextSpan(textSpan);
     }
 }
 private static void ReadTextSpan(JObject jObject, PatternUst patternUst, JsonSerializer serializer)
 {
     if (jObject[nameof(PatternUst.TextSpan)] is JToken textSpanToken)
     {
         patternUst.TextSpan = textSpanToken.ToObject <TextSpan>(serializer);
     }
 }
Exemplo n.º 5
0
 private void AddTextSpanAndWrite(JsonWriter writer, JObject jObject, PatternUst patternUst, JsonSerializer serializer)
 {
     if (IncludeTextSpans && (!ExcludeDefaults || !patternUst.TextSpan.IsZero))
     {
         jObject.Add(nameof(PatternUst.TextSpan), JToken.FromObject(patternUst.TextSpan, serializer));
     }
     jObject.WriteTo(writer);
 }
Exemplo n.º 6
0
 public virtual T Visit(PatternUst patternBase)
 {
     if (patternBase == null)
     {
         return(default(T));
     }
     return(Visit((dynamic)patternBase));
 }
Exemplo n.º 7
0
 private void AddTextSpanAndWrite(JsonWriter writer, JObject jObject, PatternUst patternUst)
 {
     if (!ExcludeDefaults || !patternUst.TextSpan.IsZero)
     {
         jObject.Add(nameof(PatternUst.TextSpan), patternUst.TextSpan.ToString());
     }
     jObject.WriteTo(writer);
 }
Exemplo n.º 8
0
 protected virtual T VisitChildren(PatternUst patternBase)
 {
     try
     {
         return(propertyEnumerator.VisitProperties(patternBase, Visit));
     }
     catch (Exception ex) when(!(ex is ThreadAbortException))
     {
         Logger.LogError(new ConversionException(patternBase.Root?.CodeFile, ex)
         {
             TextSpan = patternBase.TextSpan
         });
         return(default(T));
     }
 }
Exemplo n.º 9
0
        public void Simplify_MultiMultiPattern_RemovedDuplicates()
        {
            var input = new PatternStatements
            {
                Statements = new List <PatternUst>()
                {
                    new PatternInvocationExpression
                    {
                        Target    = new PatternIdToken("test_call"),
                        Arguments = new PatternArgs
                                    (
                            new PatternIdToken("a"),
                            new PatternIdToken("b"),
                            new PatternMultipleExpressions(),
                            new PatternMultipleExpressions(),
                            new PatternIdToken("z")
                                    )
                    },

                    new PatternVarOrFieldDeclaration
                    {
                        Type       = new PatternIdToken("int"),
                        Assignment = new PatternAssignmentExpression
                        {
                            Left  = new PatternIdToken("a"),
                            Right = new PatternIntLiteral(42)
                        }
                    }
                }
            };
            var logger     = new LoggerMessageCounter();
            var processor  = new DslProcessor();
            var normalizer = new PatternNormalizer()
            {
                Logger = logger
            };
            PatternUst result = normalizer.Visit(input);

            var statements = ((PatternStatements)result).Statements;
            var invocation = (PatternInvocationExpression)statements.ElementAt(0);

            Assert.AreEqual(1, ((PatternArgs)invocation.Arguments).Args.Count(child => child is PatternMultipleExpressions));
        }
Exemplo n.º 10
0
 public virtual T Visit(PatternUst patternUst)
 {
     if (patternUst == null)
     {
         return(default);