diff --git a/README.md b/README.md index aa05f778..d271b74c 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,21 @@ var result = template(data); */ ``` +Partials, including inline partials declared with `{{#*inline}}`, accept hash arguments at the call site. The hash values are merged into the partial's context alongside any properties inherited from the calling context: + +```c# +string source = +@"{{#*inline ""user""}}{{name}}{{/inline}}{{> user name=""Karen""}}"; + +var template = Handlebars.Compile(source); + +var result = template(null); + +/* Would render: +Karen +*/ +``` + ### Registering Helpers ```c# diff --git a/source/Handlebars.Test/InlinePartialTests.cs b/source/Handlebars.Test/InlinePartialTests.cs index 569e862f..51c415a6 100644 --- a/source/Handlebars.Test/InlinePartialTests.cs +++ b/source/Handlebars.Test/InlinePartialTests.cs @@ -243,6 +243,29 @@ public void BasicInlinePartialWithIncompleteChildContextDoesNotFallback() Assert.Equal("Hello, Marc !", result); } + [Fact] + public void InlinePartialDefinitionWithExtraArgumentDoesNotThrow() + { + // Regression test for https://github.com/Handlebars-Net/Handlebars.Net/issues/560 + string source = "{{#*inline \"my_partial\" arg}}{{arg}}{{/inline}}{{>my_partial}}"; + + var template = Handlebars.Compile(source); + var result = template(null); + + Assert.Equal(string.Empty, result); + } + + [Fact] + public void InlinePartialDefinitionWithHashArgumentDoesNotThrow() + { + string source = "{{#*inline \"my_partial\" arg=5}}{{arg}}{{/inline}}{{>my_partial}}"; + + var template = Handlebars.Compile(source); + var result = template(null); + + Assert.Equal(string.Empty, result); + } + [Fact] public void BasicBlockInlinePartial() { diff --git a/source/Handlebars/Decorators/InlineBlockDecoratorDescriptor.cs b/source/Handlebars/Decorators/InlineBlockDecoratorDescriptor.cs index 00a81725..964a8b2a 100644 --- a/source/Handlebars/Decorators/InlineBlockDecoratorDescriptor.cs +++ b/source/Handlebars/Decorators/InlineBlockDecoratorDescriptor.cs @@ -7,9 +7,9 @@ internal sealed class InlineBlockDecoratorDescriptor : IDecoratorDescriptor