public void TestHello()
        {
            var sourceText = "{Hello}";
            var expected = new MarkupExtension("Hello");

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public bool TryParse(string sourceText, out MarkupExtension graph)
        {
            graph = null;

            try
            {
                ParseTree tree = _parser.Parse(sourceText);
            #if DEBUG
                // Save result tree for debugging purposes
                LastParseTree = tree;
                LastException = null;
            #endif
                if (tree.Status == ParseTreeStatus.Parsed)
                {
                    graph = MarkupExtension.Create(tree.Root);
                    return true;
                }
            }
            #if DEBUG
            catch (Exception ex)
            {
                LastParseTree = null;
                LastException = ex;
            }
            #else
            catch
            {
                // ignored
            }
            #endif
            return false;
        }
Example #3
0
 public AttributeInfo(string name, string value, AttributeOrderRule orderRule, MarkupExtension markupExtension)
 {
     Name = name;
     Value = value;
     OrderRule = orderRule;
     MarkupExtension = markupExtension;
 }
        public bool TryParse(string sourceText, out MarkupExtension graph)
        {
            graph = null;

            try
            {
                ParseTree tree = _parser.Parse(sourceText);
#if DEBUG
                // Save result tree for debugging purposes
                LastParseTree = tree;
                LastException = null;
#endif
                if (tree.Status == ParseTreeStatus.Parsed)
                {
                    graph = MarkupExtension.Create(tree.Root);
                    return(true);
                }
            }
#if DEBUG
            catch (Exception ex)
            {
                LastParseTree = null;
                LastException = ex;
            }
#else
            catch
            {
                // ignored
            }
#endif
            return(false);
        }
 /// <summary>
 /// Format markup extension and return elements as formatted lines with "local" indention.
 /// Indention from previous element/attribute/tags must be applied separately
 /// </summary>
 /// <param name="markupExtension"></param>
 /// <returns></returns>
 public IEnumerable<string> Format(MarkupExtension markupExtension)
 {
     var formatter =
         (_singleLineTypes.Contains(markupExtension.TypeName))
             ? _singleLineFormatter
             : _multiLineFormatter;
     return formatter.Format(markupExtension);
 }
        public void TestHelloWorld42()
        {
            var sourceText = "{Hello world=42}";
            var expected = new MarkupExtension("Hello",
                new NamedArgument("world", "42")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public void TestBindingHello()
        {
            var sourceText = "{Binding Hello}";
            var expected = new MarkupExtension("Binding",
                new PositionalArgument("Hello")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public void TestEscapedBraces2()
        {
            var sourceText = @"{Binding Value, StringFormat={}{0:N2}}";
            var expected = new MarkupExtension("Binding",
                new PositionalArgument("Value"),
                new NamedArgument("StringFormat", "{}{0:N2}")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public void TestHelloworldFoo1Bar42()
        {
            var sourceText = "{Hello world,foo=1,bar=42}";
            var expected = new MarkupExtension("Hello",
                new PositionalArgument("world"),
                new NamedArgument("foo","1"),
                new NamedArgument("bar","42")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        private void ParseAndAssertObjectGraph(string sourceText, MarkupExtension expected)
        {
            IMarkupExtensionParser markupExtensionParser = new MarkupExtensionParser();
            MarkupExtension actual;
            var result = markupExtensionParser.TryParse(sourceText, out actual);

            Assert.That(result, Is.True);
            Assert.That(actual, Is.Not.Null);

            var compareLogic = new CompareLogic();
            var compareResult = compareLogic.Compare(expected, actual);
            Assert.That(compareResult.AreEqual, Is.True, compareResult.DifferencesString);
        }
Example #11
0
 public static Value Create(ParseTreeNode node)
 {
     return(LiteralValue.Create(node)
            ?? (Value)MarkupExtension.Create(node));
 }
        public void TestNestedBindingWithBraceFormat()
        {
            var sourceText = @"{Binding Title,
                              RelativeSource={RelativeSource FindAncestor,
                                                             AncestorType={x:Type UserControl}},
                              StringFormat={}{0}Now{{0}} - {0}}";
            var expected = new MarkupExtension("Binding",
                new PositionalArgument("Title"),
                new NamedArgument("RelativeSource",
                    new MarkupExtension("RelativeSource",
                        new PositionalArgument("FindAncestor"),
                        new NamedArgument("AncestorType",
                            new MarkupExtension("x:Type", new PositionalArgument("UserControl"))))),
                new NamedArgument("StringFormat", "{}{0}Now{{0}} - {0}")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public void TestNestedBinding2()
        {
            var sourceText = @"{DynamicResource {x:Static SystemColors.ControlTextBrushKey},
                                       ResourceKey={x:Static SystemColors.ControlTextBrushKey}}";
            var expected = new MarkupExtension("DynamicResource",
                new PositionalArgument(new MarkupExtension("x:Static", new PositionalArgument("SystemColors.ControlTextBrushKey"))),
                new NamedArgument("ResourceKey", new MarkupExtension("x:Static", new PositionalArgument("SystemColors.ControlTextBrushKey")))
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
        public void TestNestedBinding()
        {
            var sourceText = "{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type gpc:MainWindow}}}";
            var expected = new MarkupExtension("Binding",
                new PositionalArgument("ActualHeight"),
                new NamedArgument("Mode", "OneWay"),
                new NamedArgument("RelativeSource", new MarkupExtension("RelativeSource",
                    new PositionalArgument("FindAncestor"),
                    new NamedArgument("AncestorType",
                        new MarkupExtension("x:Type", new PositionalArgument("gpc:MainWindow")))))
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }
 public IEnumerable<string> Format(MarkupExtension markupExtension)
 {
     return markupExtension.Arguments.Any()
         ? Format('{' + markupExtension.TypeName + ' ', Format(markupExtension.Arguments), "}")
         : new string[] { '{' + markupExtension.TypeName + '}' };
 }
 /// <summary>
 /// Format markup extension on a single line.
 /// </summary>
 /// <param name="markupExtension"></param>
 /// <returns></returns>
 public string FormatSingleLine(MarkupExtension markupExtension)
 {
     return _singleLineFormatter.Format(markupExtension).Single();
 }
        public void TestSignificantSpacing()
        {
            var sourceText = @"  { Binding  StringFormat = {} {0}\  , Mode = OneWay } ";
            var expected = new MarkupExtension("Binding",
                new NamedArgument("StringFormat", @"{} {0}\ "),
                new NamedArgument("Mode","OneWay")
                );

            ParseAndAssertObjectGraph(sourceText, expected);
        }