How shouvik-halder/streamingmarkdown works
StreamingMarkdown is a .NET library for parsing incrementally received Markdown, reporting document changes, and displaying Markdown in .NET MAUI. Its main workflow is appended text → stream processing → parsed document → diff/update; the MAUI layer provides a separate presentation capability. The README is empty, and several core and MAUI implementations were not sampled, so some internal wiring is shown only where the tree, names, or tests support it.
Main entry points: MarkdownStreamProcessor.cs Stream processor · MarkdigMarkdownParser.cs Markdig parser · MarkdownInlineRenderer.cs Inline renderer · MarkdownDocument.cs Markdown document
Components 22
Streaming
- Stream processor
StreamingMarkdown.Core/Streaming/MarkdownStreamProcessor.cs - Markdown buffer
StreamingMarkdown.Core/Streaming/MarkdownBuffer.cs - Stream context
StreamingMarkdown.Core/Streaming/MarkdownStreamContext.cs - Stream state
StreamingMarkdown.Core/Streaming/MarkdownStreamState.cs - Markdown update
StreamingMarkdown.Core/Results/MarkdownUpdate.cs
Parsing and model
- Markdig parser
StreamingMarkdown.Core/Parsing/MarkdigMarkdownParser.cs - Markdown document
StreamingMarkdown.Core/Models/MarkdownDocument.cs - Block models
StreamingMarkdown.Core/Models/Blocks/MarkdownBlock.cs - Inline models
StreamingMarkdown.Core/Models/Inlines/MarkdownInline.cs
Change detection
- Document reconciler
StreamingMarkdown.Core/Diffing/DocumentReconciler.cs - Diff engine
StreamingMarkdown.Core/Diffing/DocumentDiffEngine.cs - Markdown diff
StreamingMarkdown.Core/Diffing/MarkdownDiff.cs - Block changes
StreamingMarkdown.Core/Diffing/MarkdownChange.cs
MAUI presentation
- Markdown view
StreamingMarkdown.Maui/Controls/MarkdownView.cs - Document renderer
StreamingMarkdown.Maui/Rendering/MarkdownDocumentRenderer.cs - Block renderer
StreamingMarkdown.Maui/Rendering/MarkdownBlockRenderer.cs - Block views
StreamingMarkdown.Maui/Rendering/Views/IMarkdownBlockView.cs - Inline renderer
StreamingMarkdown.Maui/Rendering/MarkdownInlineRenderer.cs - Inline rendering
StreamingMarkdown.Maui/Rendering/InlineRenderer.cs - Markdown style
StreamingMarkdown.Maui/Styling/MarkdownStyle.cs
Other components
- Text producer
- Markdig library
Connections 20
- Text producer → Stream processor: appends text
- Stream processor → Markdown buffer: buffers text
- Stream processor → Markdig parser: parses buffer
- Markdig parser → Markdig library: parses Markdown
- Markdig parser → Markdown document: creates
- Markdown document → Block models: contains blocks
- Block models → Inline models: contains inlines
- Stream processor → Stream context: updates context
- Stream processor → Stream state: tracks state
- Stream processor → Document reconciler: reconciles
- Stream processor → Diff engine: compares documents
- Diff engine → Markdown diff: produces
- Markdown diff → Block changes: contains changes
- Stream processor → Markdown update: returns update
- Markdown view → Document renderer: renders document
- Document renderer → Block renderer: renders blocks
- Block renderer → Block views: creates views
- Block views → Inline renderer: renders inlines
- Inline renderer → Inline rendering: creates formatted text
- Inline renderer → Markdown style: uses style