From 118db9865545c6879128e58390d15c6ba80be405 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 9 Jul 2013 22:48:43 +0000 Subject: [PATCH] client: each_key: accept optional :after and :limit args This allows easy iteration while respecting :after and :limit. This gives each_key an interface consistent with each_file_info. --- lib/mogilefs/mogilefs.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index b0bdc0d..cd6f7c6 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -84,11 +84,19 @@ class MogileFS::MogileFS < MogileFS::Client end # Enumerates keys, limited by optional +prefix+ - def each_key(prefix = "", &block) - after = nil + # +args+ may also be specified for an optional +:limit+ + # and +:after+ (default: nil) + def each_key(prefix = "", args = nil, &block) + after = limit = nil + if args + after = args[:after] + limit = args[:limit] + end begin - keys, after = list_keys(prefix, after, 1000, &block) - end while keys && keys[0] + keys, after = list_keys(prefix, after, limit || 1000, &block) + return unless keys && keys[0] + limit -= keys.size if limit + end while limit == nil || limit > 0 nil end -- 2.11.4.GIT