diff --git a/src/spectator/dsl/examples.cr b/src/spectator/dsl/examples.cr index e41bea7..f48b8a4 100644 --- a/src/spectator/dsl/examples.cr +++ b/src/spectator/dsl/examples.cr @@ -27,22 +27,21 @@ module Spectator::DSL \{% raise "Block argument count '{{name.id}}' hook must be 0..1" if block.args.size > 1 %} def self.\%tags - \{% if tags.empty? && metadata.empty? %} - _spectator_tags - \{% else %} - _spectator_tags.concat({\{{tags.map(&.id.stringify).splat}}}).tap do |tags| - \{% for k, v in metadata %} - cond = begin - \{{v}} - end - if cond - tags.add(\{{k.id.stringify}}) - else - tags.remove(\{{k.id.stringify}}) - end - \{% end %} + tags = _spectator_tags + \{% if !tags.empty? %} + tags.concat({ \{{tags.map(&.id.stringify).splat}} }) + \{% end %} + \{% for k, v in metadata %} + cond = begin + \{{v}} + end + if cond + tags.add(\{{k.id.stringify}}) + else + tags.delete(\{{k.id.stringify}}) end \{% end %} + tags end def \%test(\{{block.args.splat}}) : Nil diff --git a/src/spectator/dsl/groups.cr b/src/spectator/dsl/groups.cr index d75c1b3..78cc7bf 100644 --- a/src/spectator/dsl/groups.cr +++ b/src/spectator/dsl/groups.cr @@ -16,24 +16,25 @@ module Spectator::DSL class Group\%group < \{{@type.id}} _spectator_group_subject(\{{what}}) - def self._spectator_tags - \{% if tags.empty? && metadata.empty? %} - super - \{% else %} - super.concat({\{{tags.map(&.id.stringify).splat}}}).tap do |tags| - \{% for k, v in metadata %} - cond = begin - \{{v}} - end - if cond - tags.add(\{{k.id.stringify}}) - else - tags.remove(\{{k.id.stringify}}) - end - \{% end %} - end - \{% end %} - end + \{% if !tags.empty? || !metadata.empty? %} + def self._spectator_tags + tags = super + \{% if !tags.empty? %} + tags.concat({ \{{tags.map(&.id.stringify).splat}} }) + \{% end %} + \{% for k, v in metadata %} + cond = begin + \{{v}} + end + if cond + tags.add(\{{k.id.stringify}}) + else + tags.delete(\{{k.id.stringify}}) + end + \{% end %} + tags + end + \{% end %} ::Spectator::DSL::Builder.start_group( _spectator_group_name(\{{what}}),