Skip to content

Commit 202244e

Browse files
committed
docs: reflect Xml-depends-only-on-Core and engine moved to Core
1 parent 4e26c6a commit 202244e

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

AGENTS.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,16 @@ src/FlexRender.Core/ # Core library (0 external dependencies)
2727
Units/ # Unit, UnitParser, PaddingValues, PaddingParser, MarginValue, MarginValues
2828
Loaders/ # FileResourceLoader, Base64ResourceLoader, EmbeddedResourceLoader
2929
Parsing/Ast/ # Template, CanvasSettings, TemplateElement, TextElement, FlexElement, TableElement, TableColumn, TableRow, etc.
30+
Parsing/Nodes/ # Format-neutral node model (TemplateMapping, TemplateSequence, TemplateScalar, TemplateNode)
31+
Parsing/Engine/ # Shared parsing engine (TemplateEngine, ElementParsers, ChartParsers, ShapeParsers, KnownProperties, NodePropertyHelpers)
3032
TemplateEngine/ # TemplateProcessor, ExpressionLexer, ExpressionEvaluator, InlineExpressionParser, InlineExpressionEvaluator, FilterRegistry
3133
Filters/ # ITemplateFilter, CurrencyFilter, NumberFilter, UpperFilter, LowerFilter, TrimFilter, TruncateFilter, FormatFilter
3234
Values/ # TemplateValue hierarchy (StringValue, NumberValue, etc.)
3335
34-
src/FlexRender.Yaml/ # YAML template parser (-> Core + YamlDotNet)
35-
Parsing/ # TemplateParser
36-
src/FlexRender.Xml/ # XML template parser, alternative to YAML (same Template AST); RenderXml extension
37-
Parsing/ # XmlTemplateParser
36+
src/FlexRender.Yaml/ # YAML facade: YamlDotNet -> neutral nodes -> Core engine (-> Core + YamlDotNet)
37+
Parsing/ # TemplateParser (facade), YamlNodeConverter
38+
src/FlexRender.Xml/ # XML facade: XDocument -> neutral nodes -> Core engine (-> Core only); RenderXml extension
39+
Parsing/ # XmlTemplateParser, XmlNodeConverter
3840
src/FlexRender.Http/ # HTTP resource loader (-> Core)
3941
src/FlexRender.Skia.Render/ # SkiaSharp renderer (-> Core + SkiaSharp)
4042
Abstractions/ # ISkiaRenderer, IFontLoader, IImageLoader, IFontManager
@@ -91,6 +93,8 @@ FlexRender.Yaml FlexRender.Http FlexRender.Skia.Render FlexRender.ImageSharp.
9193
FlexRender.MetaPackage (references all)
9294
```
9395

96+
Note: `FlexRender.Xml` depends only on `FlexRender.Core` -- the shared parsing engine (`TemplateEngine` + element/chart/shape parsers) lives in Core and operates on the format-neutral node model. `FlexRender.Yaml` = Core + YamlDotNet; `FlexRender.Xml` = Core only. Neither format package depends on the other.
97+
9498
## SkiaSharp Native Assets on Linux
9599

96100
SkiaSharp is a managed C# binding over the native Skia engine. On Linux (including CI runners and Docker), the native `libSkiaSharp.so` library is not bundled automatically and must be provided via a separate NuGet package.
@@ -466,8 +470,8 @@ When debugging or testing the WASM playground (`src/FlexRender.Playground/`), us
466470
### Add new element type
467471

468472
1. Create AST model in `Parsing/Ast/` (sealed class extending `TemplateElement`)
469-
2. Add parser function in `TemplateParser.cs` -- register in `_elementParsers` dictionary
470-
3. Register all YAML properties in `KnownProperties.cs` (for YAML validation and typo suggestions)
473+
2. Add parser function in `Parsing/Engine/ElementParsers.cs` (Core) -- register in `TemplateEngine._elementParsers` dictionary
474+
3. Register all properties in `Parsing/Engine/KnownProperties.cs` (Core; for validation and typo suggestions)
471475
4. Add flex-item property support via `switch` pattern matching in layout engine
472476
5. Add rendering in `SkiaRenderer.RenderNode()` or create a provider
473477
6. Write tests for each step

llms.txt

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ src/FlexRender.Core/ # Core library (0 external dependencies)
1414
Units/ # Unit, UnitParser, PaddingValues, PaddingParser
1515
Loaders/ # FileResourceLoader, Base64ResourceLoader, EmbeddedResourceLoader
1616
Parsing/Ast/ # Template, CanvasSettings, TemplateElement, TextElement, FlexElement, etc.
17+
Parsing/Nodes/ # Format-neutral node model (TemplateMapping, TemplateSequence, TemplateScalar)
18+
Parsing/Engine/ # Shared parsing engine (TemplateEngine, ElementParsers, ChartParsers, ShapeParsers, KnownProperties)
1719
TemplateEngine/ # TemplateProcessor, ExpressionLexer, ExpressionEvaluator
1820
Values/ # TemplateValue hierarchy (StringValue, NumberValue, etc.)
1921

20-
src/FlexRender.Yaml/ # YAML template parser (-> Core + YamlDotNet)
21-
Parsing/ # TemplateParser
22-
src/FlexRender.Xml/ # XML template parser, alternative to YAML (same Template AST)
23-
Parsing/ # XmlTemplateParser
22+
src/FlexRender.Yaml/ # YAML facade: YamlDotNet -> neutral nodes -> Core engine (-> Core + YamlDotNet)
23+
Parsing/ # TemplateParser (facade), YamlNodeConverter
24+
src/FlexRender.Xml/ # XML facade: XDocument -> neutral nodes -> Core engine (-> Core only)
25+
Parsing/ # XmlTemplateParser, XmlNodeConverter
2426
src/FlexRender.Http/ # HTTP resource loader (-> Core)
2527
src/FlexRender.Skia.Render/ # SkiaSharp renderer (-> Core + SkiaSharp)
2628
Abstractions/ # ISkiaRenderer, IFontLoader, IImageLoader, IFontManager
@@ -617,7 +619,7 @@ Minimal, focused templates -- one feature per file:
617619

618620
1. Create sealed AST class in `Parsing/Ast/` extending `TemplateElement`
619621
2. Add to `ElementType` enum
620-
3. Register parser in `TemplateParser._elementParsers` dictionary
622+
3. Register parser in `TemplateEngine._elementParsers` dictionary (Core; parser function in `Parsing/Engine/ElementParsers.cs`)
621623
4. Add layout calculation via switch pattern matching in `LayoutEngine`
622624
5. Add rendering in `SkiaRenderer.RenderNode()` or create a provider
623625
6. Write tests for each step
@@ -628,6 +630,7 @@ Minimal, focused templates -- one feature per file:
628630
|---------|-----------|---------------|
629631
| FlexRender.Core | -- | (none) |
630632
| FlexRender.Yaml | Core | YamlDotNet 16.3.0 |
633+
| FlexRender.Xml | Core | (none) |
631634
| FlexRender.Http | Core | (none) |
632635
| FlexRender.Skia.Render | Core | SkiaSharp 3.119.2 |
633636
| FlexRender.Skia | Skia.Render + providers | SkiaSharp 3.119.2 |

0 commit comments

Comments
 (0)