module Asciinurse::Chart::ChartCreator
Public Instance Methods
create_chart(parent, attrs, config)
click to toggle source
# File lib/asciinurse/extensions/charts/extension.rb, line 13 def create_chart(parent, attrs, config) document = parent.document backend = document.attributes['backend'] if backend == 'html5' html = create_from_json document, config create_pass_block parent, html, attrs, subs: nil else attrs['target'] = create_image document, config, attrs attrs['width'] ||= 800 attrs['height'] ||= 600 attrs['align'] ||= 'center' create_image_block parent, attrs end end
create_from_csv(engine, data, attrs)
click to toggle source
# File lib/asciinurse/extensions/charts/extension.rb, line 36 def create_from_csv(engine, data, attrs) csv_data = CSVData::new engine, attrs, data csv_data.to_chart_json end
create_from_json(document, config)
click to toggle source
# File lib/asciinurse/extensions/charts/extension.rb, line 29 def create_from_json(document, config) id = 'chart_%s' % document.counter(:chart_id) engine = get_engine document template = Asciinurse.read_resource "#{engine}/templates/chart.html.erb" ERB.new(template).result binding end
create_image(document, config, attrs)
click to toggle source
# File lib/asciinurse/extensions/charts/extension.rb, line 41 def create_image(document, config, attrs) engine = get_engine document converter_file = Asciinurse.config "charts.#{engine}.convert.file" tmpdir = Asciinurse.tmp_dir document id = document.counter(:chart_id) config_file = "#{tmpdir}/config-#{id}.json" image_file = "#{tmpdir}/chart-#{id}.png" IO.write config_file, config converter = Asciinurse.find_resource "#{engine}/converter/#{converter_file}" command = Asciinurse.config("charts.#{engine}.convert.command") % [converter, config_file, image_file] `#{command}` image_file end
get_engine(doc)
click to toggle source
# File lib/asciinurse/extensions/charts/extension.rb, line 9 def get_engine(doc) doc.attributes['charts'] || Asciinurse.config('charts.default') end