Class: TFDSL::Block
- Inherits:
-
Object
show all
- Defined in:
- lib/tfdsl/block.rb
Overview
Constant Summary
collapse
- @@formatter =
Formatter.new
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(&block) ⇒ Block
Returns a new instance of Block.
7
8
9
10
|
# File 'lib/tfdsl/block.rb', line 7
def initialize(&block)
@__blocks__ = []
instance_eval(&block) if block_given?
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
12
13
14
15
|
# File 'lib/tfdsl/block.rb', line 12
def method_missing(method_name, *args, &block)
super if [:respond_to_missing?].include? method_name
return method_missing_handler(method_name, *args, &block)
end
|
Instance Attribute Details
#__labels__ ⇒ Object
Returns the value of attribute __labels__.
5
6
7
|
# File 'lib/tfdsl/block.rb', line 5
def __labels__
@__labels__
end
|
#__type__ ⇒ Object
Returns the value of attribute __type__.
5
6
7
|
# File 'lib/tfdsl/block.rb', line 5
def __type__
@__type__
end
|
Instance Method Details
#method_missing_handler(method_name, *args, &block) ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/tfdsl/block.rb', line 17
def method_missing_handler(method_name, *args, &block)
method = method_name.to_s.gsub(/=$/, '')
if block_given?
r = Block.new
r.__type__ = method
r.__labels__ = args
@__blocks__ << r
return r.instance_eval(&block)
end
return instance_variable_set "@#{method}", *args unless args.empty?
return instance_variable_get "@#{method}" if args.empty?
end
|
#respond_to_missing?(_method_name, _include_private = true) ⇒ Boolean
36
37
38
|
# File 'lib/tfdsl/block.rb', line 36
def respond_to_missing?(_method_name, _include_private = true)
true
end
|
#timeout(*args, &block) ⇒ Object
32
33
34
|
# File 'lib/tfdsl/block.rb', line 32
def timeout(*args, &block)
method_missing_handler :timeout, *args, &block
end
|
#to_json_repr(depth = 0) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/tfdsl/block.rb', line 52
def to_json_repr(depth = 0)
block = { 'tmp' => {} }
ref = block['tmp']
labels = __labels__.dup
labels = [__type__] + labels if !__type__.empty? && depth.zero?
labels.each do |l|
ref[l] = {} if ref[l].nil?
ref = ref[l]
end
instance_variables.each do |var|
var_name = var.to_s.gsub(/^@/, '')
next if var_name =~ /^__/
ref[var_name] = send var_name
end
__blocks__.each do |b|
json = b.to_json_repr depth + 1
if b.__labels__.empty?
if ref[b.__type__].nil?
ref[b.__type__] = json
else
ref[b.__type__] = [ref[b.__type__], json].flatten
end
else
ref[b.__type__] = [] if ref[b.__type__].nil?
ref[b.__type__] << json
end
end
block['tmp']
end
|
#to_s ⇒ Object
48
49
50
|
# File 'lib/tfdsl/block.rb', line 48
def to_s
to_tf
end
|
#to_str ⇒ Object
44
45
46
|
# File 'lib/tfdsl/block.rb', line 44
def to_str
to_tf
end
|
#to_tf ⇒ Object
40
41
42
|
# File 'lib/tfdsl/block.rb', line 40
def to_tf
@@formatter.format self
end
|