Sha256: 42c2763de9de1ba37b7dc29b5ffa1406048d156a60ed940d948a808bf1348a7d
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
require 'open3' module Jekyll module Diagrams class GraphvizBlock < Liquid::Block DEFAULTS = { 'engine' => 'dot' } OPTIONS = '-T svg' def initialize(tag_name, text, tokens) super @tag_name = tag_name end def render(context) code = super.to_s config = DEFAULTS.merge(Utils.config_for(context, 'graphviz')) code = case @tag_name when 'graph', 'digraph' Jekyll.logger.warn "Warning:", "graph and digraph is depreated and will remove in the later version." Jekyll.logger.warn "", "Using graphviz instead." "#@tag_name {\n#{code}\n}" when 'graphviz' code end cmd = "#{config['engine']} #{OPTIONS} #{config['options']}" svg, status = Open3.capture2(cmd, stdin_data: code, binmode: true) if !status.success? raise "Non-zero exit status '#{cmd}': #{status}" end svg.sub!(/^<\?xml(([^>]|\n)*>\n?){4}/, '') wrap(svg.force_encoding('UTF-8')) end private def wrap(svg) "<div class='diagrams graphviz'>#{svg}</div>" end end end end %w(graphviz graph digraph).each do |tag| Liquid::Template.register_tag(tag, Jekyll::Diagrams::GraphvizBlock) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jekyll-diagrams-0.5.1 | lib/jekyll/diagrams/graphviz.rb |