Exemplo n.º 1
0
        public void BasicSetter()
        {
            var str = "12345";

            var node = new Node.Node
            {
                Pattern    = "(?<v1>.*)",
                ChildNodes = new List <INode>
                {
                    new Node.Node
                    {
                        FromVariable   = "v1",
                        TargetVariable = "v1",
                        Setter         = "|OLD| |NEW|"
                    },
                    new Node.Node
                    {
                        FromVariable = "v1",
                        Target       = "StringProperty"
                    }
                }
            };

            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.StringProperty.ShouldBe("12345 12345");
        }
Exemplo n.º 2
0
        public void CollectionTest04()
        {
            var str  = "a1b2a3b4a5b6";
            var node = new Node.Node
            {
                Target     = "ArrayProperty",
                ChildNodes = new List <Node.INode>
                {
                    new Node.Node
                    {
                        Pattern      = "a(?<a>.)",
                        Target       = "IntegerField",
                        FromVariable = "a"
                    },
                    new Node.Node
                    {
                        Pattern      = "b(?<b>.)",
                        Target       = "IntegerField",
                        FromVariable = "b"
                    }
                }
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.ArrayProperty.Count().ShouldBe(6);
            obj.Result.ArrayProperty.Select(x => x.IntegerField).Distinct().Count().ShouldBe(6);
            obj.Result.ArrayProperty.Select(x => x.IntegerField).Min().ShouldBe(1);
            obj.Result.ArrayProperty.Select(x => x.IntegerField).Max().ShouldBe(6);
        }
Exemplo n.º 3
0
        public void ReplaceTest()
        {
            var node = new Node.Node
            {
                Process = "Replace(hello,goodbye)",
                Target  = "StringProperty"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, "hello hello hello");

            obj.Result.StringProperty.ShouldBe("goodbye goodbye goodbye");
        }
Exemplo n.º 4
0
 public void DateTimeNoFormatter()
 {
     var str  = "aaa2019-02-03 11:33:44bbb";
     var node = new Node.Node
     {
         Pattern      = "aaa(?<dt>.*?)bbb",
         Target       = "DateTimeProperty",
         FromVariable = "dt"
     };
     var parser = new Parser.Parser();
     var obj    = parser.Text2Object <TestObj1>(node, str);
 }
Exemplo n.º 5
0
        public void ToLowerTest()
        {
            var node = new Node.Node
            {
                Process = "ToLower()",
                Target  = "StringProperty"
            };
            var parser = new Parser.Parser();
            var str    = "UPPERCASE lowercase";
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.StringProperty.ShouldBe(str.ToLower());
        }
Exemplo n.º 6
0
        public void SimpleStringWholeMatch()
        {
            var str  = "hello";
            var node = new Node.Node
            {
                Pattern = "(.*)",
                Target  = "StringProperty"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.StringProperty.ShouldBe(str);
        }
Exemplo n.º 7
0
        public void SimpleDecimalFromVariable()
        {
            var str  = "123.45";
            var node = new Node.Node
            {
                Pattern      = "12(?<v1>3.4)5",
                Target       = "DecimalProperty",
                FromVariable = "v1"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.DecimalProperty.ShouldBe(3.4M);
        }
Exemplo n.º 8
0
        public void SimpleIntFromVariable()
        {
            var str  = "12345";
            var node = new Node.Node
            {
                Pattern      = "12(?<v1>3)45",
                Target       = "IntegerProperty",
                FromVariable = "v1"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.IntegerProperty.ShouldBe(3);
        }
Exemplo n.º 9
0
        public void SimpleStringFromVariable()
        {
            var str  = "hello";
            var node = new Node.Node
            {
                Pattern      = "he(?<v1>ll)o",
                Target       = "StringProperty",
                FromVariable = "v1"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.StringProperty.ShouldBe("ll");
        }
Exemplo n.º 10
0
        public void AnonymousType()
        {
            var str = "12345";
            var a   = new { A = 1 };

            var node = new Node.Node
            {
                Pattern      = "12(?<v1>3)45",
                Target       = "A",
                FromVariable = "v1"
            };

            var parser = new Parser.Parser();
            var obj    = parser.Text2Object(node, str, a);

            obj.Result.A.ShouldBe(3);
        }
Exemplo n.º 11
0
        public async Task TargetVariable01()
        {
            INode node = new Node.Node
            {
                Constant       = "C1",
                TargetVariable = "Var1",
                ChildNodes     = new List <INode>
                {
                    new Node.Node
                    {
                        FromVariable = "Var1",
                        Target       = "StringProperty"
                    }
                }
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, "");

            obj.Result.StringProperty.ShouldBe(node.Constant);
        }
Exemplo n.º 12
0
        public void DateTimeWithFormatter()
        {
            var str  = "aaa02-2019-03 11:33:44bbb";
            var node = new Node.Node
            {
                Pattern      = "aaa(?<dt>.*?)bbb",
                Target       = "DateTimeProperty",
                FromVariable = "dt",
                Format       = "MM-yyyy-dd HH:ss:mm"
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.DateTimeProperty.Year.ShouldBe(2019);
            obj.Result.DateTimeProperty.Month.ShouldBe(02);
            obj.Result.DateTimeProperty.Day.ShouldBe(03);
            obj.Result.DateTimeProperty.Hour.ShouldBe(11);
            obj.Result.DateTimeProperty.Minute.ShouldBe(44);
            obj.Result.DateTimeProperty.Second.ShouldBe(33);
        }
Exemplo n.º 13
0
        public void ComplexObjectProperty()
        {
            var str  = "123456";
            var node = new Node.Node
            {
                Target     = "Complex1",
                ChildNodes = new List <Node.INode>
                {
                    new Node.Node
                    {
                        Pattern      = "(?<v1>.*)",
                        Target       = "StringProperty",
                        FromVariable = "v1"
                    }
                }
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.Complex1.ShouldNotBeNull();
            obj.Result.Complex1.StringProperty.ShouldBe("123456");
        }
Exemplo n.º 14
0
        public void CollectionTest03()
        {
            var str  = "123456";
            var node = new Node.Node
            {
                Target     = "ArrayProperty",
                ChildNodes = new List <Node.INode>
                {
                    new Node.Node
                    {
                        Pattern = "(?<v1>.)",
                        Target  = "StringProperty"
                    }
                }
            };
            var parser = new Parser.Parser();
            var obj    = parser.Text2Object <TestObj1>(node, str);

            obj.Result.ArrayProperty.Count().ShouldBe(str.Length);
            obj.Result.ArrayProperty.Select(x => x.StringProperty).Distinct().Count().ShouldBe(6);
            obj.Result.ArrayProperty.Select(x => x.StringProperty).Min().ShouldBe("1");
            obj.Result.ArrayProperty.Select(x => x.StringProperty).Max().ShouldBe("6");
        }
Exemplo n.º 15
0
        static void Main(string[] args)
        {
            var sourceString = GetResource("slip1");

            var template = new Node.Node
            {
                ChildNodes = new List <INode>
                {
                    new Node.Node
                    {
                        Comment    = "Parse the transaction date time",
                        Pattern    = @"(?<datepart>\d\d\d\d-\d\d-\d\d) (?<timepart>\d\d:\d\d:\d\d)",
                        ChildNodes = new List <INode>
                        {
                            new Node.Node
                            {
                                Comment        = "Save the date part into a new variable called dateandtimecombimed",
                                TargetVariable = "dateandtimecombimed",
                                FromVariable   = "datepart"
                            },
                            new Node.Node()
                            {
                                Comment        = "Take the value from timepart, and append it to dateandtimecombimed, using a setter",
                                TargetVariable = "dateandtimecombimed",
                                FromVariable   = "timepart",
                                Setter         = "|OLD| |NEW|"
                            },
                            new Node.Node()
                            {
                                Comment      = "Write the value from dateandtimecombimed into the result model",
                                Target       = "TransactionTime",
                                FromVariable = "dateandtimecombimed",
                                Format       = "yyyy-MM-dd HH:mm:ss"
                            }
                        }
                    },
                    new Node.Node()
                    {
                        Comment    = "Grab the part of the slip that contains the line items.",
                        Pattern    = "LINE ITEMS START --->(?<lineitemssection>.*?)<--- LINE ITEMS END",
                        Target     = "LineItems",
                        ChildNodes = new List <INode>
                        {
                            new Node.Node
                            {
                                Pattern    = @"(?<desc>[^\n\r]+)(?<quantity>\d+?) (?<unitprice>\d+\.\d\d?) (?<linetotal>\d+\.\d\d?)",
                                ChildNodes = new List <INode>
                                {
                                    new Node.Node
                                    {
                                        Target       = "Description",
                                        FromVariable = "desc"
                                    },
                                    new Node.Node
                                    {
                                        Target       = "Quantity",
                                        FromVariable = "quantity"
                                    },
                                    new Node.Node
                                    {
                                        Target       = "UnitPrice",
                                        FromVariable = "unitprice"
                                    },
                                    new Node.Node
                                    {
                                        Target       = "LineTotal",
                                        FromVariable = "linetotal"
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var templateJson = JsonConvert.SerializeObject(template,
                                                           Newtonsoft.Json.Formatting.Indented,
                                                           new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                ContractResolver  = new ShouldSerializeContractResolver()
            });

            var parser     = new Parser.Parser();
            var resultSlip = parser.Text2Object <SlipModel>(template, sourceString).Result;
        }