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);
        }
Exemple #7
0
        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"};
        }
Exemple #9
0
 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);
 }
Exemple #10
0
        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));
        }
Exemple #11
0
        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));
        }
Exemple #12
0
        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);
        }
Exemple #14
0
 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);
 }
Exemple #15
0
        /// <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);
        }
Exemple #17
0
        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);

        }
Exemple #19
0
        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();

        }
Exemple #20
0
        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));
        }
Exemple #21
0
        public void CannotUseNestedIfBrokenBrakesExpression()
        {
            String     bxl = @"test1 qwerty=(
nested (expression[x{2]})
)
";
            IBxlParser p   = new BxlParser();

            Assert.Throws <BxlException>(() => p.Parse(bxl));
        }
Exemple #22
0
        public void CannotUseExtraBeginExpressions()
        {
            String     bxl = @"test1 qwerty=(((
(nested (expression[x{2}])
)
";
            IBxlParser p   = new BxlParser();

            Assert.Throws <BxlException>(() => p.Parse(bxl));
        }
Exemple #23
0
        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);
 }
Exemple #25
0
        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);
        }
Exemple #26
0
        public void AnonymousSupport()
        {
            String bxl = @"
test1 c x=1 'anonymous'";

            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);
        }
Exemple #27
0
		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("\"", "'"));
		}
Exemple #28
0
        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();
        }
        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);
        }
Exemple #30
0
        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());
        }
Exemple #32
0
        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, "");
        }
Exemple #33
0
        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");
        }
Exemple #34
0
        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));
            }
            ;
        }
Exemple #36
0
        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");
        }
Exemple #37
0
        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;
		}
Exemple #39
0
        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));

        }
Exemple #43
0
		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));
        }
Exemple #50
0
		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");
		}
Exemple #51
0
		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("\"", "'"));
		}
Exemple #52
0
		public void AnonymousSupport()
		{
			String bxl = @"
test1 c x=1 'anonymous'";

			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

		}
Exemple #53
0
		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");
		}
Exemple #54
0
		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);
		}
Exemple #55
0
		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));
	    }
Exemple #57
0
		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);
		}
Exemple #58
0
		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);
				}
			}
		}
Exemple #60
0
		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");
		}