예제 #1
0
        public void CanParseFromString()
        {
            var p = new BxlParser();

            p.Parse(@"a ()");
            p.Parse("a bc");
        }
예제 #2
0
        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);
        }
예제 #3
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);
 }
        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"};
        }
예제 #5
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();
            }
        }
예제 #6
0
        public void ValidExprTermination()
        {
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse("x (a,b) s");

            Console.WriteLine(res);
        }
예제 #7
0
        /// <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);
        }
예제 #8
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"));
        }
예제 #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));
        }
예제 #10
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();

        }
예제 #11
0
        public void AnonymousSupport()
        {
            String bxl = @"
test1 c x=1 'anonymous'";

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

            Console.WriteLine(res);
        }
예제 #12
0
        public void CannotUseNestedIfBrokenBrakesExpression()
        {
            String     bxl = @"test1 qwerty=(
nested (expression[x{2]})
)
";
            IBxlParser p   = new BxlParser();

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

            Assert.Throws <BxlException>(() => p.Parse(bxl));
        }
예제 #14
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();
        }
예제 #15
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");
        }
예제 #16
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");
        }
예제 #17
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, "");
        }
예제 #18
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");
        }
예제 #19
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");
        }
예제 #20
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");
        }
예제 #21
0
        public void MultilineComentaryInsideOfElement(string code)
        {
            var        bxl = code;
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl, options: BxlParserOptions.NoLexData);

            Console.WriteLine(res.ToString());
            var str = res.ToString().Simplify(SimplifyOptions.Full);

            Console.WriteLine(str);
            Assert.AreEqual("<root><tcode='a'id='a'name='x'/></root>", str);
        }
예제 #22
0
        protected BSharpContext CompileAll(bool single, params string[] code)
        {
            var parser = new BxlParser();
            var idx    = 0;
            var xmls   = code.Select(_ => parser.Parse(_, (idx++) + ".bxl")).ToArray();
            var cfg    = new BSharpConfig {
                SingleSource = single, KeepLexInfo = false
            };
            var result = BSharpCompiler.Compile(xmls, cfg);

            return((BSharpContext)result);
        }
