//インライン表示には対応してません。 protected override void Write(MarkdownRenderer renderer, TaskList obj) { renderer?.AppendBlock(new CheckBox() { IsChecked = obj?.Checked ?? false }); }
private MarkdownMigrateTool(string rendererName) { var option = DocfxFlavoredMarked.CreateDefaultOptions(); option.LegacyMode = true; _builder = new DfmEngineBuilder(option); _render = InitRenderer(rendererName); }
protected override void Write(MarkdownRenderer renderer, CodeInline obj) { if (obj == null) { return; } renderer?.AppendInline(obj.Content, Theme.StyleId.Code); }
protected override void Write(MarkdownRenderer renderer, DelimiterInline obj) { //なにこれ? if (obj == null) { return; } renderer?.AppendInline(obj.ToLiteral(), Theme.StyleId.None); }
/// <summary> /// Initialises a new <see cref="MarkdownCanvasControl"/>. /// </summary> public MarkdownCanvasControl() { InitializeComponent(); this.Renderer = new MarkdownRenderer() { BaseFontSize = this.FontSize, Margins = new Margins(10, 10, 10, 10), ImageUriResolver = ImageCache.ImageUriResolver }; this.initialized = true; ImageCache.SetExitEventHandler(); }
protected override void Write(MarkdownRenderer renderer, ParagraphBlock obj) { if (renderer == null) { return; } //renderer.AppendStack(Themes.Theme.StyleId.Paragraph); renderer.AppendLeafInline(obj, Themes.Theme.StyleId.Paragraph); //renderer.CloseLayout(); }
protected override void Write(MarkdownRenderer renderer, QuoteBlock obj) { if (renderer == null) { return; } renderer.AppendQuote(Themes.Theme.StyleId.QuoteBlock, Themes.Theme.StyleId.QuoteBlock); renderer.WriteChildren(obj); renderer.CloseLayout(); }
protected override void Write(MarkdownRenderer renderer, AutolinkInline obj) { if (obj == null) { return; } var address = (obj.IsEmail ? "mailto:" : "") + obj.Url; renderer?.AppendHyperlink(obj.Url, Theme.StyleId.Hyperlink, new Uri(address)); }
public void TestExtractPropertyNames(string input, string[] expected) { var s = new MockCharacter { Name = "Foo", PlayerName = "Bar" }; var renderer = new MarkdownRenderer<MockCharacter>(s, new RenderingConfiguration()); var actual = renderer.ExtractPropertyNames(input); Assert.That(actual, Is.EquivalentTo(expected)); }
public void TestGetProperty() { var s = new MockCharacter { Name = "Foo" }; var renderer = new MarkdownRenderer<MockCharacter>(s, new RenderingConfiguration()); var actual = renderer.GetProperty("Name", s); Assert.That(actual, Is.EqualTo(s.Name)); }
public void TestFormat(string input, string expected) { var s = new MockCharacter { Name = "Foo", PlayerName = "Bar" }; var renderer = new MarkdownRenderer<MockCharacter>(s, new RenderingConfiguration()); var actual = renderer.Format(input, s); Assert.That(actual, Is.EqualTo(expected)); }
protected override void Write(MarkdownRenderer renderer, HeadingBlock obj) { if (obj == null) { return; } int level = Math.Max(0, Math.Min(5, obj.Level - 1)); renderer?.AppendLeafInline(obj, StyleIds[level], true); renderer?.AppendHorizontalLine(StyleIds[level]); }
protected override void Write(MarkdownRenderer renderer, MathBlock obj) { if (renderer == null) { return; } renderer.AppendFrame(Themes.Theme.StyleId.MathBlock); renderer.AppendLeafRawLines(obj, Themes.Theme.StyleId.None); renderer.CloseLayout(); }
protected override void Write(MarkdownRenderer renderer, LineBreakInline obj) { if (obj == null) { return; } if (obj.IsHard) { renderer?.AppendInline("\n", Theme.StyleId.None); //renderer?.CloseLabel(); } }
protected override void Write(MarkdownRenderer renderer, EmphasisInline obj) { if (obj?.Span == null) { return; } if (renderer == null) { return; } renderer?.WriteChildrenWithStyle(obj, GetStyleIdByDelim(obj)); }
public async Task <IActionResult> OnGetAsync([FromRoute] string slug) { var query = new GetPostQuery(_db); Post = await query.ExecuteAsync(slug); if (Post == null) { return(NotFound()); } Body = MarkdownRenderer.RenderMarkdown(Post.Body); return(Page()); }
protected override void Write(MarkdownRenderer renderer, CodeBlock obj) { if (renderer == null) { return; } var fencedCodeBlock = obj as FencedCodeBlock; if (fencedCodeBlock?.Info != null) { } renderer.AppendFrame(Themes.Theme.StyleId.CodeBlock); renderer.AppendLeafRawLines(obj, Themes.Theme.StyleId.None); renderer.CloseLayout(); }
public string RenderPage(GenericPage page) { switch (page.ContentType.MimeType) { case "text/markdown": var renderer = new MarkdownRenderer(_markdig); return(renderer.RenderToHtml(page.Content)); case "text/html": return(page.Content); case "text/plain": return($"<pre>{page.Content}</pre>"); default: return(page.Content); } }
protected override void Write(MarkdownRenderer renderer, Table obj) { if (obj == null || renderer == null) { return; } var result = new Grid(); bool hasColumnWidth = obj.ColumnDefinitions?.Any(a => a.Width != 0.0f && a.Width != 1.0f) ?? false; if (hasColumnWidth) { result.ColumnDefinitions = new ColumnDefinitionCollection(); foreach (var item in obj.ColumnDefinitions) { result.ColumnDefinitions.Add(new ColumnDefinition() { Width = item.Width }); } } int rowCount = 0; foreach (var item in obj) { var row = (TableRow)item; for (int columnCount = 0; columnCount < row.Count; columnCount++) { var cell = row[columnCount] as TableCell; var stack = new StackLayout(); renderer.TemporaryTargetLayout = stack; renderer.AddLayout(stack, renderer.Theme.GetStyleFromStyleId( row.IsHeader ? Themes.Theme.StyleId.TableCellHeader : Themes.Theme.StyleId.TableCellBody)); renderer.Write(cell); renderer.CloseLayout(); result.Children.Add(stack, columnCount, rowCount); } rowCount++; } }
public void RenderFast_TenBigHighlights() { var charsCount = (int)1e5; var partsCount = 10; var markdownBuilder = new StringBuilder(charsCount + 1); for (int i = 0; i < charsCount; ++i) { if (charsCount % (charsCount / partsCount) == 0 && i != 0) { markdownBuilder.Append("_ _"); } else { markdownBuilder.Append('a'); } } MarkdownRenderer.RenderToHtml(markdownBuilder.ToString()); }
protected override void Write(MarkdownRenderer renderer, MathBlock obj) { if (renderer == null) { return; } var webview = new WebView(); var source = new HtmlWebViewSource(); source.Html = @"<html><head><script src=""" + MathJaxPath + @""" type=""text/javascript""></script></head><body>" + "\\[" + Helper.LeafToString(obj) + "\\]" + @"</body></html>"; webview.Source = source; webview.VerticalOptions = LayoutOptions.StartAndExpand; renderer.AppendBlock(new Frame() { Style = renderer.Theme.GetStyleFromStyleId(Themes.Theme.StyleId.MathBlock).ToStyleFrame(), Content = webview }); }
public Task <string> RenderContentAsync(string content, ContentType contentType) { return(Task.Run(async() => { switch (contentType.MimeType) { case "text/markdown": var renderer = new MarkdownRenderer(_markdig); return await renderer.RenderToHtmlAsync(content); case "text/html": return content; case "text/plain": return $"<pre>{content}</pre>"; default: return content; } })); }
public void TestBlockquote() { var text = @"> ⚠️ When `component=""img""`, CardMedia relies on `object-fit` for centering the image. It's not supported by IE 11. ## UI Controls Supplemental actions within the card are explicitly called out using icons, text, and UI controls, typically placed at the bottom of the card. Here's an example of a media control card. "; var options = new Options(); var renderer = new MarkdownRenderer(); options.Renderer = renderer; var parser = new MarkdownParser(options); var tokensResult = Lexer.Lex(text, options); parser.Parse(tokensResult); }
protected override void Write(MarkdownRenderer renderer, LinkInline obj) { if (obj == null) { return; } if (renderer == null) { return; } var url = obj.GetDynamicUrl?.Invoke() ?? obj.Url; Uri?uri = MarkdownRenderer.GetAbsoluteUri(renderer.BasePath, url); if (uri == null) { renderer.WriteChildren(obj); return; } var title = string.IsNullOrEmpty(obj.Title) ? obj.Url : obj.Title; if (obj.IsImage) { renderer.AppendBlock(new Image() { Source = ImageSource.FromUri(uri), HorizontalOptions = LayoutOptions.FillAndExpand, }); } else { var restore = renderer.CurrentHyperlink; renderer.CurrentHyperlink = uri; renderer.HyperlinkStyleId = Theme.StyleId.Hyperlink; renderer.WriteChildren(obj); renderer.CurrentHyperlink = restore; } }
public override void TryRender(string text, MarkdownRenderer renderer, RenderStrategyChain strategyChain) { int level; if (renderer.PropertyChain.TryGetProperty(RenderSettingField.HEADING_LEVEL, out level)) { if (1 <= level && level <= 4) { increament(level); string lab = ""; for (int i = 0; i < level; i++) { renderer.RenderOut.Append("#"); lab += $"{numbering[i]}."; } renderer.RenderOut.Append($" {lab} {text}"); return; } } strategyChain.TryNextStrategy(text, renderer); }
private void btnGneegrate_Click(object sender, EventArgs e) { try { if (string.IsNullOrEmpty(ofdInputFile.FileName)) { MessageBox.Show(this, "Please select a documentaion file"); return; } if (_documentationModel == null) { MessageBox.Show(this, "Please select a valid documentaion file"); return; } if (clbTypes.CheckedItems.Count == 0) { MessageBox.Show(this, "Please select at least one type to generate documentation for"); return; } if (string.IsNullOrEmpty(fbdOutputPath.SelectedPath)) { MessageBox.Show(this, "Please select the output folder"); return; } if (string.IsNullOrEmpty(txtGitHubRepositoryRootURL.Text)) { MessageBox.Show(this, "Please enter the GitHub repository root URL"); return; } var markdownRenderer = new MarkdownRenderer(_documentationModel, fbdOutputPath.SelectedPath, txtGitHubRepositoryRootURL.Text); markdownRenderer.RenderSelectedTypes(clbTypes.CheckedItems.Cast <Model.Type>()); MessageBox.Show(this, "Markdown files generated successfully!"); System.Diagnostics.Process.Start(fbdOutputPath.SelectedPath); } catch (Exception exp) { MessageBox.Show(this, exp.Message); } }
public void TestEvalution2() { string docPath = @"E:\桌面工作目录\正在进行的\Projects\PonyText\README_PonyText.pony"; ErrorListener listener = new ErrorListener(); PonyLexer lexer = new PonyLexer(); PonyParser parser = new PonyParser(lexer); lexer.errorListener = listener; parser.errorListener = listener; PonyTextStructureBase structureBase = parser.Parse(File.ReadAllText(docPath)); AssemblyInjectionManager injectionManager = new AssemblyInjectionManager(); injectionManager.RegisterAssembly("PonyTextRenderer.Markdown", Assembly.GetAssembly(typeof(MarkdownRenderer))); injectionManager.RegisterAssembly("PonyText.Processor", Assembly.GetAssembly(typeof(PonyParser))); IProcessorFactory processor = new ProcessorFactory(new ProcessorExperience(), injectionManager); SimpleTextContext simpleTextContext = new SimpleTextContext(processor, new TextElementFactory()); processor.LoadProcessorFrom("PonyText.Processor"); Assert.DoesNotThrow(() => { structureBase.Evaluate(simpleTextContext); }); using (FileStream fs = new FileStream("dump.json", FileMode.Create)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.Write(simpleTextContext.GetCurrentContext().ToString()); } } MarkdownRenderer stringRenderer = new MarkdownRenderer(); simpleTextContext.GetCurrentContext().Render(stringRenderer, simpleTextContext); using (FileStream fs = new FileStream("out.md", FileMode.Create)) { stringRenderer.RenderContentTo(fs); } }
public override void TryRender(string text, MarkdownRenderer renderer, RenderStrategyChain strategyChain) { string type; if (renderer.PropertyChain.TryGetProperty(RenderSettingField.TEXT_STYLE, out type)) { switch (type) { case RenderSettingField.TEXT_STYLE_BOLD: renderer.RenderOut.Append($" **{text}** "); break; case RenderSettingField.TEXT_STYLE_ITALIC: renderer.RenderOut.Append($" *{text}* "); break; case RenderSettingField.TEXT_STYLE_DELETELINE: renderer.RenderOut.Append($" ~~{text}~~ "); break; default: renderer.RenderOut.Append(text); break; } return; } else if (renderer.PropertyChain.TryGetProperty(MarkdownRenderSetting.MD_REGION_INLINE, out type)) { switch (type) { case MarkdownRenderSetting.MD_REGION_CODE: renderer.RenderOut.Append($" `{text}` "); break; } return; } strategyChain.TryNextStrategy(text, renderer); }
public Task <string> RenderPageAsync(GenericPage page) { return(Task.Run(async() => { Debug.Assert(page != null, nameof(page) + " != null"); switch (page.ContentType.MimeType) { case "text/markdown": var renderer = new MarkdownRenderer(_markdig); return await renderer.RenderToHtmlAsync(page.Content); case "text/html": return page.Content; case "text/plain": return $"<pre>{page.Content}</pre>"; default: return page.Content; } })); }
public void DeletePost_MoveToTrash() { IFileSystem fakeFileSystem = new FakeFileSystem(); var testDataStore = new BlogDataStore(fakeFileSystem); var markdownRenderer = new MarkdownRenderer(); var testPostModel = new PostModel(testDataStore, markdownRenderer); testPostModel.PageContext = new PageContext(); var post = new Post { Title = "Title", Body = "This is the body of my post", IsDeleted = false, }; testDataStore.SavePost(post); testPostModel.OnPostDeletePost(post.Id.ToString("N")); var result = testDataStore.GetPost(post.Id.ToString("N")); Assert.True(result.IsDeleted); }
public void UnDeletePost_MoveToIndex() { IFileSystem fakeFileSystem = new FakeFileSystem(); BlogDataStore testDataStore = new BlogDataStore(fakeFileSystem); MarkdownRenderer markdownRenderer = new MarkdownRenderer(); PostModel testPostModel = new PostModel(testDataStore, markdownRenderer); testPostModel.PageContext = new PageContext(); Post post = new Post { Title = "Title", Body = "This is the body of my post", IsDeleted = true, }; testDataStore.SavePost(post); testPostModel.OnPostUnDeletePost(post.Id.ToString("N")); Post result = testDataStore.GetPost(post.Id.ToString("N")); Assert.False(result.IsDeleted); }
public void RenderFast_RandomString() { var charsCount = (int)1e5; var random = new Random(0); var markdownBuilder = new StringBuilder(charsCount + 1); for (int i = 0; i < charsCount; ++i) { if (random.Next() % 10 == 0) { markdownBuilder.Append('_'); } else if (random.Next() % 5 == 1) { markdownBuilder.Append(' '); } else { markdownBuilder.Append('a'); } } MarkdownRenderer.RenderToHtml(markdownBuilder.ToString()); }
/// <summary> /// Sends an activation request /// </summary> /// <param name="name">The recipient name</param> /// <param name="email">The recipient email</param> /// <param name="activationcode">The activation code</param> /// <param name="language">The language the message is sent in</param> /// <param name="requestIP">The IP requesting the signup email</param> /// <returns>An awaitable task</returns> public static async Task SendAsync(string name, string email, string activationcode, string language, string requestIP) { if (DatabaseInstance.Current != null) { throw new InvalidOperationException("Cannot send email from within a transaction scope"); } var logEntry = new Database.SentEmailLog() { From = EmailSignupSettings.FromEmail, To = email, When = DateTime.Now, Type = Database.EmailType.ActivationEmail, Delivered = false, RequestIP = requestIP }; var markdown = string.Empty; var subject = string.Empty; // Insert the email log record await DatabaseInstance.GetInstance().RunInTransactionAsync(db => { // Grab the subject and body at the same time markdown = Services.TextHelper.GetTextFromDb(db, TextConstants.ChangeEmailRequestBody, language); subject = Services.TextHelper.GetTextFromDb(db, TextConstants.ChangeEmailRequestSubject, language); if (string.IsNullOrWhiteSpace(markdown)) { throw new DataException("Database is missing a template for the email body"); } if (string.IsNullOrWhiteSpace(subject)) { throw new DataException("Database is missing a template for the email subject"); } markdown = BasicTemplating.ReplaceInTemplate(markdown, new { activationcode, username = name }); subject = BasicTemplating.ReplaceInTemplate(subject, new { activationcode, username = name }); logEntry.Subject = subject; db.InsertItem(logEntry); }); var text = MarkdownRenderer.RenderAsText(markdown); markdown = MarkdownRenderer.RenderAsHtml(markdown); // Deliver the email to the server await SparkPost.SendEmailAsync(SparkPost.Transmission.Create( EmailSignupSettings.FromName, EmailSignupSettings.FromEmail, name, email, subject, markdown, text, true )); // Record that we succeeded delivering the email to the server logEntry.Delivered = true; await DatabaseInstance.GetInstance().RunInTransactionAsync(db => db.UpdateItem(logEntry)); }