Class: Origen::OrgFile::Interceptor
- Inherits:
-
BasicObject
- Defined in:
- lib/origen/org_file/interceptor.rb
Instance Method Summary
collapse
Constructor Details
#initialize(object, options = {}) ⇒ Interceptor
Returns a new instance of Interceptor.
12
13
14
15
|
# File 'lib/origen/org_file/interceptor.rb', line 12
def initialize(object, options = {})
@object = object
@@locked = false unless defined? @@locked
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/origen/org_file/interceptor.rb', line 56
def method_missing(method, *args, &block)
if !@@locked && @org_file && @org_file_methods_to_intercept.include?(method)
@org_file.record(@object.global_path_to, method, *args)
@@locked = true
@object.send(method, *args, &block)
@@locked = false
else
@object.send(method, *args, &block)
end
end
|
Instance Method Details
#==(obj) ⇒ Object
Also known as:
equal?
21
22
23
24
25
26
27
|
# File 'lib/origen/org_file/interceptor.rb', line 21
def ==(obj)
if obj.respond_to?(:__org_file_interceptor__)
@object == obj.__object__
else
@object == obj
end
end
|
#__object__ ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
Don't ever use this! An un-wrapped reference to an object must never make it into application code or else any operations called on the un-wrapped reference will not be captured.
85
86
87
|
# File 'lib/origen/org_file/interceptor.rb', line 85
def __object__
@object
end
|
#__org_file_interceptor__ ⇒ Object
76
77
78
|
# File 'lib/origen/org_file/interceptor.rb', line 76
def __org_file_interceptor__
true
end
|
#inspect(*args) ⇒ Object
17
18
19
|
# File 'lib/origen/org_file/interceptor.rb', line 17
def inspect(*args)
@object.inspect(*args)
end
|
#record_to_org_file(id = nil, options = {}) ⇒ Object
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/origen/org_file/interceptor.rb', line 30
def record_to_org_file(id = nil, options = {})
id, options = nil, id if id.is_a?(::Hash)
if options[:only]
@org_file_methods_to_intercept = Array(options[:only]).to_set
else
@org_file_methods_to_intercept = default_org_file_captures
if options[:also]
@org_file_methods_to_intercept += Array(options[:also]).to_set
end
end
@org_file ||= @old_org_file || OrgFile.org_file(id)
end
|
#respond_to?(method, include_private = false) ⇒ Boolean
71
72
73
74
|
# File 'lib/origen/org_file/interceptor.rb', line 71
def respond_to?(method, include_private = false)
method == :__org_file_interceptor__ ||
@object.respond_to?(method, include_private)
end
|
#stop_recording_to_org_file(&block) ⇒ Object
Temporarily stop recording operations within the given block, or stop recording completely if no block given
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/origen/org_file/interceptor.rb', line 45
def stop_recording_to_org_file(&block)
@old_org_file = @org_file
if OrgFile._block_given_?(&block)
@org_file = nil
yield
@org_file = @old_org_file
else
@org_file = nil
end
end
|