blob: a2e32bf788e9714ea94cd77804d87efc48da0120 (
plain) (
tree)
|
|
require 'tempfile'
require 'digest'
OUTPUT_DIR = '/static/graphviz'
module Jekyll
class GraphvizBlock < Liquid::Block
def initialize(tag_name, options, tokens)
super
opts_list = options.split('|').map { |s| s.strip }
@name = opts_list[0]
@alt = opts_list[1]
end
def render(context)
source = super
site = context.registers[:site]
FileUtils.mkdir_p(File.join(site.source, OUTPUT_DIR))
filename = "#{@name}-#{Digest::SHA256.hexdigest(source + @alt)}.svg"
site_path = File.join(OUTPUT_DIR, filename)
os_path = File.join(site.source, site_path)
f = Tempfile.new('graphviz-input')
f.write(source)
f.close
`dot -Tsvg #{f.path} > #{os_path}`
f.unlink
site.static_files << Jekyll::StaticFile.new(site, site.source, OUTPUT_DIR, filename)
"<img src=\"#{site_path}\" alt=\"#{@alt}\" />"
end
end
end
Liquid::Template.register_tag('graphviz', Jekyll::GraphvizBlock)
|