class PRRD::Graph

PRRD Graph class

Attributes

base[RW]
border[RW]
database[RW]

Accessors

end[RW]
entities[RW]
full_size_mode[RW]
height[RW]
imgformat[RW]
legend_direction[RW]
legend_position[RW]
lower_limit[RW]
no_legend[RW]
only_graph[RW]
path[RW]

Accessors

rigid[RW]
start[RW]
step[RW]
title[RW]
upper_limit[RW]
vertical_label[RW]
watermark[RW]
width[RW]
zoom[RW]

Public Class Methods

new(values = nil) click to toggle source

Constructor

# File lib/prrd/graph.rb, line 21
def initialize(values = nil)
  @entities = {
    colors: [],
    definitions: [],
    areas: [],
    lines: [],
    prints: [],
    comments: [],
    hrules: [],
    vrules: [],
    shift: [],
    textalign: []
  }

  unless values.nil?
    values.each do |k, v|
      m = "#{k}=".to_sym
      next unless respond_to? m
      send m, v
    end
  end
end

Public Instance Methods

<<(object) click to toggle source

Add an object @param object [Object]

# File lib/prrd/graph.rb, line 72
def <<(object)
  if object.is_a? PRRD::Graph::Definition
    @entities[:definitions] << object
  elsif object.is_a? PRRD::Graph::Color
    @entities[:colors] << object
  elsif object.is_a? PRRD::Graph::Area
    @entities[:areas] << object
  elsif object.is_a? PRRD::Graph::Line
    @entities[:lines] << object
  elsif object.is_a? PRRD::Graph::Print
    @entities[:prints] << object
  elsif object.is_a? PRRD::Graph::Comment
    @entities[:comments] << object
  elsif object.is_a? PRRD::Graph::Hrule
    @entities[:hrules] << object
  elsif object.is_a? PRRD::Graph::Vrule
    @entities[:vrules] << object
  elsif object.is_a? PRRD::Graph::Shift
    @entities[:shift] << object
  elsif object.is_a? PRRD::Graph::Textalign
    @entities[:textalign] << object
  else
    fail 'Can not add this kind of object in PRRD::Graph'
  end
end
check_database() click to toggle source

Check database existence

# File lib/prrd/graph.rb, line 50
def check_database
  fail 'No database provided' if @database.nil?
end
check_file() click to toggle source

Check image existence

# File lib/prrd/graph.rb, line 45
def check_file
  fail 'Image path is missing' if  @path.nil?
end
generate() click to toggle source

Generate a graph @return [String]

# File lib/prrd/graph.rb, line 100
def generate
  check_file
  check_database

  fail 'Definitions are missing' if @entities[:definitions].empty?

  cmd = []

  cmd << "#{PRRD.bin} graph #{@path}"

  cmd << "--start=#{@start}" unless @start.nil?
  cmd << "--end=#{@end}" unless @end.nil?
  cmd << "--step=#{@step}" unless @step.nil?

  cmd << "--title=\"#{@title}\"" unless @title.nil?
  cmd << "--vertical-label=\"#{@vertical_label}\"" unless @vertical_label.nil?
  cmd << "--width=#{@width}" unless @width.nil?
  cmd << "--height=#{@height}" unless @height.nil?
  cmd << '--only-graph' unless @only_graph.nil?
  cmd << '--full-size-mode' unless @full_size_mode.nil?
  cmd << "--lower-limit=#{@lower_limit}" unless @lower_limit.nil?
  cmd << "--upper-limit=#{@upper_limit}" unless @upper_limit.nil?
  cmd << '--rigid' unless @rigid.nil?
  cmd << "--no-legend" unless @no_legend.nil?
  cmd << "--legend-position=\"#{@legend_position}\"" unless @legend_position.nil?
  cmd << "--legend-direction=\"#{@legend_direction}\"" unless @legend_direction.nil?
  cmd << "--base=#{@base}" unless @base.nil?
  cmd << "--border=#{@border}" unless @border.nil?
  cmd << "--zoom=#{@zoom}" unless @zoom.nil?
  cmd << "--imgformat=\"#{@imgformat}\"" unless @imgformat.nil?
  cmd << "--watermark=\"#{@watermark}\"" unless @watermark.nil?

  @entities.each do |k, v|
    next if v.empty?
    v.each do |e|
      cmd << e.to_s
    end
  end

  # Exectute
  PRRD.execute cmd.join ' '
end
method_missing(m, *args, &block) click to toggle source
Calls superclass method
# File lib/prrd/graph.rb, line 54
def method_missing(m, *args, &block)
  entities = @entities.keys.map(&:to_s) + @entities.keys.map! { |e| e.to_s[0..-2] }
  ms = m.to_s.gsub 'add_', ''
  if entities.include? ms
    if ms[-1] == 's'
      @entities[ms.to_sym] = args[0]
    else
      @entities["#{ms}s".to_sym] << args[0]
    end

    return true
  end

  super
end