class HTML::Pipeline::SVGTeX::PostFilter

Public Instance Methods

call() click to toggle source
# File lib/html/pipeline/svgtex.rb, line 76
def call
  doc.search('code.mathjax').each do |node|
    eqn = node.inner_text
    rsp = session.post(context[:svgtex_url], :q => eqn)
    if rsp.status == 200
      node.parent.replace rsp.body.gsub(/margin-(left|right): 0px; /, "")
    else
      node.remove_attribute 'class'
    end
  end
  doc.search('code:not([class])').each do |node|
    eqn = node.inner_text
    next unless eqn.sub!(/\A\{mathjax\} /, '')
    rsp = session.post(context[:svgtex_url], :q => eqn)
    if rsp.status == 200
      node.replace "<img style='display: inline; max-height: 1em;' class='mathjax' src='data:image/svg+xml;base64,#{Base64.encode64 rsp.body}' alt='#{CGI.escape_html eqn}' />"
    end
  end
  doc
end
session() click to toggle source
# File lib/html/pipeline/svgtex.rb, line 97
def session
  @session ||= Patron::Session.new
end