diff --git a/src/Elastic.Markdown/Myst/Directives/AdmonitionBlock.cs b/src/Elastic.Markdown/Myst/Directives/AdmonitionBlock.cs index 39b3f74b..092c37e0 100644 --- a/src/Elastic.Markdown/Myst/Directives/AdmonitionBlock.cs +++ b/src/Elastic.Markdown/Myst/Directives/AdmonitionBlock.cs @@ -34,7 +34,7 @@ public string Title public override void FinalizeAndValidate(ParserContext context) { CrossReferenceName = Properties.GetValueOrDefault("name"); - DropdownOpen = PropBool("open"); + DropdownOpen = TryPropBool("open"); if (DropdownOpen.HasValue) Classes = "dropdown"; } diff --git a/src/Elastic.Markdown/Myst/Directives/DirectiveBlock.cs b/src/Elastic.Markdown/Myst/Directives/DirectiveBlock.cs index cc4d6245..8740ece8 100644 --- a/src/Elastic.Markdown/Myst/Directives/DirectiveBlock.cs +++ b/src/Elastic.Markdown/Myst/Directives/DirectiveBlock.cs @@ -93,6 +93,16 @@ protected bool PropBool(params string[] keys) return bool.TryParse(value, out var result) && result; } + protected bool? TryPropBool(params string[] keys) + { + var value = Prop(keys); + if (string.IsNullOrEmpty(value)) + return keys.Any(k => Properties.ContainsKey(k)) ? true : null; + + return bool.TryParse(value, out var result) ? result : null; + } + + protected string? Prop(params string[] keys) { foreach (var key in keys)