From b5d7cf4d249b85297506f68c55b7be2f7f38de7a Mon Sep 17 00:00:00 2001 From: Kozo Nishida Date: Sat, 6 Apr 2019 09:45:26 +0900 Subject: [PATCH 1/2] :sparkles: Add support for charty --- exe/rubydown | 5 ++++- lib/rubydown.rb | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/exe/rubydown b/exe/rubydown index 50e5743..174ad67 100755 --- a/exe/rubydown +++ b/exe/rubydown @@ -3,7 +3,7 @@ require 'kramdown' require 'erb' require 'stringio' - +require 'base64' require 'optparse' require 'rubydown' @@ -62,6 +62,9 @@ class EvalDoc < Kramdown::Document case when eval_result.respond_to?(:to_html) Kramdown::Document.new(eval_result.to_html, input: :html).root + when eval_result.instance_of?(File) && eval_result.path[-4,4] == ".png" + img_b64 = Base64.encode64(File.binread(eval_result)) + Kramdown::Document.new("", input: :html).root else text_result_el(stdout_string + "=> #{eval_result}") end diff --git a/lib/rubydown.rb b/lib/rubydown.rb index 1eae031..da4a99e 100644 --- a/lib/rubydown.rb +++ b/lib/rubydown.rb @@ -5,6 +5,7 @@ require 'numo/gnuplot' require 'base64' require 'tempfile' +require 'charty' class Numo::NArray @@ -29,6 +30,13 @@ def to_html end end +Charty::RenderContext.prepend Module.new { + def render(filename=nil) + super + File.open(filename) + end +} + module Rubydown class RbMarkPlot < Numo::Gnuplot def plot(*args) From 3805dc87f194e347e458768627543289134b9203 Mon Sep 17 00:00:00 2001 From: Kozo Nishida Date: Sun, 7 Apr 2019 15:43:35 +0900 Subject: [PATCH 2/2] :art: Check nil or extname and add gem deps --- exe/rubydown | 4 ++-- lib/rubydown.rb | 6 +++++- rubydown.gemspec | 2 ++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/exe/rubydown b/exe/rubydown index 174ad67..b4c9afe 100755 --- a/exe/rubydown +++ b/exe/rubydown @@ -62,8 +62,8 @@ class EvalDoc < Kramdown::Document case when eval_result.respond_to?(:to_html) Kramdown::Document.new(eval_result.to_html, input: :html).root - when eval_result.instance_of?(File) && eval_result.path[-4,4] == ".png" - img_b64 = Base64.encode64(File.binread(eval_result)) + when eval_result.instance_of?(File) && File.extname(eval_result.path) == ".png" + img_b64 = Base64.encode64(File.binread(eval_result.path)) Kramdown::Document.new("", input: :html).root else text_result_el(stdout_string + "=> #{eval_result}") diff --git a/lib/rubydown.rb b/lib/rubydown.rb index da4a99e..35fd515 100644 --- a/lib/rubydown.rb +++ b/lib/rubydown.rb @@ -33,7 +33,11 @@ def to_html Charty::RenderContext.prepend Module.new { def render(filename=nil) super - File.open(filename) + if filename.nil? + p "The image could not be rendered. In the environment without IRuby, the file name for the charty render method is required." + else + File.open(filename) + end end } diff --git a/rubydown.gemspec b/rubydown.gemspec index f22e1cd..2b20e16 100644 --- a/rubydown.gemspec +++ b/rubydown.gemspec @@ -40,6 +40,8 @@ Gem::Specification.new do |spec| spec.add_dependency "numo-narray", "~> 0.9.1" spec.add_dependency "numo-gnuplot", "~> 0.2.4" spec.add_dependency "rbplotly", "~> 0.1.2" + spec.add_dependency "charty", "0.1.1.dev" + spec.add_dependency "matplotlib", "~> 1.0.0" spec.add_development_dependency "bundler", "~> 1.17" spec.add_development_dependency "rake", "~> 10.0"