From 8c7900f17b1019314712616f5362427ef9ac686b Mon Sep 17 00:00:00 2001 From: Holger Just Date: Sat, 5 Aug 2017 15:47:17 +0200 Subject: [PATCH] Refactor: extract checks in FilterChain --- lib/rackstash/filter_chain.rb | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/rackstash/filter_chain.rb b/lib/rackstash/filter_chain.rb index f3e6a26..3eca5c0 100644 --- a/lib/rackstash/filter_chain.rb +++ b/lib/rackstash/filter_chain.rb @@ -63,7 +63,7 @@ module Rackstash # @param filter [#call, nil] the filter to set at `index` # @return [#call] the given `filter` def []=(index, filter) - raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + filter = build_filter(filter) synchronize do id = index_at(index) @@ -86,8 +86,7 @@ module Rackstash # @raise [TypeError] if the given filter is not callable # @return [self] def append(filter = nil, &block) - filter ||= block - raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + filter = build_filter(filter || block) synchronize do @filters.push filter @@ -180,8 +179,7 @@ module Rackstash # @raise [ArgumentError] if the existing filter could not be found # @return [self] def insert_after(index, filter = nil, &block) - filter ||= block - raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + filter = build_filter(filter || block) synchronize do id = index_at(index) @@ -210,8 +208,7 @@ module Rackstash # @raise [ArgumentError] if the existing filter could not be found # @return [self] def insert_before(index, filter = nil, &block) - filter ||= block - raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + filter = build_filter(filter || block) synchronize do id = index_at(index) @@ -250,8 +247,7 @@ module Rackstash # @raise [TypeError] if the given filter is not callable # @return [self] def unshift(filter = nil, &block) - filter ||= block - raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + filter = build_filter(filter || block) synchronize do @filters.unshift filter @@ -295,5 +291,11 @@ module Rackstash @filters.index { |filter| filter == index } end end + + def build_filter(filter) + raise TypeError, 'must provide a filter' unless filter.respond_to?(:call) + + filter + end end end