Пример #1
0
            public static void Convert(DiscordSocketClient discord, Node node, TelegramMessage message)
            {
                var visitor = new HtmlVisitor(discord, message);

                visitor.Visit(node);
                visitor.UpdateMessage();
            }
Пример #2
0
        public string Write(Node node)
        {
            var visitor = new HtmlVisitor();

            visitor.Visit(node);
            return(visitor.ToString());
        }
Пример #3
0
        private TelegramMessage ReadMessage(DiscordSocketClient discord)
        {
            var message = new TelegramMessage(_message.Author.Username);

            HtmlVisitor.Convert(discord, _parser.Parse(_message.Content), message);
            return(message);
        }
Пример #4
0
        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();
        }
Пример #5
0
        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();
        }
Пример #6
0
        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
        }
Пример #7
0
        private static void DynamicHtmlTest()
        {
            IFormRepository formRepository = new FakeFormRepository();

            Form form = formRepository.Get("customers");

            IVisitor visitor = new HtmlVisitor();

            form.Accept(visitor);

            Console.WriteLine(visitor.Output);
        }
Пример #8
0
            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);
            }
Пример #9
0
        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();
        }
Пример #10
0
        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);
        }
Пример #11
0
        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.}"));
        }
Пример #12
0
        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);
                }
            }
        }
Пример #13
0
        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));
        }