From baf9d49fdad62a69caf309c4a1ff4ea3ad083e3a Mon Sep 17 00:00:00 2001 From: himura467 Date: Mon, 2 Nov 2026 04:19:02 +0900 Subject: [PATCH] feat: add Nack::Headers#delete_if --- lib/nack/headers.rb | 5 +++++ test/spec_headers.rb | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/lib/nack/headers.rb b/lib/nack/headers.rb index c311936..bb01f9e 100644 --- a/lib/nack/headers.rb +++ b/lib/nack/headers.rb @@ -42,6 +42,11 @@ def delete(name) self end + def delete_if(&block) + @fields.reject!(&block) + self + end + def to_a @fields.dup end diff --git a/test/spec_headers.rb b/test/spec_headers.rb index 647974d..aa14f4d 100644 --- a/test/spec_headers.rb +++ b/test/spec_headers.rb @@ -46,6 +46,12 @@ headers.to_a.must_equal [["b", "2"]] end + it "deletes the fields the block selects" do + headers = Nack::Headers.new([["a", "1"], ["b", "2"], ["a", "3"]]) + headers.delete_if { |name, value| name == "a" && value == "3" }.must_be_same_as headers + headers.to_a.must_equal [["a", "1"], ["b", "2"]] + end + it "does not alias the internal storage" do fields = [["a", "1"], ["b", "2"], ["a", "3"]] headers = Nack::Headers.new(fields).add("c", "4")