Class: PulseMeter::Visualize::DSL::Base
- Inherits:
-
Object
- Object
- PulseMeter::Visualize::DSL::Base
show all
- Includes:
- Mixins::Utils
- Defined in:
- lib/pulse-meter/visualize/dsl/base.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#assert_array!, #assert_positive_integer!, #assert_ranged_float!, #camelize, #camelize_keys, #constantize, #each_subset, #parse_time, #subsets_of, #symbolize_keys, #titleize, #uniqid
Constructor Details
#initialize ⇒ Base
Returns a new instance of Base.
9
10
11
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 9
def initialize
@opts = {}
end
|
Class Method Details
.array_extender(name, &block) ⇒ Object
63
64
65
66
67
68
69
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 63
def array_extender(name, &block)
define_method(name) do |val|
@opts[name] ||=[]
block.call(val) if block
@opts[name] << val
end
end
|
.bool_setter(name) ⇒ Object
34
35
36
37
38
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 34
def bool_setter(name)
define_method(name) do |val|
@opts[name] = !!val
end
end
|
.data_class ⇒ Object
84
85
86
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 84
def data_class
@data_class || PulseMeter::Visualize::Base
end
|
.data_class=(klass) ⇒ Object
88
89
90
91
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 88
def data_class=(klass)
raise BadDataClass unless klass.is_a?(Class) && klass <= PulseMeter::Visualize::Base
@data_class = klass
end
|
.deprecated_setter(name) ⇒ Object
21
22
23
24
25
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 21
def deprecated_setter(name)
define_method(name) do |*args|
STDERR.puts "DEPRECATION: #{name} DSL helper does not take any effect anymore."
end
end
|
.dsl_array_extender(collection_name, name, klass) ⇒ Object
77
78
79
80
81
82
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 77
def dsl_array_extender(collection_name, name, klass)
define_method(name) do |*args, &block|
@opts[collection_name] ||= DArray.new
@opts[collection_name] << create_dsl_obj(args, klass, block)
end
end
|
.dsl_setter(name, klass) ⇒ Object
71
72
73
74
75
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 71
def dsl_setter(name, klass)
define_method(name) do |*args, &block|
@opts[name] = create_dsl_obj(args, klass, block)
end
end
|
.hash_extender(name, &block) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 56
def hash_extender(name, &block)
define_method(name) do |val|
@opts[name] ||= {}
@opts[name].merge!(val)
end
end
|
.int_setter(name, &block) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 48
def int_setter(name, &block)
define_method(name) do |val|
val = val.to_i
block.call(val) if block
@opts[name] = val
end
end
|
.setter(name, &block) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 27
def setter(name, &block)
define_method(name) do |val|
block.call(val) if block
@opts[name] = val
end
end
|
.string_setter(name, &block) ⇒ Object
40
41
42
43
44
45
46
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 40
def string_setter(name, &block)
define_method(name) do |val|
val = val.to_s
block.call(val) if block
@opts[name] = val
end
end
|
Instance Method Details
#create_dsl_obj(args, klass, block) ⇒ Object
95
96
97
98
99
100
101
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 95
def create_dsl_obj(args, klass, block)
params, options = (args)
dsl_obj = klass.new(*params)
dsl_obj.process_args(options)
block.call(dsl_obj) if block
dsl_obj
end
|
103
104
105
106
107
108
109
110
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 103
def (args)
opts = if args.last.is_a?(Hash)
args.pop
else
{}
end
[args, opts]
end
|
#process_args(args) ⇒ Object
13
14
15
16
17
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 13
def process_args(args)
args.each_pair do |k, v|
send(k, v)
end
end
|
#to_data ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/pulse-meter/visualize/dsl/base.rb', line 112
def to_data
klass = self.class.data_class
args = @opts.each_with_object({}) do |(k, v), acc|
acc[k] = case v
when PulseMeter::Visualize::DSL::Base
v.to_data
when DArray
v.map(&:to_data)
else
v
end
end
klass.new(args)
end
|