Module: Asciinurse::Chart::ChartCreator
- Included in:
- ChartAssetsDocinfoProcessor, ChartBlockMacro, ChartBlockProcessor
- Defined in:
- lib/asciinurse/extensions/charts/extension.rb
Instance Method Summary collapse
- #create_chart(parent, attrs, config) ⇒ Object
- #create_from_csv(engine, data, attrs) ⇒ Object
- #create_from_json(document, config) ⇒ Object
- #create_image(document, config, attrs) ⇒ Object
- #get_engine(doc) ⇒ Object
Instance Method Details
#create_chart(parent, attrs, config) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# 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) ⇒ Object
36 37 38 39 |
# 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) ⇒ Object
29 30 31 32 33 34 |
# 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) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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) ⇒ Object
9 10 11 |
# File 'lib/asciinurse/extensions/charts/extension.rb', line 9 def get_engine(doc) doc.attributes['charts'] || Asciinurse.config('charts.default') end |