Sha256: c4d95b0bc227b70c9ac459dde3f43f378979acd54e5f421694e5cbee7cee60a8

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

class Lbrt::Space::DSL::Context::Space::Chart
  include Lbrt::Utils::TemplateHelper

  REQUIRED_ATTRIBUTES = %w(
    type
  )

  def initialize(context, space_name_or_id, name_or_id, &block)
    @context = context.merge(:chart_name => name_or_id)
    @space_name_or_id = space_name_or_id
    @name_or_id = name_or_id
    @result = {'streams' => []}
    instance_eval(&block)
  end

  attr_reader :context

  def result
    REQUIRED_ATTRIBUTES.each do |name|
      unless @result.has_key?(name)
        raise "Space `#{@space_name_or_id}` > Chart `#{@name_or_id}` > `#{name}` is not defined"
      end
    end

    @result
  end

  private

  def type(value)
    @result['type'] = value.to_s
  end

  def stream(&block)
    @result['streams'] << Lbrt::Space::DSL::Context::Space::Chart::Stream.new(@context, @space_name_or_id, @name_or_id, &block).result
  end

  def max(value)
    @result['max'] = value.to_f
  end

  def min(value)
    @result['min'] = value.to_f
  end

  def label(value)
    @result['label'] = value.to_s
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lbrt-0.2.1 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.2.0 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.1.9 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.1.8 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.1.7 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.1.6 lib/lbrt/space/dsl/context/space/chart.rb
lbrt-0.1.5 lib/lbrt/space/dsl/context/space/chart.rb