public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata) { var element = new PrintElementHyperlink(); BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.ApplyTextProperties(element, elementMetadata); BuildHelper.ApplyInlineProperties(element, buildContext.ElementStyle); BuildHelper.ApplyInlineProperties(element, elementMetadata); ApplyReference(element, buildContext, elementMetadata); // Генерация содержимого элемента var inlines = buildContext.ElementBuilder.BuildElements(buildContext, elementMetadata.Inlines); if (inlines != null) { foreach (var inline in inlines) { element.Inlines.Add(inline); } } BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle); BuildHelper.PostApplyTextProperties(element, elementMetadata); return(element); }
public void ShouldBuildInlines() { // Given dynamic inline1 = new DynamicWrapper(); inline1.Run = new DynamicWrapper(); inline1.Run.Text = "Inline1"; dynamic inline2 = new DynamicWrapper(); inline2.Run = new DynamicWrapper(); inline2.Run.Text = "Inline2"; dynamic elementMetadata = new DynamicWrapper(); elementMetadata.Inlines = new[] { inline1, inline2 }; // When PrintElementHyperlink element = BuildTestHelper.BuildHyperlink(elementMetadata); // Then Assert.IsNotNull(element); Assert.IsNotNull(element.Inlines); Assert.AreEqual(2, element.Inlines.Count); Assert.IsInstanceOf <PrintElementRun>(element.Inlines.First()); Assert.IsInstanceOf <PrintElementRun>(element.Inlines.Last()); Assert.AreEqual("Inline1", ((PrintElementRun)element.Inlines.First()).Text); Assert.AreEqual("Inline2", ((PrintElementRun)element.Inlines.Last()).Text); }
private static void ApplyReference(PrintElementHyperlink element, PrintElementBuildContext buildContext, dynamic elementMetadata) { string referenceSting = BuildHelper.FormatValue(buildContext, elementMetadata.Reference, elementMetadata.SourceFormat); if (!string.IsNullOrEmpty(referenceSting)) { Uri referenceUri; if (Uri.TryCreate(referenceSting, UriKind.RelativeOrAbsolute, out referenceUri)) { element.Reference = referenceUri; } } }
public void ShouldApplyReference() { // Given dynamic elementMetadata = new DynamicWrapper(); elementMetadata.Reference = "http://some.com"; // When PrintElementHyperlink element = BuildTestHelper.BuildHyperlink(elementMetadata); // Then Assert.IsNotNull(element); Assert.AreEqual(new Uri("http://some.com"), element.Reference); }
public void ShouldBuildHyperlink() { //Given var context = HtmlBuilderTestHelper.CreateHtmlBuilderContext(); var element = new PrintElementHyperlink(); var result = new TextWriterWrapper(); element.Reference = new Uri("http://google.com"); var run = new PrintElementRun { Text = "Hyperlink Google" }; element.Inlines.Add(run); //When context.Build(element, result.Writer); //Then Assert.AreEqual(Resources.ResultTestShouldBuildHyperlink, result.GetText()); }