class Mathjax_Renderer::RendererServer
Public Instance Methods
add_content(content, extra_style = '', padding = 0)
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 137 def add_content(content, extra_style = '', padding = 0) digest = Digest::SHA1.hexdigest(content) path = "/#{digest}.html" server.mount_proc path do |_, res| res.body = response(content, extra_style, padding) end path end
ensure_started!()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 171 def ensure_started! if start! Thread.start do require 'webrick' self.server = WEBrick::HTTPServer.new( :Port => 0, :AccessLog => [], :Logger => WEBrick::Log::new('/dev/null', 7) ) server.mount_proc "/index.html" do |_, res| res.body = "OK" end begin server.start ensure server.shutdown end end end def server_started? require 'net/http' uri = URI("http://localhost:#{port}/index.html") req = Net::HTTP::Get.new(uri) res = Net::HTTP.start(uri.hostname, uri.port) {|http| http.read_timeout = 1 http.request(req) } res.is_a?(Net::HTTPSuccess) rescue false end Timeout.timeout(5) do sleep 0.1 until server_started? end end
port()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 147 def port server.config[:Port] end
response(content, extra_style, padding)
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 151 def response(content, extra_style, padding) " <html><head> <script type='text/x-mathjax_renderer-config'> MathJax.Hub.Config({ messageStyle: 'none', showMathMenu:false }); </script> <style>body{display: flex;justify-content: center;} #{extra_style} .MathJax{ left: #{padding}px; top: #{padding}px; }</style> <script type='text/javascript' src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script> </head><body>#{content}</body></html>" end
server_started?()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 193 def server_started? require 'net/http' uri = URI("http://localhost:#{port}/index.html") req = Net::HTTP::Get.new(uri) res = Net::HTTP.start(uri.hostname, uri.port) {|http| http.read_timeout = 1 http.request(req) } res.is_a?(Net::HTTPSuccess) rescue false end
Private Instance Methods
server()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 216 def server @@server end
server=(server)
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 220 def server=(server) @@server = server end
start!()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 226 def start! @@started.make_true end