public static void Convert(DiscordSocketClient discord, Node node, TelegramMessage message) { var visitor = new HtmlVisitor(discord, message); visitor.Visit(node); visitor.UpdateMessage(); }
public string Write(Node node) { var visitor = new HtmlVisitor(); visitor.Visit(node); return(visitor.ToString()); }
private TelegramMessage ReadMessage(DiscordSocketClient discord) { var message = new TelegramMessage(_message.Author.Username); HtmlVisitor.Convert(discord, _parser.Parse(_message.Content), message); return(message); }
static void Main(string[] args) { //Bir doküman oluşturmak için DocumentPart soyut sınıfımız var //Bu sınıfların her birinin text özelliği var PlainText docPart1 = new PlainText(); Hyperlink docPart2 = new Hyperlink(); BoldText docPart3 = new BoldText(); docPart1.Text = "Tasarım kalıpları, bir tecrübenin ürünü olarak ortaya çıkmış tekniklerdir."; docPart2.Text = "Kitap Linki"; docPart2.Url = "www.charpiletasarimkaliplari.com"; docPart3.Text = "C# ile tasarım kalıpları"; //bu sınıflara gerçek manada özellikleri eklemek için //visitor sınıfından yardım alıyoruz. IVisitor htmlVisitor = new HtmlVisitor(); docPart1.Accept(htmlVisitor); docPart2.Accept(htmlVisitor); docPart3.Accept(htmlVisitor); Console.WriteLine("Çıktımız: \n" + htmlVisitor.Output); Console.ReadLine(); }
static void Main(string[] args) { var document = new Document(); document.Add(new Hyperlink() { Text = "Text", Url = "https://github.com" }); document.Add(new BoldText() { Text = "Text" }); document.Add(new PlainText() { Text = "Text" }); var htmlVisitor = new HtmlVisitor(); document.Accept(htmlVisitor); System.Console.WriteLine(htmlVisitor.Result); var laTeXVisitor = new LaTeXVisitor(); document.Accept(laTeXVisitor); System.Console.WriteLine(laTeXVisitor.Result); var plainTextVisitor = new PlainTextVisitor(); document.Accept(plainTextVisitor); System.Console.WriteLine(plainTextVisitor.Result); System.Console.ReadLine(); }
static void Main(string[] args) { #region Employee Management // Setup employee collection Employees e = new Employees(); e.Attach(new Clerk()); e.Attach(new Director()); e.Attach(new President()); // Employees are 'visited' e.Accept(new IncomeVisitor()); e.Accept(new VacationVisitor()); // Wait for user Console.ReadKey(); #endregion #region Document Formatting // Create a new document. var document = new Document(); // Add some elements to the document. document.Elements.Add(new Text("This is plain text.")); document.Elements.Add(new Hyperlink("Hyperlink to Airbrake.io", "http://airbrake.io")); document.Elements.Add(new Paragraph("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")); document.Elements.Add(new BoldText("Important text to bold!")); // Create a few visitors. var html = new HtmlVisitor(); var markdown = new MarkdownVisitor(); var bbCode = new BbVisitor(); // Force document to accept passed visitors, // which will each uniquely alter output. document.Accept(html); document.Accept(markdown); document.Accept(bbCode); // Log each visitor's output. Console.WriteLine("HTML"); Console.WriteLine(html.ToString()); Console.WriteLine("Markdown"); Console.WriteLine(markdown.ToString()); Console.WriteLine("BBCode"); Console.WriteLine(bbCode.ToString()); #endregion }
private static void DynamicHtmlTest() { IFormRepository formRepository = new FakeFormRepository(); Form form = formRepository.Get("customers"); IVisitor visitor = new HtmlVisitor(); form.Accept(visitor); Console.WriteLine(visitor.Output); }
public IEnumerable <IToken> ParagraphStyles(Document document) { var styleId = Styles.OfType <ListStyleId>().FirstOrDefault(); if (styleId == null || !document.ListStyles.TryGetValue(styleId.Value, out var listStyle)) { return(Styles .Where(t => !HtmlVisitor.IsSpanElement(t))); } var levelNum = Styles.OfType <ListLevelNumber>().FirstOrDefault() ?? new ListLevelNumber(0); var result = new StyleList(listStyle.Style.Levels[levelNum.Value] .Where(t => t.Type == TokenType.ParagraphFormat)); result.MergeRange(Styles .Where(t => !HtmlVisitor.IsSpanElement(t))); return(result); }
private static void Main() { /*List<DocumentPart> parts = new List<DocumentPart> * { * new PlainText {Text = "Some plain text"}, * new Hyperlink {Text = "google.com", Url = "https://www.google.by/"}, * new BoldText {Text = "Some bold text"} * }; * * Document document = new Document(parts); * * Console.WriteLine(document.ToHtml()); * * Console.WriteLine(document.ToPlainText()); * * Console.WriteLine(document.ToLaTeX());*/ var htmlVisitor = new HtmlVisitor(); var laTeXVisitor = new LaTeXVisitor(); var plainTextVisitor = new PlainTextVisitor(); var parts = new List <Task5.Solution.Document.DocumentPart> { new Task5.Solution.Document.PlainText { Text = "Some plain text" }, new Task5.Solution.Document.Hyperlink { Text = "google.com", Url = "https://www.google.by/" }, new Task5.Solution.Document.BoldText { Text = "Some bold text" } }; var document = new Task5.Solution.Document.Document(parts); System.Console.WriteLine(document.Convert(htmlVisitor)); System.Console.WriteLine(document.Convert(laTeXVisitor)); System.Console.WriteLine(document.Convert(plainTextVisitor)); System.Console.ReadLine(); }
public override void Run() { var bank = new Bank(); var person1 = new Person("Person_1", 20); var company1 = new Company("Company_1", "123456", 1990); var person2 = new Person("Person_2", 30); var xmlVisitor = new XmlVisitor(); var htmlVisitor = new HtmlVisitor(); bank.AddAccount(person1); bank.AddAccount(company1); bank.Accept(xmlVisitor); bank.Accept(htmlVisitor); person2.Accept(xmlVisitor); person2.Accept(htmlVisitor); }
public void TestVisitor() { var document = new Document(); document.AddPart(new BoldText("This is bold text.")); document.AddPart(new PlainText("This is plain text.")); document.AddPart(new Hyperlink("This is hyperlink.", "http://www.example.com")); var htmlVisitor = new HtmlVisitor(); document.Accept(htmlVisitor); Assert.That( htmlVisitor.Output, Is.EqualTo("<b>This is bold text.</b>This is plain text.<a href=\"http://www.example.com\">This is hyperlink.</a>")); var latexVisitor = new LatexVisitor(); document.Accept(latexVisitor); Assert.That( latexVisitor.Output, Is.EqualTo("\\textbf{This is bold text.}This is plain text.\\href{http://www.example.com}{This is hyperlink.}")); }
public IActionResult Index( [NotNull] [ItemNotNull] IEnumerable<IFormFile> files, [CanBeNull] string format, [CanBeNull] string title, [CanBeNull] string publisher, [CanBeNull] string website, [CanBeNull] string stylesheetUrl, [CanBeNull] IFormFile stylesheet) { 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() && x.FileName.EndsWith(".docx", StringComparison.OrdinalIgnoreCase) && x.FileName.EndsWith(".md", StringComparison.OrdinalIgnoreCase))) return BadRequest("Invalid file format."); if (stylesheet is IFormFile s && !s.FileName.EndsWith(".css")) return BadRequest($"Invalid stylesheet:{stylesheet.FileName}."); Queue<Package> packagesQueue = new Queue<Package>(uploadedFiles.Length); foreach (IFormFile file in uploadedFiles) { if (file.FileName.EndsWith(".docx", StringComparison.OrdinalIgnoreCase)) { packagesQueue.Enqueue(Package.Open(file.OpenReadStream())); } else if (file.FileName.EndsWith(".md", StringComparison.OrdinalIgnoreCase)) { MDocument mDocument = new MDocument(); using (StreamReader reader = new StreamReader(file.OpenReadStream())) { MarkdownVisitor visitor = new MarkdownVisitor(); ReadOnlySpan<char> span; while ((span = reader.ReadLine()) != null) { mDocument.Append(visitor.Visit(in span)); } } Package package = DocxFilePath.Create().ToPackage(FileAccess.ReadWrite); mDocument.ToOpenXml().WriteTo(package.GetPart(Document.PartUri)); packagesQueue.Enqueue(package); } } Package output = Process( packagesQueue, title ?? "[REPORT TITLE]", publisher ?? "[PUBLISHER]", website ?? "[PUBLISHER WEBSITE]"); foreach (Package package in packagesQueue) { package.Close(); } switch (format) { case "docx": { return File(output.ToStream(), MicrosoftWordDocument, $"{title ?? "result"}.docx"); } case "html": { string styles = stylesheet is null ? null : new StreamReader(stylesheet.OpenReadStream()).ReadToEnd(); OpenXmlPackageVisitor ooxml = new OpenXmlPackageVisitor(output); HtmlVisitor html = new HtmlVisitor(ooxml.Document.ChartReferences, ooxml.Document.ImageReferences); XObject htmlResult = html.Visit(ooxml.Document.Content, ooxml.Footnotes.Content, title, stylesheetUrl, styles); return File(Encoding.UTF8.GetBytes(htmlResult.ToString()), "text/html", $"{title ?? "result"}.html"); } case "xml": { OpenXmlPackageVisitor xml = new OpenXmlPackageVisitor(output); XElement xmlResult = xml.Document.Content; return File(Encoding.UTF8.GetBytes(xmlResult.ToString()), "application/xml", $"{title ?? "result"}.xml"); } default: { return BadRequest(ModelState); } } }
static void Main(string[] args) { var opt = CliParser.StrictParse <Options>(args); var stopwatch = new Stopwatch(); XDocument leftDoc = null; XDocument rightDoc = null; if (opt.Verbose) { Console.WriteLine("Loading \"{0}\"...", opt.LeftFile); } leftDoc = XDocument.Load(opt.LeftFile); if (opt.Verbose) { Console.WriteLine("Loading \"{0}\"...", opt.RightFile); } rightDoc = XDocument.Load(opt.RightFile); if (opt.Verbose) { Console.WriteLine("Comparing differences..."); } stopwatch.Start(); var comparer = new XmlComparer(); var diff = comparer.Compare(leftDoc.Root, rightDoc.Root); if (!diff.IsChanged && opt.Verbose) { Console.WriteLine("No changes detected!"); } if (opt.Verbose) { Console.WriteLine("Compared in {0} ms.", stopwatch.ElapsedMilliseconds); } if (!string.IsNullOrEmpty(opt.OutputHtmlFile)) { if (opt.Verbose) { Console.WriteLine("Creating HTML output..."); stopwatch.Restart(); } var visitor = new HtmlVisitor(); visitor.Visit(diff); if (opt.Verbose) { Console.WriteLine("Writing HTML output to \"{0}\"...", opt.OutputHtmlFile); } File.WriteAllText(opt.OutputHtmlFile, visitor.Result); if (opt.Verbose) { Console.WriteLine("HTML output file created in {0} ms.", stopwatch.ElapsedMilliseconds); } } if (!string.IsNullOrEmpty(opt.OutputXdtFile)) { if (opt.Verbose) { Console.WriteLine("Creating XDT output..."); stopwatch.Restart(); } var visitor = new XdtVisitor(); visitor.Visit(diff); if (opt.Verbose) { Console.WriteLine("Writing XDT output to \"{0}\"...", opt.OutputXdtFile); } File.WriteAllText(opt.OutputXdtFile, visitor.Result); if (opt.Verbose) { Console.WriteLine("XDT output file created in {0} ms.", stopwatch.ElapsedMilliseconds); } } stopwatch.Stop(); if (opt.Verbose) { Console.WriteLine("\nShowing text diff:"); } if (opt.Verbose || (string.IsNullOrEmpty(opt.OutputHtmlFile) && string.IsNullOrEmpty(opt.OutputXdtFile))) { var vistor = new ToStringVisitor(); vistor.Visit(diff); Console.WriteLine(vistor.Result); } }
public static string ToHTML(this DocumentPart part) { Visitor visitor = new HtmlVisitor(); return(visitor.Visit(part)); }