public void CanGetSingleNewLineSymbol(string c, string r) { var code = c; var b = new BxlParser().Parse(code, "", BxlParserOptions.NoLexData); Assert.AreEqual(r, b.Element("e").Attr("x")); }
public void ValidExprTermination() { IBxlParser p = new BxlParser(); XElement res = p.Parse("x (a,b) s"); Console.WriteLine(res); }
public void CanReadXml() { var e = new BxlParser().Parse(@" user login1 name1 hash=hash1 salt=salt1 publickey=key1 domain = master1 role role1 role role2 group grp1 group grp2 custom a=1 b=2 ", "code", BxlParserOptions.ExtractSingle); var u = new User(); UserSerializer.ReadXml(u, e); Assert.AreEqual("login1", u.Login); Assert.AreEqual("name1", u.Name); Assert.AreEqual("hash1", u.Hash); Assert.AreEqual("salt1", u.Salt); Assert.AreEqual("key1", u.PublicKey); Assert.AreEqual("master1", u.Domain); Assert.AreEqual("role1", u.Roles[0]); Assert.AreEqual("role2", u.Roles[1]); Assert.AreEqual("grp1", u.Groups[0]); Assert.AreEqual("grp2", u.Groups[1]); Assert.AreEqual("1", u.Custom["a"]); Assert.AreEqual("2", u.Custom["b"]); }
public WikiBuilderTask[] Build(string taskcode, IConsoleLogHost logger) { var files = myapp.files.ResolveAll("wiki", "*.buildtask", true, null); logger.loginfo(files.Count()+" files for builder found"); IList<WikiBuilderTask> tasks = new List<WikiBuilderTask>(); foreach (var file in files) { logger.loginfo("file " +file +" start to load"); var e =new BxlParser().Parse(File.ReadAllText(file),file); foreach (var te in e.XPathSelectElements("//task")) { var task = WikiBuilderTask.ReadFromXml(te); tasks.Add(task); logger.loginfo("task with code "+task.Code+" added"); } } var filter = taskcode.split(); WikiBuilderTask[] result = null; if (0 == filter.Count) { result = tasks.ToArray(); }else { result = tasks.Where(x => filter.Contains(x.Id)).ToArray(); } var respository = myapp.ioc.get<IWikiRepository>() ?? new WikiRepository(); foreach (var task in result) { logger.loginfo("task " +task +" started"); var executor = task.CustomExecutor ?? getDefaultExecutor(task); executor.Execute(respository, task, logger); logger.loginfo("task " + task + " finished"); } return result; }
public void NamespaceClassElement() { var builder = new BSharpCodeBuilder(); builder.StartNamespace("test"); builder.StartClass("mya", new{ a = 1, b = "23", c = "dsdsd gfgfg !!!" }); builder.WriteAttributesLined(new{ x = 2, y = true }); builder.WriteElement("test", "a", inlineattributes: new{ a = 5, b = 6 }); builder.EndClass(); builder.StartClass("mya2", new { a = 3, b = "23", c = "dsdsd gfgfg !!!" }); builder.WriteAttributesLined(new { x = 3, y = false }); builder.EndClass(); var result = builder.ToString(); Console.WriteLine(result); Assert.AreEqual(@"namespace test class mya a=1 b=23 c='dsdsd gfgfg !!!' x=2 y=True test a a=5 b=6 class mya2 a=3 b=23 c='dsdsd gfgfg !!!' x=3 ", result); var xml = new BxlParser().Parse(result); Console.WriteLine(xml); }
/// <summary> /// Установка контекста /// </summary> /// <param name="bSharps">Массив кода на B#</param> public void SetContext(string[] bSharps) { var parsed = bSharps.Select(_ => BxlParser.Parse(_)); var compiled = BSharpCompiler.Compile(parsed); SetContext(compiled); }
public void CanParseFromString() { var p = new BxlParser(); p.Parse(@"a ()"); p.Parse("a bc"); }
public Parameter internalGet(string code) { var bxls = myapp.files.ResolveAll("data", "*.bxl", true, null); var parser = new BxlParser(); foreach (string bxl in bxls) { if(bxl.Contains(".bak"))continue; var x = parser.Parse(File.ReadAllText(bxl)); var pxs = x.XPathSelectElements("//paramlib/param"); foreach (XElement px in pxs) { var result = new Parameter(); if (bxl.Contains("/sys/")) { result.Level = "sys"; } else if (bxl.Contains("/usr/")) { result.Level = "usr"; } else if (bxl.Contains("/mod/")) { result.Level = "mod"; } px.applyTo(result); if(!_cache.ContainsKey(result.Code)) { _cache[result.Code] = result; } if(result.Code==code) { return result; } } } return new Parameter {Code = code, Name = code,Level = "usr"}; }
public IEnumerable<XElement> CollectBxl(BxlParserOptions options = BxlParserOptions.None) { var bxl = new BxlParser(); return from file in Collect() let text = File.ReadAllText(file) select bxl.Parse(text, file, options); }
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 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)); }
private static void Execute(string file) { var parser = new BxlParser(); try{ var xml = parser.Parse(File.ReadAllText(file), file, opts); if (useoutfile) { Console.WriteLine("File: " + file + " processed"); File.WriteAllText(file + ".xml", xml.ToString()); } else { Console.WriteLine("<!-- FILE : " + file + "-->"); Console.WriteLine(xml.ToString()); } } catch (Exception ex) { var er = new XElement("error", ex.ToString()); if (useoutfile) { File.WriteAllText(file + ".error.xml", er.ToString()); } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("<!-- FILE : " + file + "-->"); Console.WriteLine(er.ToString()); Console.ResetColor(); } }
public void NamespaceClassElementWithEscapes() { var builder = new BSharpCodeBuilder(); builder.StartNamespace("test"); builder.StartClass("mya", new { a = 1, b = "23", c = "dsdsd gfgfg !!!" }); builder.WriteAttributesLined(new { x = 2, y = true }); builder.WriteElement("%test+,:", "a", value: "trtr\r\ndsds", inlineattributes: new { a = 5, b = 6 }); builder.EndClass(); builder.StartClass("mya2", new { a = 3, b = "23", c = "dsdsd\r\ngfgfg !!!" }); builder.WriteAttributesLined(new { x = 3, y = false }); builder.EndClass(); var result = builder.ToString(); Console.WriteLine(result); Assert.AreEqual(@"namespace test class mya a=1 b=23 c='dsdsd gfgfg !!!' x=2 y=True %test+__COMMA____DBL__ a a=5 b=6 : """"""trtr dsds"""""" class mya2 a=3 b=23 c=""""""dsdsd gfgfg !!!"""""" x=3 ", result); var xml = new BxlParser().Parse(result); Console.WriteLine(xml); }
public void FindProblem() { var xml = new BxlParser().Parse(@"equalize schema=hsv chanels=1","code",BxlParserOptions.ExtractSingle); Console.WriteLine(xml); xml = new BxlParser().Parse("equalize schema=hsv channels=2\n\n", "code", BxlParserOptions.ExtractSingle); Console.WriteLine(xml); xml = new BxlParser().Parse("equalize schema=hsv channels=2\n\n", "code", BxlParserOptions.ExtractSingle); Console.WriteLine(xml); }
/// <summary> /// Returns a BxlDocument from parsing the text representation of a BXL file that has been already decoded. /// </summary> /// <param name="text">Text representation of the BXL contents.</param> /// <param name="referenceFileName">Used for error reporting purposes.</param> /// <param name="logs">Information gathered during the parsing process, including errors.</param> /// <param name="progress">Allows reporting progress for large files.</param> public static BxlDocument ReadFromText(string text, string referenceFileName, out Logs logs, IProgress <int> progress = null) { var parser = new BxlParser(text, referenceFileName); var document = parser.Execute(progress); logs = new Logs(parser.Logs); return(document); }
public void QPT78_Not_Supported_DoubleDot_In_Attribute(string code) { var parsed = new BxlParser().Parse(code); var e = parsed.Element("e"); var a = e.Attribute("x"); Assert.NotNull(a); Assert.AreEqual("a:a", a.Value); }
public void AnonCodeNotOverrideDirectlySetId() { String bxl = @"a id=1 a"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl).Elements().First(); Console.WriteLine(res); Assert.AreEqual("1", res.Attr("id")); }
public void Execute(App app, string command, IDictionary<string,object > parameters) { if(null==app)throw new ArgumentNullException("app"); if (command.noContent()) throw new ArgumentNullException("command"); parameters = parameters ?? new Dictionary<string, object>(); var commands = new BxlParser().Parse(app.Type.Commands.Trim()); var xcmd = commands.XPathSelectElement("//command[@code='" + command + "']"); if(null==xcmd)throw new Exception("cannot find command "+command+" on app "+app.Code); }
public void Setup() { var bxl = new BxlParser(); var reader = new LoadPackageReader(); var xml = bxl.Parse(LivingScript); var pkgs = reader.Read(xml); packages = new LoadPackageSet(pkgs); gen = new LoadScriptGenerator(); }
public IEnumerable <XElement> CollectBxl(BxlParserOptions options = BxlParserOptions.None) { var bxl = new BxlParser(); return (from file in Collect() let text = File.ReadAllText(file) select bxl.Parse(text, file, options)); }
public void CannotUseNestedIfBrokenBrakesExpression() { String bxl = @"test1 qwerty=( nested (expression[x{2]}) ) "; IBxlParser p = new BxlParser(); Assert.Throws <BxlException>(() => p.Parse(bxl)); }
public void CannotUseExtraBeginExpressions() { String bxl = @"test1 qwerty=((( (nested (expression[x{2}]) ) "; IBxlParser p = new BxlParser(); Assert.Throws <BxlException>(() => p.Parse(bxl)); }
public void FindProblem() { var xml = new BxlParser().Parse(@"equalize schema=hsv chanels=1", "code", BxlParserOptions.ExtractSingle); Console.WriteLine(xml); xml = new BxlParser().Parse("equalize schema=hsv channels=2\n\n", "code", BxlParserOptions.ExtractSingle); Console.WriteLine(xml); xml = new BxlParser().Parse("equalize schema=hsv channels=2\n\n", "code", BxlParserOptions.ExtractSingle); Console.WriteLine(xml); }
public void CanSendMail() { var smtpsender = new SmtpMessageSender(); var conf = new BxlParser().Parse(File.ReadAllText(EnvironmentInfo.ResolvePath("@repos@/zrepos/mail.bxls")),options:BxlParserOptions.ExtractSingle); smtpsender.InitializeFromXml(conf); var message = new PostMessage(); message.From = "ivan"; message.Addresses = new[] {"*****@*****.**"}; message.Body = "<h1>Привет!</h1>"; smtpsender.Send(message); }
public void BugInExpressionParseIfCommentFollow() { var code = @"a ()#"; var x = new BxlParser().Parse(code).ToString().Replace("\"", "\'"); Console.WriteLine(x); Assert.AreEqual(@"<root _file='code.bxl'> <a _file='code.bxl' _line='1' code='()' id='()' /> </root>", x); }
public void AnonymousSupport() { String bxl = @" test1 c x=1 'anonymous'"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); }
public void PreventNameAnonymAfterAnyNamed(){ var code = @" e c x=1 n "; var b = new BxlParser().Parse(code,"",BxlParserOptions.NoLexData); Console.WriteLine(b.ToString().Replace("\"", "'")); Assert.AreEqual(@"<root> <e code='c' id='c' x='1' n='1' /> </root>", b.ToString().Replace("\"", "'")); }
private static void MainTest(string src, string trg, bool result) { var p = new BxlParser(); var srca = p.Parse(src, "c", BxlParserOptions.NoLexData).Element("x").Attributes().First(); var c = new SingleCondition(srca); var trge = p.Parse(trg, "c", BxlParserOptions.NoLexData).Element("x"); var res = c.IsMatch(trge); Assert.AreEqual(result, res); }
public void CanUseOptions() { String bxl = @"test1 a b c"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl, "qqqq", BxlParserOptions.NoLexData | BxlParserOptions.OnlyIdAttibute | BxlParserOptions.SafeAttributeNames | BxlParserOptions.ExtractSingle); Console.WriteLine(res); Assert.AreEqual(res.Attributes().First().Name.LocalName, "__id"); }
public void UsesNamespacesInAttributeNames() { var res = new BxlParser().Parse(@" ns = 'http://myns' ns::test ns::attr=2"); Console.WriteLine(res.ToString()); Assert.AreEqual(@"<root xmlns:ns=""http://myns"" _file=""code.bxl""> <ns:test _file=""code.bxl"" _line=""3"" ns:attr=""2"" /> </root>".LfOnly(), res.ToString().LfOnly()); }
public void CanUseUseEmptyStringInAttributeValue() { String bxl = @"test q="""" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q")).Value, ""); }
public void CanUseSingleLineStringAsAttributeValue() { String bxl = @"test1 x='q q' "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("x")).Value, "q q"); }
public void CanUseSingleLineStringAsAttributeName() { String bxl = @"test1 'w w' = ""q q"" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("w w".Escape(EscapingType.XmlName))).Value, "q q"); }
public void QPT96_Bug(string srccode, string testattributes) { var x = new BxlParser().Parse(srccode).Element("a"); Console.WriteLine(x); foreach (var a in testattributes.Split(',')) { Assert.NotNull(x.Attribute(a)); } ; }
public void CanUseEscapedCharacters() { String bxl = @"test ""q\""q""=""r\""r"" "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q\"q".Escape(EscapingType.XmlName))).Value, "r\"r"); }
public void AllowDoubledAttributesByDefault() { String bxl = @" a x=1 x=2"; var res = new BxlParser().Parse(bxl).ToString().Replace("\"", "\'"); Console.WriteLine(res); Assert.AreEqual(@"<root _file='code.bxl'> <a _file='code.bxl' _line='2' x='2' /> </root>", res); }
private static HostConfig PrepareHostConfig(string[] args) { var cfg = new HostConfig(); cfg.ApplicationMode = HostApplicationMode.Standalone; var argdicts = new ConsoleArgumentHelper().ParseDictionary(args); if (argdicts.ContainsKey("config")) { var configFile = argdicts["config"]; XElement configXml = null; if (configFile.EndsWith(".xml")) { configXml = XElement.Load(configFile); } else { configXml = new BxlParser().Parse(File.ReadAllText(configFile), configFile); } cfg.LoadXmlConfig(configXml); } if (argdicts.ContainsKey("root")) { cfg.RootFolder = Path.GetFullPath(argdicts["root"]); } if (cfg.Bindings.Count == 0) { cfg.AddDefaultBinding(); } if (argdicts.ContainsKey("port")){ cfg.Bindings[0].Port = argdicts["port"].ToInt(); } if (argdicts.ContainsKey("content")){ var folders = argdicts["content"].SmartSplit(false, true, ';'); foreach (var folder in folders){ cfg.ContentFolders.Add(folder); } } if (argdicts.ContainsKey("appname")) { foreach (var hostBinding in cfg.Bindings) { if (hostBinding.AppName == "/") { hostBinding.AppName = argdicts["appname"]; } } } return cfg; }
public void CanUseTextContentSimpleLiteral() { String bxl = @"test1 : qwerty "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().First().Value, "qwerty"); }
private void removeFromFile(string map, string code, string name) { if (code == null) throw new ArgumentNullException("code"); var generator = new Booxml.BooxmlGenerator(); var file = myapp.files.Resolve(filename, true); if (null == file) return; XElement x = new BxlParser().Parse(myapp.files.Read(filename)); foreach (var e in x.Elements(map).ToArray()) { if(e.attr("code")==code && e.attr("name")==name) { e.Remove(); } } myapp.files.Write(filename, generator.Generate(x)); }
private void LoadBxlSources(IBSharpContext context) { var bxlparser = new BxlParser(); foreach (var file in DirectoryFileFilter.Create(Project).Collect()) { try { var xml = bxlparser.Parse(null, file); Project.Sources.Add(xml); Project.Log.Debug("add src from " + file); } catch (Exception ex) { context.RegisterError(BSharpErrors.Generic(ex)); Project.Log.Fatal("cannot load src from " + file + " : " + ex.Message); } } }
private void appendToFile(XElement e) { var generator = new Booxml.BooxmlGenerator(); var file = myapp.files.Resolve(filename,true); XElement x = null; if (null == file) { x = new XElement("root"); }else { var parser = new BxlParser(); x = parser.Parse(myapp.files.Read(filename)); } x.Add(e); myapp.files.Write(filename, generator.Generate(x)); }
public void CanParse() { String bxl = @"tes+t1 f f a 5 -b xx = 4 xx=5 c d e test2 f e g r k h d,g, "; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); Assert.AreEqual(res.Elements().Last().Attribute("_line").Value, "7"); }
public void BugNotResolveWithLevel() { var x = new BxlParser().Parse( @" test11 x=A test12 test14 x=B test15 test16 x='${..x}${.x}C' y='${x}+'" ); x = _xi.Interpolate(x); Console.WriteLine(x); Assert.AreEqual("ABC", x.Descendants("test16").First().Attribute("x").Value); }
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 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 RepeatExtensionWithBodyOption() { var x = new BxlParser().Parse(@" e x xi-repeat=data xi-body xi-expand x-code ${mycode} x-name ${myname} ", options: BxlParserOptions.NoLexData | BxlParserOptions.ExtractSingle); var ctx = new { data = new object[] { new { mycode = 2, myname = "Two" }, new { mycode = 3, myname = "Three" } } }; x = x.Interpolate(ctx); Console.WriteLine(x.ToString().Replace("\"", "'")); Assert.AreEqual(@"<e> <x-code code='2' id='2' /> <x-name code='Two' id='Two' /> <x-code code='3' id='3' /> <x-name code='Three' id='Three' /> </e>".Simplify(SimplifyOptions.Full), x.ToString().Simplify(SimplifyOptions.Full)); }
public void RepeatLocalSetExtension() { var x = new BxlParser().Parse(@" xi-dataset x x x=${mycode} y=${myname} xi-repeat=data xi-expand e u=33 i ${x}${x} ${y}${y} z=${u} xi-repeat=$x xi-expand ", options: BxlParserOptions.NoLexData | BxlParserOptions.ExtractSingle); var ctx = new { data = new object[] { new { mycode = 2, myname = "Two" }, new { mycode = 3, myname = "Three" } } }; x = x.Interpolate(ctx); Console.WriteLine(x.ToString().Replace("\"", "'")); Assert.AreEqual(@"<root> <xi-dataset code='x' id='x'> <x x='2' y='Two' /> <x x='3' y='Three' /> </xi-dataset> <e u='33'> <i code='22' id='22' name='TwoTwo' z='33' /> <i code='33' id='33' name='ThreeThree' z='33' /> </e> </root>".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 CanUseAnonAttributeNamespace() { String bxl = @"ns1=qwerty test a b ns1::x"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test = res.Elements().First(); XAttribute att = test.Attributes().Last(); Assert.AreEqual(att.Name.LocalName, "x"); Assert.AreEqual(att.Name.NamespaceName, "qwerty"); }
public void ValidlyParsesEmptyStringsBasis() { var code = @" n g f s ""X"" i c a=b p = """" i c a=b p = """" "; var b = new BxlParser().Parse(code, "", BxlParserOptions.NoLexData); Console.WriteLine(b.ToString().Replace("\"", "'")); Assert.AreEqual(@"<root> <n code='g' id='g'> <f code='s' id='s' name='X'> <i code='c' id='c' a='b' p='' /> <i code='c' id='c' a='b' p='' /> </f> </n> </root>", b.ToSqlString().Replace("\"", "'")); }
public void CanCountAnonAttributes() { String bxl = @" test1 a b test2 c 'anon1' 'anon2'"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement t1 = res.Element("test1"); XElement t2 = t1.Element("test2"); Assert.AreEqual(t1.Attribute("_aa4").Value, "anon1"); Assert.AreEqual(t2.Attribute("name").Value, "anon2"); }
public void NamedAttributesExceptIdentityBreaksIdentityStack(){ var code = @" a x y z b=1 a b=1 x y z a id=2 x y z "; var res = new BxlParser().Parse(code,options:BxlParserOptions.NoLexData).ToString().Replace("\"", "\'"); Console.WriteLine(res); Assert.AreEqual(@"<root> <a code='x' id='x' name='y' z='1' b='1' /> <a b='1' x='1' y='1' z='1' /> <a id='2' code='x' name='y' z='1' /> </root>", res); }
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)); }
public void CanSkipCommentary() { String bxl = @"#qwerty ns1=qwerty #qwerty ns2::test a b ns3::x #qwerty test #qwerty"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); }
public void CanDeclareDefaultNamespace() { String bxl = @"ns1=qwerty ns2::test a b ns3::x"; IBxlParser p = new BxlParser(); XElement res = p.Parse(bxl); Console.WriteLine(res); XElement test = res.Elements().First(); XAttribute att = test.Attributes().Last(); Assert.AreEqual(test.Name.NamespaceName, "namespace::code.bxl_X"); Assert.AreEqual(att.Name.NamespaceName, "namespace::code.bxl_XX"); }
private void LoadContainer() { if (Directory.Exists(Config.ConfigFolder)) { var xml = new XElement("result"); var bxl = new BxlParser(); foreach (var file in Directory.GetFiles(Config.ConfigFolder, "*.ioc-manifest.bxl")) { if (Config.IsConfigFileMatch(file)) { var filexml = bxl.Parse(File.ReadAllText(file)); xml.Add(filexml.Elements()); } } var loader = _container.GetLoader(); loader.LoadManifest(xml, true); foreach (var assemblyName in Config.AutoconfigureAssemblies){ var assembly = Assembly.Load(assemblyName); loader.LoadAssembly(assembly); } } }