class PulseMeter::DygraphsVisualize::DSL::Base

Public Class Methods

array_extender(name, &block) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 68
def array_extender(name, &block)
  define_method(name) do |val|
    @opts[name] ||=[]
    block.call(val) if block
    @opts[name] << val
  end
end
array_setter(name) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 39
def array_setter(name)
  define_method(name) do |val|
    @opts[name] = Array[*val]
  end
end
bool_setter(name) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 33
def bool_setter(name)
  define_method(name) do |val|
    @opts[name] = !!val
  end
end
data_class() click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 89
def data_class
  @data_class || PulseMeter::DygraphsVisualize::Base
end
data_class=(klass) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 93
def data_class=(klass)
  raise BadDataClass unless klass.is_a?(Class) && klass <= PulseMeter::DygraphsVisualize::Base
  @data_class = klass
end
deprecated_setter(name) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 20
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) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 82
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) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 76
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) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 61
def hash_extender(name, &block)
  define_method(name) do |val|
    @opts[name] ||= {}
    @opts[name].merge!(val)
  end
end
int_setter(name, &block) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 53
def int_setter(name, &block)
  define_method(name) do |val|
    val = val.to_i
    block.call(val) if block
    @opts[name] = val
  end
end
new() click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 9
def initialize
  @opts = {}
end
setter(name, &block) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 26
def setter(name, &block)
  define_method(name) do |val|
    block.call(val) if block
    @opts[name] = val
  end
end
string_setter(name, &block) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 45
def string_setter(name, &block)
  define_method(name) do |val|
    val = val.to_s
    block.call(val) if block
    @opts[name] = val
  end
end

Public Instance Methods

create_dsl_obj(args, klass, block) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 100
def create_dsl_obj(args, klass, block)
  params, options = extract_params(args)
  dsl_obj = klass.new(*params)
  dsl_obj.process_args(options)
  block.call(dsl_obj) if block
  dsl_obj
end
extract_params(args) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 108
def extract_params(args)
  opts = if args.last.is_a?(Hash)
    args.pop
  else
    {}
  end
  [args, opts]
end
process_args(args) click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 13
def process_args(args)
  args.each_pair do |k, v|
    send(k, v)
  end
end
to_data() click to toggle source
# File lib/pulse_meter/dygraphs_visualize/dsl/base.rb, line 117
def to_data
  klass = self.class.data_class
  args = @opts.each_with_object({}) do |(k, v), acc|
    acc[k] = case v
      when PulseMeter::DygraphsVisualize::DSL::Base
        v.to_data
      when DArray
        v.map(&:to_data)
      else
        v
    end
  end
  klass.new(args)
end