Class: BDDSM::Describe

Inherits:
Object
  • Object
show all
Defined in:
lib/bddsm/describe.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title, &block) ⇒ Describe

Returns a new instance of Describe.



5
6
7
8
9
# File 'lib/bddsm/describe.rb', line 5

def initialize(title, &block)
  @title = title
  @block = block
  @memoized_lets = {}
end

Instance Attribute Details

#memoized_letsObject (readonly)

Returns the value of attribute memoized_lets.



3
4
5
# File 'lib/bddsm/describe.rb', line 3

def memoized_lets
  @memoized_lets
end

Instance Method Details

#itObject



15
16
17
# File 'lib/bddsm/describe.rb', line 15

def it(&)
  Execution.new(describe: self, &).run
end

#let(name) ⇒ Object



19
20
21
22
23
# File 'lib/bddsm/describe.rb', line 19

def let(name, &)
  singleton_class.instance_eval { attr_accessor name.to_sym } unless respond_to?(name.to_sym)
  @memoized_lets[name] = instance_exec(&)
  instance_variable_set("@#{name}", @memoized_lets[name])
end

#runObject



11
12
13
# File 'lib/bddsm/describe.rb', line 11

def run
  instance_eval(&@block)
end