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; }
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); }
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); }