Backport compatible fixes and features to release/2.x - #990
Merged
Conversation
* Initial plan * Add .NET 10.0 TFM support to all projects Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Fix version --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Sebastien Ros <sebastienros@gmail.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Backport the security-relevant Scriban update needed for current NuGet auditing. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Initial plan * Add DefaultFileExtension property to TemplateOptions with custom extension support Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Initial plan * Convert enums to StringValue by default Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Simplify enum handling: convert to string in FluidValue.Create instead of accessors Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Initial plan * Fix double-encoding issue with escape filter The escape and escape_once filters now return StringValue with Encode=false to prevent double-encoding when rendered with HtmlEncoder. This fixes the issue where captured raw content with escape filter was being double-encoded. Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
…#869) * Initial plan * Add TemplateParsed callback to FluidViewEngineOptions with tests Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Add documentation for TemplateParsed callback in README Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Refactor CompositeFluidTemplate to implement IStatementList and simplify visitor usage Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Fix CompositeFluidTemplate to render using Statements property like FluidTemplate Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
… statements (#873) * Initial plan * Add TemplateParsed callback support to TemplateOptions for include and render statements Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Consolidate TemplateParsed to use TemplateOptions instead of FluidViewEngineOptions Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Fix TemplateParsed to only invoke on first parse, not cache retrieval; update docs Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Revise visitors section in README Updated section on using visitors with templates for clarity. --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Sébastien Ros <sebastienros@gmail.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Initial plan * Add support for null keyword to behave like nil Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> * Add comment explaining nil and null keyword support Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Add StrictVariables and StrictFilters options * Fix tests Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
…e applying them (#924) * Initial plan * fix render tag named argument evaluation order Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
) * Initial plan * Preserve StringValue encode flag in string filters Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Add tablerow tag support
Implements the Liquid tablerow tag that generates HTML table rows for every item in an array.
Features:
- Basic iteration: {% tablerow item in collection %}{% endtablerow %}
- cols: parameter for column count
- limit: parameter to limit iterations
- offset: parameter to start at an offset
- Full tablerowloop object with all properties (index, index0, col, col0, row, first, last, col_first, col_last, length, rindex, rindex0)
The implementation follows the Shopify Liquid Ruby reference implementation.
* Add unit tests for tablerow tag
---------
Co-authored-by: GitHub Copilot CLI <copilot@github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
- Add IfChangedStatement AST node that renders content only when it changes - Register ifchanged/endifchanged block tag in FluidParser - Add visitor methods to AstVisitor and AstRewriter - Enable golden liquid tests for ifchanged tag (5 tests) - Add 9 unit tests in IfChangedStatementTests.cs Co-authored-by: GitHub Copilot CLI <copilot@github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Co-authored-by: GitHub Copilot CLI <copilot@github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Update Golden Liquid tests to 389a2987d14b218f2c04b25ac5670ed1fdcad0e8 * Fix blank and empty Liquid semantics Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: sebastienros <1165805+sebastienros@users.noreply.github.com> Co-authored-by: Sebastien Ros <sebastienros@gmail.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
* Add money filters
Implements the Shopify money filters, registered with the opt-in
`FilterCollection.WithMoneyFilters()`:
- money
- money_with_currency
- money_without_currency
- money_without_trailing_zeros
Formatting is derived from `TemplateOptions.CultureInfo` by default, and
configured by the new `TemplateOptions.MoneyOptions`, which is mirrored on
`TemplateContext` so a currency can be selected per rendering.
- `Currency` and a per-call filter argument select an ISO 4217 currency,
resolved against an extensible `Currencies` collection.
- `AmountsInCents` divides the input by 100, matching Shopify where prices
are stored as integers.
- `MoneyFormat` and `MoneyWithCurrencyFormat` override the culture based
formatting using the Shopify placeholders, plus `{{currency}}` and
`{{currency_symbol}}`.
Fixes #238
* Merge CLAUDE.md into AGENTS.md
The two files were both agent guidance for this repository, with the
commands and testing sections overlapping. AGENTS.md is now the single
file, and CLAUDE.md is removed.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Backport the analyzer-only package layout applicable to the 2.x member-access generator. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: ee9c8775-0354-41dd-8226-89a69c60241c
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Backports the non-breaking fixes and features selected from
mainafter v2.31.0. Each source PR is preserved as a distinct commit and adapted to the 2.x rendering and member-access APIs where necessary.nullkeyword as alias fornil#874, Add StrictVariables and StrictFilters options #880, Fixrendernamed-argument shadowing by evaluating assignments before applying them #924, PreserveStringValue.Encodeacross string filter transformations #925, Capitalize filter should make the first letter capital #943, Fix blank/empty semantics #949release/**branch conventionValidation
analyzers/dotnet/cs/Fluid.SourceGenerator.dll