Class: Pipeblock::Pipeblock
- Inherits:
-
BasicObject
- Defined in:
- lib/pipeblock.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(caller_object, &computation) ⇒ Pipeblock
Returns a new instance of Pipeblock.
17
18
19
20
21
|
# File 'lib/pipeblock.rb', line 17
def initialize(caller_object, &computation)
@computation = computation
@caller_object = caller_object
@last_value = nil
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(*args, &b) ⇒ Object
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/pipeblock.rb', line 52
def method_missing(*args, &b)
if last_value.nil?
@last_value = __result__.__send__(*args, &b)
else
new_args = args.insert(1, last_value)
@last_value = caller_object.__send__(*new_args, &b)
@reference = last_value
end
last_value
end
|
Instance Attribute Details
#caller_object ⇒ Object
Returns the value of attribute caller_object.
15
16
17
|
# File 'lib/pipeblock.rb', line 15
def caller_object
@caller_object
end
|
#last_value ⇒ Object
Returns the value of attribute last_value.
15
16
17
|
# File 'lib/pipeblock.rb', line 15
def last_value
@last_value
end
|
Instance Method Details
#__result__ ⇒ Object
23
24
25
|
# File 'lib/pipeblock.rb', line 23
def __result__
@reference
end
|
#external(*args, &block) ⇒ Object
63
64
65
66
67
|
# File 'lib/pipeblock.rb', line 63
def external(*args, &block)
proc = args.shift
@last_value = proc.call(last_value)
@reference = last_value
end
|
#inspect ⇒ Object
31
32
33
|
# File 'lib/pipeblock.rb', line 31
def inspect
last_value.present? ? last_value.inspect : @reference.inspect
end
|
#raise(*args) ⇒ Object
40
41
42
|
# File 'lib/pipeblock.rb', line 40
def raise(*args)
__result__.__send__(:raise, *args, &b)
end
|
#respond_to?(message) ⇒ Boolean
35
36
37
38
|
# File 'lib/pipeblock.rb', line 35
def respond_to? (message)
message = message.to_sym
[:__result__, :__inspect__].include?(message) or __result__.respond_to? message
end
|
#run_list ⇒ Object
48
49
50
|
# File 'lib/pipeblock.rb', line 48
def run_list
self.instance_eval(&@computation)
end
|
#start(value) ⇒ Object
27
28
29
|
# File 'lib/pipeblock.rb', line 27
def start(value)
@last_value = value
end
|
#to_s(*args) ⇒ Object
44
45
46
|
# File 'lib/pipeblock.rb', line 44
def to_s(*args)
last_value.to_s(*args)
end
|