From d448751547e04a1ca495c262c3c9bd3a37cead6e Mon Sep 17 00:00:00 2001 From: Zhigang Song Date: Sun, 3 Apr 2022 18:28:12 +0800 Subject: [PATCH] feat: include dot file support --- lib/jekyll/graphviz.rb | 2 ++ lib/jekyll/graphviz/dotf.rb | 22 ++++++++++++++++++++++ lib/jekyll/graphviz/renderer.rb | 5 +++++ 3 files changed, 29 insertions(+) create mode 100644 lib/jekyll/graphviz/dotf.rb diff --git a/lib/jekyll/graphviz.rb b/lib/jekyll/graphviz.rb index 18761f1..13d2f18 100644 --- a/lib/jekyll/graphviz.rb +++ b/lib/jekyll/graphviz.rb @@ -1,6 +1,7 @@ require "jekyll" require "jekyll/graphviz/version" require "jekyll/graphviz/block" +require "jekyll/graphviz/dotf" module Jekyll module Graphviz @@ -10,3 +11,4 @@ module Graphviz Liquid::Template.register_tag('graphviz', Jekyll::Graphviz::Block) Liquid::Template.register_tag('graph', Jekyll::Graphviz::Block) Liquid::Template.register_tag('digraph', Jekyll::Graphviz::Block) +Liquid::Template.register_tag('dotf', Jekyll::Graphviz::DotF) diff --git a/lib/jekyll/graphviz/dotf.rb b/lib/jekyll/graphviz/dotf.rb new file mode 100644 index 0000000..2901e26 --- /dev/null +++ b/lib/jekyll/graphviz/dotf.rb @@ -0,0 +1,22 @@ +require "liquid/tag" +require "jekyll/graphviz/renderer" + +module Jekyll + module Graphviz + class DotF < Liquid::Tag + def initialize tag_name, path, tokens + super + @path = path + end + + def render context + config = context.registers[:site].config + renderer = Jekyll::Graphviz::Renderer.new(config["graphviz"]) + + page = context.registers[:page] + path = File.dirname(page[:relative_path]) + "/" + @path + renderer.render_dotf path + end + end + end +end diff --git a/lib/jekyll/graphviz/renderer.rb b/lib/jekyll/graphviz/renderer.rb index 68ce213..9e7701e 100644 --- a/lib/jekyll/graphviz/renderer.rb +++ b/lib/jekyll/graphviz/renderer.rb @@ -12,6 +12,11 @@ def initialize config = nil @config = config || {} end + def render_dotf path + code = File.read path.strip + render code, File.basename(path, ".*") + end + def render code, title = nil title = gen_title(title, code) svg = generate_svg code