From 0e9b11244db70440d5adeeeaf07faea14eb729ed Mon Sep 17 00:00:00 2001 From: Mark Rickert Date: Mon, 15 Sep 2014 08:46:52 -0500 Subject: [PATCH] Update to use more efficient array_all_members_of? method. --- lib/ProMotion/table/table.rb | 2 +- lib/ProMotion/table/table_utils.rb | 5 ++--- spec/unit/tables/table_utils_spec.rb | 10 +++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/ProMotion/table/table.rb b/lib/ProMotion/table/table.rb index c49f356..01afe81 100644 --- a/lib/ProMotion/table/table.rb +++ b/lib/ProMotion/table/table.rb @@ -132,7 +132,7 @@ module ProMotion def update_table_data(args = {}) # Try and detect if the args param is a NSIndexPath or an array of them - args = { index_paths: args } if args.is_a?(NSIndexPath) || (args.is_a?(Array) && array_all_members_of(args, NSIndexPath)) + args = { index_paths: args } if args.is_a?(NSIndexPath) || (args.is_a?(Array) && array_all_members_of?(args, NSIndexPath)) self.update_table_view_data(self.table_data, args) self.promotion_table_data.search(search_string) if searching? diff --git a/lib/ProMotion/table/table_utils.rb b/lib/ProMotion/table/table_utils.rb index 522d7b7..7572879 100644 --- a/lib/ProMotion/table/table_utils.rb +++ b/lib/ProMotion/table/table_utils.rb @@ -10,9 +10,8 @@ module ProMotion end # Determines if all members of an array are a certain class - def array_all_members_of(arr, kalss) - unique_classes = arr.map(&:class).uniq - (unique_classes.count == 1 && unique_classes.first == kalss) + def array_all_members_of?(arr, kalss) + arr.select{ |e| e.is_a?(klass) }.length == arr.length end end end diff --git a/spec/unit/tables/table_utils_spec.rb b/spec/unit/tables/table_utils_spec.rb index 3c558e8..9eb3219 100644 --- a/spec/unit/tables/table_utils_spec.rb +++ b/spec/unit/tables/table_utils_spec.rb @@ -23,12 +23,12 @@ describe "PM::Table utils" do end it "should properly determine if all members of an array are the same class" do - @subject.array_all_members_of([1, 2, 3, 4], Fixnum).should == true - @subject.array_all_members_of(["string", 'string2'], String).should == true - @subject.array_all_members_of([:sym1, :sym2, :sym3], Symbol).should == true + @subject.array_all_members_of?([1, 2, 3, 4], Fixnum).should == true + @subject.array_all_members_of?(["string", 'string2'], String).should == true + @subject.array_all_members_of?([:sym1, :sym2, :sym3], Symbol).should == true - @subject.array_all_members_of([1, 2, 3, 4, 'String'], Fixnum).should == false - @subject.array_all_members_of([4.4, 2], Fixnum).should == false + @subject.array_all_members_of?([1, 2, 3, 4, 'String'], Fixnum).should == false + @subject.array_all_members_of?([4.4, 2], Fixnum).should == false end end