module Rabbit::Parser::Ext::Charty

Public Instance Methods

make_image(path, prop, logger) click to toggle source
# File lib/rabbit/parser/ext/charty.rb, line 26
def make_image(path, prop, logger)
  require "charty"
  backend = prop["backend"]
  ::Charty::Backends.use(backend) if backend
  data = CSV.read(path, headers: true, converters: :all)
  type = prop["type"]
  case type
  when "bar"
    plotter = ::Charty.bar_plot(data: data,
                                x: prop["x"],
                                y: prop["y"],
                                color: prop["color"])
  when "line"
    plotter = ::Charty.line_plot(data: data,
                                 x: prop["x"],
                                 y: prop["y"],
                                 color: prop["color"])
  when "scatter"
    plotter = ::Charty.scatter_plot(data: data,
                                    x: prop["x"],
                                    y: prop["y"],
                                    color: prop["color"])
  else
    raise ArgumentError, "charty: unsupported type: #{type.inspect}"
  end
  image_file = Tempfile.new(["rabbit-image-charty", ".svg"])
  plotter.save(image_file.path)
  image_file
end