public void RepeatExtensionWithComplexIfOption() { var x = new BxlParser().Parse(@" e was-excluded ${mycode} xi-repeat=data xi-where=!include xi-expand not-complete ${mycode} ${myname} xi-repeat=data xi-where='!(mycode & myname)' xi-expand more-than-2 ${mycode} ${myname} xi-repeat=data xi-where='mycode > 2' xi-expand ", options: BxlParserOptions.NoLexData | BxlParserOptions.ExtractSingle); _xi = new XmlInterpolation { UseExtensions = true }; var ctx = new { data = new object[] { new { mycode = 2, myname = "Two", include=true }, new { mycode = 3, myname = "Three", include=false }, new { mycode = 0, myname = "Four", include=true }, new { mycode = 5, myname = "", include=false } } }; var cfg = new Scope(ctx.ToDict()); x = _xi.Interpolate(x, cfg); Console.WriteLine(x.ToString().Replace("\"", "'")); Assert.AreEqual(@"<e> <was-excluded code='3' id='3' /> <was-excluded code='5' id='5' /> <not-complete code='0' id='0' name='Four' /> <not-complete code='5' id='5' name='' /> <more-than-2 code='3' id='3' name='Three' /> <more-than-2 code='5' id='5' name='' /> </e>".Simplify(SimplifyOptions.Full), x.ToString().Simplify(SimplifyOptions.Full)); }
public void RepeatWithScopeExtensionAndFunctionCall() { var x = new BxlParser().Parse(@" e mycode=1 myname=aa x ${x.mycode} ${x.myname} mf=${upper(myname)} mc=${mycode} mn=${myname} xi-repeat=data xi-scope=x ", options: BxlParserOptions.NoLexData | BxlParserOptions.ExtractSingle); _xi = new XmlInterpolation { UseExtensions = true }; var ctx = new { data = new object[] { new { mycode = 2, myname = "Two" }, new { mycode = 3, myname = "Three" } } }; var cfg = new Scope(ctx.ToDict()); cfg["upper"] = (Func<string, string>) (s => s.ToUpper()); x = _xi.Interpolate(x, cfg); Console.WriteLine(x.ToString().Replace("\"", "'")); Assert.AreEqual(@"<e mycode='1' myname='aa'> <x code='2' id='2' name='Two' mf='AA' mc='1' mn='aa' /> <x code='3' id='3' name='Three' mf='AA' mc='1' mn='aa' /> </e>".Simplify(SimplifyOptions.Full), x.ToString().Simplify(SimplifyOptions.Full)); }
public void RepeatExtensionWithIfOption() { var x = new BxlParser().Parse(@" e b=true x xi-repeat=data xi-body xi-where=include xi-if=!b xi-expand x-code ${mycode} x=1 xi-if=mycode x-name ${myname} x=1 xi-if=myname x xi-repeat=data xi-body xi-where=include xi-if=b xi-expand x-code ${mycode} x=2 xi-if=mycode x-name ${myname} x=2 xi-if=myname ", options: BxlParserOptions.NoLexData | BxlParserOptions.ExtractSingle); _xi = new XmlInterpolation { UseExtensions = true }; var ctx = new { data = new object[] { new { mycode = 2, myname = "Two", include=true }, new { mycode = 3, myname = "Three", include=false }, new { mycode = 0, myname = "Four", include=true }, new { mycode = 5, myname = "", include=true } } }; var cfg = new Scope(ctx.ToDict()); x = _xi.Interpolate(x, cfg); Console.WriteLine(x.ToString().Replace("\"", "'")); Assert.AreEqual(@"<e b='true'> <x-code code='2' id='2' x='2' /> <x-name code='Two' id='Two' x='2' /> <x-name code='Four' id='Four' x='2' /> <x-code code='5' id='5' x='2' /> </e>".Simplify(SimplifyOptions.Full), x.ToString().Simplify(SimplifyOptions.Full)); }
public void RepeatExtension() { var x = new BxlParser().Parse(@" e u=33 x ${mycode} ${myname} z=${u} xi-repeat=data xi-expand ",options:BxlParserOptions.NoLexData|BxlParserOptions.ExtractSingle); _xi = new XmlInterpolation {UseExtensions = true}; var ctx = new {data = new object[] {new {mycode = 2, myname = "Two"}, new {mycode = 3, myname = "Three"}}}; var cfg = new Scope(ctx.ToDict()); x = _xi.Interpolate(x, cfg); Console.WriteLine(x.ToString().Replace("\"","'")); Assert.AreEqual(@"<e u='33'> <x code='2' id='2' name='Two' z='33' /> <x code='3' id='3' name='Three' z='33' /> </e>".Simplify(SimplifyOptions.Full), x.ToString().Simplify(SimplifyOptions.Full)); }