summaryrefslogtreecommitdiff
path: root/lib/pry/config/lazy_value.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pry/config/lazy_value.rb')
-rw-r--r--lib/pry/config/lazy_value.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/pry/config/lazy_value.rb b/lib/pry/config/lazy_value.rb
new file mode 100644
index 00000000..8c2330ac
--- /dev/null
+++ b/lib/pry/config/lazy_value.rb
@@ -0,0 +1,27 @@
+class Pry
+ class Config
+ # LazyValue is a Proc (block) wrapper. It is meant to be used as a
+ # configuration value. Subsequent `#call` calls always evaluate the given
+ # block.
+ #
+ # @example
+ # num = 19
+ # value = Pry::Config::LazyValue.new { num += 1 }
+ # value.foo # => 20
+ # value.foo # => 21
+ # value.foo # => 22
+ #
+ # @api private
+ # @since ?.?.?
+ # @see Pry::Config::MemoizedValue
+ class LazyValue
+ def initialize(&block)
+ @block = block
+ end
+
+ def call
+ @block.call
+ end
+ end
+ end
+end