class SVGPlot::Plot
Main Plot
object
Constants
- DEFAULTS
Public Class Methods
new(params = {}, output = nil, &block)
click to toggle source
Calls superclass method
# File lib/svgplot/plot.rb, line 11 def initialize(params = {}, output = nil, &block) params = DEFAULTS.dup.merge params super(self, 'svg', params, &block) @output = output || '' write(@output) if block end
Public Instance Methods
add_def(id, child, if_exists = :skip, &block)
click to toggle source
# File lib/svgplot/plot.rb, line 18 def add_def(id, child, if_exists = :skip, &block) @defs ||= ChildTag.new(@img, 'defs') @defs_ids ||= {} old_id = check_conflicts(id, if_exists) if @defs_ids.key? id return old_id if old_id child.attributes[:id] = id @defs.append_child child @defs_ids[id] = child child.instance_exec block if block child end
def_group(id, if_exists = :skip, &block)
click to toggle source
# File lib/svgplot/plot.rb, line 32 def def_group(id, if_exists = :skip, &block) g = SVGPlot::SVGTagWithParent.new(@img, 'g', id: id) add_def(id, g, if_exists, &block) end
write(output)
click to toggle source
Calls superclass method
# File lib/svgplot/plot.rb, line 37 def write(output) fail("Illegal output: #{@output.inspect}") unless @output.respond_to? :<< output << header @children.unshift @defs if @defs super(output) @children.shift if @defs end
Private Instance Methods
check_conflicts(id, if_exists)
click to toggle source
# File lib/svgplot/plot.rb, line 47 def check_conflicts(id, if_exists) case if_exists when :fail fail("Definition '#{id}' already exists") when :skip return @defs_ids[id] else @defs.children.reject! { |x| x.attributes[:id] == id } nil end end
header()
click to toggle source
# File lib/svgplot/plot.rb, line 59 def header [ %(<?xml version="1.0" standalone="no"?>\n), %(<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ), %("http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">) ].join end