module Plotrb::Kernel

Kernel module includes most of the shortcuts used in Plotrb

Public Class Methods

axes() click to toggle source

a global space keeping track of all Axis objects defined

# File lib/plotrb/kernel.rb, line 22
def self.axes
  @axes ||= []
end
data() click to toggle source

a global space keeping track of all Data objects defined

# File lib/plotrb/kernel.rb, line 7
def self.data
  @data ||= []
end
duplicate_data?(name) click to toggle source

@return [Boolean] if a Data object with same name already exists

# File lib/plotrb/kernel.rb, line 17
def self.duplicate_data?(name)
  @data.select { |d| d.name == name.to_s }.size > 1
end
duplicate_mark?(name) click to toggle source

@return [Boolean] if a Mark object with same name already exists

# File lib/plotrb/kernel.rb, line 52
def self.duplicate_mark?(name)
  @marks.select { |m| m.name == name.to_s }.size > 1
end
duplicate_scale?(name) click to toggle source

@return [Boolean] if a Scale object with same name already exists

# File lib/plotrb/kernel.rb, line 37
def self.duplicate_scale?(name)
  @scales.select { |s| s.name == name.to_s }.size > 1
end
find_data(name) click to toggle source

@return [Data] find Data object by name

# File lib/plotrb/kernel.rb, line 12
def self.find_data(name)
  @data.find { |d| d.name == name.to_s }
end
find_mark(name) click to toggle source

@return [Mark] find Mark object by name

# File lib/plotrb/kernel.rb, line 47
def self.find_mark(name)
  @marks.find { |m| m.name == name.to_s }
end
find_scale(name) click to toggle source

@return [Scale] find Scale object by name

# File lib/plotrb/kernel.rb, line 32
def self.find_scale(name)
  @scales.find { |s| s.name == name.to_s }
end
legends() click to toggle source

a global space keeping track of all Transform objects defined

# File lib/plotrb/kernel.rb, line 62
def self.legends
  @legends ||= []
end
marks() click to toggle source

a global space keeping track of all Mark objects defined

# File lib/plotrb/kernel.rb, line 42
def self.marks
  @marks ||= []
end
scales() click to toggle source

a global space keeping track of all Scale objects defined

# File lib/plotrb/kernel.rb, line 27
def self.scales
  @scales ||= []
end
transforms() click to toggle source

a global space keeping track of all Transform objects defined

# File lib/plotrb/kernel.rb, line 57
def self.transforms
  @transforms ||= []
end

Public Instance Methods

legend(&block) click to toggle source
# File lib/plotrb/kernel.rb, line 78
def legend(&block)
      ::Plotrb::Legend.new(&block)
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/plotrb/kernel.rb, line 82
def method_missing(method, *args, &block)
  case method.to_s
    when /^(\w)_axis$/
      # Initialize ::Plotrb::Axis objects
      if ::Plotrb::Axis::TYPES.include?($1.to_sym)
        cache_method($1, 'axis')
        self.send(method)
      else
        super
      end
    when /^(\w+)_scale$/
      # Initialize ::Plotrb::Scale objects
      if ::Plotrb::Scale::TYPES.include?($1.to_sym)
        cache_method($1, 'scale')
        self.send(method)
      else
        super
      end
    when /^(\w+)_transform$/
      # Initialize ::Plotrb::Transform objects
      if ::Plotrb::Transform::TYPES.include?($1.to_sym)
        cache_method($1, 'transform')
        self.send(method)
      else
        super
      end
    when /^(\w+)_mark$/
      # Initialize ::Plotrb::Mark objects
      if ::Plotrb::Mark::TYPES.include?($1.to_sym)
        cache_method($1, 'mark')
        self.send(method)
      else
        super
      end
    else
      super
  end
end
pdata(&block) click to toggle source

Initialize ::Plotrb::Data objects

# File lib/plotrb/kernel.rb, line 74
def pdata(&block)
  ::Plotrb::Data.new(&block)
end
visualization(&block) click to toggle source

Initialize ::Plotrb::Visualization object

# File lib/plotrb/kernel.rb, line 68
def visualization(&block)
  ::Plotrb::Visualization.new(&block)
end

Protected Instance Methods

cache_method(type, klass) click to toggle source
# File lib/plotrb/kernel.rb, line 123
def cache_method(type, klass)
  self.class.class_eval {
    define_method("#{type}_#{klass}") do |&block|
      # class names are constants
      # create shortcut methods to initialize Plotrb objects
      ::Kernel::const_get("::Plotrb::#{klass.capitalize}").
          new(type.to_sym, &block)
    end
  }
end