diff options
author | Eric Wong <normalperson@yhbt.net> | 2013-07-09 22:48:43 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2013-07-09 22:49:05 +0000 |
commit | 118db9865545c6879128e58390d15c6ba80be405 (patch) | |
tree | 273849b278b7ddca3ba9a1e8390c4a689b573f5f | |
parent | 9d5770ea12d78c88e5accfbc12b81f8c3af4ed30 (diff) | |
download | mogilefs-client-118db9865545c6879128e58390d15c6ba80be405.tar.gz |
This allows easy iteration while respecting :after and :limit. This gives each_key an interface consistent with each_file_info.
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 16 |
1 files 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 |