예제 #23
0
        public void CanUseMultiLineStringAsAttributeValue()
        {
            String     bxl = @"test q=""""""qwerty
asdf""""""
";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Attribute(XName.Get("q")).Value, "qwerty\nasdf");
        }
예제 #24
0
        public void CanGetNestedAttribute()
        {
            String     bxl = @"test1 x
	y = 5
";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Attribute(XName.Get("y")).Value, "5");
        }
예제 #25
0
        public void CanProcessExtraTabs()
        {
            String     bxl = @"	test1
	test2"    ;
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Name.LocalName, "test1");
            Assert.AreEqual(res.Elements().Last().Name.LocalName, "test2");
        }
예제 #26
0
        public void CanSkipMultipleSpaces()
        {
            String     bxl = @"
test1 x   =   2
";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Attribute(XName.Get("x")).Value, "2");
        }
예제 #27
0
        public void CanUseExprecssionAsAnonAttribute()
        {
            String     bxl = @"test1 a 'w w' (q q)";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            XElement test1 = res.Elements().First();

            Assert.AreEqual(test1.Attribute(XName.Get("name")).Value, "w w");
            Assert.AreEqual(test1.Attribute(XName.Get("_aa4")).Value, "(q q)");
        }
예제 #28
0
        public void CanUseTextContentMultilineString()
        {
            String     bxl = @"test1 
	: """"""qwerty'
	: 'ololo""""""
";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Value, "qwerty'\n\t: 'ololo");
        }
예제 #29
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);
        }
예제 #30
0
        public void CanUseTextContentWithAttributes()
        {
            String     bxl = @"test1 a b c=3:qwerty
";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.Elements().First().Attribute(XName.Get("name")).Value, "b");
            Assert.AreEqual(res.Elements().First().Attribute(XName.Get("c")).Value, "3");
            Assert.AreEqual(res.Elements().First().Value, "qwerty");
        }
예제 #31
0
        public void CanDeclareNamespace()
        {
            String     bxl = @"ns1=qwerty
""""""ns
2""""""=""""""ololo""""""
test";
            IBxlParser p   = new BxlParser();
            XElement   res = p.Parse(bxl);

            Console.WriteLine(res);

            Assert.AreEqual(res.GetNamespaceOfPrefix("ns1").NamespaceName, "qwerty");
            Assert.AreEqual(res.GetNamespaceOfPrefix("ns\n2".Escape(EscapingType.XmlName)).NamespaceName, "ololo");
        }
        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);
                }

            }
        }
예제 #33
0
        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));

        }
예제 #34
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");
        }
예제 #35
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");
        }
예제 #36
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");
		}
예제 #37
0
		public void CanProcessExtraTabs() {
			String bxl = @"	test1
	test2";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			Assert.AreEqual(res.Elements().First().Name.LocalName, "test1");
			Assert.AreEqual(res.Elements().Last().Name.LocalName, "test2");
		}
예제 #38
0
		public void CanDeclareNamespace() {
			String bxl = @"ns1=qwerty
""""""ns
2""""""=""""""ololo""""""
test";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			Assert.AreEqual(res.GetNamespaceOfPrefix("ns1").NamespaceName, "qwerty");
			Assert.AreEqual(res.GetNamespaceOfPrefix("ns\n2".Escape(EscapingType.XmlName)).NamespaceName, "ololo");
		}
예제 #39
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");
		}
예제 #40
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);
		}
예제 #41
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");
		}
예제 #42
0
		public void CanUseTextContentWithAttributes() {
			String bxl = @"test1 a b c=3:qwerty
";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			Assert.AreEqual(res.Elements().First().Attribute(XName.Get("name")).Value, "b");
			Assert.AreEqual(res.Elements().First().Attribute(XName.Get("c")).Value, "3");
			Assert.AreEqual(res.Elements().First().Value, "qwerty");
		}
예제 #43
0
		public void CanUseTextContentMultilineString() {
			String bxl = @"test1 
	: """"""qwerty'
	: 'ololo""""""
";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			Assert.AreEqual(res.Elements().First().Value, "qwerty'\n\t: 'ololo");
		}
예제 #44
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");
		}
예제 #45
0
		public void CanUseExprecssionAsAnonAttribute() {
			String bxl = @"test1 a 'w w' (q q)";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			XElement test1 = res.Elements().First();
			Assert.AreEqual(test1.Attribute(XName.Get("name")).Value, "w w");
			Assert.AreEqual(test1.Attribute(XName.Get("_aa4")).Value, "(q q)");
		}
예제 #46
0
		public void CannotUseNestedIfBrokenBrakesExpression()
		{
			String bxl = @"test1 qwerty=(
nested (expression[x{2]})
)
";
			IBxlParser p = new BxlParser();
			Assert.Throws<BxlException>(() => p.Parse(bxl));

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

		}
예제 #48
0
		public void CanUseElementNamespace() {
			String bxl = @"ns1=qwerty
ns2=qwerty2
ns1::test1
	ns2::test2";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			XElement test1 = res.Elements().First();
			XElement test2 = test1.Elements().First();

			Assert.AreEqual(test1.Name.LocalName, "test1");
			Assert.AreEqual(test1.Name.NamespaceName, "qwerty");
			Assert.AreEqual(test2.Name.LocalName, "test2");
			Assert.AreEqual(test2.Name.NamespaceName, "qwerty2");
		}
예제 #49
0
		public void CanUseAttributeNamespace() {
			String bxl = @"ns1=qwerty
ns2=qwerty2
test1 ns1::x=2 ns2::y=3";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl, "file", BxlParserOptions.NoLexData);
			Console.WriteLine(res);

			XElement test1 = res.Elements().First();
			XAttribute att1 = test1.Attributes().First();
			XAttribute att2 = test1.Attributes().Last();

			Assert.AreEqual(att1.Name.LocalName, "x");
			Assert.AreEqual(att1.Name.NamespaceName, "qwerty");
			Assert.AreEqual(att2.Name.LocalName, "y");
			Assert.AreEqual(att2.Name.NamespaceName, "qwerty2");
		}
예제 #50
0
        public void MultilineComentaryAtStart()
        {
            var bxl = @"
/*
my comment
*/
/* my comment */
/* my
  /* nest
     /* nest
    */
    comment
*/*/
test a
";
            IBxlParser p = new BxlParser();
            XElement res = p.Parse(bxl);
            var str = res.ToString().Simplify(SimplifyOptions.Full);
            Console.WriteLine(str);
            Assert.AreEqual("<rootfile='code.bxl'><testfile='code.bxl'line='12'code='a'id='a'/></root>",str);
        }
예제 #51
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");
		}
예제 #52
0
 public void MultilineComentaryInsideOfElement(string code) {
     var bxl = code;
     IBxlParser p = new BxlParser();
     XElement res = p.Parse(bxl, options:BxlParserOptions.NoLexData);
     Console.WriteLine(res.ToString());
     var str = res.ToString().Simplify(SimplifyOptions.Full);
     Console.WriteLine(str);
     Assert.AreEqual("<root><tcode='a'id='a'name='x'/></root>", str);
 }
예제 #53
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");
		}
예제 #54
0
        public void MultilineComentaryBetwenElements()
        {
            var bxl = @"
t a
/* c1 */
t b
     /* c2 
*/
t c
";
            IBxlParser p = new BxlParser();
            XElement res = p.Parse(bxl);
            Console.WriteLine(res.ToString());
            var str = res.ToString().Simplify(SimplifyOptions.Full);
            Console.WriteLine(str);
            Assert.AreEqual("<rootfile='code.bxl'><tfile='code.bxl'line='2'code='a'id='a'/><tfile='code.bxl'line='4'code='b'id='b'/><tfile='code.bxl'line='7'code='c'id='c'/></root>", str);
        }
예제 #55
0
		public void AnonymousSupport()
		{
			String bxl = @"
test1 c x=1 'anonymous'";

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

		}
예제 #56
0
        public void MultilineComentary() {
            var bxl = @"
/*
my comment
*/
test a
/* my comment */
test b
/* my
  /* nest
     /* nest
    */
    comment
*/*/
test c

test d /* at the 
end  of line */

test /* in line */ e
test f : /* c

c*/ xxx 
test f : xxx /* c

c*/
";
            IBxlParser p = new BxlParser();
            XElement res = p.Parse(bxl);
            Console.WriteLine(res.ToString());
            var str = res.ToString().Simplify(SimplifyOptions.Full);
            Console.WriteLine(str);
            Assert.AreEqual("<rootfile='code.bxl'><testfile='code.bxl'line='5'code='a'id='a'/><testfile='code.bxl'line='7'code='b'id='b'/><testfile='code.bxl'line='14'code='c'id='c'/><testfile='code.bxl'line='16'code='d'id='d'/><testfile='code.bxl'line='19'code='e'id='e'/><testfile='code.bxl'line='20'code='f'id='f'>xxx</test><testfile='code.bxl'line='23'code='f'id='f'>xxx</test></root>",str);
        }
예제 #57
0
		public void CanUseMultiLineStringAsAttributeName() {
			String bxl = @"test1 a
	""""""q
w
e"""""" = """"""r
t
y""""""
";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			XElement test1 = res.Elements().First();
			Assert.AreEqual(test1.Attribute(XName.Get("q\nw\ne".Escape(EscapingType.XmlName))).Value, "r\nt\ny");
		}
예제 #58
0
		public void CanUseTextContentWithChildElements() {
			String[] bxl = {
@"test1 
	:qwerty
	test2",
@"test1 
	test2
	:qwerty"
			};

			IBxlParser p = new BxlParser();
			foreach (string code in bxl) {
				XElement res = p.Parse(code);
				Console.WriteLine(res);

				Assert.AreEqual(res.Elements().First().Name.LocalName, "test1");
				Assert.AreEqual(res.Elements().First().Value, "qwerty");
				Assert.AreEqual(res.Elements().First().Elements().First().Name.LocalName, "test2");
			}
		}
예제 #59
0
		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);
				}
			}
		}
예제 #60
0
		public void CanUseNestedDifferentBrakesExpression()
		{
			String bxl = @"test1 qwerty=(
nested (expression[x{2}])
)
";
			IBxlParser p = new BxlParser();
			XElement res = p.Parse(bxl);
			Console.WriteLine(res);

			XElement test1 = res.Elements().First();
			Assert.AreEqual(test1.Attribute(XName.Get("qwerty")).Value, "(\nnested (expression[x{2}])\n)");
		}