class Mathjax_Renderer::RendererServer
Public Instance Methods
add_content(content, added_margin, extra_style = '')
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 125 def add_content(content, added_margin, extra_style = '') digest = Digest::SHA1.hexdigest(content) path = "/#{digest}.html" server.mount_proc path do |_, res| res.body = response(content, added_margin, extra_style) end path end
ensure_started!()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 155 def ensure_started! if start! Thread.start do require 'webrick' mathjax_dir = Gem::Specification.find_by_name("rails-assets-MathJax").gem_dir self.server = WEBrick::HTTPServer.new(:Port => 0, :DocumentRoot => "#{mathjax_dir}/app/assets",:AccessLog => [], :Logger => WEBrick::Log::new('/dev/null', 7)) server.mount '/javascripts/MathJax/fonts', WEBrick::HTTPServlet::FileHandler, "#{mathjax_dir}/app/assets/fonts/MathJax/fonts" begin server.start ensure server.shutdown end end end def server_started? require 'net/http' uri = URI("http://localhost:#{port}/javascripts/MathJax/MathJax.js") 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 sleep 0.1 until server_started? end
port()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 135 def port server.config[:Port] end
response(content, added_margin, extra_style)
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 139 def response(content, added_margin, extra_style) " <html><head> <script type='text/x-mathjax_renderer-config'> MathJax.Hub.Config({ messageStyle: 'none', showMathMenu:false }); </script> <script type='text/javascript' src='javascripts/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script> <style>.MathJax{position:absolute!important;margin:#{added_margin}px!important;} #{extra_style}</style> </head><body>#{content}</body></html>" end
server_started?()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 172 def server_started? require 'net/http' uri = URI("http://localhost:#{port}/javascripts/MathJax/MathJax.js") 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 192 def server @@server end
server=(server)
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 196 def server=(server) @@server = server end
start!()
click to toggle source
# File lib/mathjax_renderer/renderer.rb, line 202 def start! @@started.make_true end