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")