class DrawIOConverter

Public Class Methods

new(tagName, variables, tokens) click to toggle source
Calls superclass method
# File lib/jekyll-drawio.rb, line 8
def initialize(tagName, variables, tokens)
  super
  @variables = variables.split " "
  @path_to_diagram = ""
  @selected_diagram_num = nil
  @diagram_height = 200
  
  @variables.each do |variable|
    param_value_pair = variable.split "="
    if param_value_pair[0] == "path"
      # TODO: find appropriate method to trim the string
      @path_to_diagram = param_value_pair[1].tr('\"', '')
    elsif param_value_pair[0] == "page_number"
      @selected_diagram_num = param_value_pair[1].to_i
    elsif param_value_pair[0] == "height"
      @diagram_height = param_value_pair[1].to_i
    end
  end

  puts "path=\"#{ @path_to_diagram}\" page_num=#{ @selected_diagram_num }"
end

Public Instance Methods

extract_diagram(path, selected_diagram_num) click to toggle source
# File lib/jekyll-drawio.rb, line 30
def extract_diagram(path, selected_diagram_num)
  doc = File.open(path) { |f| Nokogiri::XML(f) }
  diagrams = doc.xpath("//mxfile//diagram")
  puts "Diagrams found at \"#{ path }\": #{ diagrams.length }. " \
       "Selected: #{ @selected_diagram_num }. " \
       "Height: #{ @diagram_height }"
  diagram = diagrams[selected_diagram_num]

  diagram_name = diagram["name"]
  diagram_content = diagram.content

  return diagram_name, diagram_content
end
render(context) click to toggle source
# File lib/jekyll-drawio.rb, line 44
def render(context)
  diagram_name, diagram_content = self.extract_diagram @path_to_diagram, @selected_diagram_num
  encoded_diagram = ERB::Util.url_encode diagram_content
  encoded_diagram_name = ERB::Util.url_encode diagram_name

  viewer_url_base = "https://viewer.diagrams.net/?highlight=0000ff&edit=_blank&layers=1&nav=1"
      viewer_url = "#{ viewer_url_base }&title=#{ encoded_diagram_name }\#R#{ encoded_diagram }"
  viewer_style = "style=\"width:100%;height:#{ @diagram_height }px\""

  %Q{<iframe frameborder="0" #{ viewer_style } src="#{ viewer_url }"></iframe>}
end