static void Main(string[] args) { List <IElement> elements = new List <IElement>(); elements.Add(new Ramp("Airramp", true, 20, 3, true)); elements.Add(new Led(69, true, Color.Red, 10)); elements.Add(new Target('Y', false, 15)); Console.WriteLine("Report state at the beginning:"); IVisitor reportVisitor = new ReportVisitor(); VisitorClient.ElementsAcceptVisitor(elements, reportVisitor); Console.WriteLine("\nGet points:"); IVisitor pointVisitor = new PointVisitor(); VisitorClient.ElementsAcceptVisitor(elements, pointVisitor); Console.WriteLine("\nReset elements"); IVisitor resetVisitor = new ResetVisitor(); VisitorClient.ElementsAcceptVisitor(elements, resetVisitor); Console.WriteLine("\nReport state at the end:"); VisitorClient.ElementsAcceptVisitor(elements, reportVisitor); }
public async Task <IActionResult> Index([NotNull][ItemNotNull] IEnumerable <IFormFile> files, [CanBeNull] string format, [CanBeNull] string title, [CanBeNull] string publisher, [CanBeNull] string website) { if (files is null) { throw new ArgumentNullException(nameof(files)); } IFormFile[] uploadedFiles = files.ToArray(); if (uploadedFiles.Length == 0) { return(BadRequest("No files uploaded.")); } if (uploadedFiles.Any(x => x.Length <= 0)) { return(BadRequest("Invalid file length.")); } if (uploadedFiles.Any(x => x.ContentType != _microsoftWordDocument.ToString())) { return(BadRequest("Invalid file format.")); } Queue <MemoryStream> documentQueue = new Queue <MemoryStream>(uploadedFiles.Length); foreach (IFormFile file in uploadedFiles) { MemoryStream memoryStream = new MemoryStream(); await file.CopyToAsync(memoryStream); documentQueue.Enqueue(memoryStream); } MemoryStream output = await Process( documentQueue, title ?? "[REPORT TITLE]", publisher ?? "[PUBLISHER]", website ?? "[PUBLISHER WEBSITE]"); output.Seek(0, SeekOrigin.Begin); if (format != "html") { return(new FileStreamResult(output, _microsoftWordDocument)); } ReportVisitor visitor = new ReportVisitor(output); return (new ContentResult { Content = visitor.Document.Elements().Single().BodyToHtml().ToString(), ContentType = "text/html", StatusCode = 200 }); }
public void PrettyPrint() { ReportVisitor report = new ReportVisitor(); foreach (var item in items) { item.Accept(report.AsVisitor()); } report.Print(); }
private static void Visitor() { var bank = new Bank(); var visitor = new ReportVisitor(); foreach (IReportVisitee account in bank.Accounts) { account.Accept(visitor); } visitor.PrintReport(); }
private void ReportVisitor() { var bank = new Bank(); var visitor = new ReportVisitor(); foreach (IReportVisitee account in bank.Accounts) { account.Accept(visitor); } Assert.Equal(2, visitor.DebitAccountCount); Assert.Equal(4, visitor.AccountCount); }
static void Main(string[] args) { var arguments = new Dictionary <string, string>(); for (var index = 0; index < args.Length; index = index + 2) { arguments.Add(args[index].Substring(1), args[index + 1]); } GraphClient.Connect(); if (arguments.ContainsKey("dacpac")) { var databaseVisitor = new DatabaseVisitor(GraphClient); var databaseServerNode = GetDatabaseServerNode(arguments["server"]); GraphClient.CreateRelationship(databaseServerNode, new DatabaseServerContainsDatabase(databaseVisitor.Visit(arguments["dacpac"]))); } else if (arguments.ContainsKey("dacpac-references")) { var storedProcedureDependencyVisitor = new StoredProcedureDependencyVisitor(GraphClient); storedProcedureDependencyVisitor.Visit(arguments["dacpac-references"]); var viewDependencyVisitor = new ViewDependencyVisitor(GraphClient); viewDependencyVisitor.Visit(arguments["dacpac-references"]); } else if (arguments.ContainsKey("assembly")) { var assemblyVisitor = new AssemblyVisitor(GraphClient); GraphClient.CreateRelationship(GraphClient.RootNode, new RootContainsAssembly(assemblyVisitor.Visit(arguments["assembly"]))); } else if (arguments.ContainsKey("reports")) { var reportVisitor = new ReportVisitor(GraphClient); var reportServerNode = GetReportServerNode(arguments["server"]); var directory = new DirectoryInfo(arguments["reports"]); foreach (var report in directory.EnumerateFiles("*.rdl")) { GraphClient.CreateRelationship(reportServerNode, new ReportServerContainsReport(reportVisitor.Visit(report.FullName))); } } else if (arguments.ContainsKey("dotnet")) { var projectVisitor = new DotNetProjectVisitor(GraphClient); projectVisitor.Visit(arguments["dotnet"]); } }
public void WhenGetPositionAndStateNoneReportCommand() { var mockRobot = new Mock <IRobot>(); mockRobot.SetupGet(r => r.CurrentPosition).Returns(new Position(new Location(1, 1), Direction.North)); mockRobot.SetupGet(r => r.LateralSpeed).Returns(1); var mockCalculator = new Mock <ICalculator>(); mockCalculator.Setup(c => c.GetPositionAndState(It.IsAny <ICommand>())); var reportVisitor = new ReportVisitor(mockRobot.Object, mockCalculator.Object); var result = reportVisitor.GetPositionAndState(new Right() { Position = new Position(new Location(1, 1), Direction.North) }); Assert.Null(result.position); Assert.False(result.isMatched); }
static (XElement Document, XElement Footnotes) Execute([NotNull] XElement footnotes, [NotNull] XElement document, int footnoteId, int revisionId) { ReportVisitor visitor = new ReportVisitor(); if (!(visitor.Visit(footnotes) is XElement visited)) { throw new ArgumentException("This should never be thrown."); } XElement modifiedFootnotes = visited .RemoveByAll(W + "commentRangeStart") .RemoveByAll(W + "commentRangeEnd") .RemoveByAll(W + "commentReference") .RemoveByAll(x => (string)x.Attribute(W + "val") == "CommentReference") // Remove elements that should almost never exist. .RemoveByAll(x => x.Name == W + "jc" && !x.Ancestors(W + "tbl").Any()) // Alter bold, italic, and underline elements. .ChangeBoldToStrong() .ChangeItalicToEmphasis() .ChangeUnderlineToTableCaption() .ChangeUnderlineToFigureCaption() .ChangeUnderlineToSourceNote() .ChangeSuperscriptToReference() // Mark insert requests for the production team. .MergeRuns() // Set table styles. .SetTableStyles(revisionId) // Remove elements used above, but not needed in the output. .RemoveByAll(W + "u") .RemoveByAllIfEmpty(W + "tcPr") .RemoveByAllIfEmpty(W + "rPr") .RemoveByAllIfEmpty(W + "pPr") .RemoveByAllIfEmpty(W + "t") .RemoveByAllIfEmpty(W + "r") .RemoveByAll(x => x.Name == W + "p" && !x.HasElements && x.Parent?.Name != W + "tc") .RemoveBy(x => (int)x.Attribute(W + "id") < 1); modifiedFootnotes.Descendants(W + "p") .Attributes() .Remove(); // There shouldn't be more than one run style. foreach (XElement runProperties in modifiedFootnotes.Descendants(W + "rPr").Where(x => x.Elements(W + "rStyle").Count() > 1)) { XElement[] styles = runProperties.Elements(W + "rStyle") .ToArray(); styles.Remove(); IEnumerable <XElement> distinct = styles.Distinct(XNode.EqualityComparer) .Cast <XElement>() .ToArray(); if (distinct.Any(x => (string)x.Attribute(W + "val") == "FootnoteReference")) { distinct = distinct.Where(x => (string)x.Attribute(W + "val") == "FootnoteReference"); } runProperties.AddFirst(distinct); } (int oldId, int newId)[] footnoteMapping =