class Eyemask::Liquid::Uml

Public Class Methods

new(tag_name, markup, tokens) click to toggle source
Calls superclass method
# File lib/eyemask/liquid/uml.rb, line 10
def initialize(tag_name, markup, tokens)
  @tag_name = tag_name
  super
end

Public Instance Methods

diagram_type() click to toggle source
# File lib/eyemask/liquid/uml.rb, line 51
def diagram_type
  case @tag_name
  when "uml"
    "uml"
  when "ditaa"
    "ditaa"
  when "salt"
    "salt"
  else
    "uml"
  end
end
get_data_uri_for_diagram(diagram) click to toggle source
# File lib/eyemask/liquid/uml.rb, line 19
def get_data_uri_for_diagram(diagram)
  data = parse_diagram(diagram)
  "data:image/png;base64,#{Base64.encode64(data)}"
end
parse_diagram(diagram) click to toggle source
# File lib/eyemask/liquid/uml.rb, line 24
def parse_diagram(diagram)
  output = ""
  IO.popen(["plantuml", "-pipe"], 'r+') do |f|
    f.puts("@start#{diagram_type}")
    case diagram_type
    when "uml"
      f.puts("skinparam backgroundColor transparent")
      f.puts("skinparam shadowing false")
      f.puts("skinparam dpi 300")
    end
    f.puts(diagram)
    f.puts("@end#{diagram_type}")
    f.close_write
    output = f.read
  end
  output
end
render(context) click to toggle source
# File lib/eyemask/liquid/uml.rb, line 15
def render(context)
  "\n\n<figure><img class=\"resolution-#{resolution}\" src=\"#{get_data_uri_for_diagram(super)}\"></figure>\n\n"
end
resolution() click to toggle source
# File lib/eyemask/liquid/uml.rb, line 42
def resolution
  case diagram_type
  when "uml"
    "print"
  else
    "normal"
  end
end